From 0d8259c6b53e09ff7ab32058561cf09d106e3544 Mon Sep 17 00:00:00 2001 From: private-tristan Date: Fri, 24 Jan 2025 15:47:46 -0500 Subject: [PATCH 1/3] Non-AP SVDs --- code/datums/ammo/bullet/sniper.dm | 6 +- code/game/objects/items/storage/belt.dm | 4 ++ .../living/carbon/human/ai/ai_equipment.dm | 61 +++++++++++++++++++ .../projectiles/guns/specialist/sniper.dm | 3 + .../projectiles/magazines/specialist.dm | 5 ++ 5 files changed, 78 insertions(+), 1 deletion(-) diff --git a/code/datums/ammo/bullet/sniper.dm b/code/datums/ammo/bullet/sniper.dm index 5f723a091b7..26059ab946d 100644 --- a/code/datums/ammo/bullet/sniper.dm +++ b/code/datums/ammo/bullet/sniper.dm @@ -95,8 +95,12 @@ pushback(M, P, 3) /datum/ammo/bullet/sniper/upp - name = "armor-piercing sniper bullet" + name = "sniper bullet" damage = 80 + penetration = ARMOR_PENETRATION_TIER_1 + +/datum/ammo/bullet/sniper/upp/ap + name = "armor-piercing sniper bullet" penetration = ARMOR_PENETRATION_TIER_10 /datum/ammo/bullet/sniper/upp_pve diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm index 5b6dc7a3d8a..0aee5fea6c7 100644 --- a/code/game/objects/items/storage/belt.dm +++ b/code/game/objects/items/storage/belt.dm @@ -694,6 +694,10 @@ for(var/i in 1 to storage_slots) new /obj/item/ammo_magazine/sniper/svd(src) +/obj/item/storage/belt/marine/svd/ap/fill_preset_inventory() // SVD + for(var/i in 1 to storage_slots) + new /obj/item/ammo_magazine/sniper/svd/ap(src) + /obj/item/storage/belt/marine/smartgunner name = "\improper M280 pattern smartgunner drum belt" desc = "Despite the fact that 1. drum magazines are incredibly non-ergonomical, and 2. require incredibly precise machining in order to fit universally (spoiler, they don't, adding further to the myth of 'Smartgun Personalities'), the USCM decided to issue a modified marine belt (more formally known by the designation M280) with hooks and dust covers (overly complex for the average jarhead) for the M56B system's drum munitions. When the carry catch on the drum isn't getting stuck in the oiled up velcro, the rig actually does do a decent job at holding a plentiful amount of drums. But at the end of the day, compared to standard rigs... it sucks, but isn't that what being a Marine is all about?" diff --git a/code/modules/mob/living/carbon/human/ai/ai_equipment.dm b/code/modules/mob/living/carbon/human/ai/ai_equipment.dm index 90112eedc79..466461f7029 100644 --- a/code/modules/mob/living/carbon/human/ai/ai_equipment.dm +++ b/code/modules/mob/living/carbon/human/ai/ai_equipment.dm @@ -159,6 +159,28 @@ new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/CLF(new_human), WEAR_L_EAR) +/datum/equipment_preset/clf/sniper/svd/ap + name = "CLF Sniper (AI) (AP SVD)" + +/datum/equipment_preset/clf/sniper/svd/ap/load_gear(mob/living/carbon/human/new_human) + var/obj/item/clothing/under/colonist/clf/jumpsuit = new() + var/obj/item/clothing/accessory/storage/webbing/W = new() + jumpsuit.attach_accessory(new_human, W) + new_human.equip_to_slot_or_del(jumpsuit, WEAR_BODY) + spawn_rebel_suit(new_human) + spawn_rebel_helmet(new_human) + spawn_rebel_shoes(new_human) + spawn_rebel_gloves(new_human) + new_human.equip_to_slot_or_del(new /obj/item/tool/crowbar, WEAR_IN_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/device/flashlight(new_human), WEAR_L_STORE) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/firstaid/ert(new_human), WEAR_R_STORE) + + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/marine/svd/ap(new_human), WEAR_WAIST) + new_human.put_in_active_hand(new /obj/item/weapon/gun/rifle/sniper/svd/ap(new_human)) + + new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/CLF(new_human), WEAR_L_EAR) + + /datum/equipment_preset/clf/engineer/ai name = "CLF Engineer (AI)" @@ -234,3 +256,42 @@ new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/sniper/svd, WEAR_IN_JACKET) //waist new_human.equip_to_slot_or_del(new /obj/item/storage/belt/marine/svd(new_human), WEAR_WAIST) + +/datum/equipment_preset/upp/sniper/ap + name = "UPP Marksman (AP)" + +/datum/equipment_preset/upp/sniper/ap/load_gear(mob/living/carbon/human/new_human) + //back + new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/lightpack/upp, WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/tool/extinguisher, WEAR_IN_BACK) //1 + new_human.equip_to_slot_or_del(new /obj/item/reagent_container/food/snacks/upp, WEAR_IN_BACK) //1.33 + new_human.equip_to_slot_or_del(new /obj/item/reagent_container/food/snacks/upp, WEAR_IN_BACK) //1.66 + //face + new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/UPP, WEAR_L_EAR) + //head + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/upp, WEAR_HEAD) + //body + var/obj/item/clothing/under/marine/veteran/UPP/UPP = new() + new_human.equip_to_slot_or_del(UPP, WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/patch/upp, WEAR_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/patch/upp/naval, WEAR_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/faction/UPP, WEAR_JACKET) + //limbs + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp_knife, WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine, WEAR_HANDS) + //pockets + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/explosive/C4, WEAR_R_STORE) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/firstaid/ert, WEAR_L_STORE) + + if(SSmapping.configs[GROUND_MAP].environment_traits[MAP_COLD]) + new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/rebreather/scarf/tacticalmask/green, WEAR_FACE) + + //body + var/obj/item/clothing/accessory/storage/black_vest/W = new() + UPP.attach_accessory(new_human, W) + for(var/i in 1 to W.hold.storage_slots) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/sniper/svd/ap, WEAR_IN_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/rifle/sniper/svd/ap, WEAR_J_STORE) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/sniper/svd/ap, WEAR_IN_JACKET) + //waist + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/marine/svd/ap(new_human), WEAR_WAIST) diff --git a/code/modules/projectiles/guns/specialist/sniper.dm b/code/modules/projectiles/guns/specialist/sniper.dm index cc987c5782c..5a20191b9b5 100644 --- a/code/modules/projectiles/guns/specialist/sniper.dm +++ b/code/modules/projectiles/guns/specialist/sniper.dm @@ -542,5 +542,8 @@ recoil = RECOIL_AMOUNT_TIER_5 damage_falloff_mult = 0 +/obj/item/weapon/gun/rifle/sniper/svd/ap + current_mag = /obj/item/ammo_magazine/sniper/svd/ap + /obj/item/weapon/gun/rifle/sniper/svd/pve current_mag = /obj/item/ammo_magazine/sniper/svd/pve diff --git a/code/modules/projectiles/magazines/specialist.dm b/code/modules/projectiles/magazines/specialist.dm index a0943dbd931..a1de20155af 100644 --- a/code/modules/projectiles/magazines/specialist.dm +++ b/code/modules/projectiles/magazines/specialist.dm @@ -60,6 +60,11 @@ max_rounds = 12 gun_type = /obj/item/weapon/gun/rifle/sniper/svd +/obj/item/ammo_magazine/sniper/svd/ap + name = "\improper Type-88 Armor Piercing Magazine (7.62x54mmR)" + desc = "A large caliber armor piercing magazine for the Type-88 designated marksman rifle." + default_ammo = /datum/ammo/bullet/sniper/upp/ap + /obj/item/ammo_magazine/sniper/svd/pve name = "\improper Type-88 HP Magazine (7.62x54mmR)" default_ammo = /datum/ammo/bullet/sniper/upp_pve From e2270f8a95f2a89c97f31dfcadc33e172f7214c1 Mon Sep 17 00:00:00 2001 From: private-tristan Date: Fri, 24 Jan 2025 17:41:50 -0500 Subject: [PATCH 2/3] Adds Weak SVD, an SVD that has less AP. --- code/datums/ammo/bullet/sniper.dm | 10 ++++---- code/game/objects/items/storage/belt.dm | 4 ++-- .../human/ai/action_datums/sniper_nest.dm | 2 ++ .../living/carbon/human/ai/ai_equipment.dm | 24 +++++++++---------- .../projectiles/guns/specialist/sniper.dm | 4 ++-- .../projectiles/magazines/specialist.dm | 12 +++++----- 6 files changed, 29 insertions(+), 27 deletions(-) diff --git a/code/datums/ammo/bullet/sniper.dm b/code/datums/ammo/bullet/sniper.dm index 26059ab946d..4becc6ad611 100644 --- a/code/datums/ammo/bullet/sniper.dm +++ b/code/datums/ammo/bullet/sniper.dm @@ -95,14 +95,14 @@ pushback(M, P, 3) /datum/ammo/bullet/sniper/upp - name = "sniper bullet" - damage = 80 - penetration = ARMOR_PENETRATION_TIER_1 - -/datum/ammo/bullet/sniper/upp/ap name = "armor-piercing sniper bullet" + damage = 80 penetration = ARMOR_PENETRATION_TIER_10 +/datum/ammo/bullet/sniper/upp/weak + name = "sniper bullet" + penetration = ARMOR_PENETRATION_TIER_1 + /datum/ammo/bullet/sniper/upp_pve name = "high-power sniper bullet" damage = 180 diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm index ab5f20fca67..97b2f102954 100644 --- a/code/game/objects/items/storage/belt.dm +++ b/code/game/objects/items/storage/belt.dm @@ -694,9 +694,9 @@ for(var/i in 1 to storage_slots) new /obj/item/ammo_magazine/sniper/svd(src) -/obj/item/storage/belt/marine/svd/ap/fill_preset_inventory() // SVD +/obj/item/storage/belt/marine/svd/weak/fill_preset_inventory() // SVD for(var/i in 1 to storage_slots) - new /obj/item/ammo_magazine/sniper/svd/ap(src) + new /obj/item/ammo_magazine/sniper/svd/weak(src) /obj/item/storage/belt/marine/smartgunner name = "\improper M280 pattern smartgunner drum belt" diff --git a/code/modules/mob/living/carbon/human/ai/action_datums/sniper_nest.dm b/code/modules/mob/living/carbon/human/ai/action_datums/sniper_nest.dm index 7948a906b89..43e2d7ab950 100644 --- a/code/modules/mob/living/carbon/human/ai/action_datums/sniper_nest.dm +++ b/code/modules/mob/living/carbon/human/ai/action_datums/sniper_nest.dm @@ -74,8 +74,10 @@ var/static/list/sniper_equipment_presets = list( /datum/equipment_preset/clf/sniper::name = /datum/equipment_preset/clf/sniper, /datum/equipment_preset/clf/sniper/svd::name = /datum/equipment_preset/clf/sniper/svd, + /datum/equipment_preset/clf/sniper/svd/weak::name = /datum/equipment_preset/clf/sniper/svd/weak, /datum/equipment_preset/pmc/pmc_sniper::name = /datum/equipment_preset/pmc/pmc_sniper, /datum/equipment_preset/upp/sniper::name = /datum/equipment_preset/upp/sniper, + /datum/equipment_preset/upp/sniper/weak::name = /datum/equipment_preset/upp/sniper/weak, /datum/equipment_preset/uscm/specialist_equipped/sniper::name = /datum/equipment_preset/uscm/specialist_equipped/sniper, /datum/equipment_preset/other/freelancer/marksman::name = /datum/equipment_preset/other/freelancer/marksman, ) diff --git a/code/modules/mob/living/carbon/human/ai/ai_equipment.dm b/code/modules/mob/living/carbon/human/ai/ai_equipment.dm index fb1709928ad..7f4fd16bace 100644 --- a/code/modules/mob/living/carbon/human/ai/ai_equipment.dm +++ b/code/modules/mob/living/carbon/human/ai/ai_equipment.dm @@ -159,10 +159,10 @@ new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/CLF(new_human), WEAR_L_EAR) -/datum/equipment_preset/clf/sniper/svd/ap - name = "CLF Sniper (AI) (AP SVD)" +/datum/equipment_preset/clf/sniper/svd/weak + name = "CLF Sniper (AI) (Weak SVD)" -/datum/equipment_preset/clf/sniper/svd/ap/load_gear(mob/living/carbon/human/new_human) +/datum/equipment_preset/clf/sniper/svd/weak/load_gear(mob/living/carbon/human/new_human) var/obj/item/clothing/under/colonist/clf/jumpsuit = new() var/obj/item/clothing/accessory/storage/webbing/W = new() jumpsuit.attach_accessory(new_human, W) @@ -175,8 +175,8 @@ new_human.equip_to_slot_or_del(new /obj/item/device/flashlight(new_human), WEAR_L_STORE) new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/firstaid/ert(new_human), WEAR_R_STORE) - new_human.equip_to_slot_or_del(new /obj/item/storage/belt/marine/svd/ap(new_human), WEAR_WAIST) - new_human.put_in_active_hand(new /obj/item/weapon/gun/rifle/sniper/svd/ap(new_human)) + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/marine/svd/weak(new_human), WEAR_WAIST) + new_human.put_in_active_hand(new /obj/item/weapon/gun/rifle/sniper/svd/weak(new_human)) new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/CLF(new_human), WEAR_L_EAR) @@ -257,10 +257,10 @@ //waist new_human.equip_to_slot_or_del(new /obj/item/storage/belt/marine/svd(new_human), WEAR_WAIST) -/datum/equipment_preset/upp/sniper/ap - name = "UPP Marksman (AP)" +/datum/equipment_preset/upp/sniper/weak + name = "UPP Marksman (Weak)" -/datum/equipment_preset/upp/sniper/ap/load_gear(mob/living/carbon/human/new_human) +/datum/equipment_preset/upp/sniper/weak/load_gear(mob/living/carbon/human/new_human) //back new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/lightpack/upp, WEAR_BACK) new_human.equip_to_slot_or_del(new /obj/item/tool/extinguisher, WEAR_IN_BACK) //1 @@ -290,11 +290,11 @@ var/obj/item/clothing/accessory/storage/black_vest/W = new() UPP.attach_accessory(new_human, W) for(var/i in 1 to W.hold.storage_slots) - new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/sniper/svd/ap, WEAR_IN_ACCESSORY) - new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/rifle/sniper/svd/ap, WEAR_J_STORE) - new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/sniper/svd/ap, WEAR_IN_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/sniper/svd/weak, WEAR_IN_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/rifle/sniper/svd/weak, WEAR_J_STORE) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/sniper/svd/weak, WEAR_IN_JACKET) //waist - new_human.equip_to_slot_or_del(new /obj/item/storage/belt/marine/svd/ap(new_human), WEAR_WAIST) + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/marine/svd/weak(new_human), WEAR_WAIST) /datum/equipment_preset/other/freelancer/standard/rifleman diff --git a/code/modules/projectiles/guns/specialist/sniper.dm b/code/modules/projectiles/guns/specialist/sniper.dm index ef7066764fe..bb54d70be31 100644 --- a/code/modules/projectiles/guns/specialist/sniper.dm +++ b/code/modules/projectiles/guns/specialist/sniper.dm @@ -540,8 +540,8 @@ recoil = RECOIL_AMOUNT_TIER_5 damage_falloff_mult = 0 -/obj/item/weapon/gun/rifle/sniper/svd/ap - current_mag = /obj/item/ammo_magazine/sniper/svd/ap +/obj/item/weapon/gun/rifle/sniper/svd/weak + current_mag = /obj/item/ammo_magazine/sniper/svd/weak /obj/item/weapon/gun/rifle/sniper/svd/pve current_mag = /obj/item/ammo_magazine/sniper/svd/pve diff --git a/code/modules/projectiles/magazines/specialist.dm b/code/modules/projectiles/magazines/specialist.dm index 82a77e76436..c14d2e96ffc 100644 --- a/code/modules/projectiles/magazines/specialist.dm +++ b/code/modules/projectiles/magazines/specialist.dm @@ -51,8 +51,8 @@ //Type 88 //Based on the actual Dragunov designated marksman rifle. /obj/item/ammo_magazine/sniper/svd - name = "\improper Type-88 Magazine (7.62x54mmR)" - desc = "A large caliber magazine for the Type-88 designated marksman rifle." + name = "\improper Type-88 Armor Piercing Magazine (7.62x54mmR)" + desc = "A large caliber armor piercing magazine for the Type-88 designated marksman rifle." caliber = "7.62x54mmR" icon = 'icons/obj/items/weapons/guns/ammo_by_faction/upp.dmi' icon_state = "type88mag" @@ -60,10 +60,10 @@ max_rounds = 12 gun_type = /obj/item/weapon/gun/rifle/sniper/svd -/obj/item/ammo_magazine/sniper/svd/ap - name = "\improper Type-88 Armor Piercing Magazine (7.62x54mmR)" - desc = "A large caliber armor piercing magazine for the Type-88 designated marksman rifle." - default_ammo = /datum/ammo/bullet/sniper/upp/ap +/obj/item/ammo_magazine/sniper/svd/weak + name = "\improper Type-88 Magazine (7.62x54mmR)" + desc = "A large caliber magazine for the Type-88 designated marksman rifle." + default_ammo = /datum/ammo/bullet/sniper/upp/weak /obj/item/ammo_magazine/sniper/svd/pve name = "\improper Type-88 HP Magazine (7.62x54mmR)" From aef28ad39b49cb96536dab78db08028ec46d4b9e Mon Sep 17 00:00:00 2001 From: private-tristan <54422837+private-tristan@users.noreply.github.com> Date: Fri, 24 Jan 2025 18:03:32 -0500 Subject: [PATCH 3/3] Update belt.dm --- code/game/objects/items/storage/belt.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm index 97b2f102954..bcad4a324d1 100644 --- a/code/game/objects/items/storage/belt.dm +++ b/code/game/objects/items/storage/belt.dm @@ -694,7 +694,7 @@ for(var/i in 1 to storage_slots) new /obj/item/ammo_magazine/sniper/svd(src) -/obj/item/storage/belt/marine/svd/weak/fill_preset_inventory() // SVD +/obj/item/storage/belt/marine/svd/weak/fill_preset_inventory() for(var/i in 1 to storage_slots) new /obj/item/ammo_magazine/sniper/svd/weak(src)