From 34ddedfee085bc0dbd7f015d6dad9f27a49b0ab1 Mon Sep 17 00:00:00 2001 From: Karol1223 Date: Thu, 13 Jul 2023 11:45:13 +0200 Subject: [PATCH 01/23] eyebot - first JSON pass --- data/json/items/corpses/inactive_bots.json | 10 ------- data/json/monstergroups/lab.json | 1 - data/json/monstergroups/robots.json | 5 ---- data/json/monsters/robofac_robots.json | 17 +++++++++-- data/json/monsters/utility_bot.json | 25 ---------------- data/json/speech.json | 32 +++------------------ data/mods/Aftershock/mobs/robot_groups.json | 5 ---- data/mods/Aftershock/mobs/scavbots.json | 27 ++++++++++++++++- 8 files changed, 45 insertions(+), 77 deletions(-) diff --git a/data/json/items/corpses/inactive_bots.json b/data/json/items/corpses/inactive_bots.json index cfd01c9a35403..d8fe82219a35a 100644 --- a/data/json/items/corpses/inactive_bots.json +++ b/data/json/items/corpses/inactive_bots.json @@ -516,16 +516,6 @@ "material": [ "steel" ], "symbol": ";", "color": "light_green", - "use_action": { - "type": "place_monster", - "monster_id": "mon_eyebot", - "friendly_msg": "The eyebot hums and takes to the sky.", - "hostile_msg": "The eyebot beeps disapprovingly and focuses its camera on your face. Say cheese!", - "//": "Like most surveillance tech these likely have poor security. Secure the wifi!", - "difficulty": 1, - "moves": 100, - "skills": [ "electronics", "computer" ] - }, "flags": [ "SINGLE_USE" ], "melee_damage": { "bash": 8 } }, diff --git a/data/json/monstergroups/lab.json b/data/json/monstergroups/lab.json index ca1d3b6347651..e8ab1b41593b6 100644 --- a/data/json/monstergroups/lab.json +++ b/data/json/monstergroups/lab.json @@ -265,7 +265,6 @@ { "monster": "mon_zombie_hazmat", "weight": 20, "pack_size": [ 1, 3 ] }, { "monster": "mon_feral_human_pipe", "weight": 18, "cost_multiplier": 8, "pack_size": [ 1, 3 ] }, { "monster": "mon_feral_human_crowbar", "weight": 18, "cost_multiplier": 8, "pack_size": [ 1, 3 ] }, - { "monster": "mon_eyebot", "weight": 5 }, { "monster": "mon_hazmatbot", "weight": 7, "pack_size": [ 1, 2 ] }, { "monster": "mon_zombie", "weight": 30, "pack_size": [ 1, 3 ] }, { "monster": "mon_zombie_fat", "weight": 30 }, diff --git a/data/json/monstergroups/robots.json b/data/json/monstergroups/robots.json index 0ae40b35889b0..45389d43bcd99 100644 --- a/data/json/monstergroups/robots.json +++ b/data/json/monstergroups/robots.json @@ -33,11 +33,6 @@ "type": "monstergroup", "monsters": [ { "monster": "mon_hazmatbot" } ] }, - { - "type": "monstergroup", - "name": "GROUP_ROBOT_EYEBOT", - "monsters": [ { "monster": "mon_eyebot", "cost_multiplier": 0 } ] - }, { "type": "monstergroup", "name": "GROUP_ROBOT_SECUBOT", diff --git a/data/json/monsters/robofac_robots.json b/data/json/monsters/robofac_robots.json index 93e85e0ddfdc6..fae85bac61b37 100644 --- a/data/json/monsters/robofac_robots.json +++ b/data/json/monsters/robofac_robots.json @@ -35,10 +35,22 @@ { "id": "mon_robofac_camspy", "type": "MONSTER", - "copy-from": "mon_eyebot", "name": { "str": "Hub 01 camspy", "str_pl": "Hub 01 camspies" }, "description": "A white and brown quadcopter drone mounting what looks to be a camera dome and a large antenna array. It calmly hovers a comfortable distance above the ground, surveilling its surroundings with cold indifference.", "default_faction": "robofac_spy", + "species": [ "ROBOT" ], + "diff": 2, + "volume": "30 L", + "weight": "40750 g", + "hp": 20, + "speed": 120, + "material": [ "steel" ], + "symbol": "e", + "color": "light_gray", + "morale": 100, + "melee_damage": [ { "damage_type": "cut", "amount": 0 } ], + "dodge": 3, + "revert_to_itype": "bot_eyebot", "tracking_distance": 10, "aggression": -99, "special_attacks": [ [ "DEPART", 34560 ] ], @@ -60,6 +72,7 @@ "STUN_IMMUNE", "PACIFIST", "KEEP_DISTANCE" - ] + ], + "armor": { "bash": 8, "cut": 10, "bullet": 8 } } ] diff --git a/data/json/monsters/utility_bot.json b/data/json/monsters/utility_bot.json index 9fe8bc6e5c76c..f2e7e934341d7 100644 --- a/data/json/monsters/utility_bot.json +++ b/data/json/monsters/utility_bot.json @@ -1,29 +1,4 @@ [ - { - "id": "mon_eyebot", - "type": "MONSTER", - "name": { "str": "eyebot" }, - "description": "A quadcopter drone largely comprised of a high-resolution camera lens and a speaker, this robot hovers above the ground, documenting the carnage and mayhem around it. While it is no longer able to report to a central authority, it's likely that some of its automated alert systems are still functional, given that the thing seems to have an operational charging station somewhere.", - "default_faction": "cop_bot", - "species": [ "ROBOT" ], - "diff": 2, - "volume": "30000 ml", - "weight": "40750 g", - "hp": 20, - "speed": 120, - "material": [ "steel" ], - "symbol": "e", - "color": "light_gray", - "morale": 100, - "melee_damage": [ { "damage_type": "cut", "amount": 0 } ], - "dodge": 3, - "revert_to_itype": "bot_eyebot", - "special_attacks": [ [ "PHOTOGRAPH", 30 ] ], - "death_drops": { "groups": [ [ "robots", 4 ], [ "eyebot", 1 ] ] }, - "death_function": { "corpse_type": "BROKEN" }, - "flags": [ "SEES", "FLIES", "ELECTRONIC", "COLDPROOF", "NO_BREATHE", "NOHEAD", "PRIORITIZE_TARGETS", "STUN_IMMUNE" ], - "armor": { "bash": 8, "cut": 10, "bullet": 8 } - }, { "id": "mon_grocerybot", "type": "MONSTER", diff --git a/data/json/speech.json b/data/json/speech.json index 883273cc0a701..7aab936553bca 100644 --- a/data/json/speech.json +++ b/data/json/speech.json @@ -1981,37 +1981,19 @@ }, { "type": "speech", - "speaker": [ "mon_eyebot", "mon_mi_go", "mon_mi_go_slaver" ], + "speaker": [ "mon_mi_go", "mon_mi_go_slaver" ], "sound": "\"Stop where you are!\"", "volume": 15 }, { "type": "speech", - "speaker": [ "mon_eyebot", "mon_mi_go", "mon_mi_go_slaver" ], + "speaker": [ "mon_mi_go", "mon_mi_go_slaver" ], "sound": "\"You are under arrest!\"", "volume": 15 }, { "type": "speech", - "speaker": [ "mon_eyebot", "mon_mi_go", "mon_mi_go_slaver" ], - "sound": "\"Criminal activity detected!\"", - "volume": 10 - }, - { - "type": "speech", - "speaker": [ "mon_eyebot", "mon_mi_go", "mon_mi_go_slaver" ], - "sound": "\"Criminal activity registered!\"", - "volume": 15 - }, - { - "type": "speech", - "speaker": [ "mon_eyebot", "mon_mi_go", "mon_mi_go_slaver" ], - "sound": "\"Violation of law detected!\"", - "volume": 15 - }, - { - "type": "speech", - "speaker": [ "mon_eyebot", "mon_mi_go", "mon_mi_go_slaver" ], + "speaker": [ "mon_mi_go", "mon_mi_go_slaver" ], "sound": "\"Suspect on the move!\"", "volume": 15 }, @@ -2023,7 +2005,7 @@ }, { "type": "speech", - "speaker": [ "mon_eyebot", "mon_mi_go", "mon_mi_go_slaver" ], + "speaker": [ "mon_mi_go", "mon_mi_go_slaver" ], "sound": "\"You are being detained!\"", "volume": 15 }, @@ -2045,12 +2027,6 @@ "sound": "\"Requesting supervisor!\"", "volume": 15 }, - { - "type": "speech", - "speaker": "mon_eyebot", - "sound": "\"Requesting human officer!\"", - "volume": 15 - }, { "type": "speech", "speaker": [ "mon_eyebot", "mon_mi_go", "mon_mi_go_slaver" ], diff --git a/data/mods/Aftershock/mobs/robot_groups.json b/data/mods/Aftershock/mobs/robot_groups.json index 5e73239cdee9d..69b177412320d 100644 --- a/data/mods/Aftershock/mobs/robot_groups.json +++ b/data/mods/Aftershock/mobs/robot_groups.json @@ -91,11 +91,6 @@ { "monster": "mon_utilibot_const", "weight": 10, "cost_multiplier": 0 } ] }, - { - "type": "monstergroup", - "name": "GROUP_ROBOT_EYEBOT", - "monsters": [ { "monster": "mon_eyebot", "weight": 100, "cost_multiplier": 0 } ] - }, { "name": "GROUP_MANSION", "type": "monstergroup", diff --git a/data/mods/Aftershock/mobs/scavbots.json b/data/mods/Aftershock/mobs/scavbots.json index 65d346a51e1b9..eef03e5a12ea4 100644 --- a/data/mods/Aftershock/mobs/scavbots.json +++ b/data/mods/Aftershock/mobs/scavbots.json @@ -41,10 +41,35 @@ "color": "pink", "luminance": 8, "description": "A salvaged eyebot repurposed into a floating space heater. It emits a constant jet of warm air to heat an enclosed space.", + "species": [ "ROBOT" ], + "diff": 2, + "volume": "30 L", + "weight": "40750 g", + "hp": 20, + "speed": 120, + "material": [ "steel" ], + "symbol": "e", + "color": "light_gray", + "morale": 100, + "melee_damage": [ { "damage_type": "cut", "amount": 0 } ], + "dodge": 3, + "death_drops": { "groups": [ [ "robots", 4 ], [ "eyebot", 1 ] ] }, + "death_function": { "corpse_type": "BROKEN" }, "revert_to_itype": "bot_eyebot_heater", "fear_triggers": [ "HURT" ], "emit_fields": [ { "emit_id": "emit_hot_air2_stream", "delay": "1 s" } ], - "extend": { "flags": [ "PET_WONT_FOLLOW", "WARM" ] }, + "flags": [ + "SEES", + "FLIES", + "ELECTRONIC", + "COLDPROOF", + "NO_BREATHE", + "NOHEAD", + "PRIORITIZE_TARGETS", + "STUN_IMMUNE", + "PET_WONT_FOLLOW", + "WARM" + ], "armor": { "bash": 8, "cut": 10, "bullet": 8, "heat": 10 } } ] From 0e06aed1c6df4bcfdf8d47878958d98fd4ce8844 Mon Sep 17 00:00:00 2001 From: Karol1223 Date: Thu, 13 Jul 2023 12:10:12 +0200 Subject: [PATCH 02/23] eyebot schematics --- data/json/itemgroups/science_and_tech.json | 1 - data/json/items/book/electronics.json | 8 ----- data/json/obsoletion/obsolete_items.json | 7 +++++ data/json/recipes/other/bots.json | 34 ---------------------- 4 files changed, 7 insertions(+), 43 deletions(-) diff --git a/data/json/itemgroups/science_and_tech.json b/data/json/itemgroups/science_and_tech.json index 83da28628fb6c..aaf911b369dfc 100644 --- a/data/json/itemgroups/science_and_tech.json +++ b/data/json/itemgroups/science_and_tech.json @@ -135,7 +135,6 @@ [ "schematics_nursebot", 10 ], [ "schematics_grocerybot", 20 ], [ "schematics_copbot", 50 ], - [ "schematics_eyebot", 50 ], [ "schematics_secubot", 50 ], [ "schematics_skitterbot", 50 ], [ "schematics_hazmatbot", 50 ], diff --git a/data/json/items/book/electronics.json b/data/json/items/book/electronics.json index 9474625aa3d2c..87e1477e16e02 100644 --- a/data/json/items/book/electronics.json +++ b/data/json/items/book/electronics.json @@ -303,7 +303,6 @@ "category": "manuals", "name": { "str_sp": "schematics" }, "description": "seeing this is a bug", - "looks_like": "schematics_eyebot", "weight": "30 g", "volume": "250 ml", "price": 100000, @@ -339,13 +338,6 @@ "description": "Assembly plans, design specs, and technical drawings for the police bot. Most of this is useless to you, but you could use the assembly plans to re-assemble the robot from salvaged parts.", "copy-from": "schematics_generic" }, - { - "id": "schematics_eyebot", - "type": "BOOK", - "name": { "str_sp": "eyebot schematics" }, - "description": "Assembly plans, design specs, and technical drawings for the eyebot. Most of this is useless to you, but you could use the assembly plans to re-assemble the robot from salvaged parts.", - "copy-from": "schematics_generic" - }, { "id": "schematics_secubot", "type": "BOOK", diff --git a/data/json/obsoletion/obsolete_items.json b/data/json/obsoletion/obsolete_items.json index dc7589e09063d..f37dc0e3f3d1d 100644 --- a/data/json/obsoletion/obsolete_items.json +++ b/data/json/obsoletion/obsolete_items.json @@ -909,5 +909,12 @@ "item_restriction": [ "smart_phone", "smart_phone_flashlight", "smartphone_music" ] } ] + }, + { + "id": "schematics_eyebot", + "type": "BOOK", + "name": { "str_sp": "eyebot schematics" }, + "description": "Assembly plans, design specs, and technical drawings for the eyebot. Most of this is useless to you, but you could use the assembly plans to re-assemble the robot from salvaged parts.", + "copy-from": "schematics_generic" } ] diff --git a/data/json/recipes/other/bots.json b/data/json/recipes/other/bots.json index 88c11e82ca3f9..0c88826bb4749 100644 --- a/data/json/recipes/other/bots.json +++ b/data/json/recipes/other/bots.json @@ -499,40 +499,6 @@ [ [ "tazer", 1 ] ] ] }, - { - "type": "recipe", - "activity_level": "BRISK_EXERCISE", - "result": "bot_eyebot", - "category": "CC_*", - "subcategory": "CSC_*_NESTED", - "skill_used": "electronics", - "skills_required": [ [ "mechanics", 4 ], [ "computer", 4 ] ], - "reversible": true, - "decomp_learn": 5, - "book_learn": [ [ "schematics_eyebot", 7 ] ], - "difficulty": 4, - "time": "30 m", - "//": "50cm weld", - "using": [ [ "soldering_standard", 3 ], [ "welding_standard", 50 ] ], - "qualities": [ - { "id": "SCREW", "level": 1 }, - { "id": "SCREW_FINE", "level": 1 }, - { "id": "WRENCH", "level": 2 }, - { "id": "WRENCH_FINE", "level": 1 } - ], - "components": [ - [ [ "ai_module", 1 ] ], - [ [ "identification_module", 1 ] ], - [ [ "pathfinding_module", 1 ] ], - [ [ "sensor_module", 1 ] ], - [ [ "small_storage_battery", 1 ] ], - [ [ "RAM", 1 ] ], - [ [ "processor", 1 ] ], - [ [ "scrap", 1 ] ], - [ [ "quad_rotors", 1 ] ], - [ [ "lens", 1 ] ] - ] - }, { "type": "recipe", "activity_level": "BRISK_EXERCISE", From e1c04ebcf99173e653ae63723a496d2be93f98e0 Mon Sep 17 00:00:00 2001 From: Karol1223 Date: Thu, 13 Jul 2023 12:14:35 +0200 Subject: [PATCH 03/23] eyebot cpp + eyebot schematics in aftershock --- data/mods/Aftershock/itemgroups/item_groups.json | 1 - src/timed_event.cpp | 6 ------ 2 files changed, 7 deletions(-) diff --git a/data/mods/Aftershock/itemgroups/item_groups.json b/data/mods/Aftershock/itemgroups/item_groups.json index 53981677fa5dc..3867b1386c26a 100644 --- a/data/mods/Aftershock/itemgroups/item_groups.json +++ b/data/mods/Aftershock/itemgroups/item_groups.json @@ -229,7 +229,6 @@ [ "schematics_nursebot", 10 ], [ "schematics_grocerybot", 20 ], [ "schematics_copbot", 50 ], - [ "schematics_eyebot", 50 ], [ "schematics_secubot", 50 ], [ "schematics_skitterbot", 50 ], [ "schematics_chickenbot", 5 ], diff --git a/src/timed_event.cpp b/src/timed_event.cpp index 2113ebde11c07..331cfa6ded0f8 100644 --- a/src/timed_event.cpp +++ b/src/timed_event.cpp @@ -46,7 +46,6 @@ static const mtype_id mon_copbot( "mon_copbot" ); static const mtype_id mon_dark_wyrm( "mon_dark_wyrm" ); static const mtype_id mon_dermatik( "mon_dermatik" ); static const mtype_id mon_dsa_alien_dispatch( "mon_dsa_alien_dispatch" ); -static const mtype_id mon_eyebot( "mon_eyebot" ); static const mtype_id mon_riotbot( "mon_riotbot" ); static const mtype_id mon_sewer_snake( "mon_sewer_snake" ); static const mtype_id mon_spider_cellar_giant( "mon_spider_cellar_giant" ); @@ -340,11 +339,6 @@ void timed_event::per_turn() // We're safely indoors! return; } - g->place_critter_at( mon_eyebot, tripoint( place, player_character.posz() ) ); - if( player_character.sees( tripoint( place, player_character.posz() ) ) ) { - add_msg( m_warning, _( "An eyebot swoops down nearby!" ) ); - } - // One eyebot per trigger is enough, really when = calendar::turn; } } From 6df6daa23a0e03ca6a72fa9066780c37449a2d67 Mon Sep 17 00:00:00 2001 From: Karol1223 Date: Thu, 13 Jul 2023 12:35:15 +0200 Subject: [PATCH 04/23] copbot first pass - JSON + CPP --- data/json/items/corpses/inactive_bots.json | 10 ------ data/json/mapgen/bank.json | 6 ++-- data/json/monstergroups/robots.json | 1 - data/json/monsters/defense_bot.json | 41 ---------------------- src/timed_event.cpp | 14 -------- 5 files changed, 2 insertions(+), 70 deletions(-) diff --git a/data/json/items/corpses/inactive_bots.json b/data/json/items/corpses/inactive_bots.json index d8fe82219a35a..f47faf4f47407 100644 --- a/data/json/items/corpses/inactive_bots.json +++ b/data/json/items/corpses/inactive_bots.json @@ -489,16 +489,6 @@ "material": [ "steel" ], "symbol": ";", "color": "light_green", - "use_action": { - "type": "place_monster", - "monster_id": "mon_copbot", - "friendly_msg": "The police bot rolls into action, ready to pursue criminals.", - "hostile_msg": "A siren howls and lights flash as the police bot prepares to arrest you!", - "//": "Wheeled and must be easy-to-use for police deployment", - "difficulty": 3, - "moves": 100, - "skills": [ "electronics", "computer" ] - }, "flags": [ "SINGLE_USE" ], "melee_damage": { "bash": 8 } }, diff --git a/data/json/mapgen/bank.json b/data/json/mapgen/bank.json index ef95a84852ef7..d732bda404236 100644 --- a/data/json/mapgen/bank.json +++ b/data/json/mapgen/bank.json @@ -77,8 +77,7 @@ "options": [ { "name": "Open Vault", "action": "unlock" } ], "failures": [ { "action": "shutdown" }, { "action": "alarm" } ] } - }, - "place_monster": [ { "monster": "mon_copbot", "x": [ 7, 18 ], "y": [ 7, 18 ], "chance": 30, "repeat": 4 } ] + } } }, { @@ -215,8 +214,7 @@ "options": [ { "name": "Open Vault", "action": "unlock" } ], "failures": [ { "action": "alarm" }, { "action": "damage" }, { "action": "secubots" } ] } - }, - "place_monster": [ { "monster": "mon_copbot", "x": [ 7, 18 ], "y": [ 7, 18 ], "chance": 30, "repeat": 4 } ] + } } }, { diff --git a/data/json/monstergroups/robots.json b/data/json/monstergroups/robots.json index 45389d43bcd99..06f50dfc5c7f3 100644 --- a/data/json/monstergroups/robots.json +++ b/data/json/monstergroups/robots.json @@ -7,7 +7,6 @@ { "monster": "mon_skitterbot", "weight": 220, "cost_multiplier": 0 }, { "monster": "mon_secubot", "weight": 150, "cost_multiplier": 0 }, { "monster": "mon_talon_m202a1", "weight": 75, "cost_multiplier": 0 }, - { "monster": "mon_copbot", "weight": 0, "cost_multiplier": 0 }, { "monster": "mon_molebot", "weight": 40, "cost_multiplier": 0 } ] }, diff --git a/data/json/monsters/defense_bot.json b/data/json/monsters/defense_bot.json index f09ef99a2f2db..d9c2e4e665df5 100644 --- a/data/json/monsters/defense_bot.json +++ b/data/json/monsters/defense_bot.json @@ -1,45 +1,4 @@ [ - { - "id": "mon_copbot", - "type": "MONSTER", - "name": { "str": "police bot" }, - "description": "One of the many models of armored law enforcement robots employed shortly before the collapse of civilization. Solar powered like many other robots, it maintains its programmed pursuit of law and order, propelled on a trio of omni wheels.", - "default_faction": "cop_bot", - "species": [ "ROBOT" ], - "diff": 10, - "volume": "62500 ml", - "weight": "81500 g", - "hp": 80, - "speed": 100, - "material": [ "steel" ], - "symbol": "R", - "color": "light_blue", - "aggression": 100, - "morale": 100, - "melee_skill": 4, - "melee_dice": 3, - "melee_dice_sides": 2, - "melee_damage": [ { "damage_type": "cut", "amount": 0 } ], - "dodge": 8, - "vision_day": 50, - "path_settings": { "max_dist": 5 }, - "revert_to_itype": "bot_copbot", - "special_attacks": [ [ "COPBOT", 3 ] ], - "death_drops": { "groups": [ [ "robots", 4 ], [ "copbot", 1 ] ] }, - "death_function": { "corpse_type": "BROKEN" }, - "flags": [ - "SEES", - "HEARS", - "BASHES", - "ELECTRONIC", - "COLDPROOF", - "NO_BREATHE", - "PRIORITIZE_TARGETS", - "PATH_AVOID_DANGER_1", - "STUN_IMMUNE" - ], - "armor": { "bash": 12, "cut": 8, "bullet": 6 } - }, { "id": "mon_riotbot", "type": "MONSTER", diff --git a/src/timed_event.cpp b/src/timed_event.cpp index 331cfa6ded0f8..8de49a0bc76be 100644 --- a/src/timed_event.cpp +++ b/src/timed_event.cpp @@ -42,7 +42,6 @@ static const itype_id itype_petrified_eye( "petrified_eye" ); static const map_extra_id map_extra_mx_dsa_alrp( "mx_dsa_alrp" ); static const mtype_id mon_amigara_horror( "mon_amigara_horror" ); -static const mtype_id mon_copbot( "mon_copbot" ); static const mtype_id mon_dark_wyrm( "mon_dark_wyrm" ); static const mtype_id mon_dermatik( "mon_dermatik" ); static const mtype_id mon_dsa_alien_dispatch( "mon_dsa_alien_dispatch" ); @@ -101,19 +100,6 @@ void timed_event::actualize() debugmsg( "Currently disabled while NPC and monster factions are being rewritten." ); break; - case timed_event_type::ROBOT_ATTACK: { - const tripoint_abs_sm u_pos = player_character.global_sm_location(); - if( rl_dist( u_pos, map_point ) <= 4 ) { - const mtype_id &robot_type = one_in( 2 ) ? mon_copbot : mon_riotbot; - - get_event_bus().send( player_character.getID() ); - point rob( u_pos.x() > map_point.x() ? 0 - SEEX * 2 : SEEX * 4, - u_pos.y() > map_point.y() ? 0 - SEEY * 2 : SEEY * 4 ); - g->place_critter_at( robot_type, tripoint( rob, u_pos.z() ) ); - } - } - break; - case timed_event_type::SPAWN_WYRMS: { if( here.get_abs_sub().z() >= 0 ) { return; From c3118db0bb0beab4278ac32b47f61f4756fde989 Mon Sep 17 00:00:00 2001 From: Karol1223 Date: Thu, 13 Jul 2023 12:37:32 +0200 Subject: [PATCH 05/23] recipe ID fix --- data/json/recipes/nested.json | 1 - 1 file changed, 1 deletion(-) diff --git a/data/json/recipes/nested.json b/data/json/recipes/nested.json index 4b47b66e3d569..c2b77960575b6 100644 --- a/data/json/recipes/nested.json +++ b/data/json/recipes/nested.json @@ -5130,7 +5130,6 @@ "bot_c4_hack", "bot_hazmatbot", "bot_EMP_hack", - "bot_eyebot", "bot_flashbang_hack", "bot_grenade_hack", "bot_grocerybot", From 9a4452a5dca847644d9a0eb305fc6ee1559ab536 Mon Sep 17 00:00:00 2001 From: Karol1223 Date: Thu, 13 Jul 2023 13:11:28 +0200 Subject: [PATCH 06/23] fix duplicate entry --- data/mods/Aftershock/mobs/scavbots.json | 1 - 1 file changed, 1 deletion(-) diff --git a/data/mods/Aftershock/mobs/scavbots.json b/data/mods/Aftershock/mobs/scavbots.json index eef03e5a12ea4..5dca4f2a867d6 100644 --- a/data/mods/Aftershock/mobs/scavbots.json +++ b/data/mods/Aftershock/mobs/scavbots.json @@ -49,7 +49,6 @@ "speed": 120, "material": [ "steel" ], "symbol": "e", - "color": "light_gray", "morale": 100, "melee_damage": [ { "damage_type": "cut", "amount": 0 } ], "dodge": 3, From 2a0d91bc66f0164a0c841f8fd814ede9f0d34bc4 Mon Sep 17 00:00:00 2001 From: Karol1223 Date: Fri, 14 Jul 2023 14:25:36 +0200 Subject: [PATCH 07/23] port obsoleted robots to Aftershock --- data/mods/Aftershock/mobs/robots.json | 66 +++++++++++++++++++++++++ data/mods/Aftershock/mobs/scavbots.json | 26 +--------- 2 files changed, 67 insertions(+), 25 deletions(-) diff --git a/data/mods/Aftershock/mobs/robots.json b/data/mods/Aftershock/mobs/robots.json index d5fea47d649d1..70ac3bb1878cb 100644 --- a/data/mods/Aftershock/mobs/robots.json +++ b/data/mods/Aftershock/mobs/robots.json @@ -680,5 +680,71 @@ "targeting_volume": 10 } ] + }, + { + "id": "mon_eyebot", + "type": "MONSTER", + "name": { "str": "eyebot" }, + "description": "A quadcopter drone largely comprised of a high-resolution camera lens and a speaker, this robot hovers above the ground, documenting the carnage and mayhem around it. While it is no longer able to report to a central authority, it's likely that some of its automated alert systems are still functional, given that the thing seems to have an operational charging station somewhere.", + "default_faction": "cop_bot", + "species": [ "ROBOT" ], + "diff": 2, + "volume": "30000 ml", + "weight": "40750 g", + "hp": 20, + "speed": 120, + "material": [ "steel" ], + "symbol": "e", + "color": "light_gray", + "morale": 100, + "melee_damage": [ { "damage_type": "cut", "amount": 0 } ], + "dodge": 3, + "revert_to_itype": "bot_eyebot", + "special_attacks": [ [ "PHOTOGRAPH", 30 ] ], + "death_drops": { "groups": [ [ "robots", 4 ], [ "eyebot", 1 ] ] }, + "death_function": { "corpse_type": "BROKEN" }, + "flags": [ "SEES", "FLIES", "ELECTRONIC", "COLDPROOF", "NO_BREATHE", "NOHEAD", "PRIORITIZE_TARGETS", "STUN_IMMUNE" ], + "armor": { "bash": 8, "cut": 10, "bullet": 8 } + }, + { + "id": "mon_copbot", + "type": "MONSTER", + "name": { "str": "police bot" }, + "description": "One of the many models of armored law enforcement robots employed shortly before the collapse of civilization. Solar powered like many other robots, it maintains its programmed pursuit of law and order, propelled on a trio of omni wheels.", + "default_faction": "cop_bot", + "species": [ "ROBOT" ], + "diff": 10, + "volume": "62500 ml", + "weight": "81500 g", + "hp": 80, + "speed": 100, + "material": [ "steel" ], + "symbol": "R", + "color": "light_blue", + "aggression": 100, + "morale": 100, + "melee_skill": 4, + "melee_dice": 3, + "melee_dice_sides": 2, + "melee_damage": [ { "damage_type": "cut", "amount": 0 } ], + "dodge": 8, + "vision_day": 50, + "path_settings": { "max_dist": 5 }, + "revert_to_itype": "bot_copbot", + "special_attacks": [ [ "COPBOT", 3 ] ], + "death_drops": { "groups": [ [ "robots", 4 ], [ "copbot", 1 ] ] }, + "death_function": { "corpse_type": "BROKEN" }, + "flags": [ + "SEES", + "HEARS", + "BASHES", + "ELECTRONIC", + "COLDPROOF", + "NO_BREATHE", + "PRIORITIZE_TARGETS", + "PATH_AVOID_DANGER_1", + "STUN_IMMUNE" + ], + "armor": { "bash": 12, "cut": 8, "bullet": 6 } } ] diff --git a/data/mods/Aftershock/mobs/scavbots.json b/data/mods/Aftershock/mobs/scavbots.json index 5dca4f2a867d6..65d346a51e1b9 100644 --- a/data/mods/Aftershock/mobs/scavbots.json +++ b/data/mods/Aftershock/mobs/scavbots.json @@ -41,34 +41,10 @@ "color": "pink", "luminance": 8, "description": "A salvaged eyebot repurposed into a floating space heater. It emits a constant jet of warm air to heat an enclosed space.", - "species": [ "ROBOT" ], - "diff": 2, - "volume": "30 L", - "weight": "40750 g", - "hp": 20, - "speed": 120, - "material": [ "steel" ], - "symbol": "e", - "morale": 100, - "melee_damage": [ { "damage_type": "cut", "amount": 0 } ], - "dodge": 3, - "death_drops": { "groups": [ [ "robots", 4 ], [ "eyebot", 1 ] ] }, - "death_function": { "corpse_type": "BROKEN" }, "revert_to_itype": "bot_eyebot_heater", "fear_triggers": [ "HURT" ], "emit_fields": [ { "emit_id": "emit_hot_air2_stream", "delay": "1 s" } ], - "flags": [ - "SEES", - "FLIES", - "ELECTRONIC", - "COLDPROOF", - "NO_BREATHE", - "NOHEAD", - "PRIORITIZE_TARGETS", - "STUN_IMMUNE", - "PET_WONT_FOLLOW", - "WARM" - ], + "extend": { "flags": [ "PET_WONT_FOLLOW", "WARM" ] }, "armor": { "bash": 8, "cut": 10, "bullet": 8, "heat": 10 } } ] From 6f4a681175554fc0d75914f73c90d0153cf485d9 Mon Sep 17 00:00:00 2001 From: Karol1223 Date: Fri, 14 Jul 2023 14:34:05 +0200 Subject: [PATCH 08/23] riot bot - first pass --- data/json/items/corpses/inactive_bots.json | 10 ------ data/json/monstergroups/misc.json | 1 - data/json/monsters/defense_bot.json | 39 ---------------------- data/mods/Aftershock/mobs/robots.json | 39 ++++++++++++++++++++++ src/timed_event.cpp | 1 - 5 files changed, 39 insertions(+), 51 deletions(-) diff --git a/data/json/items/corpses/inactive_bots.json b/data/json/items/corpses/inactive_bots.json index f47faf4f47407..59c0f03d9fe54 100644 --- a/data/json/items/corpses/inactive_bots.json +++ b/data/json/items/corpses/inactive_bots.json @@ -576,16 +576,6 @@ "material": [ "steel" ], "symbol": ";", "color": "light_green", - "use_action": { - "type": "place_monster", - "monster_id": "mon_riotbot", - "friendly_msg": "The riot control bot rolls into action.", - "hostile_msg": "The riot control bot gasses you and approaches with a pair of handcuffs!", - "//": "Pretty easy but you want to be careful with the gas", - "difficulty": 4, - "moves": 150, - "skills": [ "electronics", "computer" ] - }, "flags": [ "SINGLE_USE" ], "melee_damage": { "bash": 8 } }, diff --git a/data/json/monstergroups/misc.json b/data/json/monstergroups/misc.json index 08100b4d2fec9..0da5d7df0477b 100644 --- a/data/json/monstergroups/misc.json +++ b/data/json/monstergroups/misc.json @@ -421,7 +421,6 @@ "monsters": [ { "monster": "mon_wasp_small" }, { "monster": "mon_wasp" }, - { "monster": "mon_riotbot" }, { "monster": "mon_secubot" }, { "monster": "mon_feral_militia" }, { "monster": "mon_plague_vector" }, diff --git a/data/json/monsters/defense_bot.json b/data/json/monsters/defense_bot.json index d9c2e4e665df5..1d4ee93e5f87e 100644 --- a/data/json/monsters/defense_bot.json +++ b/data/json/monsters/defense_bot.json @@ -1,43 +1,4 @@ [ - { - "id": "mon_riotbot", - "type": "MONSTER", - "name": { "str": "riot control bot" }, - "description": "A nonviolent riot-control bot, designed to suppress riots and make mass arrests of those participating. Though its relaxation gas is by far its best-known weapon, it carries a blinding spotlight and a low-powered stungun for self-defense--in addition to a supply of electronic handcuffs.", - "default_faction": "cop_bot", - "species": [ "ROBOT" ], - "diff": 10, - "volume": "62500 ml", - "weight": "81500 g", - "hp": 80, - "speed": 100, - "material": [ "steel" ], - "symbol": "R", - "color": "light_blue", - "aggression": 100, - "morale": 100, - "melee_damage": [ { "damage_type": "cut", "amount": 0 } ], - "dodge": 8, - "vision_day": 50, - "path_settings": { "max_dist": 5 }, - "revert_to_itype": "bot_riotbot", - "special_attacks": [ [ "RIOTBOT", 1 ] ], - "special_when_hit": [ "ZAPBACK", 100 ], - "death_drops": { "groups": [ [ "robots", 4 ], [ "copbot", 1 ] ] }, - "death_function": { "corpse_type": "BROKEN" }, - "flags": [ - "SEES", - "HEARS", - "GOODHEARING", - "ELECTRONIC", - "COLDPROOF", - "NO_BREATHE", - "PRIORITIZE_TARGETS", - "PATH_AVOID_DANGER_1", - "STUN_IMMUNE" - ], - "armor": { "bash": 12, "cut": 8, "bullet": 6 } - }, { "id": "mon_secubot", "type": "MONSTER", diff --git a/data/mods/Aftershock/mobs/robots.json b/data/mods/Aftershock/mobs/robots.json index 70ac3bb1878cb..91bff06f189a5 100644 --- a/data/mods/Aftershock/mobs/robots.json +++ b/data/mods/Aftershock/mobs/robots.json @@ -746,5 +746,44 @@ "STUN_IMMUNE" ], "armor": { "bash": 12, "cut": 8, "bullet": 6 } + }, + { + "id": "mon_riotbot", + "type": "MONSTER", + "name": { "str": "riot control bot" }, + "description": "A nonviolent riot-control bot, designed to suppress riots and make mass arrests of those participating. Though its relaxation gas is by far its best-known weapon, it carries a blinding spotlight and a low-powered stungun for self-defense--in addition to a supply of electronic handcuffs.", + "default_faction": "cop_bot", + "species": [ "ROBOT" ], + "diff": 10, + "volume": "62500 ml", + "weight": "81500 g", + "hp": 80, + "speed": 100, + "material": [ "steel" ], + "symbol": "R", + "color": "light_blue", + "aggression": 100, + "morale": 100, + "melee_damage": [ { "damage_type": "cut", "amount": 0 } ], + "dodge": 8, + "vision_day": 50, + "path_settings": { "max_dist": 5 }, + "revert_to_itype": "bot_riotbot", + "special_attacks": [ [ "RIOTBOT", 1 ] ], + "special_when_hit": [ "ZAPBACK", 100 ], + "death_drops": { "groups": [ [ "robots", 4 ], [ "copbot", 1 ] ] }, + "death_function": { "corpse_type": "BROKEN" }, + "flags": [ + "SEES", + "HEARS", + "GOODHEARING", + "ELECTRONIC", + "COLDPROOF", + "NO_BREATHE", + "PRIORITIZE_TARGETS", + "PATH_AVOID_DANGER_1", + "STUN_IMMUNE" + ], + "armor": { "bash": 12, "cut": 8, "bullet": 6 } } ] diff --git a/src/timed_event.cpp b/src/timed_event.cpp index 8de49a0bc76be..33ca51a19675a 100644 --- a/src/timed_event.cpp +++ b/src/timed_event.cpp @@ -45,7 +45,6 @@ static const mtype_id mon_amigara_horror( "mon_amigara_horror" ); static const mtype_id mon_dark_wyrm( "mon_dark_wyrm" ); static const mtype_id mon_dermatik( "mon_dermatik" ); static const mtype_id mon_dsa_alien_dispatch( "mon_dsa_alien_dispatch" ); -static const mtype_id mon_riotbot( "mon_riotbot" ); static const mtype_id mon_sewer_snake( "mon_sewer_snake" ); static const mtype_id mon_spider_cellar_giant( "mon_spider_cellar_giant" ); static const mtype_id mon_spider_widow_giant( "mon_spider_widow_giant" ); From 9e13ae77278f52687b238d6c8fd79422a720b1a5 Mon Sep 17 00:00:00 2001 From: Karol1223 Date: Fri, 14 Jul 2023 14:46:43 +0200 Subject: [PATCH 09/23] schematics --- data/json/itemgroups/science_and_tech.json | 2 - data/json/items/book/electronics.json | 14 --- data/json/obsoletion/obsolete_items.json | 14 +++ data/json/recipes/other/bots.json | 70 ------------ .../Aftershock/itemgroups/item_groups.json | 1 + data/mods/Aftershock/items/books.json | 21 ++++ .../Aftershock/recipes/robot_recipes.json | 104 ++++++++++++++++++ 7 files changed, 140 insertions(+), 86 deletions(-) diff --git a/data/json/itemgroups/science_and_tech.json b/data/json/itemgroups/science_and_tech.json index aaf911b369dfc..2a9ce61051574 100644 --- a/data/json/itemgroups/science_and_tech.json +++ b/data/json/itemgroups/science_and_tech.json @@ -134,11 +134,9 @@ "items": [ [ "schematics_nursebot", 10 ], [ "schematics_grocerybot", 20 ], - [ "schematics_copbot", 50 ], [ "schematics_secubot", 50 ], [ "schematics_skitterbot", 50 ], [ "schematics_hazmatbot", 50 ], - [ "schematics_riotbot", 50 ], [ "schematics_sciencebot", 10 ], [ "schematics_molebot", 20 ], [ "schematics_dispatch", 25 ], diff --git a/data/json/items/book/electronics.json b/data/json/items/book/electronics.json index 87e1477e16e02..8b6a38ee497e8 100644 --- a/data/json/items/book/electronics.json +++ b/data/json/items/book/electronics.json @@ -331,13 +331,6 @@ "description": "Bearing the logo of Uncanny, these are assembly plans, design specs, and technical drawings for the grocery bot. Most of this is useless to you, but you could use the assembly plans to re-assemble the robot from salvaged parts.", "copy-from": "schematics_generic" }, - { - "id": "schematics_copbot", - "type": "BOOK", - "name": { "str_sp": "police bot schematics" }, - "description": "Assembly plans, design specs, and technical drawings for the police bot. Most of this is useless to you, but you could use the assembly plans to re-assemble the robot from salvaged parts.", - "copy-from": "schematics_generic" - }, { "id": "schematics_secubot", "type": "BOOK", @@ -366,13 +359,6 @@ "description": "Assembly plans, design specs, and technical drawings for the miner bot. Most of this is useless to you, but you could use the assembly plans to re-assemble the robot from salvaged parts.", "copy-from": "schematics_generic" }, - { - "id": "schematics_riotbot", - "type": "BOOK", - "name": { "str_sp": "riot control bot schematics" }, - "description": "Assembly plans, design specs, and technical drawings for the riot control bot. Most of this is useless to you, but you could use the assembly plans to re-assemble the robot from salvaged parts.", - "copy-from": "schematics_generic" - }, { "id": "schematics_sciencebot", "type": "BOOK", diff --git a/data/json/obsoletion/obsolete_items.json b/data/json/obsoletion/obsolete_items.json index f37dc0e3f3d1d..4d25280159ac4 100644 --- a/data/json/obsoletion/obsolete_items.json +++ b/data/json/obsoletion/obsolete_items.json @@ -916,5 +916,19 @@ "name": { "str_sp": "eyebot schematics" }, "description": "Assembly plans, design specs, and technical drawings for the eyebot. Most of this is useless to you, but you could use the assembly plans to re-assemble the robot from salvaged parts.", "copy-from": "schematics_generic" + }, + { + "id": "schematics_copbot", + "type": "BOOK", + "name": { "str_sp": "police bot schematics" }, + "description": "Assembly plans, design specs, and technical drawings for the police bot. Most of this is useless to you, but you could use the assembly plans to re-assemble the robot from salvaged parts.", + "copy-from": "schematics_generic" + }, + { + "id": "schematics_riotbot", + "type": "BOOK", + "name": { "str_sp": "riot control bot schematics" }, + "description": "Assembly plans, design specs, and technical drawings for the riot control bot. Most of this is useless to you, but you could use the assembly plans to re-assemble the robot from salvaged parts.", + "copy-from": "schematics_generic" } ] diff --git a/data/json/recipes/other/bots.json b/data/json/recipes/other/bots.json index 0c88826bb4749..61f28c00b39b5 100644 --- a/data/json/recipes/other/bots.json +++ b/data/json/recipes/other/bots.json @@ -464,41 +464,6 @@ [ [ "steel_chunk", 6 ] ] ] }, - { - "type": "recipe", - "activity_level": "BRISK_EXERCISE", - "result": "bot_copbot", - "category": "CC_*", - "subcategory": "CSC_*_NESTED", - "skill_used": "electronics", - "skills_required": [ [ "mechanics", 5 ], [ "computer", 6 ] ], - "reversible": true, - "decomp_learn": 8, - "book_learn": [ [ "schematics_copbot", 7 ] ], - "difficulty": 6, - "time": "130 m", - "//": "200cm weld", - "using": [ [ "soldering_standard", 20 ], [ "welding_standard", 200 ] ], - "qualities": [ - { "id": "SCREW", "level": 1 }, - { "id": "SCREW_FINE", "level": 1 }, - { "id": "WRENCH", "level": 2 }, - { "id": "WRENCH_FINE", "level": 1 } - ], - "components": [ - [ [ "ai_module", 1 ] ], - [ [ "sensor_module", 1 ] ], - [ [ "memory_module", 1 ] ], - [ [ "pathfinding_module", 1 ] ], - [ [ "identification_module", 1 ] ], - [ [ "omni_wheel", 1 ] ], - [ [ "copbot_chassis", 1 ] ], - [ [ "android_arms", 1 ] ], - [ [ "power_supply", 4 ] ], - [ [ "solar_cell", 2 ] ], - [ [ "tazer", 1 ] ] - ] - }, { "type": "recipe", "activity_level": "BRISK_EXERCISE", @@ -530,41 +495,6 @@ [ [ "steel_chunk", 20 ] ] ] }, - { - "type": "recipe", - "activity_level": "BRISK_EXERCISE", - "result": "bot_riotbot", - "category": "CC_*", - "subcategory": "CSC_*_NESTED", - "skill_used": "electronics", - "skills_required": [ [ "mechanics", 7 ], [ "computer", 6 ] ], - "reversible": true, - "decomp_learn": 8, - "book_learn": [ [ "schematics_riotbot", 7 ] ], - "difficulty": 6, - "time": "140 m", - "//": "200cm weld", - "using": [ [ "soldering_standard", 20 ], [ "welding_standard", 200 ] ], - "qualities": [ - { "id": "SCREW", "level": 1 }, - { "id": "SCREW_FINE", "level": 1 }, - { "id": "WRENCH", "level": 2 }, - { "id": "WRENCH_FINE", "level": 1 } - ], - "components": [ - [ [ "ai_module", 1 ] ], - [ [ "sensor_module", 1 ] ], - [ [ "memory_module", 1 ] ], - [ [ "pathfinding_module", 1 ] ], - [ [ "identification_module", 1 ] ], - [ [ "omni_wheel", 1 ] ], - [ [ "copbot_chassis", 1 ] ], - [ [ "android_arms", 1 ] ], - [ [ "power_supply", 4 ] ], - [ [ "solar_cell", 2 ] ], - [ [ "canister_empty", 1 ] ] - ] - }, { "type": "recipe", "activity_level": "BRISK_EXERCISE", diff --git a/data/mods/Aftershock/itemgroups/item_groups.json b/data/mods/Aftershock/itemgroups/item_groups.json index 3867b1386c26a..53981677fa5dc 100644 --- a/data/mods/Aftershock/itemgroups/item_groups.json +++ b/data/mods/Aftershock/itemgroups/item_groups.json @@ -229,6 +229,7 @@ [ "schematics_nursebot", 10 ], [ "schematics_grocerybot", 20 ], [ "schematics_copbot", 50 ], + [ "schematics_eyebot", 50 ], [ "schematics_secubot", 50 ], [ "schematics_skitterbot", 50 ], [ "schematics_chickenbot", 5 ], diff --git a/data/mods/Aftershock/items/books.json b/data/mods/Aftershock/items/books.json index 33cbad244bfb3..5d094c88e813d 100644 --- a/data/mods/Aftershock/items/books.json +++ b/data/mods/Aftershock/items/books.json @@ -126,6 +126,27 @@ "description": "Bearing the logo of Honda, those are assembly plans, design specs, and technical drawings for the tripod. Most of this is useless to you, but you could use the assembly plans to re-assemble the robot from salvaged parts.", "copy-from": "schematics_generic" }, + { + "id": "schematics_eyebot", + "type": "BOOK", + "name": { "str_sp": "eyebot schematics" }, + "description": "Assembly plans, design specs, and technical drawings for the eyebot. Most of this is useless to you, but you could use the assembly plans to re-assemble the robot from salvaged parts.", + "copy-from": "schematics_generic" + }, + { + "id": "schematics_copbot", + "type": "BOOK", + "name": { "str_sp": "police bot schematics" }, + "description": "Assembly plans, design specs, and technical drawings for the police bot. Most of this is useless to you, but you could use the assembly plans to re-assemble the robot from salvaged parts.", + "copy-from": "schematics_generic" + }, + { + "id": "schematics_riotbot", + "type": "BOOK", + "name": { "str_sp": "riot control bot schematics" }, + "description": "Assembly plans, design specs, and technical drawings for the riot control bot. Most of this is useless to you, but you could use the assembly plans to re-assemble the robot from salvaged parts.", + "copy-from": "schematics_generic" + }, { "id": "afs_landfall_kit_2_instructions", "type": "BOOK", diff --git a/data/mods/Aftershock/recipes/robot_recipes.json b/data/mods/Aftershock/recipes/robot_recipes.json index 0116c6a37346e..b397b24ce6c45 100644 --- a/data/mods/Aftershock/recipes/robot_recipes.json +++ b/data/mods/Aftershock/recipes/robot_recipes.json @@ -78,5 +78,109 @@ [ [ "afs_material_1", 8 ] ], [ [ "robot_controls", 1 ] ] ] + }, + { + "type": "recipe", + "activity_level": "BRISK_EXERCISE", + "result": "bot_eyebot", + "category": "CC_*", + "subcategory": "CSC_*_NESTED", + "skill_used": "electronics", + "skills_required": [ [ "mechanics", 4 ], [ "computer", 4 ] ], + "reversible": true, + "decomp_learn": 5, + "book_learn": [ [ "schematics_eyebot", 7 ] ], + "difficulty": 4, + "time": "30 m", + "//": "50cm weld", + "using": [ [ "soldering_standard", 3 ], [ "welding_standard", 50 ] ], + "qualities": [ + { "id": "SCREW", "level": 1 }, + { "id": "SCREW_FINE", "level": 1 }, + { "id": "WRENCH", "level": 2 }, + { "id": "WRENCH_FINE", "level": 1 } + ], + "components": [ + [ [ "ai_module", 1 ] ], + [ [ "identification_module", 1 ] ], + [ [ "pathfinding_module", 1 ] ], + [ [ "sensor_module", 1 ] ], + [ [ "small_storage_battery", 1 ] ], + [ [ "RAM", 1 ] ], + [ [ "processor", 1 ] ], + [ [ "scrap", 1 ] ], + [ [ "quad_rotors", 1 ] ], + [ [ "lens", 1 ] ] + ] + }, + { + "type": "recipe", + "activity_level": "BRISK_EXERCISE", + "result": "bot_copbot", + "category": "CC_*", + "subcategory": "CSC_*_NESTED", + "skill_used": "electronics", + "skills_required": [ [ "mechanics", 5 ], [ "computer", 6 ] ], + "reversible": true, + "decomp_learn": 8, + "book_learn": [ [ "schematics_copbot", 7 ] ], + "difficulty": 6, + "time": "130 m", + "//": "200cm weld", + "using": [ [ "soldering_standard", 20 ], [ "welding_standard", 200 ] ], + "qualities": [ + { "id": "SCREW", "level": 1 }, + { "id": "SCREW_FINE", "level": 1 }, + { "id": "WRENCH", "level": 2 }, + { "id": "WRENCH_FINE", "level": 1 } + ], + "components": [ + [ [ "ai_module", 1 ] ], + [ [ "sensor_module", 1 ] ], + [ [ "memory_module", 1 ] ], + [ [ "pathfinding_module", 1 ] ], + [ [ "identification_module", 1 ] ], + [ [ "omni_wheel", 1 ] ], + [ [ "copbot_chassis", 1 ] ], + [ [ "android_arms", 1 ] ], + [ [ "power_supply", 4 ] ], + [ [ "solar_cell", 2 ] ], + [ [ "tazer", 1 ] ] + ] + }, + { + "type": "recipe", + "activity_level": "BRISK_EXERCISE", + "result": "bot_riotbot", + "category": "CC_*", + "subcategory": "CSC_*_NESTED", + "skill_used": "electronics", + "skills_required": [ [ "mechanics", 7 ], [ "computer", 6 ] ], + "reversible": true, + "decomp_learn": 8, + "book_learn": [ [ "schematics_riotbot", 7 ] ], + "difficulty": 6, + "time": "140 m", + "//": "200cm weld", + "using": [ [ "soldering_standard", 20 ], [ "welding_standard", 200 ] ], + "qualities": [ + { "id": "SCREW", "level": 1 }, + { "id": "SCREW_FINE", "level": 1 }, + { "id": "WRENCH", "level": 2 }, + { "id": "WRENCH_FINE", "level": 1 } + ], + "components": [ + [ [ "ai_module", 1 ] ], + [ [ "sensor_module", 1 ] ], + [ [ "memory_module", 1 ] ], + [ [ "pathfinding_module", 1 ] ], + [ [ "identification_module", 1 ] ], + [ [ "omni_wheel", 1 ] ], + [ [ "copbot_chassis", 1 ] ], + [ [ "android_arms", 1 ] ], + [ [ "power_supply", 4 ] ], + [ [ "solar_cell", 2 ] ], + [ [ "canister_empty", 1 ] ] + ] } ] From f892b8c77358cf35bcd1d860ef95a4c8632769fe Mon Sep 17 00:00:00 2001 From: Karol1223 Date: Sat, 15 Jul 2023 15:09:37 +0200 Subject: [PATCH 10/23] severely silly --- data/json/recipes/nested.json | 2 -- 1 file changed, 2 deletions(-) diff --git a/data/json/recipes/nested.json b/data/json/recipes/nested.json index c2b77960575b6..1302093268bd6 100644 --- a/data/json/recipes/nested.json +++ b/data/json/recipes/nested.json @@ -5143,8 +5143,6 @@ "bot_molebot", "bot_mininuke_hack", "bot_nursebot", - "bot_copbot", - "bot_riotbot", "bot_skitterbot", "bot_secubot", "bot_tazer_hack", From cd2b8bde65e7d2d52ad1e33d59e994d74931ec88 Mon Sep 17 00:00:00 2001 From: Karol1223 Date: Sat, 15 Jul 2023 15:26:49 +0200 Subject: [PATCH 11/23] evil --- data/mods/Aftershock/recipes/robot_recipes.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/data/mods/Aftershock/recipes/robot_recipes.json b/data/mods/Aftershock/recipes/robot_recipes.json index b397b24ce6c45..24215977160ef 100644 --- a/data/mods/Aftershock/recipes/robot_recipes.json +++ b/data/mods/Aftershock/recipes/robot_recipes.json @@ -83,8 +83,8 @@ "type": "recipe", "activity_level": "BRISK_EXERCISE", "result": "bot_eyebot", - "category": "CC_*", - "subcategory": "CSC_*_NESTED", + "category": "CC_ELECTRONIC", + "subcategory": "CSC_ELECTRONIC_OTHER", "skill_used": "electronics", "skills_required": [ [ "mechanics", 4 ], [ "computer", 4 ] ], "reversible": true, @@ -117,8 +117,8 @@ "type": "recipe", "activity_level": "BRISK_EXERCISE", "result": "bot_copbot", - "category": "CC_*", - "subcategory": "CSC_*_NESTED", + "category": "CC_ELECTRONIC", + "subcategory": "CSC_ELECTRONIC_OTHER", "skill_used": "electronics", "skills_required": [ [ "mechanics", 5 ], [ "computer", 6 ] ], "reversible": true, @@ -152,8 +152,8 @@ "type": "recipe", "activity_level": "BRISK_EXERCISE", "result": "bot_riotbot", - "category": "CC_*", - "subcategory": "CSC_*_NESTED", + "category": "CC_ELECTRONIC", + "subcategory": "CSC_ELECTRONIC_OTHER", "skill_used": "electronics", "skills_required": [ [ "mechanics", 7 ], [ "computer", 6 ] ], "reversible": true, From 4ffca234a65f448ec26d7fbb8127a71ca6d5b868 Mon Sep 17 00:00:00 2001 From: Karol1223 Date: Sun, 16 Jul 2023 14:36:35 +0200 Subject: [PATCH 12/23] item bonanza --- data/json/items/corpses/inactive_bots.json | 68 ++++------------ data/json/items/generic.json | 49 +---------- .../lab_nested_maintenance.json | 1 - data/json/monsters/robofac_robots.json | 2 +- data/json/recipes/other/parts.json | 2 +- data/json/recipes/recipe_deconstruction.json | 70 ---------------- data/mods/Aftershock/items/corpses.json | 51 ++++++++++++ data/mods/Aftershock/items/inactiverobot.json | 81 +++++++++++++++++++ .../recipes/deconstruction/robot.json | 70 ++++++++++++++++ 9 files changed, 225 insertions(+), 169 deletions(-) diff --git a/data/json/items/corpses/inactive_bots.json b/data/json/items/corpses/inactive_bots.json index 59c0f03d9fe54..4805818684ab4 100644 --- a/data/json/items/corpses/inactive_bots.json +++ b/data/json/items/corpses/inactive_bots.json @@ -475,40 +475,6 @@ "flags": [ "SINGLE_USE" ], "melee_damage": { "bash": 8 } }, - { - "id": "bot_copbot", - "looks_like": "broken_copbot", - "type": "TOOL", - "name": { "str": "inactive police bot" }, - "description": "An inactive police robot. Using this item involves placing it on the ground and turning it on. If reprogrammed and rewired successfully, the police bot will then identify you as law enforcement, roam around or follow you, and attempt to detain lawbreakers.", - "weight": "81500 g", - "volume": "62500 ml", - "price": 100000, - "price_postapoc": 500, - "to_hit": -3, - "material": [ "steel" ], - "symbol": ";", - "color": "light_green", - "flags": [ "SINGLE_USE" ], - "melee_damage": { "bash": 8 } - }, - { - "id": "bot_eyebot", - "looks_like": "broken_eyebot", - "type": "TOOL", - "name": { "str": "inactive eyebot" }, - "description": "An inactive eyebot. Using this item involves turning it on and launching the UAV. If reprogrammed and rewired successfully, the eyebot will then keep watch for intruders.", - "weight": "40750 g", - "volume": "30 L", - "price": 10000, - "price_postapoc": 500, - "to_hit": -3, - "material": [ "steel" ], - "symbol": ";", - "color": "light_green", - "flags": [ "SINGLE_USE" ], - "melee_damage": { "bash": 8 } - }, { "id": "bot_hazmatbot", "type": "TOOL", @@ -562,23 +528,6 @@ "flags": [ "SINGLE_USE" ], "melee_damage": { "bash": 8 } }, - { - "id": "bot_riotbot", - "looks_like": "broken_riotbot", - "type": "TOOL", - "name": { "str": "inactive riot control bot" }, - "description": "An inactive riot control bot. Using this item involves placing it on the ground and turning it on. If reprogrammed and rewired successfully, the robot will bring order and peace to the horde.", - "weight": "81500 g", - "volume": "62500 ml", - "price": 35000, - "price_postapoc": 1500, - "to_hit": -3, - "material": [ "steel" ], - "symbol": ";", - "color": "light_green", - "flags": [ "SINGLE_USE" ], - "melee_damage": { "bash": 8 } - }, { "id": "bot_skitterbot", "looks_like": "broken_skitterbot", @@ -941,5 +890,22 @@ }, "flags": [ "SINGLE_USE" ], "melee_damage": { "bash": 6, "cut": 6 } + }, + { + "id": "bot_robofac_camspy", + "looks_like": "broken_robofac_camspy", + "type": "TOOL", + "name": { "str": "inactive camspy", "str_pl": "inactive camspies" }, + "description": "An inactive campsy. Using this item involves turning it on and launching it. If reprogrammed and rewired successfully, the camspy will then keep watch for intruders.", + "weight": "40750 g", + "volume": "30 L", + "price": 10000, + "price_postapoc": 500, + "to_hit": -3, + "material": [ "steel", "plastic" ], + "symbol": ";", + "color": "light_green", + "flags": [ "SINGLE_USE", "NO_SALVAGE" ], + "melee_damage": { "bash": 8 } } ] diff --git a/data/json/items/generic.json b/data/json/items/generic.json index c238556c61fe0..c0eaf91ba6b03 100644 --- a/data/json/items/generic.json +++ b/data/json/items/generic.json @@ -1369,28 +1369,21 @@ }, { "type": "GENERIC", - "id": "broken_eyebot", + "id": "broken_robofac_camspy", "symbol": ",", "color": "green", - "name": { "str": "broken eyebot" }, + "name": { "str": "broken camspy", "str_pl": "broken camspies" }, "category": "other", - "description": "A broken eyebot. Much less threatening now that it won't be calling for backup. Could be gutted for parts.", + "description": "A broken camspy. It probably won't spy on anything ever again. Could be gutted for parts.", "price": 1000, "price_postapoc": 10, "material": [ "steel", "plastic" ], "weight": "31520 g", "volume": "15 L", "to_hit": -3, - "flags": [ "TRADER_AVOID", "NO_REPAIR" ], + "flags": [ "TRADER_AVOID", "NO_REPAIR", NO_SALVAGE ], "melee_damage": { "bash": 6, "cut": 6 } }, - { - "type": "GENERIC", - "id": "broken_robofac_camspy", - "copy-from": "broken_eyebot", - "name": { "str": "broken camspy", "str_pl": "broken camspies" }, - "description": "A broken camspy. It probably won't spy on anything ever again. Could be gutted for parts." - }, { "type": "GENERIC", "id": "broken_skitterbot", @@ -1425,23 +1418,6 @@ "flags": [ "TRADER_AVOID", "NO_REPAIR" ], "melee_damage": { "bash": 4, "cut": 4 } }, - { - "type": "GENERIC", - "id": "broken_copbot", - "symbol": ",", - "color": "green", - "name": { "str": "broken police bot" }, - "category": "other", - "description": "A broken police bot. Much less threatening now that it's quiet and still. Could be gutted for parts.", - "price": 30000, - "price_postapoc": 10, - "material": [ "steel", "plastic" ], - "weight": "140000 g", - "volume": "62500 ml", - "to_hit": -3, - "flags": [ "TRADER_AVOID", "NO_REPAIR" ], - "melee_damage": { "bash": 6, "cut": 6 } - }, { "type": "GENERIC", "id": "broken_nursebot", @@ -1499,23 +1475,6 @@ "name": { "str": "broken nurse bot" }, "copy-from": "broken_nursebot" }, - { - "type": "GENERIC", - "id": "broken_riotbot", - "symbol": ",", - "color": "green", - "name": { "str": "broken riot control bot" }, - "category": "other", - "description": "A broken riot control bot. Much less threatening now that it's out of gas. Could be gutted for parts.", - "price": 30000, - "price_postapoc": 10, - "material": [ "steel", "plastic" ], - "weight": "140000 g", - "volume": "62500 ml", - "to_hit": -3, - "flags": [ "TRADER_AVOID", "NO_REPAIR" ], - "melee_damage": { "bash": 6, "cut": 6 } - }, { "type": "GENERIC", "id": "broken_robofac_prototype", diff --git a/data/json/mapgen/lab/lab_modular/lab_nests_modular/lab_nested_maintenance.json b/data/json/mapgen/lab/lab_modular/lab_nests_modular/lab_nested_maintenance.json index 8c6f901445633..131a9d18be5cc 100644 --- a/data/json/mapgen/lab/lab_modular/lab_nests_modular/lab_nested_maintenance.json +++ b/data/json/mapgen/lab/lab_modular/lab_nests_modular/lab_nested_maintenance.json @@ -542,7 +542,6 @@ ], "palettes": [ "lab_common_palette", "lab_maintenance_palette" ], "place_loot": [ - { "item": "broken_eyebot", "x": 0, "y": 2, "chance": 100 }, { "item": "broken_secubot", "x": 0, "y": 6, "chance": 100 } ] } diff --git a/data/json/monsters/robofac_robots.json b/data/json/monsters/robofac_robots.json index fae85bac61b37..11948ae7b116d 100644 --- a/data/json/monsters/robofac_robots.json +++ b/data/json/monsters/robofac_robots.json @@ -50,7 +50,7 @@ "morale": 100, "melee_damage": [ { "damage_type": "cut", "amount": 0 } ], "dodge": 3, - "revert_to_itype": "bot_eyebot", + "revert_to_itype": "bot_robofac_camspy", "tracking_distance": 10, "aggression": -99, "special_attacks": [ [ "DEPART", 34560 ] ], diff --git a/data/json/recipes/other/parts.json b/data/json/recipes/other/parts.json index dc011b7a0bf34..4d718b3b837d0 100644 --- a/data/json/recipes/other/parts.json +++ b/data/json/recipes/other/parts.json @@ -627,7 +627,7 @@ "using": [ [ "soldering_standard", 10 ] ], "qualities": [ { "id": "SCREW", "level": 1 }, { "id": "SAW_M", "level": 1 } ], "components": [ - [ [ "camera", 2 ], [ "camera_pro", 2 ], [ "broken_eyebot", 2 ], [ "smart_phone", 2 ] ], + [ [ "camera", 2 ], [ "camera_pro", 2 ], [ "smart_phone", 2 ] ], [ [ "power_supply", 1 ] ], [ [ "cable", 5 ] ] ] diff --git a/data/json/recipes/recipe_deconstruction.json b/data/json/recipes/recipe_deconstruction.json index 3963822367168..3eee47b98b852 100644 --- a/data/json/recipes/recipe_deconstruction.json +++ b/data/json/recipes/recipe_deconstruction.json @@ -772,30 +772,6 @@ [ [ "identification_module", 1 ] ] ] }, - { - "result": "broken_copbot", - "type": "uncraft", - "activity_level": "MODERATE_EXERCISE", - "skill_used": "electronics", - "difficulty": 6, - "time": "2 h", - "//": "These robot corpses should really be moved into the butcher mechanic", - "using": [ [ "soldering_standard", 20 ], [ "welding_standard", 5 ] ], - "qualities": [ { "id": "SCREW", "level": 1 }, { "id": "SAW_M", "level": 1 } ], - "components": [ - [ [ "ai_module", 1 ] ], - [ [ "sensor_module", 1 ] ], - [ [ "memory_module", 1 ] ], - [ [ "pathfinding_module", 1 ] ], - [ [ "identification_module", 1 ] ], - [ [ "omni_wheel", 1 ] ], - [ [ "copbot_chassis", 1 ] ], - [ [ "android_arms", 1 ] ], - [ [ "power_supply", 4 ] ], - [ [ "solar_cell", 2 ] ], - [ [ "tazer", 1 ] ] - ] - }, { "result": "broken_turret_speaker", "type": "uncraft", @@ -1002,29 +978,6 @@ [ [ "turret_chassis", 1 ] ] ] }, - { - "result": "broken_eyebot", - "type": "uncraft", - "activity_level": "LIGHT_EXERCISE", - "skill_used": "electronics", - "difficulty": 2, - "time": "30 m", - "using": [ [ "soldering_standard", 3 ] ], - "qualities": [ { "id": "SCREW", "level": 1 } ], - "components": [ - [ [ "ai_module", 1 ] ], - [ [ "identification_module", 1 ] ], - [ [ "pathfinding_module", 1 ] ], - [ [ "sensor_module", 1 ] ], - [ [ "small_storage_battery", 1 ] ], - [ [ "RAM", 1 ] ], - [ [ "processor", 1 ] ], - [ [ "scrap", 1 ] ], - [ [ "e_scrap", 1 ] ], - [ [ "quad_rotors", 1 ] ], - [ [ "lens", 1 ] ] - ] - }, { "result": "broken_robofac_camspy", "type": "uncraft", @@ -1168,29 +1121,6 @@ [ [ "steel_chunk", 20 ] ] ] }, - { - "result": "broken_riotbot", - "type": "uncraft", - "activity_level": "MODERATE_EXERCISE", - "skill_used": "electronics", - "difficulty": 6, - "time": "2 h", - "using": [ [ "soldering_standard", 20 ], [ "welding_standard", 5 ] ], - "qualities": [ { "id": "SCREW", "level": 1 }, { "id": "SAW_M", "level": 1 } ], - "components": [ - [ [ "ai_module", 1 ] ], - [ [ "sensor_module", 1 ] ], - [ [ "memory_module", 1 ] ], - [ [ "pathfinding_module", 1 ] ], - [ [ "identification_module", 1 ] ], - [ [ "omni_wheel", 1 ] ], - [ [ "copbot_chassis", 1 ] ], - [ [ "android_arms", 1 ] ], - [ [ "power_supply", 4 ] ], - [ [ "solar_cell", 2 ] ], - [ [ "canister_empty", 1 ] ] - ] - }, { "result": "broken_secubot", "type": "uncraft", diff --git a/data/mods/Aftershock/items/corpses.json b/data/mods/Aftershock/items/corpses.json index a63f163e41d96..46741d6bb0cc4 100644 --- a/data/mods/Aftershock/items/corpses.json +++ b/data/mods/Aftershock/items/corpses.json @@ -288,5 +288,56 @@ "to_hit": -3, "flags": [ "TRADER_AVOID", "LEAK_DAM", "RADIOACTIVE" ], "melee_damage": { "bash": 6, "cut": 6 } + }, + { + "type": "GENERIC", + "id": "broken_eyebot", + "symbol": ",", + "color": "green", + "name": { "str": "broken eyebot" }, + "category": "other", + "description": "A broken eyebot. Much less threatening now that it won't be calling for backup. Could be gutted for parts.", + "price": 1000, + "price_postapoc": 10, + "material": [ "steel", "plastic" ], + "weight": "31520 g", + "volume": "15 L", + "to_hit": -3, + "flags": [ "TRADER_AVOID", "NO_REPAIR" ], + "melee_damage": { "bash": 6, "cut": 6 } + }, + { + "type": "GENERIC", + "id": "broken_copbot", + "symbol": ",", + "color": "green", + "name": { "str": "broken police bot" }, + "category": "other", + "description": "A broken police bot. Much less threatening now that it's quiet and still. Could be gutted for parts.", + "price": 30000, + "price_postapoc": 10, + "material": [ "steel", "plastic" ], + "weight": "140000 g", + "volume": "62500 ml", + "to_hit": -3, + "flags": [ "TRADER_AVOID", "NO_REPAIR" ], + "melee_damage": { "bash": 6, "cut": 6 } + }, + { + "type": "GENERIC", + "id": "broken_riotbot", + "symbol": ",", + "color": "green", + "name": { "str": "broken riot control bot" }, + "category": "other", + "description": "A broken riot control bot. Much less threatening now that it's out of gas. Could be gutted for parts.", + "price": 30000, + "price_postapoc": 10, + "material": [ "steel", "plastic" ], + "weight": "140000 g", + "volume": "62500 ml", + "to_hit": -3, + "flags": [ "TRADER_AVOID", "NO_REPAIR" ], + "melee_damage": { "bash": 6, "cut": 6 } } ] diff --git a/data/mods/Aftershock/items/inactiverobot.json b/data/mods/Aftershock/items/inactiverobot.json index 36d1c0168d469..5d16a9bfdc0c5 100644 --- a/data/mods/Aftershock/items/inactiverobot.json +++ b/data/mods/Aftershock/items/inactiverobot.json @@ -506,5 +506,86 @@ }, "flags": [ "SINGLE_USE" ], "melee_damage": { "bash": 8 } + }, + { + "id": "bot_eyebot", + "looks_like": "broken_eyebot", + "type": "TOOL", + "name": { "str": "inactive eyebot" }, + "description": "An inactive eyebot. Using this item involves turning it on and launching the UAV. If reprogrammed and rewired successfully, the eyebot will then keep watch for intruders.", + "weight": "40750 g", + "volume": "30 L", + "price": 10000, + "price_postapoc": 500, + "to_hit": -3, + "material": [ "steel" ], + "symbol": ";", + "color": "light_green", + "use_action": { + "type": "place_monster", + "monster_id": "mon_eyebot", + "friendly_msg": "The eyebot hums and takes to the sky.", + "hostile_msg": "The eyebot beeps disapprovingly and focuses its camera on your face. Say cheese!", + "//": "Like most surveillance tech these likely have poor security. Secure the wifi!", + "difficulty": 1, + "moves": 100, + "skills": [ "electronics", "computer" ] + }, + "flags": [ "SINGLE_USE" ], + "melee_damage": { "bash": 8 } + }, + { + "id": "bot_copbot", + "looks_like": "broken_copbot", + "type": "TOOL", + "name": { "str": "inactive police bot" }, + "description": "An inactive police robot. Using this item involves placing it on the ground and turning it on. If reprogrammed and rewired successfully, the police bot will then identify you as law enforcement, roam around or follow you, and attempt to detain lawbreakers.", + "weight": "81500 g", + "volume": "62500 ml", + "price": 100000, + "price_postapoc": 500, + "to_hit": -3, + "material": [ "steel" ], + "symbol": ";", + "color": "light_green", + "use_action": { + "type": "place_monster", + "monster_id": "mon_copbot", + "friendly_msg": "The police bot rolls into action, ready to pursue criminals.", + "hostile_msg": "A siren howls and lights flash as the police bot prepares to arrest you!", + "//": "Wheeled and must be easy-to-use for police deployment", + "difficulty": 3, + "moves": 100, + "skills": [ "electronics", "computer" ] + }, + "flags": [ "SINGLE_USE" ], + "melee_damage": { "bash": 8 } + }, + { + "id": "bot_riotbot", + "looks_like": "broken_riotbot", + "type": "TOOL", + "name": { "str": "inactive riot control bot" }, + "description": "An inactive riot control bot. Using this item involves placing it on the ground and turning it on. If reprogrammed and rewired successfully, the robot will bring order and peace to the horde.", + "weight": "81500 g", + "volume": "62500 ml", + "price": 35000, + "price_postapoc": 1500, + "to_hit": -3, + "material": [ "steel" ], + "symbol": ";", + "color": "light_green", + "use_action": { + "type": "place_monster", + "monster_id": "mon_riotbot", + "friendly_msg": "The riot control bot rolls into action.", + "hostile_msg": "The riot control bot gasses you and approaches with a pair of handcuffs!", + "//": "Pretty easy but you want to be careful with the gas", + "difficulty": 4, + "moves": 150, + "skills": [ "electronics", "computer" ] + }, + "flags": [ "SINGLE_USE" ], + "melee_damage": { "bash": 8 } } ] diff --git a/data/mods/Aftershock/recipes/deconstruction/robot.json b/data/mods/Aftershock/recipes/deconstruction/robot.json index f9b3074c005b7..92ee60796f485 100644 --- a/data/mods/Aftershock/recipes/deconstruction/robot.json +++ b/data/mods/Aftershock/recipes/deconstruction/robot.json @@ -20,5 +20,75 @@ [ [ "robot_controls", 1 ] ], [ [ "turret_chassis", 1 ] ] ] + }, + { + "result": "broken_eyebot", + "type": "uncraft", + "activity_level": "LIGHT_EXERCISE", + "skill_used": "electronics", + "difficulty": 2, + "time": "30 m", + "using": [ [ "soldering_standard", 3 ] ], + "qualities": [ { "id": "SCREW", "level": 1 } ], + "components": [ + [ [ "ai_module", 1 ] ], + [ [ "identification_module", 1 ] ], + [ [ "pathfinding_module", 1 ] ], + [ [ "sensor_module", 1 ] ], + [ [ "small_storage_battery", 1 ] ], + [ [ "RAM", 1 ] ], + [ [ "processor", 1 ] ], + [ [ "scrap", 1 ] ], + [ [ "e_scrap", 1 ] ], + [ [ "quad_rotors", 1 ] ], + [ [ "lens", 1 ] ] + ] + }, + { + "result": "broken_copbot", + "type": "uncraft", + "activity_level": "MODERATE_EXERCISE", + "skill_used": "electronics", + "difficulty": 6, + "time": "2 h", + "//": "These robot corpses should really be moved into the butcher mechanic", + "using": [ [ "soldering_standard", 20 ], [ "welding_standard", 5 ] ], + "qualities": [ { "id": "SCREW", "level": 1 }, { "id": "SAW_M", "level": 1 } ], + "components": [ + [ [ "ai_module", 1 ] ], + [ [ "sensor_module", 1 ] ], + [ [ "memory_module", 1 ] ], + [ [ "pathfinding_module", 1 ] ], + [ [ "identification_module", 1 ] ], + [ [ "omni_wheel", 1 ] ], + [ [ "copbot_chassis", 1 ] ], + [ [ "android_arms", 1 ] ], + [ [ "power_supply", 4 ] ], + [ [ "solar_cell", 2 ] ], + [ [ "tazer", 1 ] ] + ] + }, + { + "result": "broken_riotbot", + "type": "uncraft", + "activity_level": "MODERATE_EXERCISE", + "skill_used": "electronics", + "difficulty": 6, + "time": "2 h", + "using": [ [ "soldering_standard", 20 ], [ "welding_standard", 5 ] ], + "qualities": [ { "id": "SCREW", "level": 1 }, { "id": "SAW_M", "level": 1 } ], + "components": [ + [ [ "ai_module", 1 ] ], + [ [ "sensor_module", 1 ] ], + [ [ "memory_module", 1 ] ], + [ [ "pathfinding_module", 1 ] ], + [ [ "identification_module", 1 ] ], + [ [ "omni_wheel", 1 ] ], + [ [ "copbot_chassis", 1 ] ], + [ [ "android_arms", 1 ] ], + [ [ "power_supply", 4 ] ], + [ [ "solar_cell", 2 ] ], + [ [ "canister_empty", 1 ] ] + ] } ] From 24684ccb734b7d70c88cc3fb85b57268ad9723ec Mon Sep 17 00:00:00 2001 From: Karol1223 Date: Sun, 16 Jul 2023 14:41:35 +0200 Subject: [PATCH 13/23] camspy + linting --- data/json/items/corpses/inactive_bots.json | 9 +++++++++ .../lab_nests_modular/lab_nested_maintenance.json | 4 +--- data/json/recipes/other/parts.json | 6 +----- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/data/json/items/corpses/inactive_bots.json b/data/json/items/corpses/inactive_bots.json index 4805818684ab4..a31af3c421aa9 100644 --- a/data/json/items/corpses/inactive_bots.json +++ b/data/json/items/corpses/inactive_bots.json @@ -905,6 +905,15 @@ "material": [ "steel", "plastic" ], "symbol": ";", "color": "light_green", + "use_action": { + "type": "place_monster", + "monster_id": "mon_robofac_camspy", + "friendly_msg": "The camspy hums and takes to the sky.", + "hostile_msg": "The camspy hums and appears to reconnect to whoever was piloting it before.", + "difficulty": 3, + "moves": 100, + "skills": [ "electronics", "computer" ] + }, "flags": [ "SINGLE_USE", "NO_SALVAGE" ], "melee_damage": { "bash": 8 } } diff --git a/data/json/mapgen/lab/lab_modular/lab_nests_modular/lab_nested_maintenance.json b/data/json/mapgen/lab/lab_modular/lab_nests_modular/lab_nested_maintenance.json index 131a9d18be5cc..5ae228cb37a61 100644 --- a/data/json/mapgen/lab/lab_modular/lab_nests_modular/lab_nested_maintenance.json +++ b/data/json/mapgen/lab/lab_modular/lab_nests_modular/lab_nested_maintenance.json @@ -541,9 +541,7 @@ "NN Q| " ], "palettes": [ "lab_common_palette", "lab_maintenance_palette" ], - "place_loot": [ - { "item": "broken_secubot", "x": 0, "y": 6, "chance": 100 } - ] + "place_loot": [ { "item": "broken_secubot", "x": 0, "y": 6, "chance": 100 } ] } }, { diff --git a/data/json/recipes/other/parts.json b/data/json/recipes/other/parts.json index 4d718b3b837d0..82f4f0a1e3b5f 100644 --- a/data/json/recipes/other/parts.json +++ b/data/json/recipes/other/parts.json @@ -626,11 +626,7 @@ "autolearn": true, "using": [ [ "soldering_standard", 10 ] ], "qualities": [ { "id": "SCREW", "level": 1 }, { "id": "SAW_M", "level": 1 } ], - "components": [ - [ [ "camera", 2 ], [ "camera_pro", 2 ], [ "smart_phone", 2 ] ], - [ [ "power_supply", 1 ] ], - [ [ "cable", 5 ] ] - ] + "components": [ [ [ "camera", 2 ], [ "camera_pro", 2 ], [ "smart_phone", 2 ] ], [ [ "power_supply", 1 ] ], [ [ "cable", 5 ] ] ] }, { "type": "recipe", From 647530d15fa690c3d88d74ea84a9d6828a801b84 Mon Sep 17 00:00:00 2001 From: Karol1223 Date: Sun, 16 Jul 2023 14:45:41 +0200 Subject: [PATCH 14/23] gruh --- data/json/items/generic.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/json/items/generic.json b/data/json/items/generic.json index c0eaf91ba6b03..4e1cfa3ac9900 100644 --- a/data/json/items/generic.json +++ b/data/json/items/generic.json @@ -1381,7 +1381,7 @@ "weight": "31520 g", "volume": "15 L", "to_hit": -3, - "flags": [ "TRADER_AVOID", "NO_REPAIR", NO_SALVAGE ], + "flags": [ "TRADER_AVOID", "NO_REPAIR", "NO_SALVAGE" ], "melee_damage": { "bash": 6, "cut": 6 } }, { From bd5da33b8d2fc37a7063353da3c493416d56761b Mon Sep 17 00:00:00 2001 From: Karol1223 Date: Sun, 16 Jul 2023 14:51:16 +0200 Subject: [PATCH 15/23] dictionary and typos oh my --- data/json/items/corpses/inactive_bots.json | 2 +- tools/spell_checker/dictionary.txt | 13 +++++++------ 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/data/json/items/corpses/inactive_bots.json b/data/json/items/corpses/inactive_bots.json index a31af3c421aa9..19853550f95fc 100644 --- a/data/json/items/corpses/inactive_bots.json +++ b/data/json/items/corpses/inactive_bots.json @@ -896,7 +896,7 @@ "looks_like": "broken_robofac_camspy", "type": "TOOL", "name": { "str": "inactive camspy", "str_pl": "inactive camspies" }, - "description": "An inactive campsy. Using this item involves turning it on and launching it. If reprogrammed and rewired successfully, the camspy will then keep watch for intruders.", + "description": "An inactive camspy. Using this item involves turning it on and launching it. If reprogrammed and rewired successfully, the camspy will then keep watch for intruders.", "weight": "40750 g", "volume": "30 L", "price": 10000, diff --git a/tools/spell_checker/dictionary.txt b/tools/spell_checker/dictionary.txt index 6f5380d81f977..eacdf14c264e3 100644 --- a/tools/spell_checker/dictionary.txt +++ b/tools/spell_checker/dictionary.txt @@ -236,6 +236,7 @@ bardiche barding barebones barghest +barleycorn barony barosaurus barotrarumatic @@ -246,7 +247,6 @@ baselines basiliscus bassline basswood -barleycorn batching batlike batrachian @@ -433,6 +433,7 @@ camelops camphine campin camptosaurus +camspies camspy canadensis canid @@ -1252,8 +1253,8 @@ gunmods gunshop gunsmithing gunsmoke -gushingly gurkha +gushingly gutskin guvnah gymnocladus @@ -1526,10 +1527,10 @@ khru kickboard kickin kickstand -killbasa -killin kilij kilijs +killbasa +killin kilns kilroy kilted @@ -2776,11 +2777,11 @@ stompy stompy-clanker stonelike stoneskin +stook +stooking stopcock stoppered stoppeth -stook -stooking storable stormcaller stormshaper From 6e61dff801a3b8cfd5bb4d6de4e8e8e256b5e147 Mon Sep 17 00:00:00 2001 From: Karol1223 Date: Sun, 16 Jul 2023 15:09:09 +0200 Subject: [PATCH 16/23] item obsoletion & itemgroups --- .../monster_drops_advtech.json | 14 --- data/json/obsoletion/obsolete_items.json | 102 ++++++++++++++++++ .../itemgroups/loot_corpse_groups.json | 13 +++ 3 files changed, 115 insertions(+), 14 deletions(-) diff --git a/data/json/itemgroups/Monsters_Animals_Lairs/monster_drops_advtech.json b/data/json/itemgroups/Monsters_Animals_Lairs/monster_drops_advtech.json index 71ef1560f17e3..3f99b1179f979 100644 --- a/data/json/itemgroups/Monsters_Animals_Lairs/monster_drops_advtech.json +++ b/data/json/itemgroups/Monsters_Animals_Lairs/monster_drops_advtech.json @@ -53,20 +53,6 @@ "subtype": "distribution", "entries": [ { "item": "tazer", "prob": 3 }, { "item": "scrap", "prob": 9 } ] }, - { - "type": "item_group", - "id": "copbot", - "subtype": "distribution", - "entries": [ - { "item": "baton", "prob": 8 }, - { "item": "tazer", "prob": 3 }, - { "item": "sheet_kevlar_layered", "prob": 10 }, - { "item": "ceramic_armor", "prob": 15 }, - { "item": "tonfa", "prob": 10 }, - { "item": "shocktonfa_off", "prob": 5 }, - { "item": "alloy_plate", "prob": 10 } - ] - }, { "type": "item_group", "id": "molebot", diff --git a/data/json/obsoletion/obsolete_items.json b/data/json/obsoletion/obsolete_items.json index 4d25280159ac4..cd7ca6cb897f2 100644 --- a/data/json/obsoletion/obsolete_items.json +++ b/data/json/obsoletion/obsolete_items.json @@ -930,5 +930,107 @@ "name": { "str_sp": "riot control bot schematics" }, "description": "Assembly plans, design specs, and technical drawings for the riot control bot. Most of this is useless to you, but you could use the assembly plans to re-assemble the robot from salvaged parts.", "copy-from": "schematics_generic" + }, + { + "id": "bot_copbot", + "looks_like": "broken_copbot", + "type": "TOOL", + "name": { "str": "inactive police bot" }, + "description": "An inactive police robot. Using this item involves placing it on the ground and turning it on. If reprogrammed and rewired successfully, the police bot will then identify you as law enforcement, roam around or follow you, and attempt to detain lawbreakers.", + "weight": "81500 g", + "volume": "62500 ml", + "price": 100000, + "price_postapoc": 500, + "to_hit": -3, + "material": [ "steel" ], + "symbol": ";", + "color": "light_green", + "flags": [ "SINGLE_USE" ], + "melee_damage": { "bash": 8 } + }, + { + "id": "bot_eyebot", + "looks_like": "broken_eyebot", + "type": "TOOL", + "name": { "str": "inactive eyebot" }, + "description": "An inactive eyebot. Using this item involves turning it on and launching the UAV. If reprogrammed and rewired successfully, the eyebot will then keep watch for intruders.", + "weight": "40750 g", + "volume": "30 L", + "price": 10000, + "price_postapoc": 500, + "to_hit": -3, + "material": [ "steel" ], + "symbol": ";", + "color": "light_green", + "flags": [ "SINGLE_USE" ], + "melee_damage": { "bash": 8 } + }, + { + "id": "bot_riotbot", + "looks_like": "broken_riotbot", + "type": "TOOL", + "name": { "str": "inactive riot control bot" }, + "description": "An inactive riot control bot. Using this item involves placing it on the ground and turning it on. If reprogrammed and rewired successfully, the robot will bring order and peace to the horde.", + "weight": "81500 g", + "volume": "62500 ml", + "price": 35000, + "price_postapoc": 1500, + "to_hit": -3, + "material": [ "steel" ], + "symbol": ";", + "color": "light_green", + "flags": [ "SINGLE_USE" ], + "melee_damage": { "bash": 8 } + }, + { + "type": "GENERIC", + "id": "broken_eyebot", + "symbol": ",", + "color": "green", + "name": { "str": "broken eyebot" }, + "category": "other", + "description": "A broken eyebot. Much less threatening now that it won't be calling for backup. Could be gutted for parts.", + "price": 1000, + "price_postapoc": 10, + "material": [ "steel", "plastic" ], + "weight": "31520 g", + "volume": "15 L", + "to_hit": -3, + "flags": [ "TRADER_AVOID", "NO_REPAIR" ], + "melee_damage": { "bash": 6, "cut": 6 } + }, + { + "type": "GENERIC", + "id": "broken_copbot", + "symbol": ",", + "color": "green", + "name": { "str": "broken police bot" }, + "category": "other", + "description": "A broken police bot. Much less threatening now that it's quiet and still. Could be gutted for parts.", + "price": 30000, + "price_postapoc": 10, + "material": [ "steel", "plastic" ], + "weight": "140000 g", + "volume": "62500 ml", + "to_hit": -3, + "flags": [ "TRADER_AVOID", "NO_REPAIR" ], + "melee_damage": { "bash": 6, "cut": 6 } + }, + { + "type": "GENERIC", + "id": "broken_riotbot", + "symbol": ",", + "color": "green", + "name": { "str": "broken riot control bot" }, + "category": "other", + "description": "A broken riot control bot. Much less threatening now that it's out of gas. Could be gutted for parts.", + "price": 30000, + "price_postapoc": 10, + "material": [ "steel", "plastic" ], + "weight": "140000 g", + "volume": "62500 ml", + "to_hit": -3, + "flags": [ "TRADER_AVOID", "NO_REPAIR" ], + "melee_damage": { "bash": 6, "cut": 6 } } ] diff --git a/data/mods/Aftershock/itemgroups/loot_corpse_groups.json b/data/mods/Aftershock/itemgroups/loot_corpse_groups.json index d02f52a32610a..0011c84ad73b6 100644 --- a/data/mods/Aftershock/itemgroups/loot_corpse_groups.json +++ b/data/mods/Aftershock/itemgroups/loot_corpse_groups.json @@ -29,5 +29,18 @@ { "group": "afs_any_ballistic_s_gun", "prob": 10 }, { "group": "afs_any_laser_s_gun", "prob": 10 } ] + }, + { + "type": "item_group", + "id": "copbot", + "subtype": "distribution", + "entries": [ + { "item": "baton", "prob": 8 }, + { "item": "tazer", "prob": 3 }, + { "item": "ceramic_armor", "prob": 15 }, + { "item": "tonfa", "prob": 10 }, + { "item": "shocktonfa_off", "prob": 5 }, + { "item": "alloy_plate", "prob": 10 } + ] } ] From 72a76de74d71cc329ccc2d4b54c8564c20720398 Mon Sep 17 00:00:00 2001 From: Karol1223 Date: Sun, 16 Jul 2023 15:20:51 +0200 Subject: [PATCH 17/23] snippets snippets snippets --- data/json/npcs/hints.json | 1 - .../npcs/robofac/NPC_Cranberry_Foster.json | 2 +- data/json/snippets/fliers.json | 4 -- data/json/snippets/newspapers.json | 16 ------- data/json/snippets/survivor_notes.json | 1 - data/json/speech.json | 46 +++++++------------ 6 files changed, 18 insertions(+), 52 deletions(-) diff --git a/data/json/npcs/hints.json b/data/json/npcs/hints.json index 07c8feddd23e8..9ff9e3a42da80 100644 --- a/data/json/npcs/hints.json +++ b/data/json/npcs/hints.json @@ -29,7 +29,6 @@ "Oh man, have you gone down into the old subway systems? I'd be careful… there's these things down there that are like zombies, but tougher.", "There's snakes down in most of the old sewer systems. They're slow on land, but boy, those suckers can swim fast!", "If you're planning on wandering around the sewers--not that you'd have a reason too--watch out for those fish. Those suckers are fast, and vicious too!", - "Have you seen those eyebots flying around? It's hard to say, but some faction's controlling them--maybe the military. All I know is, I don't want them taking my picture…", "Ever go toe-to-toe with a manhack? Tiny little helicopters covered in knives. Best be packing a shotgun!", "They're rare, but molebots are nasty things. They bore through the ground, then pop up to stab ya. Still, you're safe from them if you stay on pavement…", "Don't fire your gun if you can help it - the noise attracts monsters. If you could get a silencer, or make one, it would give you some advantage.", diff --git a/data/json/npcs/robofac/NPC_Cranberry_Foster.json b/data/json/npcs/robofac/NPC_Cranberry_Foster.json index 7cdcb849250bf..066c4cea2b4e4 100644 --- a/data/json/npcs/robofac/NPC_Cranberry_Foster.json +++ b/data/json/npcs/robofac/NPC_Cranberry_Foster.json @@ -644,7 +644,7 @@ { "id": "TALK_ROBOFAC_MERC_1_BACKGROUND_17", "type": "talk_topic", - "dynamic_line": "Well, no. It was obvious they just wanted to get rid of me, but I decided I wanted to show that I was useful. They tell me to find a crashed drone somewhere in the surrounding area, looks like an eyebot but with a different paint scheme, and bring it back here. No directions, of course. Y'know, go find this drone in the middle of the woods, it'll be easy. But I had some tools in my bag, right? And yours truly has repaired some drones in the park service.\"\n\n\"So it takes me a whole-ass afternoon, but I find their stupid drone stuck in a tree. I can see the camera's still on, so I pick it up and I tell the lens: 'Hey, you want me to fix it too?' And I do. It was just a cracked frame and the wiring to the rotors was sliced up. The propellers themselves were fine. So I bring it out of the woods and turn it off. Then I open up the casing, solder up the wires, and use superglue to hold the frame together, which wasn't perfect, but I figured it'd hold until it got back home. Then I turned it back on, and wouldn't you know, it immediately starts up and sits there for a minute, like 'What the fuck? Why am I working again?' And then it flies away, and I walk my smug ass back home.", + "dynamic_line": "Well, no. It was obvious they just wanted to get rid of me, but I decided I wanted to show that I was useful. They tell me to find a crashed drone somewhere in the surrounding area and bring it back here. No directions, of course. Y'know, go find this drone in the middle of the woods, it'll be easy. But I had some tools in my bag, right? And yours truly has repaired some drones in the park service.\"\n\n\"So it takes me a whole-ass afternoon, but I find their stupid drone stuck in a tree. I can see the camera's still on, so I pick it up and I tell the lens: 'Hey, you want me to fix it too?' And I do. It was just a cracked frame and the wiring to the rotors was sliced up. The propellers themselves were fine. So I bring it out of the woods and turn it off. Then I open up the casing, solder up the wires, and use superglue to hold the frame together, which wasn't perfect, but I figured it'd hold until it got back home. Then I turned it back on, and wouldn't you know, it immediately starts up and sits there for a minute, like 'What the fuck? Why am I working again?' And then it flies away, and I walk my smug ass back home.", "responses": [ { "text": "And *now* the rest is history.", "topic": "TALK_ROBOFAC_MERC_1_BACKGROUND_18" } ] }, { diff --git a/data/json/snippets/fliers.json b/data/json/snippets/fliers.json index 4ead0789b3c42..5d041a108a952 100644 --- a/data/json/snippets/fliers.json +++ b/data/json/snippets/fliers.json @@ -11,10 +11,6 @@ "id": "flier_2", "text": "This is an advertisement for an personal injury lawyer. \"Had an accident while working? Botched surgery gone wrong? Relatives missing after the government investigated them? There's only one solution to all of this; SUE!\"" }, - { - "id": "flier_3", - "text": "This is an advertisement promoting facial recognition quadcopters. It shows a formation of the so-called 'eyebots' flying outward from an American flag in an explosion of stars and stripes. Beneath, it reads \"Don't worry, we'll watch your back.\"" - }, { "id": "flier_4", "text": "This is a somewhat weather-worn advertisement for the 'new' FEMA evacuation shelters. Beneath the colorful photo it reads, \"Familiarize yourself with your nearest emergency shelter. It could save your life.\"" diff --git a/data/json/snippets/newspapers.json b/data/json/snippets/newspapers.json index 4aca73207e440..69800bd3469ad 100644 --- a/data/json/snippets/newspapers.json +++ b/data/json/snippets/newspapers.json @@ -11,10 +11,6 @@ "id": "many_years_old_news_2", "text": "CELEBRATED PHYSICIST GOES MISSING. Dr. Amy Takatoshi, a celebrated quantum physicist at MIT dubbed by some as \"the next Hawking\" has gone missing shortly before a press conference that was expected to be the announcement of her newest research results, rumored to be in the field of teleportation." }, - { - "id": "many_years_old_news_3", - "text": "FACIAL RECOGNITION ROLLS OUT. Commissioner McConnaugh of the NYPD announced at a press conference today that a new wave of facial recognition drones would be employed by police services. \"These new guys, we're calling them 'eyebots', they can move where stationary cameras can't, and can identify known troublemakers. They lead to a much lower rate of false alarms, and a much higher rate of successful convictions without an increase in wrongful arrest. I know there have been concerns, but overall these little guys make us all safer, not just from criminals but from human error as well.\"" - }, { "id": "many_years_old_news_4", "text": "EDITORIAL: THE UN SHOULD PUT ON ITS BIG-BOY PANTS. So, driven by decreasing regulation of radioactive materials in the US and China, the UN is pushing hard again for nuclear disarmament. What a tired old litany this has become. With deregulation, we've been able to slate three new green nuclear reactors in the Eastern US alone, bringing greenhouse-gas free power to millions of people. Whatever happened to the UN's focus on global warming? This is a classic situation of the world painting the USA as villains no matter what we do." @@ -103,18 +99,6 @@ "id": "years_old_news_3", "text": "DRIVING ON A WING AND A PRAYER: A New England man has proven it is possible to create a new car from scrap parts using almost nothing but duct tape. When asked why he had done it, his answer was \"Well, I didn't have a welder.\"" }, - { - "id": "years_old_news_4", - "text": "EYEBOTS SEE WIDESPREAD USE. A recent survey of police departments in the Eastern US found that over 85% of police stations, even in small towns, now contain at least one flight of facial recognition drones. \"They're awesome,\" Sheriff Mark Louis told a reporter from his office in Pontstown, Vermont. \"We've got a flight of four eyebots on a solar dock on the roof. They take hardly any maintenance, they respond to any suspicious business downtown, and they don't hurt anyone. If it's just a minor scuffle they grab some photos and help keep things from escalating. If it's a bigger deal, or if it's someone they know is trouble, they call us in right away. They save us a lot of false alarms: if we get an eyebot call-in we know it's a big deal.\"" - }, - { - "id": "years_old_news_8", - "text": "EDITORIAL: EYEBOTS ARE GOOD FOR US. The controversy around increasing eyebot use by police forces has everyone worried, and I was on board for a long time. Facial recognition databases under government control are something we should be worried about! Then, my daughter was accosted on her way home from dance class. Long before any police officer could have arrived, an eyebot had snagged video of her attackers and reported them to Central. That, alone, probably saved her life: just knowing they'd been tagged sent the criminals packing before any real damage was done, and the information allowed us to press charges on a crime that would have gone unreported before. All safety must come at a cost, and I'll gladly pay my privacy if it's the cost to keep my family safe." - }, - { - "id": "years_old_news_9", - "text": "EDITORIAL: EYEBOTS REPRESENT A CONCERNING TREND. There it is, as it always is: the endless buzz of eyebots cruising the streets, hunting for wrongdoing. I've written many an article on these things, and read many more. I've spoken to experts. When we get to the bottom of it, there's a key disturbing truth to these ubiquitous robots… no one knows how they work. The artificial intelligence used in the little drones is more than just facial recognition, it's also threat processing and decision making, and at its very heart is a new-wave deep learning AI that is, essentially, a wild card. Without knowing how these things learn and make decisions, I don't think we can trust them in public, let alone handling our safety. That's not even considering the dangers of letting them have access to our faces and criminal records." - }, { "id": "years_old_news_10", "text": "TECHWORLD NEWS: Toy company at the origin of the successful talking doll rebrands and becomes Uncanny. A spokesperson from the newly formed Uncanny told the press, \"We think we can do more than just entertain. We have new plans, big plans, plans that will shape the very fabric of reality!\" Unconfirmed rumors suggest that Uncanny has already received large orders from the government." diff --git a/data/json/snippets/survivor_notes.json b/data/json/snippets/survivor_notes.json index 0375088c3d076..f19b377c473df 100644 --- a/data/json/snippets/survivor_notes.json +++ b/data/json/snippets/survivor_notes.json @@ -294,7 +294,6 @@ "id": "note_119", "text": "\"There's nothing wrong with eating people if you HAVE to. I mean, I only did it because I didn't want to waste my potato chips!\"" }, - { "id": "note_120", "text": "\"all these fuckin eyebots really take the piss out of kops\"" }, { "id": "note_121", "text": "\"CHINA DID THIS\"" }, { "id": "note_122", "text": "\"RUSSIA DID THIS\"" }, { diff --git a/data/json/speech.json b/data/json/speech.json index 7aab936553bca..af87645a6ff23 100644 --- a/data/json/speech.json +++ b/data/json/speech.json @@ -1999,7 +1999,7 @@ }, { "type": "speech", - "speaker": [ "mon_eyebot", "mon_mi_go", "mon_mi_go_slaver" ], + "speaker": [ "mon_mi_go", "mon_mi_go_slaver" ], "sound": "\"Suspect in sight!\"", "volume": 15 }, @@ -2011,109 +2011,97 @@ }, { "type": "speech", - "speaker": [ "mon_eyebot", "mon_mi_go", "mon_mi_go_slaver" ], + "speaker": [ "mon_mi_go", "mon_mi_go_slaver" ], "sound": "\"You have the right to remain silent!\"", "volume": 15 }, { "type": "speech", - "speaker": [ "mon_eyebot", "mon_mi_go", "mon_mi_go_slaver" ], + "speaker": [ "mon_mi_go", "mon_mi_go_slaver" ], "sound": "\"Requesting assistance!\"", "volume": 15 }, { "type": "speech", - "speaker": [ "mon_eyebot", "mon_mi_go", "mon_mi_go_slaver" ], + "speaker": [ "mon_mi_go", "mon_mi_go_slaver" ], "sound": "\"Requesting supervisor!\"", "volume": 15 }, { "type": "speech", - "speaker": [ "mon_eyebot", "mon_mi_go", "mon_mi_go_slaver" ], + "speaker": [ "mon_mi_go", "mon_mi_go_slaver" ], "sound": "\"No officer on scene. Requesting backup!\"", "volume": 15 }, { "type": "speech", - "speaker": [ "mon_eyebot", "mon_mi_go", "mon_mi_go_slaver" ], + "speaker": [ "mon_mi_go", "mon_mi_go_slaver" ], "sound": "\"Let me see your hands!\"", "volume": 15 }, { "type": "speech", - "speaker": [ "mon_eyebot", "mon_mi_go", "mon_mi_go_slaver" ], + "speaker": [ "mon_mi_go", "mon_mi_go_slaver" ], "sound": "\"Stop resisting!\"", "volume": 15 }, { "type": "speech", - "speaker": [ "mon_eyebot", "mon_mi_go", "mon_mi_go_slaver" ], - "sound": "\"Code 10-66. Copy 10-4. Possible 10-55.\"", - "volume": 10 - }, - { - "type": "speech", - "speaker": [ "mon_eyebot", "mon_mi_go", "mon_mi_go_slaver" ], - "sound": "\"Probable 10-70.\"", - "volume": 15 - }, - { - "type": "speech", - "speaker": [ "mon_eyebot", "mon_mi_go", "mon_mi_go_slaver" ], + "speaker": [ "mon_mi_go", "mon_mi_go_slaver" ], "sound": "\"Get on the ground! Now!\"", "volume": 15 }, { "type": "speech", - "speaker": [ "mon_eyebot", "mon_mi_go", "mon_mi_go_slaver" ], + "speaker": [ "mon_mi_go", "mon_mi_go_slaver" ], "sound": "\"Suspected felony!\"", "volume": 15 }, { "type": "speech", - "speaker": [ "mon_eyebot", "mon_mi_go", "mon_mi_go_slaver" ], + "speaker": [ "mon_mi_go", "mon_mi_go_slaver" ], "sound": "\"Suspected misdemeanor!\"", "volume": 15 }, { "type": "speech", - "speaker": [ "mon_eyebot", "mon_mi_go", "mon_mi_go_slaver" ], + "speaker": [ "mon_mi_go", "mon_mi_go_slaver" ], "sound": "\"Do not reach for your pockets!\"", "volume": 15 }, { "type": "speech", - "speaker": [ "mon_eyebot", "mon_mi_go", "mon_mi_go_slaver" ], + "speaker": [ "mon_mi_go", "mon_mi_go_slaver" ], "sound": "\"Keep your hands up!\"", "volume": 15 }, { "type": "speech", - "speaker": [ "mon_eyebot", "mon_mi_go", "mon_mi_go_slaver" ], + "speaker": [ "mon_mi_go", "mon_mi_go_slaver" ], "sound": "\"Get on your knees!\"", "volume": 15 }, { "type": "speech", - "speaker": [ "mon_eyebot", "mon_mi_go", "mon_mi_go_slaver" ], + "speaker": [ "mon_mi_go", "mon_mi_go_slaver" ], "sound": "\"Hands in the air!\"", "volume": 15 }, { "type": "speech", - "speaker": [ "mon_eyebot", "mon_mi_go", "mon_mi_go_slaver" ], + "speaker": [ "mon_mi_go", "mon_mi_go_slaver" ], "sound": "\"Wait for law enforcement officer!\"", "volume": 15 }, { "type": "speech", - "speaker": [ "mon_eyebot", "mon_mi_go", "mon_mi_go_slaver" ], + "speaker": [ "mon_mi_go", "mon_mi_go_slaver" ], "sound": "\"Remain where you are!\"", "volume": 15 }, { "type": "speech", - "speaker": [ "mon_eyebot", "mon_mi_go", "mon_mi_go_slaver" ], + "speaker": [ "mon_mi_go", "mon_mi_go_slaver" ], "sound": "\"Police inbound. Stay where you are!\"", "volume": 15 }, From a74b239c6003ea60773f6cef18bbc1bac921f607 Mon Sep 17 00:00:00 2001 From: Karol1223 Date: Thu, 20 Jul 2023 10:46:13 +0200 Subject: [PATCH 18/23] backstory edits Co-Authored-By: chichit1044 <139005418+chichit1044@users.noreply.github.com> --- data/json/npcs/Backgrounds/criminal_1.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/data/json/npcs/Backgrounds/criminal_1.json b/data/json/npcs/Backgrounds/criminal_1.json index 9d1f12ac4897c..6bb046173dbdf 100644 --- a/data/json/npcs/Backgrounds/criminal_1.json +++ b/data/json/npcs/Backgrounds/criminal_1.json @@ -2,7 +2,7 @@ { "id": "BGSS_CRIMINAL_1_STORY1", "type": "talk_topic", - "dynamic_line": "I was just sittin' in lockup. They took me in the night before, for a bullshit parole violation. Assholes. I was stuck in my cell when the cops all started yelling about an emergency, geared up, and left me in there with just this robot for a guard. I was stuck in there for two god-damn days, with no food and only a little water. Then this big-ass zombie busted in, and started fighting the robot. I didn't know what the fuck to think, but in the fighting they smashed open my cell door, and I managed to slip out.", + "dynamic_line": "I was just sittin' in lockup. They took me in the night before, for a bullshit parole violation. Assholes. I was stuck in my cell when the cops all started yelling about an emergency, geared up, and left me in there havin' a staring contest with a security cam that probably wasn't even on. I was stuck in there for two god-damn days, with no food and only a little water. Then this big-ass zombie busted in. I didn't know what the fuck to think, but if my cam wasn't working, the one in the hall sure was. Tripped a motion sensor or some shit, alarm started going, and the big dumb fuck turned around to get at it while its arms were still stuck in the cell bars. Ripped the whole door out.", "responses": [ { "text": "Lucky you. How did you get away?", "topic": "BGSS_CRIMINAL_1_STORY2" }, { "text": "", "topic": "TALK_FRIEND" }, @@ -12,7 +12,7 @@ { "id": "BGSS_CRIMINAL_1_STORY2", "type": "talk_topic", - "dynamic_line": "It was just chaos on the streets, man. But I'm used to chaos. You don't live as long as I've lived and not know how to keep away from a fight you can't win. Biggest worry wasn't the zombies and the monsters, honestly. It was the fuckin' police robots. They knew I was in violation, and they kept trying to arrest me.", + "dynamic_line": "It was just chaos on the streets, man. But I'm used to chaos. You don't live as long as I've lived and not know how to keep away from a fight you can't win. Biggest worry wasn't the zombies and the monsters, honestly. But I swear, some cops got a nightstick so far up their ass… I didn't have time to ditch my orange when stuff kept swipin' at me, and I swear, cops got a look at me, they decided I was the big problem. Goddamn walking corpse next to me, who do they pick to shoot at? Pricks.", "responses": [ { "text": "How did you keep from getting arrested?", "topic": "BGSS_CRIMINAL_1_STORY3" }, { "text": "What were you in for in the first place?", "topic": "BGSS_CRIMINAL_1_PAROLE" }, @@ -23,7 +23,7 @@ { "id": "BGSS_CRIMINAL_1_STORY3", "type": "talk_topic", - "dynamic_line": "Kept outta their line of sight, is a big part of it. Don't let those flyin' cameras get you, you know? If they do, they call for backup from the big guns, and then, well, I hope you like gettin' tazed and shoved in the back of a van. I kept my head down until I got past the worst of it, but then one of the eyebots recognized me and I had to book it. I was just lucky the bots it called had blown their wad on some giant-ass slime beast and were tryin' to get me with their short range shit. I wound up on the edge of town layin' low under an abandoned RV for a few hours, then slipped out in the night.", + "dynamic_line": "'cuz I know how cops think. If you can call it that. Early days, they were still going after alarms in case it meant, I dunno, survivors. You smack some fucker's sports car, it starts wailing, the cops come to take a look and you can walk right behind 'em. That's the thing about cops; they follow orders, right? Even when the world's comin' apart. I kept my head down until I got past the worst of it, but then, lucky me, I got sergeant braniac. Figured out why someone would trip an alarm on purpose, had them case all up and down the streets for me. I wound up on the edge of town layin' low under an abandoned RV for a few hours. By then… well, they had some other big problems to deal with. For a little bit. Might've survived if they hadn't blown their wads chasing me around the block.", "responses": [ { "text": "What were you in for in the first place?", "topic": "BGSS_CRIMINAL_1_PAROLE" }, { "text": "", "topic": "TALK_FRIEND" }, From 5589ed259521a5c0e4b9c4c0f3931cc7c6f9c4b3 Mon Sep 17 00:00:00 2001 From: Karol1223 Date: Thu, 20 Jul 2023 10:53:29 +0200 Subject: [PATCH 19/23] C++ surgery (what can go wrong?) --- src/activity_actor.cpp | 12 ------------ src/computer_session.cpp | 4 ---- src/magic_spell_effect.cpp | 2 -- src/map.cpp | 19 +------------------ src/timed_event.cpp | 13 ------------- 5 files changed, 1 insertion(+), 49 deletions(-) diff --git a/src/activity_actor.cpp b/src/activity_actor.cpp index 2a62b4994635b..23fe96706014a 100644 --- a/src/activity_actor.cpp +++ b/src/activity_actor.cpp @@ -783,10 +783,6 @@ void hacking_activity_actor::finish( player_activity &act, Character &who ) get_event_bus().send( who.getID() ); sounds::sound( who.pos(), 60, sounds::sound_t::music, _( "an alarm sound!" ), true, "environment", "alarm" ); - if( examp.z > 0 && !get_timed_events().queued( timed_event_type::WANTED ) ) { - get_timed_events().add( timed_event_type::WANTED, calendar::turn + 30_minutes, 0, - who.get_location() ); - } break; case hack_result::NOTHING: who.add_msg_if_player( _( "You fail the hack, but no alarms are triggered." ) ); @@ -2574,10 +2570,6 @@ void lockpick_activity_actor::finish( player_activity &act, Character &who ) if( !perfect && ter_type == t_door_locked_alarm && ( lock_roll + dice( 1, 30 ) ) > pick_roll ) { sounds::sound( who.pos(), 40, sounds::sound_t::alarm, _( "an alarm sound!" ), true, "environment", "alarm" ); - if( !get_timed_events().queued( timed_event_type::WANTED ) ) { - get_timed_events().add( timed_event_type::WANTED, calendar::turn + 30_minutes, 0, - who.get_location() ); - } } if( destroy && lockpick.has_value() ) { @@ -5356,10 +5348,6 @@ void prying_activity_actor::handle_prying( Character &who ) get_event_bus().send( who.getID() ); sounds::sound( who.pos(), 40, sounds::sound_t::alarm, _( "an alarm sound!" ), true, "environment", "alarm" ); - if( !get_timed_events().queued( timed_event_type::WANTED ) ) { - get_timed_events().add( timed_event_type::WANTED, calendar::turn + 30_minutes, 0, - who.get_location() ); - } } if( !data->message().empty() ) { diff --git a/src/computer_session.cpp b/src/computer_session.cpp index 8565289407593..07711548f7b38 100644 --- a/src/computer_session.cpp +++ b/src/computer_session.cpp @@ -1490,10 +1490,6 @@ void computer_session::failure_alarm() sounds::sound( player_character.pos(), 60, sounds::sound_t::alarm, _( "an alarm sound!" ), false, "environment", "alarm" ); - if( get_map().get_abs_sub().z() > 0 && !get_timed_events().queued( timed_event_type::WANTED ) ) { - get_timed_events().add( timed_event_type::WANTED, calendar::turn + 30_minutes, 0, - player_character.get_location() ); - } } void computer_session::failure_manhacks() diff --git a/src/magic_spell_effect.cpp b/src/magic_spell_effect.cpp index cd8c073d9d640..ea62cdbe51b71 100644 --- a/src/magic_spell_effect.cpp +++ b/src/magic_spell_effect.cpp @@ -1154,8 +1154,6 @@ void spell_effect::timed_event( const spell &sp, Creature &caster, const tripoin { const std::map timed_event_map{ { "help", timed_event_type::HELP }, - { "wanted", timed_event_type::WANTED }, - { "robot_attack", timed_event_type::ROBOT_ATTACK }, { "spawn_wyrms", timed_event_type::SPAWN_WYRMS }, { "amigara", timed_event_type::AMIGARA }, { "roots_die", timed_event_type::ROOTS_DIE }, diff --git a/src/map.cpp b/src/map.cpp index 22b35bd1bb7ea..6662dbf96e997 100644 --- a/src/map.cpp +++ b/src/map.cpp @@ -3841,20 +3841,6 @@ void map::bash_ter_furn( const tripoint &p, bash_params ¶ms ) } } - // TODO: what if silent is true? - if( has_flag( ter_furn_flag::TFLAG_ALARMED, p ) && - !get_timed_events().queued( timed_event_type::WANTED ) ) { - sounds::sound( p, 40, sounds::sound_t::alarm, _( "an alarm go off!" ), - false, "environment", "alarm" ); - Character &player_character = get_player_character(); - // Blame nearby player - if( rl_dist( player_character.pos(), p ) <= 3 ) { - get_event_bus().send( player_character.getID() ); - get_timed_events().add( timed_event_type::WANTED, calendar::turn + 30_minutes, 0, - tripoint_abs_ms( getabs( p ) ) ); - } - } - if( bash == nullptr || ( bash->destroy_only && !params.destroy ) ) { // Nothing bashable here if( impassable( p ) ) { @@ -4325,12 +4311,9 @@ void map::shoot( const tripoint &p, projectile &proj, const bool hit_items ) } // bash_ter_furn already triggers the alarm // TODO: fix alarm event weirdness (not just here, also in bash, hack, etc) - if( !destroyed && data.has_flag( ter_furn_flag::TFLAG_ALARMED ) && - !get_timed_events().queued( timed_event_type::WANTED ) ) { + if( !destroyed && data.has_flag( ter_furn_flag::TFLAG_ALARMED ) ) { sounds::sound( p, 40, sounds::sound_t::alarm, _( "an alarm go off!" ), false, "environment", "alarm" ); - get_timed_events().add( timed_event_type::WANTED, calendar::turn + 30_minutes, 0, - tripoint_abs_ms( getabs( p ) ) ); } return true; } diff --git a/src/timed_event.cpp b/src/timed_event.cpp index 33ca51a19675a..d6c6f787cbb12 100644 --- a/src/timed_event.cpp +++ b/src/timed_event.cpp @@ -316,19 +316,6 @@ void timed_event::per_turn() Character &player_character = get_player_character(); map &here = get_map(); switch( type ) { - case timed_event_type::WANTED: { - // About once every 5 minutes. Suppress in classic zombie mode. - if( here.get_abs_sub().z() >= 0 && one_in( 50 ) && !get_option( "DISABLE_ROBOT_RESPONSE" ) ) { - point place = here.random_outdoor_tile(); - if( place.x == -1 && place.y == -1 ) { - // We're safely indoors! - return; - } - when = calendar::turn; - } - } - break; - case timed_event_type::SPAWN_WYRMS: if( here.get_abs_sub().z() >= 0 ) { when -= 1_turns; From 79d4a64be3db16138df2d7985152db705f1e96ea Mon Sep 17 00:00:00 2001 From: Karol1223 Date: Thu, 20 Jul 2023 10:57:15 +0200 Subject: [PATCH 20/23] typos & dictionary --- data/json/npcs/Backgrounds/criminal_1.json | 2 +- tools/spell_checker/dictionary.txt | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/data/json/npcs/Backgrounds/criminal_1.json b/data/json/npcs/Backgrounds/criminal_1.json index 6bb046173dbdf..c0bbd9b01f753 100644 --- a/data/json/npcs/Backgrounds/criminal_1.json +++ b/data/json/npcs/Backgrounds/criminal_1.json @@ -23,7 +23,7 @@ { "id": "BGSS_CRIMINAL_1_STORY3", "type": "talk_topic", - "dynamic_line": "'cuz I know how cops think. If you can call it that. Early days, they were still going after alarms in case it meant, I dunno, survivors. You smack some fucker's sports car, it starts wailing, the cops come to take a look and you can walk right behind 'em. That's the thing about cops; they follow orders, right? Even when the world's comin' apart. I kept my head down until I got past the worst of it, but then, lucky me, I got sergeant braniac. Figured out why someone would trip an alarm on purpose, had them case all up and down the streets for me. I wound up on the edge of town layin' low under an abandoned RV for a few hours. By then… well, they had some other big problems to deal with. For a little bit. Might've survived if they hadn't blown their wads chasing me around the block.", + "dynamic_line": "'cuz I know how cops think. If you can call it that. Early days, they were still going after alarms in case it meant, I dunno, survivors. You smack some fucker's sports car, it starts wailing, the cops come to take a look and you can walk right behind 'em. That's the thing about cops; they follow orders, right? Even when the world's comin' apart. I kept my head down until I got past the worst of it, but then, lucky me, I got sergeant brainiac. Figured out why someone would trip an alarm on purpose, had them case all up and down the streets for me. I wound up on the edge of town layin' low under an abandoned RV for a few hours. By then… well, they had some other big problems to deal with. For a little bit. Might've survived if they hadn't blown their wads chasing me around the block.", "responses": [ { "text": "What were you in for in the first place?", "topic": "BGSS_CRIMINAL_1_PAROLE" }, { "text": "", "topic": "TALK_FRIEND" }, diff --git a/tools/spell_checker/dictionary.txt b/tools/spell_checker/dictionary.txt index eacdf14c264e3..aef4b6af717e6 100644 --- a/tools/spell_checker/dictionary.txt +++ b/tools/spell_checker/dictionary.txt @@ -2845,6 +2845,7 @@ swages swappable swashbucklers sweetish +swipin switchgear swordmanship syde From 0f07516cc2f860e67ff3e253a4a0ff01e84020a8 Mon Sep 17 00:00:00 2001 From: Karol1223 Date: Thu, 20 Jul 2023 14:20:25 +0200 Subject: [PATCH 21/23] do it work yet? --- data/json/npcs/Backgrounds/criminal_1.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/json/npcs/Backgrounds/criminal_1.json b/data/json/npcs/Backgrounds/criminal_1.json index c0bbd9b01f753..02f92b0915bd1 100644 --- a/data/json/npcs/Backgrounds/criminal_1.json +++ b/data/json/npcs/Backgrounds/criminal_1.json @@ -23,7 +23,7 @@ { "id": "BGSS_CRIMINAL_1_STORY3", "type": "talk_topic", - "dynamic_line": "'cuz I know how cops think. If you can call it that. Early days, they were still going after alarms in case it meant, I dunno, survivors. You smack some fucker's sports car, it starts wailing, the cops come to take a look and you can walk right behind 'em. That's the thing about cops; they follow orders, right? Even when the world's comin' apart. I kept my head down until I got past the worst of it, but then, lucky me, I got sergeant brainiac. Figured out why someone would trip an alarm on purpose, had them case all up and down the streets for me. I wound up on the edge of town layin' low under an abandoned RV for a few hours. By then… well, they had some other big problems to deal with. For a little bit. Might've survived if they hadn't blown their wads chasing me around the block.", + "dynamic_line": "'cuz I know how cops think. If you can call it that. Early days, they were still going after alarms in case it meant, I dunno, survivors. You smack some fucker's sports car, it starts wailing, the cops come to take a look and you can walk right behind 'em. That's the thing about cops; they follow orders, right? Even when the world's comin' apart. I kept my head down until I got past the worst of it, but then, lucky me, I got sergeant brainiac. Figured out why someone would trip an alarm on purpose, had them case all up and down the streets for me. I wound up on the edge of town layin' low under an abandoned RV for a few hours. By then… well, they had some other big problems to deal with. For a little bit. Might've survived if they hadn't blown their wads chasing me around the block.", "responses": [ { "text": "What were you in for in the first place?", "topic": "BGSS_CRIMINAL_1_PAROLE" }, { "text": "", "topic": "TALK_FRIEND" }, From cfeffa81673de79094a04a7d06149d159b08d5b8 Mon Sep 17 00:00:00 2001 From: Karol1223 Date: Thu, 20 Jul 2023 15:17:03 +0200 Subject: [PATCH 22/23] I LOVE DOUBLE SPACES --- data/json/npcs/Backgrounds/criminal_1.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/json/npcs/Backgrounds/criminal_1.json b/data/json/npcs/Backgrounds/criminal_1.json index 02f92b0915bd1..bc6d6c34c1d43 100644 --- a/data/json/npcs/Backgrounds/criminal_1.json +++ b/data/json/npcs/Backgrounds/criminal_1.json @@ -12,7 +12,7 @@ { "id": "BGSS_CRIMINAL_1_STORY2", "type": "talk_topic", - "dynamic_line": "It was just chaos on the streets, man. But I'm used to chaos. You don't live as long as I've lived and not know how to keep away from a fight you can't win. Biggest worry wasn't the zombies and the monsters, honestly. But I swear, some cops got a nightstick so far up their ass… I didn't have time to ditch my orange when stuff kept swipin' at me, and I swear, cops got a look at me, they decided I was the big problem. Goddamn walking corpse next to me, who do they pick to shoot at? Pricks.", + "dynamic_line": "It was just chaos on the streets, man. But I'm used to chaos. You don't live as long as I've lived and not know how to keep away from a fight you can't win. Biggest worry wasn't the zombies and the monsters, honestly. But I swear, some cops got a nightstick so far up their ass… I didn't have time to ditch my orange when stuff kept swipin' at me, and I swear, cops got a look at me, they decided I was the big problem. Goddamn walking corpse next to me, who do they pick to shoot at? Pricks.", "responses": [ { "text": "How did you keep from getting arrested?", "topic": "BGSS_CRIMINAL_1_STORY3" }, { "text": "What were you in for in the first place?", "topic": "BGSS_CRIMINAL_1_PAROLE" }, From 02a23f2188b857b342e4a33964b69f62a851af85 Mon Sep 17 00:00:00 2001 From: Karol1223 <68503002+Karol1223@users.noreply.github.com> Date: Mon, 24 Jul 2023 17:59:12 +0200 Subject: [PATCH 23/23] Update dictionary.txt --- tools/spell_checker/dictionary.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/spell_checker/dictionary.txt b/tools/spell_checker/dictionary.txt index 06586587b84c3..7e001852a3294 100644 --- a/tools/spell_checker/dictionary.txt +++ b/tools/spell_checker/dictionary.txt @@ -1547,10 +1547,10 @@ kickboard kickin kickstand kilij +kilijes kilijs killbasa killin -kilijes kilns kilroy kilted