Donk-Soft! (#8305)

* Initial port

* Various fixes

* Doomguy Costume Addition

Halloween just around the corner, I wanted to add a costume that uses the new toy guns.

* Merge conflict, fixes
This commit is contained in:
Ghost Actual
2022-01-04 18:46:27 -08:00
committed by atermonera
parent 686df2ee65
commit 87feb892f9
29 changed files with 369 additions and 159 deletions
+11 -4
View File
@@ -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
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
+7
View File
@@ -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(
+20 -20
View File
@@ -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
+1 -123
View File
@@ -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)
. += "<span class='notice'>It is loaded with [bullets] foam darts!</span>"
/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, "<span class='notice'>You load the foam dart into the crossbow.</span>")
else
to_chat(usr, "<span class='warning'>It's already fully loaded.</span>")
/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("<span class='warning'>\The [] was hit by the foam dart!</span>", 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("<span class='warning'>\The [] realized they were out of ammo and starting scrounging for some!</span>", 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("<span class='danger'>\The [] casually lines up a shot with []'s head and pulls the trigger!</span>", user, M), 1, "<span class='warning'>You hear the sound of foam against skull</span>", 2)
O.show_message(text("<span class='warning'>\The [] was hit in the head by the foam dart!</span>", 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("<span class='danger'>\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!</span>", user, M), 1, "<span class='warning'>You hear someone fall</span>", 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
*/
@@ -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,
@@ -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"
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
)
@@ -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'
+1 -1
View File
@@ -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,
@@ -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?"
+8 -1
View File
@@ -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
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
@@ -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
*/
+40 -1
View File
@@ -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"
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"
@@ -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 /////////
@@ -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
*/
@@ -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()
@@ -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"
@@ -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.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 237 KiB

After

Width:  |  Height:  |  Size: 238 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 355 KiB

After

Width:  |  Height:  |  Size: 356 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.7 KiB

After

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 116 KiB

After

Width:  |  Height:  |  Size: 117 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 115 KiB

After

Width:  |  Height:  |  Size: 115 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 97 KiB

After

Width:  |  Height:  |  Size: 97 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 357 KiB

After

Width:  |  Height:  |  Size: 410 KiB

+1
View File
@@ -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"