diff --git a/modular_zubbers/code/game/objects/effects/spawners/random/armory.dm b/modular_zubbers/code/game/objects/effects/spawners/random/armory.dm index 9f1d3845f2f..ebdb22a1d86 100644 --- a/modular_zubbers/code/game/objects/effects/spawners/random/armory.dm +++ b/modular_zubbers/code/game/objects/effects/spawners/random/armory.dm @@ -41,16 +41,17 @@ /obj/effect/spawner/random/armory/laser_gun loot = list( - /obj/item/gun/microfusion/mcr01 + /obj/item/gun/ballistic/automatic/wt550/security/flathead ) - spawn_loot_count = 3 + spawn_loot_count = 2 /obj/effect/spawner/random/armory/e_gun loot = list( + /obj/item/gun/microfusion/mcr01, + /obj/item/gun/microfusion/mcr01, /obj/item/gun/energy/e_gun, /obj/item/gun/energy/e_gun, /obj/item/gun/energy/laser, - /obj/item/gun/energy/laser, ) spawn_all_loot = TRUE diff --git a/modular_zubbers/code/modules/cargo/exports/weapons.dm b/modular_zubbers/code/modules/cargo/exports/weapons.dm new file mode 100644 index 00000000000..2bab3c4775e --- /dev/null +++ b/modular_zubbers/code/modules/cargo/exports/weapons.dm @@ -0,0 +1,7 @@ +/datum/export/weapon/wt550 + exclude_types = list(/obj/item/gun/ballistic/automatic/wt550/security) + +/datum/export/weapon/wt551 + export_types = list(/obj/item/gun/ballistic/automatic/wt550/security) + cost = CARGO_CRATE_VALUE * 1.25 + unit_name = "WT-551 automatic rifle" \ No newline at end of file diff --git a/modular_zubbers/code/modules/cargo/packs/security.dm b/modular_zubbers/code/modules/cargo/packs/security.dm new file mode 100644 index 00000000000..a91550bdb3b --- /dev/null +++ b/modular_zubbers/code/modules/cargo/packs/security.dm @@ -0,0 +1,27 @@ +/datum/supply_pack/security/armory/wt551 + name = "WT-551 Autorifle Crate" + desc = "Contains a pair of WT-551 Autorifles pre-loaded with less-than-lethal rubber-tipped rounds. Additional ammo sold seperately. Backwards-compatible with WT-550 magazines. NanoTrasen reminds you that the other weapon is for a friend, and not for going guns akimbo." + cost = CARGO_CRATE_VALUE * 8 + contains = list(/obj/item/gun/ballistic/automatic/wt550/security/rubber = 2) + crate_name = "wt-550 autorifle crate" + +/datum/supply_pack/security/armory/wt550_ammo_rubber + name = "WT-550/WT-551 Autorifle Ammo Crate (Rubber-Tipped)" + desc = "Contains 3 magazines with less than lethal rubber-tipped rounds for the WT-551." + cost = CARGO_CRATE_VALUE * 4 + contains = list(/obj/item/ammo_box/magazine/wt550m9/rubber = 3) + crate_name = "wt-550 magazine crate (rubber-tipped)" + +/datum/supply_pack/security/armory/wt550_ammo_flat + name = "WT-550/WT-551 Autorifle Ammo Crate (Flat-Tipped)" + desc = "Contains 3 magazines with lethal flat-tipped rounds for the WT-551." + cost = CARGO_CRATE_VALUE * 5 + contains = list(/obj/item/ammo_box/magazine/wt550m9/flathead = 3) + crate_name = "wt-550 magazine crate (flat-tipped)" + +/datum/supply_pack/security/armory/wt550_ammo_regular + name = "WT-550/WT-551 Autorifle Ammo Crate (Regular)" + desc = "Contains 3 magazines with lethal regular rounds for the WT-551." + cost = CARGO_CRATE_VALUE * 7 + contains = list(/obj/item/ammo_box/magazine/wt550m9 = 3) + crate_name = "wt-550 magazine crate (regular)" diff --git a/modular_zubbers/code/modules/jobs/job_types/cargo_technician.dm b/modular_zubbers/code/modules/jobs/job_types/cargo_technician.dm new file mode 100644 index 00000000000..8eb12d250ea --- /dev/null +++ b/modular_zubbers/code/modules/jobs/job_types/cargo_technician.dm @@ -0,0 +1,4 @@ +/datum/job/cargo_technician/New() + mail_goodies -= /obj/item/gun/ballistic/automatic/wt550 + mail_goodies += /obj/item/gun/ballistic/automatic/wt550/security + . = ..() \ No newline at end of file diff --git a/modular_zubbers/code/modules/mob/living/basic/trooper/nanotrasen.dm b/modular_zubbers/code/modules/mob/living/basic/trooper/nanotrasen.dm new file mode 100644 index 00000000000..afa0f8a5af2 --- /dev/null +++ b/modular_zubbers/code/modules/mob/living/basic/trooper/nanotrasen.dm @@ -0,0 +1,3 @@ +/mob/living/basic/trooper/nanotrasen/ranged/smg + casingtype = /obj/item/ammo_casing/c46x30mm/flathead + r_hand = /obj/item/gun/ballistic/automatic/wt550/security \ No newline at end of file diff --git a/modular_zubbers/code/modules/projectiles/ammunition/ballistic/smg.dm b/modular_zubbers/code/modules/projectiles/ammunition/ballistic/smg.dm new file mode 100644 index 00000000000..5fce7c34253 --- /dev/null +++ b/modular_zubbers/code/modules/projectiles/ammunition/ballistic/smg.dm @@ -0,0 +1,37 @@ +/obj/item/ammo_casing/c46x30mm + name = "4.6x30mm bullet casing" + desc = "A 4.6x30mm bullet casing." + can_be_printed = TRUE + advanced_print_req = TRUE + custom_materials = AMMO_MATS_BASIC + +/obj/item/ammo_casing/c46x30mm/ap + name = "4.6x30mm armor-piercing bullet casing" + desc = "A 4.6x30mm armor-piercing bullet casing." + can_be_printed = TRUE + advanced_print_req = TRUE + custom_materials = AMMO_MATS_AP + +/obj/item/ammo_casing/c46x30mm/inc + name = "4.6x30mm incendiary bullet casing" + desc = "A 4.6x30mm incendiary bullet casing." + can_be_printed = FALSE + advanced_print_req = TRUE + custom_materials = AMMO_MATS_TEMP + +/obj/item/ammo_casing/c46x30mm/flathead + name = "4.6x30mm flathead bullet casing" + desc = "A 4.6x30mm flathead bullet casing." + projectile_type = /obj/projectile/bullet/c46x30mm/flathead + can_be_printed = TRUE + advanced_print_req = FALSE + custom_materials = AMMO_MATS_RIPPER + +/obj/item/ammo_casing/c46x30mm/rubber + name = "4.6x30mm rubber-tipped bullet casing" + desc = "A 4.6x30mm rubber-tipped bullet casing." + projectile_type = /obj/projectile/bullet/c46x30mm/rubber + can_be_printed = TRUE + advanced_print_req = FALSE + harmful = FALSE + custom_materials = AMMO_MATS_BASIC \ No newline at end of file diff --git a/modular_zubbers/code/modules/projectiles/boxes_magazines/external/smg.dm b/modular_zubbers/code/modules/projectiles/boxes_magazines/external/smg.dm new file mode 100644 index 00000000000..b99817eb85c --- /dev/null +++ b/modular_zubbers/code/modules/projectiles/boxes_magazines/external/smg.dm @@ -0,0 +1,24 @@ +/obj/item/ammo_box/magazine/wt550m9 + name = "\improper WT-550 magazine" + +/obj/item/ammo_box/magazine/wt550m9/wtap + name = "wt550 AP magazine" + +/obj/item/ammo_box/magazine/wt550m9/wtic + name = "wt550 INC magazine" + +/obj/item/ammo_box/magazine/wt550m9/flathead + name = "\improper WT-550 FlatHead magazine" + icon_state = "46x30mmt-20" + base_icon_state = "46x30mmt" + ammo_type = /obj/item/ammo_casing/c46x30mm/flathead + caliber = CALIBER_46X30MM + max_ammo = 20 + +/obj/item/ammo_box/magazine/wt550m9/rubber + name = "\improper WT-550 Rubber magazine" + icon_state = "46x30mmt-20" + base_icon_state = "46x30mmt" + ammo_type = /obj/item/ammo_casing/c46x30mm/rubber + caliber = CALIBER_46X30MM + max_ammo = 20 diff --git a/modular_zubbers/code/modules/projectiles/guns/ballistic/automatic.dm b/modular_zubbers/code/modules/projectiles/guns/ballistic/automatic.dm new file mode 100644 index 00000000000..6416ea3b945 --- /dev/null +++ b/modular_zubbers/code/modules/projectiles/guns/ballistic/automatic.dm @@ -0,0 +1,19 @@ +/obj/item/gun/ballistic/automatic/wt550 + can_bayonet = FALSE + can_suppress = FALSE + +/obj/item/gun/ballistic/automatic/wt550/security + name = "\improper WT-551 Autorifle" + desc = "A heavier, bulkier automatic variant of the WT-550, and now with 99% less discombobulation! It's back, baby. Uses 4.6x30mm rounds. Recommended to hold with two hands." + icon = 'modular_zubbers/icons/obj/weapons/guns/wt551.dmi' + fire_sound = 'modular_zubbers/sound/weapons/gun/wt551/shot.ogg' + w_class = WEIGHT_CLASS_BULKY + fire_delay = 3 + //18 damage per 0.3 seconds = 60 DPS + //Reference: Laser Gun 22 damage per 0.4 seconds = 55DPS + +/obj/item/gun/ballistic/automatic/wt550/security/flathead //What you get in the armory. + spawn_magazine_type = /obj/item/ammo_box/magazine/wt550m9/flathead + +/obj/item/gun/ballistic/automatic/wt550/security/rubber //What you get from cargo. + spawn_magazine_type = /obj/item/ammo_box/magazine/wt550m9/rubber \ No newline at end of file diff --git a/modular_zubbers/code/modules/projectiles/projectile/bullets/smg.dm b/modular_zubbers/code/modules/projectiles/projectile/bullets/smg.dm new file mode 100644 index 00000000000..b52a3913b88 --- /dev/null +++ b/modular_zubbers/code/modules/projectiles/projectile/bullets/smg.dm @@ -0,0 +1,49 @@ +/obj/projectile/bullet/c46x30mm + name = "4.6x30mm bullet" + damage = 20 + wound_bonus = -5 + bare_wound_bonus = 5 + embed_falloff_tile = -4 + +/obj/projectile/bullet/c46x30mm/ap + name = "4.6x30mm armor-piercing bullet" + damage = 15 + armour_penetration = 40 + embedding = null + +/obj/projectile/bullet/incendiary/c46x30mm //Not a typo. /obj/projectile/bullet/incendiary is a type. + name = "4.6x30mm incendiary bullet" + damage = 10 + fire_stacks = 1 + +/obj/projectile/bullet/c46x30mm/flathead + name = "4.6x30mm flathead bullet" + + damage = 18 + stamina = 5 //Knocks the wind out of you. + + wound_bonus = CANT_WOUND + bare_wound_bonus = CANT_WOUND + + weak_against_armour = TRUE + sharpness = NONE + shrapnel_type = null + embedding = null + +/obj/projectile/bullet/c46x30mm/rubber + name = "4.6x30mm rubber-tipped bullet" + damage = 5 + stamina = 15 + + wound_bonus = CANT_WOUND + bare_wound_bonus = CANT_WOUND + + weak_against_armour = TRUE + sharpness = NONE + shrapnel_type = null + embedding = null + + ricochets_max = 3 + ricochet_incidence_leeway = 0 + ricochet_chance = 75 + ricochet_decay_damage = 0.8 \ No newline at end of file diff --git a/modular_zubbers/code/modules/research/techweb/all_nodes.dm b/modular_zubbers/code/modules/research/techweb/all_nodes.dm index 67072dc4526..f4416b8f3ff 100644 --- a/modular_zubbers/code/modules/research/techweb/all_nodes.dm +++ b/modular_zubbers/code/modules/research/techweb/all_nodes.dm @@ -46,3 +46,23 @@ design_ids += list( "minesweeper", ) + +/datum/techweb_node/weaponry/New() + design_ids += "wt550_ammo_rubber" + design_ids += "wt550_ammo_flathead" + . = ..() + +/datum/techweb_node/adv_weaponry/New() + design_ids += "wt550_ammo_normal" + . = ..() + +/datum/techweb_node/exotic_ammo/New() + design_ids += "wt550_ammo_ap" + . = ..() + +/datum/techweb_node/syndicate_basic/New() + design_ids -= "mag_autorifle" + design_ids -= "mag_autorifle_ap" + design_ids -= "mag_autorifle_ic" + design_ids += "wt550_ammo_incendiary" + . = ..() \ No newline at end of file diff --git a/modular_zubbers/icons/obj/weapons/guns/wt551.dmi b/modular_zubbers/icons/obj/weapons/guns/wt551.dmi new file mode 100644 index 00000000000..62215f4de75 Binary files /dev/null and b/modular_zubbers/icons/obj/weapons/guns/wt551.dmi differ diff --git a/modular_zubbers/master_files/code/modules/research/designs/weapon_designs.dm b/modular_zubbers/master_files/code/modules/research/designs/weapon_designs.dm new file mode 100644 index 00000000000..6ce2f82a60d --- /dev/null +++ b/modular_zubbers/master_files/code/modules/research/designs/weapon_designs.dm @@ -0,0 +1,59 @@ +/datum/design/wt550_ammo_rubber + name = "WT-550/WT-551 Magazine (4.6x30mm Rubber-Tipped) (Less-Than_Lethal)" + desc = "A magazine for the WT-550/WT-551 Autorifle. Contains less-than-lethal rubber-tipped ammo." + id = "wt550_ammo_rubber" + build_type = PROTOLATHE | AWAY_LATHE + materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 6) + build_path = /obj/item/ammo_box/magazine/wt550m9/rubber + category = list( + RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO + ) + departmental_flags = DEPARTMENT_BITFLAG_SECURITY + +/datum/design/wt550_ammo_flat + name = "WT-550/WT-551 Magazine (4.6x30mm FlatHead) (Lethal)" + desc = "A magazine for the WT-550/WT-551 Autorifle. Contains lethal surplus-tier flathead ammo." + id = "wt550_ammo_flathead" + build_type = PROTOLATHE | AWAY_LATHE + materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 8) + build_path = /obj/item/ammo_box/magazine/wt550m9/rubber + category = list( + RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO + ) + departmental_flags = DEPARTMENT_BITFLAG_SECURITY + +/datum/design/wt550_ammo + name = "WT-550/WT-551 Magazine (4.6x30mm Regular) (Lethal)" + desc = "A magazine for the WT-550/WT-551 Autorifle. Contains lethal regular ammo." + id = "wt550_ammo_normal" + build_type = PROTOLATHE | AWAY_LATHE + materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10) + build_path = /obj/item/ammo_box/magazine/wt550m9 + category = list( + RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO + ) + departmental_flags = DEPARTMENT_BITFLAG_SECURITY + +/datum/design/wt550_ammo_ap + name = "WT-550/WT-551 Magazine (4.6x30mm Armor-Piercing) (Lethal)" + desc = "A magazine for the WT-550/WT-551 Autorifle. Contains lethal armor-piercing ammo. NanoTrasen prefers you didn't use these on your pressurized space station." + id = "wt550_ammo_ap" + build_type = PROTOLATHE | AWAY_LATHE + materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 12, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 2) + build_path = /obj/item/ammo_box/magazine/wt550m9/wtap + category = list( + RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO + ) + departmental_flags = DEPARTMENT_BITFLAG_SECURITY + +/datum/design/wt550_ammo_incendiary + name = "WT-550/WT-551 Magazine (4.6x30mm Incendiary) (Extremely Lethal)" + desc = "A magazine for the WT-550/WT-551 Autorifle. Contains very lethal incendiary ammo. Consult your local laws for warcrime status before use." + id = "wt550_ammo_incendiary" + build_type = PROTOLATHE | AWAY_LATHE + materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10, /datum/material/plasma = SHEET_MATERIAL_AMOUNT * 2, /datum/material/silver = SHEET_MATERIAL_AMOUNT , /datum/material/glass = SHEET_MATERIAL_AMOUNT) + build_path = /obj/item/ammo_box/magazine/wt550m9/wtic + category = list( + RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO + ) + departmental_flags = DEPARTMENT_BITFLAG_SECURITY diff --git a/modular_zubbers/sound/weapons/gun/wt551/shot.ogg b/modular_zubbers/sound/weapons/gun/wt551/shot.ogg new file mode 100644 index 00000000000..74931deb929 Binary files /dev/null and b/modular_zubbers/sound/weapons/gun/wt551/shot.ogg differ diff --git a/tgstation.dme b/tgstation.dme index 14fdd3a648f..0617c75eeeb 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -7937,6 +7937,8 @@ #include "modular_zubbers\code\modules\borer_hud\borer.dm" #include "modular_zubbers\code\modules\bsrpd\code\bsrpd.dm" #include "modular_zubbers\code\modules\cargo\bounties\blacksmith.dm" +#include "modular_zubbers\code\modules\cargo\exports\weapons.dm" +#include "modular_zubbers\code\modules\cargo\packs\security.dm" #include "modular_zubbers\code\modules\cargo\packs\service.dm" #include "modular_zubbers\code\modules\clothing\gloves\syndicate.dm" #include "modular_zubbers\code\modules\clothing\head\helmet.dm" @@ -7973,6 +7975,7 @@ #include "modular_zubbers\code\modules\hydroponics\plant_genes.dm" #include "modular_zubbers\code\modules\jobs\job_types\blacksmith.dm" #include "modular_zubbers\code\modules\jobs\job_types\blueshield.dm" +#include "modular_zubbers\code\modules\jobs\job_types\cargo_technician.dm" #include "modular_zubbers\code\modules\jobs\job_types\nanotrasen_consultant.dm" #include "modular_zubbers\code\modules\loadouts\loadout_items\loadout_datum_glasses.dm" #include "modular_zubbers\code\modules\loadouts\loadout_items\loadout_datum_gloves.dm" @@ -7992,6 +7995,7 @@ #include "modular_zubbers\code\modules\mob\dead\new_player\sprite_accessories.dm" #include "modular_zubbers\code\modules\mob\living\examine.dm" #include "modular_zubbers\code\modules\mob\living\living.dm" +#include "modular_zubbers\code\modules\mob\living\basic\trooper\nanotrasen.dm" #include "modular_zubbers\code\modules\mob\living\carbon\human\human.dm" #include "modular_zubbers\code\modules\mob\living\carbon\human\species_types\shadekin.dm" #include "modular_zubbers\code\modules\mob\living\silicon\robot\robot_defines.dm" @@ -8007,7 +8011,11 @@ #include "modular_zubbers\code\modules\pai\ghost_pai.dm" #include "modular_zubbers\code\modules\paperwork\fax.dm" #include "modular_zubbers\code\modules\power\supermatter\supermatter_gas.dm" +#include "modular_zubbers\code\modules\projectiles\ammunition\ballistic\smg.dm" +#include "modular_zubbers\code\modules\projectiles\boxes_magazines\external\smg.dm" +#include "modular_zubbers\code\modules\projectiles\guns\ballistic\automatic.dm" #include "modular_zubbers\code\modules\projectiles\guns\energy\pulse.dm" +#include "modular_zubbers\code\modules\projectiles\projectile\bullets\smg.dm" #include "modular_zubbers\code\modules\protected_roles\code\antag_restricted_jobs.dm" #include "modular_zubbers\code\modules\reagents\drink_reagents.dm" #include "modular_zubbers\code\modules\reagents\reagent_containers\condiment.dm" @@ -8048,6 +8056,7 @@ #include "modular_zubbers\maps\offstation\dauntless\mob_spawns.dm" #include "modular_zubbers\master_files\code\modules\client\preferences\obscurity_examine.dm" #include "modular_zubbers\master_files\code\modules\research\designs\biogenerator_designs.dm" +#include "modular_zubbers\master_files\code\modules\research\designs\weapon_designs.dm" #include "modular_zubbers\modules\ashwalkers\code\effects\ash_rituals.dm" #include "modular_zubbers\modules\automapper\code\area_spawn_entries.dm" #include "modular_zubbers\modules\cargoborg\code\robot_items.dm"