Ports /tg/ Foam Force guns

This commit is contained in:
Mieszko Jędrzejczak
2016-04-22 23:35:55 +02:00
parent ff27b4f77a
commit 5cf3f25892
20 changed files with 361 additions and 187 deletions
+36 -3
View File
@@ -1348,9 +1348,19 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine
/datum/supply_packs/misc/mafia
name = "Mafia Supply Crate"
contains = list(/obj/item/clothing/suit/browntrenchcoat =1,/obj/item/clothing/suit/blacktrenchcoat =1,/obj/item/clothing/head/fedora/whitefedora =1,
/obj/item/clothing/head/fedora/brownfedora =1,/obj/item/clothing/head/fedora =1,/obj/item/clothing/under/flappers =1,/obj/item/clothing/under/mafia =1,/obj/item/clothing/under/mafia/vest =1,/obj/item/clothing/under/mafia/white =1,
/obj/item/clothing/under/mafia/sue =1,/obj/item/clothing/under/mafia/tan =1, /obj/item/toy/crossbow/tommygun =2)
contains = list(/obj/item/clothing/suit/browntrenchcoat,
/obj/item/clothing/suit/blacktrenchcoat,
/obj/item/clothing/head/fedora/whitefedora,
/obj/item/clothing/head/fedora/brownfedora,
/obj/item/clothing/head/fedora,
/obj/item/clothing/under/flappers,
/obj/item/clothing/under/mafia,
/obj/item/clothing/under/mafia/vest,
/obj/item/clothing/under/mafia/white,
/obj/item/clothing/under/mafia/sue,
/obj/item/clothing/under/mafia/tan,
/obj/item/weapon/gun/projectile/automatic/tommygun/toy,
/obj/item/weapon/gun/projectile/automatic/tommygun/toy)
cost = 15
containername = "mafia supply crate"
@@ -1385,6 +1395,29 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine
..()
/datum/supply_packs/misc/foamforce
name = "Foam Force Crate"
contains = list(/obj/item/weapon/gun/projectile/shotgun/toy,
/obj/item/weapon/gun/projectile/shotgun/toy,
/obj/item/weapon/gun/projectile/shotgun/toy,
/obj/item/weapon/gun/projectile/shotgun/toy,
/obj/item/weapon/gun/projectile/shotgun/toy,
/obj/item/weapon/gun/projectile/shotgun/toy,
/obj/item/weapon/gun/projectile/shotgun/toy,
/obj/item/weapon/gun/projectile/shotgun/toy)
cost = 25
containername = "foam force crate"
/datum/supply_packs/misc/foamforce/bonus
name = "Foam Force Pistols Crate"
contains = list(/obj/item/weapon/gun/projectile/automatic/toy/pistol,
/obj/item/weapon/gun/projectile/automatic/toy/pistol,
/obj/item/ammo_box/magazine/toy/pistol,
/obj/item/ammo_box/magazine/toy/pistol)
cost = 40
containername = "foam force pistols crate"
contraband = 1
/datum/supply_packs/misc/randomised/contraband
num_contained = 5
contains = list(/obj/item/weapon/storage/pill_bottle/random_drug_bottle,
+33 -1
View File
@@ -407,6 +407,31 @@ var/list/uplink_items = list()
gamemodes = list(/datum/game_mode/nuclear)
surplus = 0
/datum/uplink_item/dangerous/foamsmg
name = "Toy Submachine Gun"
desc = "A fully-loaded Donksoft bullpup submachine gun that fires riot grade rounds with a 20-round magazine."
item = /obj/item/weapon/gun/projectile/automatic/c20r/toy
cost = 12
gamemodes = list(/datum/game_mode/nuclear)
surplus = 0
/datum/uplink_item/dangerous/foammachinegun
name = "Toy Machine Gun"
desc = "A fully-loaded Donksoft belt-fed machine gun. This weapon has a massive 50-round magazine of devastating riot grade darts, that can briefly incapacitate someone in just one volley."
item = /obj/item/weapon/gun/projectile/automatic/l6_saw/toy
cost = 30
gamemodes = list(/datum/game_mode/nuclear)
surplus = 0
/datum/uplink_item/ammo/toydarts
name = "Box of Riot Darts"
desc = "A box of 40 Donksoft foam riot darts, for reloading any compatible foam dart gun. Don't forget to share!"
item = /obj/item/ammo_box/foambox/riot
cost = 10
gamemodes = list(/datum/game_mode/nuclear)
surplus = 0
//for refunding the syndieborg teleporter
/datum/uplink_item/dangerous/syndieborg/spawn_item()
var/obj/item/weapon/antag_spawner/borg_tele/T = ..()
@@ -550,6 +575,13 @@ var/list/uplink_items = list()
cost = 8
excludefrom = list(/datum/game_mode/nuclear)
/datum/uplink_item/stealthy_weapons/foampistol
name = "Toy Gun (with Stun Darts)"
desc = "An innocent looking toy pistol designed to fire foam darts. Comes loaded with riot grade darts, to incapacitate a target."
item = /obj/item/weapon/gun/projectile/automatic/toy/pistol/riot
cost = 10
surplus = 10
/datum/uplink_item/stealthy_weapons/soap
name = "Syndicate Soap"
desc = "A sinister-looking surfactant used to clean blood stains to hide murders and prevent DNA analysis. You can also drop it underfoot to slip people."
@@ -1105,4 +1137,4 @@ var/list/uplink_items = list()
U.purchase_log += "<BIG>\icon[C]</BIG>"
for(var/item in bought_items)
new item(C)
U.purchase_log += "<BIG>\icon[item]</BIG>"
U.purchase_log += "<BIG>\icon[item]</BIG>"
+2 -2
View File
@@ -5,7 +5,7 @@
name = "Random Toy"
New()
..()
var/list/types = list(/obj/item/toy/crossbow,/obj/item/toy/balloon,/obj/item/toy/spinningtoy,/obj/item/weapon/reagent_containers/spray/waterflower) + subtypesof(/obj/item/toy/prize)
var/list/types = list(/obj/item/weapon/gun/projectile/shotgun/toy/crossbow, /obj/item/toy/balloon,/obj/item/toy/spinningtoy,/obj/item/weapon/reagent_containers/spray/waterflower) + subtypesof(/obj/item/toy/prize)
var/T = pick(types)
new T(loc)
spawn(1)
@@ -332,4 +332,4 @@
new nade3(src)
new nade4(src)
new nade5(src)
new nade6(src)
new nade6(src)
+1 -139
View File
@@ -3,8 +3,6 @@
* Balloons
* Fake telebeacon
* Fake singularity
* Toy crossbow
* Toy Tommy Gun
* Toy swords
* Toy mechs
* Snap pops
@@ -132,142 +130,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_state = "crossbow"
lefthand_file = 'icons/mob/inhands/guns_lefthand.dmi'
righthand_file = 'icons/mob/inhands/guns_righthand.dmi'
w_class = 2.0
attack_verb = list("attacked", "struck", "hit")
var/bullets = 5
/obj/item/toy/crossbow/examine(mob/user)
..(user)
if (bullets)
to_chat(user, "<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, params)
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(user.loc, '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
D.visible_message("<span class='danger'>[M] was hit by the foam dart!</span>")
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)
user.visible_message("<span class='danger'>[user] realized they were out of ammo and starting scrounging for some!</span>")
/obj/item/toy/crossbow/attack(mob/M as mob, mob/user as mob)
add_fingerprint(user)
// ******* Check
if (bullets > 0 && M.lying)
visible_message("<span class='danger'>[user] casually lines up a shot with [M]'s head and pulls the trigger!</span>", "<span class='danger'>You hear the sound of foam against skull.</span>")
M.visible_message("<span class='warning'>[M] was hit in the head by the foam dart!</span>")
playsound(user.loc, 'sound/items/syringeproj.ogg', 50, 1)
new /obj/item/toy/ammo/crossbow(M.loc)
bullets--
else if (M.lying && bullets == 0)
visible_message("<span class='danger'>[user] casually lines up a shot with [M]'s head, pulls the trigger, then realizes they are out of ammo and drops to the floor in search of some!</span>", "<span class='danger'>You hear someone fall.</span>")
user.Weaken(5)
return
/obj/item/toy/ammo/crossbow
name = "foam dart"
desc = "Its nerf or nothing! Ages 8 and up."
icon = 'icons/obj/toy.dmi'
icon_state = "foamdart"
w_class = 1.0
/obj/effect/foam_dart_dummy
name = ""
desc = ""
icon = 'icons/obj/toy.dmi'
icon_state = "null"
anchored = 1
density = 0
/*
* Tommy gun
*/
/obj/item/toy/crossbow/tommygun
name = "tommy gun"
desc = "Looks almost like the real thing! Great for practicing Drive-bys"
icon_state = "tommy"
item_state = "tommy"
flags = CONDUCT
w_class = 1.0
attack_verb = list("struck", "hammered", "hit", "bashed")
bullets = 20.0
/obj/item/toy/crossbow/tommygun/attackby(obj/item/I as obj, mob/user as mob, params)
if(istype(I, /obj/item/toy/ammo/crossbow))
if(bullets <= 19)
user.drop_item()
qdel(I)
bullets++
to_chat(user, "<span class='notice'>You load the foam dart into the tommy gun.</span>")
else
to_chat(user, "<span class='danger'>It's already fully loaded.</span>")
/*
* Toy swords
*/
@@ -1777,4 +1639,4 @@ obj/item/toy/cards/deck/syndicate/black
desc = "All hail the Magic Conch!"
icon_state = "conch"
use_action = "pulls the string"
possible_answers = list("Yes.", "No.", "Try asking again.", "Nothing.", "I don't think so.", "Neither.", "Maybe someday.")
possible_answers = list("Yes.", "No.", "Try asking again.", "Nothing.", "I don't think so.", "Neither.", "Maybe someday.")
@@ -80,7 +80,7 @@
/obj/item/weapon/banhammer,
/obj/item/toy/balloon,
/obj/item/toy/blink,
/obj/item/toy/crossbow,
/obj/item/weapon/gun/projectile/shotgun/toy/crossbow,
/obj/item/weapon/gun/projectile/revolver/capgun,
/obj/item/toy/katana,
/obj/random/mech,
@@ -115,7 +115,7 @@
/obj/item/toy/AI,
/obj/item/clothing/under/syndicate/tacticool,
/obj/item/weapon/storage/box/fakesyndiesuit,
/obj/item/toy/crossbow/tommygun,
/obj/item/weapon/gun/projectile/automatic/tommygun/toy,
/obj/item/stack/tile/fakespace/loaded,
)
@@ -685,14 +685,3 @@
new /obj/item/weapon/lipstick/green(src)
new /obj/item/weapon/lipstick/blue(src)
new /obj/item/weapon/lipstick/white(src)
/obj/item/weapon/storage/box/foam_darts
name = "Foam Dart Pack"
desc = "Extra ammo for foam dart launchers. Contains 10 darts."
storage_slots = 10
max_combined_w_class = 10
/obj/item/weapon/storage/box/foam_darts/New()
..()
for(var/i=1; i <= storage_slots; i++)
new /obj/item/toy/ammo/crossbow(src)
+6 -4
View File
@@ -93,8 +93,8 @@ var/global/datum/prizes/global_prizes = new
/datum/prize_item/foam_darts
name = "Pack of Foam Darts"
desc = "A refill pack of 10 foam darts."
typepath = /obj/item/weapon/storage/box/foam_darts
desc = "A refill pack with foam darts."
typepath = /obj/item/ammo_box/foambox
cost = 20
/datum/prize_item/minigibber
@@ -174,9 +174,10 @@ var/global/datum/prizes/global_prizes = new
/datum/prize_item/crossbow
name = "Foam Dart Crossbow"
desc = "A toy crossbow that fires foam darts."
typepath = /obj/item/toy/crossbow
typepath = /obj/item/weapon/gun/projectile/shotgun/toy/crossbow
cost = 100
/datum/prize_item/toy_xeno
name = "Xeno Action Figure"
desc = "A lifelike replica of the horrific xeno scourge."
@@ -252,9 +253,10 @@ var/global/datum/prizes/global_prizes = new
/datum/prize_item/tommygun
name = "Tommygun"
desc = "A replica tommygun that fires foam darts."
typepath = /obj/item/toy/crossbow/tommygun
typepath = /obj/item/weapon/gun/projectile/automatic/tommygun/toy
cost = 175
/datum/prize_item/esword
name = "Toy Energy Sword"
desc = "A plastic replica of an energy blade."
+3 -3
View File
@@ -7,8 +7,8 @@
/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/weapon/gun/projectile/revolver/capgun = 2,
/obj/item/weapon/gun/projectile/shotgun/toy/crossbow = 2,
/obj/item/clothing/suit/syndicatefake = 2,
/obj/item/weapon/storage/fancy/crayons = 2,
/obj/item/toy/spinningtoy = 2,
@@ -177,4 +177,4 @@
if(interactable())
computer.updateUsrDialog()
blocked = 0
return
return
@@ -255,4 +255,43 @@
desc = "A cased high explosive grenade that can only be activated once fired out of a grenade launcher."
caliber = "40mm"
icon_state = "40mmHE"
projectile_type = "/obj/item/projectile/bullet/a40mm"
projectile_type = "/obj/item/projectile/bullet/a40mm"
//FOAM DARTS
/obj/item/ammo_casing/caseless/foam_dart
name = "foam dart"
desc = "Its nerf or nothing! Ages 8 and up."
projectile_type = "/obj/item/projectile/bullet/reusable/foam_dart"
caliber = "foam_force"
icon = 'icons/obj/toyguns.dmi'
icon_state = "foamdart"
var/modified = 0
/obj/item/ammo_casing/caseless/foam_dart/update_icon()
..()
if (modified)
icon_state = "foamdart_empty"
desc = "Its nerf or nothing! ...Although, this one doesn't look too safe."
/obj/item/ammo_casing/caseless/foam_dart/attackby(var/obj/item/A as obj, mob/user as mob, params)
..()
if (istype(A, /obj/item/weapon/screwdriver) && !modified)
modified = 1
BB.damage_type = BRUTE
icon_state = "foamdart_empty"
desc = "Its nerf or nothing! ...Although, this one doesn't look too safe."
user << "<span class='notice'>You pop the safety cap off of [src].</span>"
else if ((istype(A, /obj/item/weapon/pen)) && modified && !BB.contents.len)
if (!user.unEquip(A))
return
A.loc = BB
BB.damage = 5
BB.nodamage = 0
user << "<span class='notice'>You insert [A] into [src].</span>"
return
/obj/item/ammo_casing/caseless/foam_dart/riot
name = "riot foam dart"
desc = "Whose smart idea was it to use toys as crowd control? Ages 18 and up."
projectile_type = "/obj/item/projectile/bullet/reusable/foam_dart/riot"
icon_state = "foamdart_riot"
+13 -1
View File
@@ -86,4 +86,16 @@
name = "Ammunition Box (tranquilizer darts)"
icon_state = "45box"
ammo_type = /obj/item/ammo_casing/shotgun/tranquilizer
materials = list(MAT_METAL=1750)
materials = list(MAT_METAL=1750)
//FOAM DARTS
/obj/item/ammo_box/foambox
name = "ammo box (Foam Darts)"
icon = 'icons/obj/toyguns.dmi'
icon_state = "foambox"
ammo_type = /obj/item/ammo_casing/caseless/foam_dart
max_ammo = 40
/obj/item/ammo_box/foambox/riot
icon_state = "foambox_riot"
ammo_type = /obj/item/ammo_casing/caseless/foam_dart/riot
@@ -101,6 +101,14 @@
max_ammo = 5
multiload = 1
/obj/item/ammo_box/magazine/internal/shot/toy
ammo_type = "/obj/item/ammo_casing/caseless/foam_dart"
caliber = "foam_force"
max_ammo = 4
/obj/item/ammo_box/magazine/internal/shot/toy/crossbow
max_ammo = 5
///////////EXTERNAL MAGAZINES////////////////
/obj/item/ammo_box/magazine/m10mm
@@ -290,4 +298,54 @@
/obj/item/ammo_box/magazine/m12g/dragon
name = "shotgun magazine (12g dragon's breath)"
icon_state = "m12gf"
ammo_type = "/obj/item/ammo_casing/shotgun/incendiary/dragonsbreath"
ammo_type = "/obj/item/ammo_casing/shotgun/incendiary/dragonsbreath"
//FOAM DARTS
/obj/item/ammo_box/magazine/toy
name = "foam force META magazine"
ammo_type = "/obj/item/ammo_casing/caseless/foam_dart"
caliber = "foam_force"
/obj/item/ammo_box/magazine/toy/smg
name = "foam force SMG magazine"
icon_state = "smg9mm-30"
max_ammo = 30
/obj/item/ammo_box/magazine/toy/smg/update_icon()
..()
icon_state = "smg9mm-[round(ammo_count(),6)]"
/obj/item/ammo_box/magazine/toy/smg/riot
ammo_type = "/obj/item/ammo_casing/caseless/foam_dart/riot"
/obj/item/ammo_box/magazine/toy/pistol
name = "foam force pistol magazine"
icon_state = "9x19p"
max_ammo = 8
multiple_sprites = 2
/obj/item/ammo_box/magazine/toy/pistol/riot
ammo_type = "/obj/item/ammo_casing/caseless/foam_dart/riot"
/obj/item/ammo_box/magazine/toy/smgm45
name = "donksoft SMG magazine"
ammo_type = "/obj/item/ammo_casing/caseless/foam_dart/riot"
max_ammo = 20
/obj/item/ammo_box/magazine/toy/smgm45/update_icon()
..()
icon_state = "c20r45-[round(ammo_count(),2)]"
/obj/item/ammo_box/magazine/toy/m762
name = "donksoft box magazine"
ammo_type = "/obj/item/ammo_casing/caseless/foam_dart/riot"
max_ammo = 50
/obj/item/ammo_box/magazine/toy/m762/update_icon()
..()
icon_state = "a762-[round(ammo_count(),10)]"
/obj/item/ammo_box/magazine/toy/tommygunm45
name = "little tommy's mag"
icon_state = "drum45"
max_ammo = 50
+7 -7
View File
@@ -279,19 +279,19 @@
//Suicide handling.
if (M == user && user.zone_sel.selecting == "mouth" && !mouthshoot)
mouthshoot = 1
M.visible_message("\red [user] sticks their gun in their mouth, ready to pull the trigger...")
M.visible_message("<span class='warning'> [user] sticks their gun in their mouth, ready to pull the trigger...</span>")
if(!do_after(user, 40, target = M))
M.visible_message("\blue [user] decided life was worth living")
M.visible_message("<span class='warning'> [user] decided life was worth living</span>")
mouthshoot = 0
return
if (process_chambered())
user.visible_message("<span class = 'warning'>[user] pulls the trigger.</span>")
user.visible_message("<span class='warning'>[user] pulls the trigger.</span>")
if(silenced)
playsound(user, fire_sound, 10, 1)
else
playsound(user, fire_sound, 50, 1)
if(istype(in_chamber, /obj/item/projectile/lasertag))
user.show_message("<span class = 'warning'>You feel rather silly, trying to commit suicide with a toy.</span>")
if(istype(in_chamber, /obj/item/projectile/lasertag) || istype(in_chamber, /obj/item/projectile/bullet/reusable/foam_dart))
user.show_message("<span class='warning'>You feel rather silly, trying to commit suicide with a toy.</span>")
mouthshoot = 0
return
in_chamber.on_hit(M)
@@ -299,7 +299,7 @@
user.apply_damage(in_chamber.damage*2.5, in_chamber.damage_type, "head", used_weapon = "Point blank shot in the mouth with \a [in_chamber]", sharp=1)
user.death()
else
to_chat(user, "<span class = 'notice'>Ow...</span>")
to_chat(user, "<span class='notice'>Ow...</span>")
user.apply_effect(110,STAMINA,0)
del(in_chamber)
mouthshoot = 0
@@ -383,4 +383,4 @@
update_icon()
else
set_light(0)
return
return
+6 -3
View File
@@ -16,15 +16,18 @@
/obj/item/weapon/gun/projectile/New()
..()
magazine = new mag_type(src)
if (!magazine)
magazine = new mag_type(src)
chamber_round()
update_icon()
return
/obj/item/weapon/gun/projectile/process_chambered(var/eject_casing = 1, var/empty_chamber = 1)
/obj/item/weapon/gun/projectile/process_chambered(var/eject_casing = 1, var/empty_chamber = 1 )
// if(in_chamber)
// return 1
@@ -146,4 +149,4 @@
item_state = "suppressor"
w_class = 2
var/oldsound = null
var/initial_w_class = null
var/initial_w_class = null
@@ -0,0 +1,102 @@
/obj/item/weapon/gun/projectile/automatic/toy
name = "foam force SMG"
desc = "A prototype three-round burst toy submachine gun. Ages 8 and up."
icon = 'icons/obj/toyguns.dmi'
icon_state = "saber"
item_state = "gun"
mag_type = "/obj/item/ammo_box/magazine/toy/smg"
fire_sound = 'sound/items/syringeproj.ogg'
force = 0
throwforce = 0
burst_size = 3
can_suppress = 0
clumsy_check = 0
needs_permit = 0
/obj/item/weapon/gun/projectile/automatic/toy/process_chambered()
return ..(0, 1)
/obj/item/weapon/gun/projectile/automatic/toy/pistol
name = "foam force pistol"
desc = "A small, easily concealable toy handgun. Ages 8 and up."
icon_state = "pistol"
w_class = 2
mag_type = "/obj/item/ammo_box/magazine/toy/pistol"
can_suppress = 0
burst_size = 1
fire_delay = 0
action_button_name = null
/obj/item/weapon/gun/projectile/automatic/toy/pistol/update_icon()
..()
icon_state = "[initial(icon_state)][chambered ? "" : "-e"]"
/obj/item/weapon/gun/projectile/automatic/toy/pistol/riot
name = "foam force riot pistol"
desc = "RIOT! Ages 8 and up."
/obj/item/weapon/gun/projectile/automatic/toy/pistol/riot/New()
magazine = new /obj/item/ammo_box/magazine/toy/pistol/riot(src)
..()
/obj/item/weapon/gun/projectile/automatic/c20r/toy
name = "donksoft SMG"
desc = "A bullpup two-round burst toy SMG, designated 'C-20r'. Ages 8 and up."
icon = 'icons/obj/toyguns.dmi'
can_suppress = 0
needs_permit = 0
mag_type = "/obj/item/ammo_box/magazine/toy/smgm45"
/obj/item/weapon/gun/projectile/automatic/c20r/toy/process_chambered()
return ..(0, 1)
/obj/item/weapon/gun/projectile/automatic/l6_saw/toy
name = "donksoft LMG"
desc = "A heavily modified toy light machine gun, designated 'L6 SAW'. Ages 8 and up."
icon = 'icons/obj/toyguns.dmi'
can_suppress = 0
needs_permit = 0
mag_type = "/obj/item/ammo_box/magazine/toy/m762"
/obj/item/weapon/gun/projectile/automatic/l6_saw/toy/process_chambered()
return ..(0, 1)
/obj/item/weapon/gun/projectile/automatic/tommygun/toy
name = "tommy gun"
desc = "Looks almost like the real thing! Great for practicing Drive-bys. Ages 8 and up."
icon_state = "tommygun"
item_state = "shotgun"
w_class = 2
mag_type = "/obj/item/ammo_box/magazine/toy/tommygunm45"
fire_sound = 'sound/items/syringeproj.ogg'
/obj/item/weapon/gun/projectile/automatic/tommygun/toy/process_chambered()
return ..(0, 1)
/obj/item/weapon/gun/projectile/shotgun/toy
name = "foam force shotgun"
desc = "A toy shotgun with wood furniture and a four-shell capacity underneath. Ages 8 and up."
icon = 'icons/obj/toyguns.dmi'
force = 0
throwforce = 0
origin_tech = null
mag_type = "/obj/item/ammo_box/magazine/internal/shot/toy"
fire_sound = 'sound/items/syringeproj.ogg'
clumsy_check = 0
needs_permit = 0
/obj/item/weapon/gun/projectile/shotgun/toy/pump_unload()
if(chambered)//We have a shell in the chamber
chambered = null
if(in_chamber)
in_chamber = null
/obj/item/weapon/gun/projectile/shotgun/toy/crossbow
name = "foam force crossbow"
desc = "A weapon favored by many overactive children. Ages 8 and up."
icon = 'icons/obj/gun.dmi'
icon_state = "crossbow"
item_state = "crossbow"
mag_type = "/obj/item/ammo_box/magazine/internal/shot/toy/crossbow"
slot_flags = SLOT_BELT
w_class = 2
@@ -0,0 +1,43 @@
/obj/item/projectile/bullet/reusable
name = "reusable bullet"
desc = "How do you even reuse a bullet?"
var/obj/item/ammo_casing/caseless/ammo_type = /obj/item/ammo_casing/caseless/
var/hit = 0
/obj/item/projectile/bullet/reusable/on_hit(var/atom/target, var/blocked = 0)
if(!proj_hit)
proj_hit = 1
if (src.contents.len)
var/obj/content
for(content in src.contents)
content.loc = src.loc
else
new ammo_type(src.loc)
..()
/obj/item/projectile/bullet/reusable/on_range()
if(!proj_hit)
if (src.contents.len)
var/obj/content
for(content in src.contents)
content.loc = src.loc
else
new ammo_type(src.loc)
..()
/obj/item/projectile/bullet/reusable/foam_dart
name = "foam dart"
desc = "I hope you're wearing eye protection."
damage = 0 // It's a damn toy.
damage_type = OXY
nodamage = 1
icon = 'icons/obj/toyguns.dmi'
icon_state = "foamdart"
ammo_type = /obj/item/ammo_casing/caseless/foam_dart
range = 10
/obj/item/projectile/bullet/reusable/foam_dart/riot
name = "riot foam dart"
icon_state = "foamdart_riot"
ammo_type = /obj/item/ammo_casing/caseless/foam_dart/riot
stamina = 25