mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-20 03:25:49 +01:00
Ports /tg/ Foam Force guns
This commit is contained in:
@@ -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."
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user