From eb0c9b48bc4325da2bbecefa9438caa9945f4578 Mon Sep 17 00:00:00 2001 From: generalthrax <139387950+generalthrax@users.noreply.github.com> Date: Wed, 27 Nov 2024 11:48:28 -0600 Subject: [PATCH] New Cargo Missions (Pirate Bounties, Salvage) (#3327) ## About The Pull Request A few more missions to cargo. Should make them more varied, with some financial incentive for combat ships or scrappers to search for certain things - [x] Add dogtags to Frontiersmen corpses - [x] Add dogtags to Ramzi drops or have them spawn corpses with dogtag on them (ramzi mobs are kind of stupid i might change them) - [x] Frontie Mission - [x] Ramzi Mission - [x] Turn in Protolathe Mission - [x] Turn in RND Console Mission (may combine all three of these into one) - [x] Remove Fishing Missions - [x] Remove impossible missions like Capture Abandoned Floorbot and Capture Bluespace Watcher - [x] Descriptions - [x] Increase value of migo mission - [x] Increase value of Strange Crystal mission - [x] Dogtag sprites (courtesy of @rye-rice (prices subject to change) ## Why It's Good For The Game More financial incentives to go hunt down the Pirate ruins for combat ships. A reason to stash up the rare machinery you find from ruins to sell them instead of Grinding RND And Getting Those Sweet Research Points Crew bonding session of stripping dogtags from pirates, ensuring their bodies never return to their loved ones and you can rack in that sweet, sweet Inteq cash ## Changelog :cl: add: Adds Dogtag Missions to hunt down Ramzi Clique and Frontiersman NPCS from Ruins add: Adds Salvage Missions to collect Protolathe or R&D Console Boards del: Removes Fishing Missions del: Removes impossible missions like Bluespace Watcher and Abandoned Floorbot balance: Increases price of Migo missions to be on par with Legion balance: Increases the value of Strange Crystal missions del: Remove R&D design board from unlocked Protolathes and Science Protolathes /:cl: --------- Signed-off-by: generalthrax <139387950+generalthrax@users.noreply.github.com> Co-authored-by: Mark Suckerberg --- code/game/objects/items/storage/toolbox.dm | 20 +++++ code/modules/clothing/neck/_neck.dm | 17 ++++ .../mob/living/simple_animal/corpse.dm | 1 + .../simple_animal/hostile/human/syndicate.dm | 14 ++-- .../overmap/missions/acquire_mission.dm | 74 +++++++++++------- .../research/designs/comp_board_designs.dm | 8 -- code/modules/research/techweb/all_nodes.dm | 2 +- icons/obj/clothing/neck.dmi | Bin 5982 -> 11476 bytes 8 files changed, 95 insertions(+), 41 deletions(-) diff --git a/code/game/objects/items/storage/toolbox.dm b/code/game/objects/items/storage/toolbox.dm index 9b17eae3b197..ba57add3f6fc 100644 --- a/code/game/objects/items/storage/toolbox.dm +++ b/code/game/objects/items/storage/toolbox.dm @@ -267,6 +267,26 @@ STR.max_combined_w_class = 4 STR.max_items = 2 +/obj/item/storage/toolbox/bounty/hunt + name = "dogtag case" + desc = "Store pirate dogtags in here." + +/obj/item/storage/toolbox/bounty/hunt/ComponentInitialize() + . = ..() + var/datum/component/storage/STR = GetComponent(/datum/component/storage) + STR.max_combined_w_class = 6 + STR.max_items = 3 + +/obj/item/storage/toolbox/bounty/salvage + name = "research case" + desc = "Store salvaged science equipment in here." + +/obj/item/storage/toolbox/bounty/salvage/ComponentInitialize() + . = ..() + var/datum/component/storage/STR = GetComponent(/datum/component/storage) + STR.max_combined_w_class = 2 + STR.max_items = 1 + //floorbot assembly /obj/item/storage/toolbox/attackby(obj/item/stack/tile/plasteel/T, mob/user, params) var/list/allowed_toolbox = list(/obj/item/storage/toolbox/emergency, //which toolboxes can be made into floorbots diff --git a/code/modules/clothing/neck/_neck.dm b/code/modules/clothing/neck/_neck.dm index 2165baaa2b0e..be896c6cee3c 100644 --- a/code/modules/clothing/neck/_neck.dm +++ b/code/modules/clothing/neck/_neck.dm @@ -310,6 +310,23 @@ tagname = stripped_input(user, "Would you like to change the name on the tag?", "Name your new pet", "Spot", MAX_NAME_LEN) name = "[initial(name)] - [tagname]" +/obj/item/clothing/neck/dogtag + name = "dogtag" + desc = "A nondescript dogtag." + icon = 'icons/obj/clothing/neck.dmi' + icon_state = "dogtag" + resistance_flags = FIRE_PROOF + w_class = WEIGHT_CLASS_SMALL + slot_flags = ITEM_SLOT_NECK | ITEM_SLOT_POCKETS + +/obj/item/clothing/neck/dogtag/frontier + name = "frontiersman dogtag" + desc = "A dogtag marked with the name and rank of a Frontiersmen pirate. You could turn this in to an outpost console contract for money." + +/obj/item/clothing/neck/dogtag/ramzi + name = "ramzi clique dogtag" + desc = "A dogtag marked with the name and rank of a Ramzi Clique pirate. You could turn this in to an outpost console contract for money." + ////////////// //DOPE BLING// ////////////// diff --git a/code/modules/mob/living/simple_animal/corpse.dm b/code/modules/mob/living/simple_animal/corpse.dm index eb8de8863ce1..f189084e6dc1 100644 --- a/code/modules/mob/living/simple_animal/corpse.dm +++ b/code/modules/mob/living/simple_animal/corpse.dm @@ -129,6 +129,7 @@ shoes = /obj/item/clothing/shoes/jackboots head = /obj/item/clothing/head/beret/sec/frontier gloves = /obj/item/clothing/gloves/color/black + neck = /obj/item/clothing/neck/dogtag/frontier /obj/effect/mob_spawn/human/corpse/frontier/ranged outfit = /datum/outfit/frontier diff --git a/code/modules/mob/living/simple_animal/hostile/human/syndicate.dm b/code/modules/mob/living/simple_animal/hostile/human/syndicate.dm index 2f61ba65a289..b20945bfccd1 100644 --- a/code/modules/mob/living/simple_animal/hostile/human/syndicate.dm +++ b/code/modules/mob/living/simple_animal/hostile/human/syndicate.dm @@ -12,7 +12,8 @@ icon_living = "syndicate" speak_chance = 0 stat_attack = HARD_CRIT - loot = list(/obj/effect/mob_spawn/human/corpse/syndicatesoldier) + loot = list(/obj/effect/mob_spawn/human/corpse/syndicatesoldier, /obj/item/clothing/neck/dogtag/ramzi) + atmos_requirements = list("min_oxy" = 5, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 1, "min_co2" = 0, "max_co2" = 5, "min_n2" = 0, "max_n2" = 0) maxbodytemp = 400 unsuitable_atmos_damage = 15 faction = list(FACTION_ANTAG_SYNDICATE) @@ -32,6 +33,7 @@ minbodytemp = 0 maxbodytemp = 1000 speed = 1 + loot = list(/obj/item/clothing/neck/dogtag/ramzi) armor_base = /obj/item/clothing/suit/space/hardsuit/syndi/ramzi /mob/living/simple_animal/hostile/human/syndicate/space/Initialize() @@ -53,7 +55,7 @@ melee_damage_upper = 15 icon_state = "syndicate_knife" icon_living = "syndicate_knife" - loot = list(/obj/effect/gibspawner/human) + loot = list(/obj/effect/gibspawner/human, /obj/item/clothing/neck/dogtag/ramzi) attack_verb_continuous = "slashes" attack_verb_simple = "slash" attack_sound = 'sound/weapons/bladeslice.ogg' @@ -82,6 +84,8 @@ icon_state = "syndicate_stormtrooper_knife" icon_living = "syndicate_stormtrooper_knife" name = "Ramzi Clique Stormtrooper" + maxHealth = 250 + health = 250 projectile_deflect_chance = 50 armor_base = /obj/item/clothing/suit/space/hardsuit/syndi @@ -99,7 +103,7 @@ light_color = COLOR_SOFT_RED status_flags = 0 var/obj/effect/light_emitter/red_energy_sword/sord - projectile_deflect_chance = 50 + projectile_deflect_chance = 25 /mob/living/simple_animal/hostile/human/syndicate/melee/sword/Initialize() . = ..() @@ -157,13 +161,13 @@ icon_living = "syndicate_pistol" casingtype = /obj/item/ammo_casing/c10mm projectilesound = 'sound/weapons/gun/pistol/shot.ogg' - loot = list(/obj/effect/gibspawner/human) + loot = list(/obj/effect/gibspawner/human, /obj/item/clothing/neck/dogtag/ramzi) dodging = FALSE rapid_melee = 1 /mob/living/simple_animal/hostile/human/syndicate/ranged/infiltrator //shuttle loan event projectilesound = 'sound/weapons/gun/smg/shot_suppressed.ogg' - loot = list(/obj/effect/mob_spawn/human/corpse/syndicatesoldier) + loot = list(/obj/effect/mob_spawn/human/corpse/syndicatesoldier, /obj/item/clothing/neck/dogtag/ramzi) /mob/living/simple_animal/hostile/human/syndicate/ranged/space name = "Ramzi Clique Operative" diff --git a/code/modules/overmap/missions/acquire_mission.dm b/code/modules/overmap/missions/acquire_mission.dm index 411e0444099f..71bb5546fe03 100644 --- a/code/modules/overmap/missions/acquire_mission.dm +++ b/code/modules/overmap/missions/acquire_mission.dm @@ -104,7 +104,7 @@ /datum/mission/acquire/true_love/strange_crystal name = "Strange crystal needed (urgent!!!)" - value = 1000 + value = 4000 weight = 1 objective_type = /obj/item/strange_crystal @@ -172,40 +172,16 @@ Acquire: Anomaly value = 1300 objective_type = /mob/living/simple_animal/hostile/asteroid/hivelord/legion -/datum/mission/acquire/creature/ice_whelp - name = "Capture an ice whelp" - desc = "I require a live ice whelp for research purposes. Trap one within the given \ - Lifeform Containment Unit and return it to me and you will be paid handsomely." - value = 1700 - weight = 2 - objective_type = /mob/living/simple_animal/hostile/asteroid/ice_whelp - /datum/mission/acquire/creature/migo name = "Capture a live mi-go" desc = "I require a live mi-go for research purposes. Trap one within the given \ Lifeform Containment Unit and return it to me and you will be paid handsomely." - value = 1050 + value = 1300 weight = 2 objective_type = /mob/living/simple_animal/hostile/netherworld/migo/asteroid -/datum/mission/acquire/creature/floorbot - name = "Detain a malfunctioning floorbot" - desc = "I require a functional abandoned floorbot for \"research\" purposes. Trap one within \ - the given Lifeform Containment Unit and return it to me and you will be paid handsomely." - value = 1450 - weight = 1 - objective_type = /mob/living/simple_animal/bot/floorbot/rockplanet - -/datum/mission/acquire/creature/firebot - name = "Detain a malfunctioning firebot" - desc = "I require a functional abandoned firebot for \"research\" purposes. Trap one within \ - the given Lifeform Containment Unit and return it to me and you will be paid handsomely." - value = 1450 - weight = 1 - objective_type = /mob/living/simple_animal/bot/firebot/rockplanet - /* - Acquire: Landmines + Acquire: Salvage */ /datum/mission/acquire/landmine @@ -219,6 +195,50 @@ Acquire: Anomaly objective_type = /obj/item/mine/pressure/explosive num_wanted = 2 +/datum/mission/acquire/bounty + name = "Hunt down Frontiersmen Dogtags" + desc = "CLIP has assigned us to offer out bounties to hunt down Frontiersman cells and turn in their dogtags. We'll reward you well." + weight = 4 + value = 3000 + duration = 100 MINUTES + dur_mod_range = 0.2 + container_type = /obj/item/storage/toolbox/bounty/hunt + objective_type = /obj/item/clothing/neck/dogtag/frontier + num_wanted = 3 + +/datum/mission/acquire/bounty/ramzi + name = "Hunt down Ramzi Clique Dogtags" + desc = "Gezena has assigned us to offer out bounties to hunt down Ramzi Clique outfits and turn in their dogtags. We'll reward you well." + weight = 3 + value = 4000 + duration = 120 MINUTES + dur_mod_range = 0.1 + container_type = /obj/item/storage/toolbox/bounty/hunt + objective_type = /obj/item/clothing/neck/dogtag/ramzi + num_wanted = 3 + +/datum/mission/acquire/salvage + name = "Deliver Protolathe" + desc = "The Nanotrasen Corporation is contracting out to have scientific equipment returned. Looking for a rare circuitboard (R&D Console, Protolathe, Circuit Imprinter) of any type." + weight = 2 + value = 4000 + duration = 120 MINUTES + dur_mod_range = 0.3 + container_type = /obj/item/storage/toolbox/bounty/salvage + objective_type = /obj/item/circuitboard/machine/protolathe + num_wanted = 1 + +/datum/mission/acquire/salvage/console + name = "Deliver R&D Console" + desc = "The Nanotrasen Corporation is contracting out to have scientific equipment returned. Looking for a rare circuitboard (R&D Console, Protolathe, Circuit Imprinter) of any type." + weight = 3 + value = 2500 + duration = 120 MINUTES + dur_mod_range = 0.3 + container_type = /obj/item/storage/toolbox/bounty/salvage + objective_type = /obj/item/circuitboard/computer/rdconsole + num_wanted = 1 + /* Acquire: Fishing */ diff --git a/code/modules/research/designs/comp_board_designs.dm b/code/modules/research/designs/comp_board_designs.dm index baa48134abbd..6cd4b69f4062 100644 --- a/code/modules/research/designs/comp_board_designs.dm +++ b/code/modules/research/designs/comp_board_designs.dm @@ -182,14 +182,6 @@ category = list("Computer Boards") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_CARGO -/datum/design/board/rdconsole - name = "Computer Design (R&D Console)" - desc = "Allows for the construction of circuit boards used to build a new R&D console." - id = "rdconsole" - build_path = /obj/item/circuitboard/computer/rdconsole - category = list("Computer Boards") - departmental_flags = DEPARTMENTAL_FLAG_SCIENCE - /datum/design/board/bounty name = "Computer Design (Bounty Console)" desc = "Allows for the construction of circuit boards used to build a Bounty Console." diff --git a/code/modules/research/techweb/all_nodes.dm b/code/modules/research/techweb/all_nodes.dm index 799865038b52..78b7846bb929 100644 --- a/code/modules/research/techweb/all_nodes.dm +++ b/code/modules/research/techweb/all_nodes.dm @@ -13,7 +13,7 @@ // Cargo Stuff "c-reader", "desttagger", "salestagger", "handlabel", "packagewrap", // Research Stuff - "destructive_analyzer", "experimentor", "rdconsole", "rdserver", "design_disk", "tech_disk", "mechfab", + "destructive_analyzer", "experimentor", "rdserver", "design_disk", "tech_disk", "mechfab", // Miscellaneous Stufff "paystand", "space_heater", "bucket", "plastic_knife", "plastic_fork", "plastic_spoon", "fax", // Security Stuff diff --git a/icons/obj/clothing/neck.dmi b/icons/obj/clothing/neck.dmi index 3109928ff7aedd2ac0b37651762f0e4e0cfa604e..0c4ba91632f745672f42562bf3dc7cf204fb29a3 100644 GIT binary patch literal 11476 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 G@qYj_uhjAY literal 5982 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 TU!I@cKmu0{%?zrLF8BWnlbRTb