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
@@ -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
|
||||
@@ -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(
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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'
|
||||
@@ -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?"
|
||||
|
||||
@@ -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
|
||||
*/
|
||||
|
||||
@@ -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.
|
||||
|
||||
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 237 KiB After Width: | Height: | Size: 238 KiB |
|
Before Width: | Height: | Size: 355 KiB After Width: | Height: | Size: 356 KiB |
|
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 28 KiB |
|
Before Width: | Height: | Size: 8.7 KiB After Width: | Height: | Size: 9.1 KiB |
|
Before Width: | Height: | Size: 116 KiB After Width: | Height: | Size: 117 KiB |
|
Before Width: | Height: | Size: 115 KiB After Width: | Height: | Size: 115 KiB |
|
Before Width: | Height: | Size: 97 KiB After Width: | Height: | Size: 97 KiB |
|
After Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 43 KiB |
|
Before Width: | Height: | Size: 357 KiB After Width: | Height: | Size: 410 KiB |
@@ -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"
|
||||
|
||||