diff --git a/code/datums/outfits/costumes/halloween.dm b/code/datums/outfits/costumes/halloween.dm index 807c964a98..f6651d733a 100644 --- a/code/datums/outfits/costumes/halloween.dm +++ b/code/datums/outfits/costumes/halloween.dm @@ -25,8 +25,7 @@ var/obj/item/weapon/storage/briefcase/new_briefcase = new(H) for(var/obj/item/briefcase_item in new_briefcase) qdel(briefcase_item) - new_briefcase.contents += new /obj/item/toy/crossbow - new_briefcase.contents += new /obj/item/weapon/gun/projectile/revolver/capgun + new_briefcase.contents += new /obj/item/weapon/gun/projectile/pistol/toy new_briefcase.contents += new /obj/item/clothing/mask/gas/clown_hat H.equip_to_slot_or_del(new_briefcase, slot_l_hand) @@ -103,7 +102,7 @@ suit = /obj/item/clothing/suit/storage/toggle/brown_jacket/sleeveless shoes = /obj/item/clothing/shoes/boots/jackboots gloves = /obj/item/clothing/gloves/fingerless - l_pocket = /obj/item/toy/crossbow + l_pocket = /obj/item/weapon/gun/projectile/revolver/toy/crossbow r_pocket = /obj/item/device/flashlight/color/red /decl/hierarchy/outfit/costume/pirate @@ -120,4 +119,12 @@ shoes = /obj/item/clothing/shoes/white suit = /obj/item/clothing/suit/storage/hooded/chaplain_hoodie/whiteout gloves = /obj/item/clothing/gloves/white - mask = /obj/item/clothing/mask/surgical \ No newline at end of file + mask = /obj/item/clothing/mask/surgical + +/decl/hierarchy/outfit/costume/marine + name = OUTFIT_COSTUME("Ruin Marine") + uniform = /obj/item/clothing/under/color/grey + shoes = /obj/item/clothing/shoes/brown + head = /obj/item/clothing/head/marine + suit = /obj/item/clothing/suit/marine + r_hand = /obj/item/weapon/gun/projectile/revolver/toy/sawnoff \ No newline at end of file diff --git a/code/datums/supplypacks/recreation.dm b/code/datums/supplypacks/recreation.dm index a3b6ad30d5..2ce0248e0d 100644 --- a/code/datums/supplypacks/recreation.dm +++ b/code/datums/supplypacks/recreation.dm @@ -23,6 +23,13 @@ containertype = /obj/structure/closet/crate/allico containername = "foam weapon crate" +/datum/supply_pack/recreation/donksoftvend + name = "Donk-Soft Vendor Crate" + contains = list() + cost = 75 + containertype = /obj/structure/largecrate/donksoftvendor + containername = "\improper Donk-Soft vendor crate" + /datum/supply_pack/recreation/lasertag name = "Lasertag equipment" contains = list( diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm index a6b2c5d8bc..6928c3f029 100644 --- a/code/game/machinery/computer/arcade.dm +++ b/code/game/machinery/computer/arcade.dm @@ -4,24 +4,24 @@ icon_state = "arcade1" icon_keyboard = null clicksound = null //Gets too spammy and makes no sense for arcade to have the console keyboard noise anyway - var/list/prizes = list( /obj/item/weapon/storage/box/snappops = 2, - /obj/item/toy/blink = 2, - /obj/item/clothing/under/syndicate/tacticool = 2, - /obj/item/toy/sword = 2, - /obj/item/weapon/gun/projectile/revolver/capgun = 2, - /obj/item/toy/crossbow = 2, - /obj/item/clothing/suit/syndicatefake = 2, - /obj/item/weapon/storage/fancy/crayons = 2, - /obj/item/toy/spinningtoy = 2, - /obj/random/mech_toy = 1, - /obj/item/weapon/reagent_containers/spray/waterflower = 1, - /obj/random/action_figure = 1, - /obj/random/plushie = 1, - /obj/item/toy/cultsword = 1, - /obj/item/toy/bouquet/fake = 1, - /obj/item/clothing/accessory/badge/sheriff = 2, - /obj/item/clothing/head/cowboy_hat/small = 2, - /obj/item/toy/stickhorse = 2 + var/list/prizes = list( /obj/item/weapon/storage/box/snappops = 2, + /obj/item/toy/blink = 2, + /obj/item/clothing/under/syndicate/tacticool = 2, + /obj/item/toy/sword = 2, + /obj/item/weapon/gun/projectile/revolver/capgun = 2, + /obj/item/weapon/gun/projectile/revolver/toy/crossbow = 2, + /obj/item/clothing/suit/syndicatefake = 2, + /obj/item/weapon/storage/fancy/crayons = 2, + /obj/item/toy/spinningtoy = 2, + /obj/random/mech_toy = 1, + /obj/item/weapon/reagent_containers/spray/waterflower = 1, + /obj/random/action_figure = 1, + /obj/random/plushie = 1, + /obj/item/toy/cultsword = 1, + /obj/item/toy/bouquet/fake = 1, + /obj/item/clothing/accessory/badge/sheriff = 2, + /obj/item/clothing/head/cowboy_hat/small = 2, + /obj/item/toy/stickhorse = 2 ) var/list/special_prizes = list() // Holds instanced objects, intended for admins to shove surprises inside or something. @@ -40,7 +40,7 @@ var/atom/movable/AM = pick_n_take(special_prizes) AM.forceMove(get_turf(src)) special_prizes -= AM - + else if(LAZYLEN(prizes)) var/prizeselect = pickweight(prizes) new prizeselect(src.loc) @@ -1325,7 +1325,7 @@ gameStatus = "CLAWMACHINE_NEW" emagged = 1 return 1 - + /obj/machinery/computer/arcade/attackby(obj/item/O, mob/user, params) if(istype(O, /obj/item/stack/arcadeticket)) var/obj/item/stack/arcadeticket/T = O diff --git a/code/game/objects/items/toys/toys.dm b/code/game/objects/items/toys/toys.dm index 17faef53bb..f8db22109d 100644 --- a/code/game/objects/items/toys/toys.dm +++ b/code/game/objects/items/toys/toys.dm @@ -4,7 +4,6 @@ * Fake telebeacon * Fake singularity * Toy gun - * Toy crossbow * Toy swords * Toy bosun's whistle * Snap pops @@ -16,7 +15,7 @@ * Plushies * Toy cult sword * Bouquets - Stick Horse + * Stick Horse */ @@ -145,127 +144,6 @@ icon = 'icons/obj/singularity.dmi' icon_state = "singularity_s1" -/* - * Toy crossbow - */ - -/obj/item/toy/crossbow - name = "foam dart crossbow" - desc = "A weapon favored by many overactive children. Ages 8 and up." - icon = 'icons/obj/gun.dmi' - icon_state = "crossbow" - item_icons = list( - icon_l_hand = 'icons/mob/items/lefthand_guns.dmi', - icon_r_hand = 'icons/mob/items/righthand_guns.dmi', - ) - slot_flags = SLOT_HOLSTER - w_class = ITEMSIZE_SMALL - attack_verb = list("attacked", "struck", "hit") - var/bullets = 5 - drop_sound = 'sound/items/drop/gun.ogg' - -/obj/item/toy/crossbow/examine(mob/user) - . = ..() - if(bullets && get_dist(user, src) <= 2) - . += "It is loaded with [bullets] foam darts!" - -/obj/item/toy/crossbow/attackby(obj/item/I as obj, mob/user as mob) - if(istype(I, /obj/item/toy/ammo/crossbow)) - if(bullets <= 4) - user.drop_item() - qdel(I) - bullets++ - to_chat(user, "You load the foam dart into the crossbow.") - else - to_chat(usr, "It's already fully loaded.") - - -/obj/item/toy/crossbow/afterattack(atom/target as mob|obj|turf|area, mob/user as mob, flag) - if(!isturf(target.loc) || target == user) return - if(flag) return - - if (locate (/obj/structure/table, src.loc)) - return - else if (bullets) - var/turf/trg = get_turf(target) - var/obj/effect/foam_dart_dummy/D = new/obj/effect/foam_dart_dummy(get_turf(src)) - bullets-- - D.icon_state = "foamdart" - D.name = "foam dart" - playsound(src, 'sound/items/syringeproj.ogg', 50, 1) - - for(var/i=0, i<6, i++) - if (D) - if(D.loc == trg) break - step_towards(D,trg) - - for(var/mob/living/M in D.loc) - if(!istype(M,/mob/living)) continue - if(M == user) continue - for(var/mob/O in viewers(world.view, D)) - O.show_message(text("\The [] was hit by the foam dart!", M), 1) - new /obj/item/toy/ammo/crossbow(M.loc) - qdel(D) - return - - for(var/atom/A in D.loc) - if(A == user) continue - if(A.density) - new /obj/item/toy/ammo/crossbow(A.loc) - qdel(D) - - sleep(1) - - spawn(10) - if(D) - new /obj/item/toy/ammo/crossbow(D.loc) - qdel(D) - - return - else if (bullets == 0) - user.Weaken(5) - for(var/mob/O in viewers(world.view, user)) - O.show_message(text("\The [] realized they were out of ammo and starting scrounging for some!", user), 1) - - -/obj/item/toy/crossbow/attack(mob/M as mob, mob/user as mob) - src.add_fingerprint(user) - -// ******* Check - - if (src.bullets > 0 && M.lying) - - for(var/mob/O in viewers(M, null)) - if(O.client) - O.show_message(text("\The [] casually lines up a shot with []'s head and pulls the trigger!", user, M), 1, "You hear the sound of foam against skull", 2) - O.show_message(text("\The [] was hit in the head by the foam dart!", M), 1) - - playsound(src, 'sound/items/syringeproj.ogg', 50, 1) - new /obj/item/toy/ammo/crossbow(M.loc) - src.bullets-- - else if (M.lying && src.bullets == 0) - for(var/mob/O in viewers(M, null)) - if (O.client) O.show_message(text("\The [] casually lines up a shot with []'s head, pulls the trigger, then realizes they are out of ammo and drops to the floor in search of some!", user, M), 1, "You hear someone fall", 2) - user.Weaken(5) - return - -/obj/item/toy/ammo/crossbow - name = "foam dart" - desc = "It's nerf or nothing! Ages 8 and up." - icon = 'icons/obj/toy.dmi' - icon_state = "foamdart" - w_class = ITEMSIZE_TINY - slot_flags = SLOT_EARS - drop_sound = 'sound/items/drop/food.ogg' - -/obj/effect/foam_dart_dummy - name = "" - desc = "" - icon = 'icons/obj/toy.dmi' - icon_state = "null" - anchored = 1 - density = 0 - /* * Toy swords */ diff --git a/code/game/objects/items/weapons/gift_wrappaper.dm b/code/game/objects/items/weapons/gift_wrappaper.dm index 665c1171f6..a767fd62e4 100644 --- a/code/game/objects/items/weapons/gift_wrappaper.dm +++ b/code/game/objects/items/weapons/gift_wrappaper.dm @@ -85,7 +85,7 @@ /obj/item/weapon/beach_ball/holoball, /obj/item/toy/balloon, /obj/item/toy/blink, - /obj/item/toy/crossbow, + /obj/item/weapon/gun/projectile/revolver/toy/crossbow, /obj/item/weapon/gun/projectile/revolver/capgun, /obj/item/toy/katana, /obj/item/toy/mecha/deathripley, diff --git a/code/game/objects/items/weapons/storage/belt.dm b/code/game/objects/items/weapons/storage/belt.dm index e6085703d4..10a7407f0b 100644 --- a/code/game/objects/items/weapons/storage/belt.dm +++ b/code/game/objects/items/weapons/storage/belt.dm @@ -453,4 +453,13 @@ name = "ranger belt" desc = "The fancy utility-belt holding the tools, cuffs and gadgets of the Go Go ERT-Rangers. The belt buckle is not real phoron, but it is still surprisingly comfortable to wear." icon = 'icons/obj/clothing/ranger.dmi' - icon_state = "ranger_belt" \ No newline at end of file + icon_state = "ranger_belt" + +/obj/item/weapon/storage/belt/dbandolier + name = "\improper Donk-Soft bandolier" + desc = "A Donk-Soft bandolier! Carry your spare darts anywhere! Ages 8 and up." + icon_state = "dbandolier" + storage_slots = 8 + can_hold = list( + /obj/item/ammo_casing/afoam_dart + ) \ No newline at end of file diff --git a/code/game/objects/items/weapons/storage/boxes.dm b/code/game/objects/items/weapons/storage/boxes.dm index 3506327f99..8b65413d71 100644 --- a/code/game/objects/items/weapons/storage/boxes.dm +++ b/code/game/objects/items/weapons/storage/boxes.dm @@ -551,3 +551,14 @@ name = "ambrosia deus seeds box" desc = "Contains the seeds you need to get a proper healthy high." starts_with = list(/obj/item/seeds/ambrosiadeusseed = 7) + +/obj/item/weapon/storage/box/foam_darts + name = "\improper Donk-Soft ammo box" + desc = "Contains Donk-Soft foam darts. It's Donk or Don't! Ages 8 and up." + icon = 'icons/obj/gun_toy.dmi' + icon_state = "foambox" + starts_with = list(/obj/item/ammo_casing/afoam_dart = 15) + max_w_class = ITEMSIZE_TINY + max_storage_space = ITEMSIZE_COST_TINY * 15 + drop_sound = 'sound/items/drop/ammobox.ogg' + pickup_sound = 'sound/items/pickup/ammobox.ogg' \ No newline at end of file diff --git a/code/game/objects/random/misc.dm b/code/game/objects/random/misc.dm index efa1376ae2..b347dcd021 100644 --- a/code/game/objects/random/misc.dm +++ b/code/game/objects/random/misc.dm @@ -721,7 +721,7 @@ /obj/item/toy/snappop, /obj/item/toy/sword, /obj/item/toy/balloon, - /obj/item/toy/crossbow, + /obj/item/weapon/gun/projectile/revolver/toy/crossbow, /obj/item/toy/blink, /obj/item/weapon/reagent_containers/spray/waterflower, /obj/item/toy/eight_ball, diff --git a/code/game/objects/structures/crates_lockers/largecrate.dm b/code/game/objects/structures/crates_lockers/largecrate.dm index c9909656f4..3485b31505 100644 --- a/code/game/objects/structures/crates_lockers/largecrate.dm +++ b/code/game/objects/structures/crates_lockers/largecrate.dm @@ -58,6 +58,11 @@ ME.attach(H) ..() +/obj/structure/largecrate/donksoftvendor + name = "\improper Donk-Soft vendor crate" + desc = "A hefty wooden crate displaying the logo of Donk-Soft. It's rather heavy." + starts_with = list(/obj/machinery/vending/donksoft) + /obj/structure/largecrate/vehicle name = "vehicle crate" desc = "Wulf Aeronautics says it comes in a box for the consumer's sake... How is this so light?" diff --git a/code/modules/clothing/head/misc.dm b/code/modules/clothing/head/misc.dm index 131e905265..ba20ceb2f5 100644 --- a/code/modules/clothing/head/misc.dm +++ b/code/modules/clothing/head/misc.dm @@ -495,4 +495,11 @@ name = "fish skull" desc = "You... you're not actually going to wear that, right?" icon_state = "fishskull" - flags_inv = HIDEEARS|BLOCKHAIR \ No newline at end of file + flags_inv = HIDEEARS|BLOCKHAIR + +/obj/item/clothing/head/marine + name = "marine helmet" + desc = "A marine helmet prop from the popular game 'Ruin'." + icon_state = "marine" + flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|BLOCKHAIR + body_parts_covered = HEAD|FACE|EYES \ No newline at end of file diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm index 6792e308b5..c66877d14e 100644 --- a/code/modules/clothing/suits/miscellaneous.dm +++ b/code/modules/clothing/suits/miscellaneous.dm @@ -214,6 +214,14 @@ flags_inv = HIDESHOES|HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER item_state_slots = list(slot_r_hand_str = "red_labcoat", slot_l_hand_str = "red_labcoat") +/obj/item/clothing/suit/marine + name = "marine armor" + desc = "A set of marine prop armor from the popular game 'Ruin'." + icon_state = "marine" + body_parts_covered = FEET|LOWER_TORSO|UPPER_TORSO|LEGS + flags_inv = HIDESHOES|HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER + item_state_slots = list(slot_r_hand_str = "green_labcoat", slot_l_hand_str = "green_labcoat") + /* * Misc */ diff --git a/code/modules/economy/vending_machines.dm b/code/modules/economy/vending_machines.dm index be2375d939..53a61db103 100644 --- a/code/modules/economy/vending_machines.dm +++ b/code/modules/economy/vending_machines.dm @@ -1080,4 +1080,43 @@ /obj/item/weapon/reagent_containers/food/drinks/cans/orange_cola = 1, /obj/item/weapon/reagent_containers/food/drinks/cans/gingerale = 1) idle_power_usage = 211 //refrigerator - believe it or not, this is actually the average power consumption of a refrigerated vending machine according to NRCan. - vending_sound = "machines/vending/vending_cans.ogg" \ No newline at end of file + vending_sound = "machines/vending/vending_cans.ogg" + +///////////////////////Donk-Soft!/////////////////////////////////////// + +/obj/machinery/vending/donksoft + name = "Donk-Soft!" + desc = "A toy vendor owned by Donk-Soft, a NanoTrasen sub-company." + description_fluff = "Donk-Soft is a sub-company owned by NanoTrasen that distribute replica weapons that shoot squish foam darts. They've been a staple of personal entertainment for decades but their buisness has only just moved to the fringes of the galaxy." + icon_state = "donksoft" + product_slogans = "Get your cool toys today!;Quality toy weapons for cheap prices!" + product_ads = "Express your inner child today!;Who needs responsibilities when you have toy weapons?;Make your next murder FUN!" + products = list(/obj/item/weapon/storage/box/foam_darts = 20, + /obj/item/weapon/storage/belt/dbandolier = 5, + /obj/item/ammo_magazine/mfoam_dart/pistol = 10, + /obj/item/ammo_magazine/mfoam_dart/smg = 10, + /obj/item/weapon/gun/projectile/shotgun/pump/toy = 5, + /obj/item/weapon/gun/projectile/revolver/toy/sawnoff = 5, + /obj/item/weapon/gun/projectile/pistol/toy = 5, + /obj/item/weapon/gun/projectile/pistol/toy/n99 = 5, + /obj/item/weapon/gun/projectile/shotgun/pump/toy/levergun = 5, + /obj/item/weapon/gun/projectile/revolver/toy = 5, + /obj/item/weapon/gun/projectile/revolver/toy/big_iron = 5, + /obj/item/weapon/gun/projectile/revolver/toy/crossbow = 5, + /obj/item/weapon/gun/projectile/automatic/toy = 5 + ) + contraband = list() + prices = list(/obj/item/weapon/storage/box/foam_darts = 50, + /obj/item/weapon/storage/belt/dbandolier = 100, + /obj/item/ammo_magazine/mfoam_dart/pistol = 25, + /obj/item/ammo_magazine/mfoam_dart/smg = 25, + /obj/item/weapon/gun/projectile/shotgun/pump/toy = 250, + /obj/item/weapon/gun/projectile/revolver/toy/sawnoff = 150, + /obj/item/weapon/gun/projectile/pistol/toy = 100, + /obj/item/weapon/gun/projectile/pistol/toy/n99 = 175, + /obj/item/weapon/gun/projectile/shotgun/pump/toy/levergun = 250, + /obj/item/weapon/gun/projectile/revolver/toy = 100, + /obj/item/weapon/gun/projectile/revolver/toy/big_iron = 175, + /obj/item/weapon/gun/projectile/revolver/toy/crossbow = 75, + /obj/item/weapon/gun/projectile/automatic/toy = 300) + vending_sound = "machines/vending/vending_cans.ogg" diff --git a/code/modules/projectiles/ammunition/magazines.dm b/code/modules/projectiles/ammunition/magazines.dm index 41b000d82f..4276a16768 100644 --- a/code/modules/projectiles/ammunition/magazines.dm +++ b/code/modules/projectiles/ammunition/magazines.dm @@ -22,7 +22,33 @@ */ /************************************************************************/ +///////// Foam ///////// +/obj/item/ammo_magazine/mfoam_dart/pistol + name = "\improper Donk-Soft pistol magazine" + icon_state = "45" + mag_type = MAGAZINE + ammo_type = /obj/item/ammo_casing/afoam_dart + matter = list(MAT_PLASTIC = 250) + caliber = "foam" + max_ammo = 9 + multiple_sprites = 1 + +/obj/item/ammo_magazine/mfoam_dart/pistol/empty + initial_ammo = 0 + +/obj/item/ammo_magazine/mfoam_dart/smg + name = "\improper Donk-Soft smg magazine" + icon_state = "10mm" + mag_type = MAGAZINE + ammo_type = /obj/item/ammo_casing/afoam_dart + matter = list(MAT_PLASTIC = 250) + caliber = "foam" + max_ammo = 20 + multiple_sprites = 1 + +/obj/item/ammo_magazine/mfoam_dart/pistol/smg + initial_ammo = 0 ///////// .357 ///////// diff --git a/code/modules/projectiles/ammunition/rounds.dm b/code/modules/projectiles/ammunition/rounds.dm index 566235dd0f..ee824cd38d 100644 --- a/code/modules/projectiles/ammunition/rounds.dm +++ b/code/modules/projectiles/ammunition/rounds.dm @@ -19,6 +19,20 @@ */ /************************************************************************/ +/* + * Foam + */ + +/obj/item/ammo_casing/afoam_dart + name = "foam dart" + desc = "It's Donk or Don't! Ages 8 and up." + projectile_type = /obj/item/projectile/bullet/foam_dart + matter = list(MAT_PLASTIC = 60) + caliber = "foam" + icon = 'icons/obj/gun_toy.dmi' + icon_state = "foamdart" + caseless = 1 + /* * .357 */ diff --git a/code/modules/projectiles/guns/projectile/shotgun.dm b/code/modules/projectiles/guns/projectile/shotgun.dm index 6e69b65a6a..4f6cb0b018 100644 --- a/code/modules/projectiles/guns/projectile/shotgun.dm +++ b/code/modules/projectiles/guns/projectile/shotgun.dm @@ -29,20 +29,25 @@ pump(user) recentpump = world.time -/obj/item/weapon/gun/projectile/shotgun/pump/proc/pump(mob/M as mob) +/obj/item/weapon/gun/projectile/shotgun/pump/proc/pump(mob/M) playsound(src, action_sound, 60, 1) - if(chambered)//We have a shell in the chamber - chambered.loc = get_turf(src)//Eject casing + // We have a shell in the chamber + if(chambered) + if(chambered.caseless) + qdel(chambered) // Delete casing + else + chambered.loc = get_turf(src) // Eject casing chambered = null + // Load next shell if(loaded.len) - var/obj/item/ammo_casing/AC = loaded[1] //load next casing. - loaded -= AC //Remove casing from loaded list. + var/obj/item/ammo_casing/AC = loaded[1] // load next casing. + loaded -= AC // Remove casing from loaded list. chambered = AC - if(pump_animation)//This affects all bolt action and shotguns. - flick("[pump_animation]", src)//This plays any pumping + if(pump_animation) // This affects all bolt action and shotguns. + flick("[pump_animation]", src) // This plays any pumping update_icon() diff --git a/code/modules/projectiles/guns/projectile/toy.dm b/code/modules/projectiles/guns/projectile/toy.dm new file mode 100644 index 0000000000..e23540d683 --- /dev/null +++ b/code/modules/projectiles/guns/projectile/toy.dm @@ -0,0 +1,167 @@ +/* Toys Guns! + * Contains: + * Shotgun + * Pistol + * N99 Pistol + * Levergun + * Revolver + * Big Iron + * Crossbow + * Sawn Off + * SMG + */ + + +/* + * Shotgun + */ +/obj/item/weapon/gun/projectile/shotgun/pump/toy + name = "\improper Donk-Soft shotgun" + desc = "Donk-Soft foam shotgun! It's Donk or Don't! Ages 8 and up." + icon = 'icons/obj/gun_toy.dmi' + icon_state = "shotgun" + item_state = "shotgun" + max_shells = 6 + w_class = ITEMSIZE_LARGE + force = 2 + slot_flags = null + caliber = "foam" + origin_tech = list(TECH_COMBAT = 1, TECH_MATERIAL = 1) + load_method = SINGLE_CASING + ammo_type = /obj/item/ammo_casing/afoam_dart + projectile_type = /obj/item/projectile/bullet/foam_dart + matter = list(MAT_PLASTIC = 2000) + handle_casings = null + recoil = null //it's a toy + +/* + * Pistol + */ +/obj/item/weapon/gun/projectile/pistol/toy + name = "\improper Donk-Soft pistol" + desc = "Donk-Soft foam pistol! It's Donk or Don't! Ages 8 and up." + icon = 'icons/obj/gun_toy.dmi' + icon_state = "pistol" + item_state = "gun" + magazine_type = /obj/item/ammo_magazine/mfoam_dart/pistol + allowed_magazines = list(/obj/item/ammo_magazine/mfoam_dart/pistol) + projectile_type = /obj/item/projectile/bullet/foam_dart + caliber = "foam" + origin_tech = list(TECH_COMBAT = 1, TECH_MATERIAL = 1) + load_method = MAGAZINE + matter = list(MAT_PLASTIC = 1000) + recoil = null //it's a toy + +/obj/item/weapon/gun/projectile/pistol/toy/update_icon() + if(ammo_magazine) + icon_state = initial(icon_state) + else + icon_state = "[initial(icon_state)]-e" + +/* + * N99 Pistol + */ +/obj/item/weapon/gun/projectile/pistol/toy/n99 + name = "\improper Donk-Soft commemorative pistol" + desc = "A special made Donk-Soft pistol to promote 'Radius: Legend of the Demon Core', a popular post-apocolyptic TV series." + icon_state = "n99" + item_state = "gun" + +/obj/item/weapon/gun/projectile/pistol/toy/n99/update_icon() + if(ammo_magazine) + icon_state = initial(icon_state) + else + icon_state = "[initial(icon_state)]-e" + +/* + * Levergun + */ +/obj/item/weapon/gun/projectile/shotgun/pump/toy/levergun + name = "\improper Donk-Soft levergun" + desc = "Donk-Soft foam levergun! Time to cowboy up! Ages 8 and up." + icon_state = "leveraction" + item_state = "leveraction" + max_shells = 5 + pump_animation = "leveraction-cycling" + +/* + * Revolver + */ +/obj/item/weapon/gun/projectile/revolver/toy + name = "\improper Donk-Soft revolver" + desc = "Donk-Soft foam revolver! Time to cowboy up! Ages 8 and up." + icon = 'icons/obj/gun_toy.dmi' + icon_state = "revolver" + item_state = "revolver" + caliber = "foam" + ammo_type = /obj/item/ammo_casing/afoam_dart + projectile_type = /obj/item/projectile/bullet/foam_dart + origin_tech = list(TECH_COMBAT = 1, TECH_MATERIAL = 1) + load_method = SINGLE_CASING + max_shells = 6 + matter = list(MAT_PLASTIC = 1000) + handle_casings = null + recoil = null //it's a toy + +/* + * Big Iron + */ +/obj/item/weapon/gun/projectile/revolver/toy/big_iron + name = "\improper Donk-Soft big iron" + desc = "A special made Donk-Soft pistol to promote 'A Fistful of Phoron', a popular frontier novel series." + icon_state = "big_iron" + item_state = "revolver" + +/* + * Crossbow + */ +/obj/item/weapon/gun/projectile/revolver/toy/crossbow + name = "\improper Donk-Soft crossbow" + desc = "Donk-Soft foam pistol! It's Donk or Don't! Ages 8 and up." + icon = 'icons/obj/gun_toy.dmi' + icon_state = "foamcrossbow" + item_state = "foamcrossbow" + max_shells = 5 + +/* + * Sawn Off + */ +/obj/item/weapon/gun/projectile/revolver/toy/sawnoff //revolver code just because it's easier + name = "\improper Donk-Soft sawn off shotgun" + desc = "Donk-Soft foam sawn off! It's Donk or Don't! Ages 8 and up." + icon = 'icons/obj/gun_toy.dmi' + icon_state = "sawnshotgun" + item_state = "dshotgun" + max_shells = 2 + w_class = ITEMSIZE_NORMAL + matter = list(MAT_PLASTIC = 1500) + +/* + * SMG + */ +/obj/item/weapon/gun/projectile/automatic/toy + name = "\improper Donk-Soft SMG" + desc = "Donk-Soft foam SMG! It's Donk or Don't! Ages 8 and up." + icon = 'icons/obj/gun_toy.dmi' + icon_state = "smg" + caliber = "foam" + w_class = ITEMSIZE_NORMAL + load_method = MAGAZINE + origin_tech = list(TECH_COMBAT = 1, TECH_MATERIAL = 1) + slot_flags = SLOT_BELT + magazine_type = /obj/item/ammo_magazine/mfoam_dart/smg + allowed_magazines = list(/obj/item/ammo_magazine/mfoam_dart/smg) + projectile_type = /obj/item/projectile/bullet/foam_dart + matter = list(MAT_PLASTIC = 1500) + recoil = null //it's a toy + + firemodes = list( + list(mode_name="semiauto", burst=1, fire_delay=0, move_delay=null, burst_accuracy=null, dispersion=null), + list(mode_name="3-round bursts", burst=3, fire_delay=null, move_delay=2, burst_accuracy=list(0,-2,-2), dispersion=null) + ) + +/obj/item/weapon/gun/projectile/automatic/toy/update_icon() + if(ammo_magazine) + icon_state = initial(icon_state) + else + icon_state = "[initial(icon_state)]-e" \ No newline at end of file diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm index 1483d08274..1c4529f314 100644 --- a/code/modules/projectiles/projectile/bullets.dm +++ b/code/modules/projectiles/projectile/bullets.dm @@ -65,6 +65,32 @@ return 0 +/* foam dart projectiles */ + +/obj/item/projectile/bullet/foam_dart + name = "foam dart" + desc = "I hope you're wearing eye protection." + damage = 0 // It's a damn toy. + damage_type = OXY + nodamage = TRUE + icon = 'icons/obj/gun_toy.dmi' + icon_state = "foamdart_proj" + range = 15 + impact_effect_type = null + fire_sound = 'sound/items/syringeproj.ogg' + +/obj/item/projectile/bullet/foam_dart/on_impact(var/atom/A) + . = ..() + var/turf/T = get_turf(loc) + if(istype(T)) + new /obj/item/ammo_casing/afoam_dart(get_turf(loc)) + +/obj/item/projectile/bullet/foam_dart/on_range(var/atom/A) + . = ..() + var/turf/T = get_turf(loc) + if(istype(T)) + new /obj/item/ammo_casing/afoam_dart(get_turf(loc)) + /* short-casing projectiles, like the kind used in pistols or SMGs */ /obj/item/projectile/bullet/pistol // 9mm pistols and most SMGs. Sacrifice power for capacity. diff --git a/icons/mob/belt.dmi b/icons/mob/belt.dmi index c3f0f0d956..6d88803fcb 100644 Binary files a/icons/mob/belt.dmi and b/icons/mob/belt.dmi differ diff --git a/icons/mob/head.dmi b/icons/mob/head.dmi index a88b9bfe22..e67310f2e3 100644 Binary files a/icons/mob/head.dmi and b/icons/mob/head.dmi differ diff --git a/icons/mob/suit.dmi b/icons/mob/suit.dmi index 27aba23c34..73c59d73db 100644 Binary files a/icons/mob/suit.dmi and b/icons/mob/suit.dmi differ diff --git a/icons/obj/ammo.dmi b/icons/obj/ammo.dmi index bc7116f5d7..9a64f28912 100644 Binary files a/icons/obj/ammo.dmi and b/icons/obj/ammo.dmi differ diff --git a/icons/obj/clothing/belts.dmi b/icons/obj/clothing/belts.dmi index 4f97b40e27..2d19da251a 100644 Binary files a/icons/obj/clothing/belts.dmi and b/icons/obj/clothing/belts.dmi differ diff --git a/icons/obj/clothing/hats.dmi b/icons/obj/clothing/hats.dmi index c44818abce..8640e9653d 100644 Binary files a/icons/obj/clothing/hats.dmi and b/icons/obj/clothing/hats.dmi differ diff --git a/icons/obj/clothing/suits.dmi b/icons/obj/clothing/suits.dmi index 548d65a5db..f0c5ecdfb2 100644 Binary files a/icons/obj/clothing/suits.dmi and b/icons/obj/clothing/suits.dmi differ diff --git a/icons/obj/gun.dmi b/icons/obj/gun.dmi index 647859989e..958952bf9c 100644 Binary files a/icons/obj/gun.dmi and b/icons/obj/gun.dmi differ diff --git a/icons/obj/gun_toy.dmi b/icons/obj/gun_toy.dmi new file mode 100644 index 0000000000..4b261960fe Binary files /dev/null and b/icons/obj/gun_toy.dmi differ diff --git a/icons/obj/projectiles.dmi b/icons/obj/projectiles.dmi index b2b6e0a0c7..45819578c2 100644 Binary files a/icons/obj/projectiles.dmi and b/icons/obj/projectiles.dmi differ diff --git a/icons/obj/vending.dmi b/icons/obj/vending.dmi index d303231acc..c8563d9738 100755 Binary files a/icons/obj/vending.dmi and b/icons/obj/vending.dmi differ diff --git a/polaris.dme b/polaris.dme index a2aa7e433b..4d0ab5e4b6 100644 --- a/polaris.dme +++ b/polaris.dme @@ -2852,6 +2852,7 @@ #include "code\modules\projectiles\guns\projectile\semiauto.dm" #include "code\modules\projectiles\guns\projectile\shotgun.dm" #include "code\modules\projectiles\guns\projectile\sniper.dm" +#include "code\modules\projectiles\guns\projectile\toy.dm" #include "code\modules\projectiles\guns\projectile\sniper\collapsible_sniper.dm" #include "code\modules\projectiles\projectile\arc.dm" #include "code\modules\projectiles\projectile\beams.dm"