diff --git a/code/__DEFINES/~nova_defines/projectiles.dm b/code/__DEFINES/~nova_defines/projectiles.dm index d3341e2a58e..bf93eb26ee7 100644 --- a/code/__DEFINES/~nova_defines/projectiles.dm +++ b/code/__DEFINES/~nova_defines/projectiles.dm @@ -16,4 +16,8 @@ #define CALIBER_585TRAPPISTE ".585 Trappiste" /// Caliber used by the pepperball gun -#define CALIBER_PEPPERBALL "pepperball" +#define CALIBER_PEPPERBALL "Pepper Ball" + +/// Caliber used by the kinetic gun +#define CALIBER_KINETICBALL "Kinetic Ball" + diff --git a/modular_nova/modules/company_imports/code/armament_datums/sol_defense.dm b/modular_nova/modules/company_imports/code/armament_datums/sol_defense.dm index d9c18d4f95d..5b2a47993c8 100644 --- a/modular_nova/modules/company_imports/code/armament_datums/sol_defense.dm +++ b/modular_nova/modules/company_imports/code/armament_datums/sol_defense.dm @@ -96,6 +96,10 @@ item_type = /obj/item/gun/ballistic/automatic/pistol/sol cost = PAYCHECK_COMMAND * 4 +/datum/armament_entry/company_import/sol_defense/sidearm/type207 + item_type = /obj/item/gun/ballistic/automatic/pistol/type207 + cost = PAYCHECK_COMMAND * 4 + /datum/armament_entry/company_import/sol_defense/sidearm/skild item_type = /obj/item/gun/ballistic/automatic/pistol/trappiste cost = PAYCHECK_COMMAND * 6 @@ -158,6 +162,9 @@ /datum/armament_entry/company_import/sol_defense/magazines/sol_rifle_short item_type = /obj/item/ammo_box/magazine/c40sol_rifle/starts_empty +/datum/armament_entry/company_import/sol_defense/magazines/kineticballs + item_type = /obj/item/ammo_box/magazine/kineticballs/starts_empty + /datum/armament_entry/company_import/sol_defense/magazines/sol_rifle_standard item_type = /obj/item/ammo_box/magazine/c40sol_rifle/standard/starts_empty cost = PAYCHECK_COMMAND diff --git a/modular_nova/modules/company_imports/code/armament_datums/vitezstvi_ammo.dm b/modular_nova/modules/company_imports/code/armament_datums/vitezstvi_ammo.dm index 43755100cad..5e75cb70fbe 100644 --- a/modular_nova/modules/company_imports/code/armament_datums/vitezstvi_ammo.dm +++ b/modular_nova/modules/company_imports/code/armament_datums/vitezstvi_ammo.dm @@ -117,6 +117,9 @@ /datum/armament_entry/company_import/vitezstvi/ammo_boxes/trappiste585_hollowpoint item_type = /obj/item/ammo_box/c585trappiste/hollowpoint +/datum/armament_entry/company_import/vitezstvi/ammo_boxes/kineticballs + item_type = /obj/item/ammo_box/advanced/kineticballs + // Revolver speedloaders /datum/armament_entry/company_import/vitezstvi/speedloader diff --git a/modular_nova/modules/modular_vending/code/security.dm b/modular_nova/modules/modular_vending/code/security.dm index 02dbca5e4ce..fa79ef5f60f 100644 --- a/modular_nova/modules/modular_vending/code/security.dm +++ b/modular_nova/modules/modular_vending/code/security.dm @@ -2,4 +2,12 @@ products_nova = list( /obj/item/storage/pouch/ammo = 2, /obj/item/storage/barricade = 4, + /obj/item/ammo_box/magazine/kineticballs = 10, + /obj/item/ammo_box/advanced/kineticballs = 5, + /obj/item/ammo_box/magazine/pepperball = 4, + /obj/item/ammo_box/advanced/pepperballs = 2, + ) + premium_nova = list( + /obj/item/gun/ballistic/automatic/pistol/type207 = 5, + /obj/item/gun/ballistic/automatic/pistol/pepperball = 2, ) diff --git a/modular_nova/modules/modular_weapons/code/autolathe_design.dm b/modular_nova/modules/modular_weapons/code/autolathe_design.dm new file mode 100644 index 00000000000..dacc19508f6 --- /dev/null +++ b/modular_nova/modules/modular_weapons/code/autolathe_design.dm @@ -0,0 +1,6 @@ +/datum/techweb_node/basic_arms/New() + design_ids += list( + "kineticballs", + "pepperballs", + ) + return ..() diff --git a/modular_nova/modules/modular_weapons/code/company_and_or_faction_based/bolt_fabrications/ammo.dm b/modular_nova/modules/modular_weapons/code/company_and_or_faction_based/bolt_fabrications/ammo.dm new file mode 100644 index 00000000000..8f32e353253 --- /dev/null +++ b/modular_nova/modules/modular_weapons/code/company_and_or_faction_based/bolt_fabrications/ammo.dm @@ -0,0 +1,49 @@ +/obj/projectile/bullet/kineticball + name = "kinetic orb" + icon = 'modular_nova/modules/modular_weapons/icons/obj/company_and_or_faction_based/bolt_fabrications/riotrubberbullet.dmi' + icon_state = "riotrubberbullet" + // Used the hive shot stats, with 0 colateral damage, the advantage is that its not weak against armor, and its supposed to bounce a lot. + damage = 0 + stamina = 30 + shrapnel_type = null + sharpness = NONE + embed_data = null + impact_effect_type = /obj/effect/temp_visual/impact_effect + ricochet_incidence_leeway = 0 + ricochets_max = 5 + ricochet_chance = 200 + ricochet_auto_aim_angle = 60 + ricochet_auto_aim_range = 8 + ricochet_decay_damage = 0.9 + ricochet_decay_chance = 1 + wound_bonus = -30 + bare_wound_bonus = -10 + +/obj/item/ammo_casing/kineticball + name = "kinetic ball casing" + desc = "A kinetic ball casing." + icon = 'modular_nova/modules/modular_weapons/icons/obj/company_and_or_faction_based/bolt_fabrications/stingtop.dmi' + icon_state = "stingstop" + ammo_stack_type = /obj/item/ammo_box/magazine/ammo_stack/kineticball + caliber = CALIBER_KINETICBALL + projectile_type = /obj/projectile/bullet/kineticball + harmful = FALSE + +/obj/item/ammo_box/magazine/ammo_stack/kineticball + name = "kinetic ball casings" + desc = "A stack of kinetic ball cartridges." + caliber = CALIBER_KINETICBALL + ammo_type = /obj/item/ammo_casing/kineticball + max_ammo = 9 + casing_x_positions = list( + -7, + -5, + -3, + -1, + 0, + 1, + 3, + 5, + 7, + ) + casing_y_padding = 6 diff --git a/modular_nova/modules/modular_weapons/code/company_and_or_faction_based/bolt_fabrications/magazine.dm b/modular_nova/modules/modular_weapons/code/company_and_or_faction_based/bolt_fabrications/magazine.dm new file mode 100644 index 00000000000..0537adea4c4 --- /dev/null +++ b/modular_nova/modules/modular_weapons/code/company_and_or_faction_based/bolt_fabrications/magazine.dm @@ -0,0 +1,41 @@ +/obj/item/ammo_box/magazine/kineticballs + name = "kinetic balls pistol magazine" + desc = "A gun magazine filled with balls. The kind that makes makes people stop, holds eight rounds." + icon = 'modular_nova/modules/modular_weapons/icons/obj/company_and_or_faction_based/bolt_fabrications/type207magazine.dmi' + icon_state = "type207mag" + ammo_type = /obj/item/ammo_casing/kineticball + caliber = CALIBER_KINETICBALL + max_ammo = 8 + custom_price = PAYCHECK_CREW * 2 + multiple_sprites = AMMO_BOX_FULL_EMPTY + +/obj/item/ammo_box/magazine/kineticballs/starts_empty + start_empty = TRUE + +/datum/design/kineticballs + name = "Ammo Box (Kinetic Balls)" + id = "kineticballs" + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE + materials = list( + /datum/material/iron = SHEET_MATERIAL_AMOUNT * 3, + /datum/material/plastic = SHEET_MATERIAL_AMOUNT * 3, + ) + build_path = /obj/item/ammo_box/advanced/kineticballs + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO, + ) + departmental_flags = DEPARTMENT_BITFLAG_SECURITY + +/obj/item/ammo_box/advanced/kineticballs + name = "ammo box (kinetic balls)" + icon = 'modular_nova/modules/modular_weapons/icons/obj/company_and_or_faction_based/bolt_fabrications/stingstopbox.dmi' + icon_state = "stingstopbox" + desc = "A box of kinetic balls rounds, holds twenty seven rounds." + custom_price = PAYCHECK_CREW * 2 + ammo_type = /obj/item/ammo_casing/kineticball + custom_materials = list( + /datum/material/iron = SHEET_MATERIAL_AMOUNT * 2, + /datum/material/plastic = SHEET_MATERIAL_AMOUNT * 2, + ) + max_ammo = 27 diff --git a/modular_nova/modules/modular_weapons/code/company_and_or_faction_based/bolt_fabrications/pistol.dm b/modular_nova/modules/modular_weapons/code/company_and_or_faction_based/bolt_fabrications/pistol.dm new file mode 100644 index 00000000000..808c243f71a --- /dev/null +++ b/modular_nova/modules/modular_weapons/code/company_and_or_faction_based/bolt_fabrications/pistol.dm @@ -0,0 +1,27 @@ +/obj/item/gun/ballistic/automatic/pistol/type207 + name = "\improper Type 207 Kinetic Pistol" + desc = "A completly non lethal sidearm used by Sol Fed Peacekeeping forces. It uses kinetic rounds to temporarily disable adversaries, it's also a popular weapon for trick shot competitions." + icon = 'modular_nova/modules/modular_weapons/icons/obj/company_and_or_faction_based/bolt_fabrications/type207.dmi' + icon_state = "type207" + lefthand_file = 'modular_nova/modules/modular_weapons/icons/mob/company_and_or_faction_based/bolt_fabrications/guns_lefthand.dmi' + righthand_file = 'modular_nova/modules/modular_weapons/icons/mob/company_and_or_faction_based/bolt_fabrications/guns_righthand.dmi' + inhand_icon_state = "type207" + w_class = WEIGHT_CLASS_SMALL + accepted_magazine_type = /obj/item/ammo_box/magazine/kineticballs + can_suppress = FALSE + fire_delay = 0.3 SECONDS + fire_sound = 'sound/effects/pop_expl.ogg' + rack_sound = 'sound/items/weapons/gun/pistol/rack.ogg' + lock_back_sound = 'sound/items/weapons/gun/pistol/slide_lock.ogg' + bolt_drop_sound = 'sound/items/weapons/gun/pistol/slide_drop.ogg' + fire_sound_volume = 70 + custom_premium_price = PAYCHECK_COMMAND * 5 + +/obj/item/gun/ballistic/automatic/pistol/type207/give_manufacturer_examine() + AddElement(/datum/element/manufacturer_examine, COMPANY_BOLT) + +/obj/item/gun/ballistic/automatic/pistol/type207/add_seclight_point() + AddComponent(/datum/component/seclite_attachable, \ + starting_light = new /obj/item/flashlight/seclite(src), \ + is_light_removable = FALSE, \ + ) diff --git a/modular_nova/modules/modular_weapons/code/pepperball_gun.dm b/modular_nova/modules/modular_weapons/code/pepperball_gun.dm index 0e7dbcb1516..0a4f2c3c9b2 100644 --- a/modular_nova/modules/modular_weapons/code/pepperball_gun.dm +++ b/modular_nova/modules/modular_weapons/code/pepperball_gun.dm @@ -4,6 +4,7 @@ icon = 'modular_nova/modules/modular_weapons/icons/obj/pepperball/pepperball.dmi' icon_state = "peppergun" w_class = WEIGHT_CLASS_SMALL + custom_premium_price = PAYCHECK_COMMAND * 4 accepted_magazine_type = /obj/item/ammo_box/magazine/pepperball can_suppress = FALSE fire_sound = 'sound/effects/pop_expl.ogg' @@ -20,11 +21,12 @@ /obj/item/ammo_box/magazine/pepperball name = "pistol magazine (pepperball)" - desc = "A gun magazine filled with balls." + desc = "A gun magazine filled with balls, the kind that make your face itch. Holds eight rounds." icon = 'modular_nova/modules/modular_weapons/icons/obj/pepperball/pepperball.dmi' icon_state = "pepperball" ammo_type = /obj/item/ammo_casing/pepperball caliber = CALIBER_PEPPERBALL + custom_price = PAYCHECK_CREW * 2 max_ammo = 8 multiple_sprites = AMMO_BOX_FULL_EMPTY @@ -59,7 +61,7 @@ /datum/design/pepperballs name = "Pepperball Ammo Box" id = "pepperballs" - build_type = AUTOLATHE | PROTOLATHE + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list( /datum/material/iron = SHEET_MATERIAL_AMOUNT * 3, ) @@ -74,8 +76,10 @@ name = "pepperball ammo box" icon = 'modular_nova/modules/modular_weapons/icons/obj/pepperball/ammoboxes.dmi' icon_state = "box10x24" + desc = "A box of pepper ball rounds, holds eighteen rounds." + custom_price = PAYCHECK_CREW * 2 ammo_type = /obj/item/ammo_casing/pepperball custom_materials = list( /datum/material/iron = SHEET_MATERIAL_AMOUNT * 3, ) - max_ammo = 15 + max_ammo = 18 diff --git a/modular_nova/modules/modular_weapons/icons/mob/company_and_or_faction_based/bolt_fabrications/guns_lefthand.dmi b/modular_nova/modules/modular_weapons/icons/mob/company_and_or_faction_based/bolt_fabrications/guns_lefthand.dmi new file mode 100644 index 00000000000..e1650c906ed Binary files /dev/null and b/modular_nova/modules/modular_weapons/icons/mob/company_and_or_faction_based/bolt_fabrications/guns_lefthand.dmi differ diff --git a/modular_nova/modules/modular_weapons/icons/mob/company_and_or_faction_based/bolt_fabrications/guns_righthand.dmi b/modular_nova/modules/modular_weapons/icons/mob/company_and_or_faction_based/bolt_fabrications/guns_righthand.dmi new file mode 100644 index 00000000000..a578c62f923 Binary files /dev/null and b/modular_nova/modules/modular_weapons/icons/mob/company_and_or_faction_based/bolt_fabrications/guns_righthand.dmi differ diff --git a/modular_nova/modules/modular_weapons/icons/obj/company_and_or_faction_based/bolt_fabrications/riotrubberbullet.dmi b/modular_nova/modules/modular_weapons/icons/obj/company_and_or_faction_based/bolt_fabrications/riotrubberbullet.dmi new file mode 100644 index 00000000000..c7a8fd02ec9 Binary files /dev/null and b/modular_nova/modules/modular_weapons/icons/obj/company_and_or_faction_based/bolt_fabrications/riotrubberbullet.dmi differ diff --git a/modular_nova/modules/modular_weapons/icons/obj/company_and_or_faction_based/bolt_fabrications/stingstopbox.dmi b/modular_nova/modules/modular_weapons/icons/obj/company_and_or_faction_based/bolt_fabrications/stingstopbox.dmi new file mode 100644 index 00000000000..30d1da3854c Binary files /dev/null and b/modular_nova/modules/modular_weapons/icons/obj/company_and_or_faction_based/bolt_fabrications/stingstopbox.dmi differ diff --git a/modular_nova/modules/modular_weapons/icons/obj/company_and_or_faction_based/bolt_fabrications/stingtop.dmi b/modular_nova/modules/modular_weapons/icons/obj/company_and_or_faction_based/bolt_fabrications/stingtop.dmi new file mode 100644 index 00000000000..316b8a17ee3 Binary files /dev/null and b/modular_nova/modules/modular_weapons/icons/obj/company_and_or_faction_based/bolt_fabrications/stingtop.dmi differ diff --git a/modular_nova/modules/modular_weapons/icons/obj/company_and_or_faction_based/bolt_fabrications/type207.dmi b/modular_nova/modules/modular_weapons/icons/obj/company_and_or_faction_based/bolt_fabrications/type207.dmi new file mode 100644 index 00000000000..c8bc131af9a Binary files /dev/null and b/modular_nova/modules/modular_weapons/icons/obj/company_and_or_faction_based/bolt_fabrications/type207.dmi differ diff --git a/modular_nova/modules/modular_weapons/icons/obj/company_and_or_faction_based/bolt_fabrications/type207magazine.dmi b/modular_nova/modules/modular_weapons/icons/obj/company_and_or_faction_based/bolt_fabrications/type207magazine.dmi new file mode 100644 index 00000000000..7a32aab72f8 Binary files /dev/null and b/modular_nova/modules/modular_weapons/icons/obj/company_and_or_faction_based/bolt_fabrications/type207magazine.dmi differ diff --git a/tgstation.dme b/tgstation.dme index 05f6328a235..c6f74322e8b 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -8248,6 +8248,7 @@ #include "modular_nova\modules\modular_vending\code\tool.dm" #include "modular_nova\modules\modular_vending\code\vending.dm" #include "modular_nova\modules\modular_vending\code\wardrobes.dm" +#include "modular_nova\modules\modular_weapons\code\autolathe_design.dm" #include "modular_nova\modules\modular_weapons\code\conversion_kits.dm" #include "modular_nova\modules\modular_weapons\code\gun_launches_little_guys_element.dm" #include "modular_nova\modules\modular_weapons\code\gun_racks.dm" @@ -8257,6 +8258,9 @@ #include "modular_nova\modules\modular_weapons\code\pepperball_gun.dm" #include "modular_nova\modules\modular_weapons\code\cargo_crates\armory_guns.dm" #include "modular_nova\modules\modular_weapons\code\cargo_crates\surplus_crates.dm" +#include "modular_nova\modules\modular_weapons\code\company_and_or_faction_based\bolt_fabrications\ammo.dm" +#include "modular_nova\modules\modular_weapons\code\company_and_or_faction_based\bolt_fabrications\magazine.dm" +#include "modular_nova\modules\modular_weapons\code\company_and_or_faction_based\bolt_fabrications\pistol.dm" #include "modular_nova\modules\modular_weapons\code\company_and_or_faction_based\carwo_defense_systems\advert.dm" #include "modular_nova\modules\modular_weapons\code\company_and_or_faction_based\carwo_defense_systems\grenade_launcher.dm" #include "modular_nova\modules\modular_weapons\code\company_and_or_faction_based\carwo_defense_systems\gunsets.dm"