mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-01-14 02:43:16 +00:00
The "set internals" button of tank items now turn green when it's used as internals. Removed research scanner from drones (since cyborgs don't have it, it's more consistent) Removed the ignore_madkadjust mask var. The sechailer mask now has an adjust mask action button, so I removed the adjust verb that it was using. The item's action are now created on item/New() instead of trying to create it every time someone picks the item up. I split hud/action.dm, the datum/action stuff is now in the datum folder (/datum/action.dm), whereas the code for action buttons is kept in the hud folder under action_button.dm. Also I moved some /datum/action code that was in some files back into datum/action.dm where it belongs.
237 lines
7.5 KiB
Plaintext
237 lines
7.5 KiB
Plaintext
/obj/item/weapon/gun/projectile/automatic
|
|
origin_tech = "combat=4;materials=2"
|
|
w_class = 3
|
|
var/alarmed = 0
|
|
var/select = 1
|
|
can_suppress = 1
|
|
burst_size = 3
|
|
fire_delay = 2
|
|
actions_types = list(/datum/action/item_action/toggle_firemode)
|
|
|
|
/obj/item/weapon/gun/projectile/automatic/proto
|
|
name = "\improper NanoTrasen Saber SMG"
|
|
desc = "A prototype three-round burst 9mm submachine gun, designated 'SABR'. Has a threaded barrel for suppressors."
|
|
icon_state = "saber"
|
|
mag_type = /obj/item/ammo_box/magazine/smgm9mm
|
|
pin = null
|
|
|
|
/obj/item/weapon/gun/projectile/automatic/proto/unrestricted
|
|
pin = /obj/item/device/firing_pin
|
|
|
|
/obj/item/weapon/gun/projectile/automatic/update_icon()
|
|
..()
|
|
overlays.Cut()
|
|
if(!select)
|
|
overlays += "[initial(icon_state)]semi"
|
|
if(select == 1)
|
|
overlays += "[initial(icon_state)]burst"
|
|
icon_state = "[initial(icon_state)][magazine ? "-[magazine.max_ammo]" : ""][chambered ? "" : "-e"][suppressed ? "-suppressed" : ""]"
|
|
return
|
|
|
|
/obj/item/weapon/gun/projectile/automatic/attackby(obj/item/A, mob/user, params)
|
|
. = ..()
|
|
if(.)
|
|
return
|
|
if(istype(A, /obj/item/ammo_box/magazine))
|
|
var/obj/item/ammo_box/magazine/AM = A
|
|
if(istype(AM, mag_type))
|
|
if(magazine)
|
|
user << "<span class='notice'>You perform a tactical reload on \the [src], replacing the magazine.</span>"
|
|
magazine.loc = get_turf(src.loc)
|
|
magazine.update_icon()
|
|
magazine = null
|
|
else
|
|
user << "<span class='notice'>You insert the magazine into \the [src].</span>"
|
|
user.remove_from_mob(AM)
|
|
magazine = AM
|
|
magazine.loc = src
|
|
chamber_round()
|
|
A.update_icon()
|
|
update_icon()
|
|
return 1
|
|
|
|
/obj/item/weapon/gun/projectile/automatic/ui_action_click()
|
|
burst_select()
|
|
|
|
/obj/item/weapon/gun/projectile/automatic/proc/burst_select()
|
|
var/mob/living/carbon/human/user = usr
|
|
select = !select
|
|
if(!select)
|
|
burst_size = 1
|
|
fire_delay = 0
|
|
user << "<span class='notice'>You switch to semi-automatic.</span>"
|
|
else
|
|
burst_size = initial(burst_size)
|
|
fire_delay = initial(fire_delay)
|
|
user << "<span class='notice'>You switch to [burst_size]-rnd burst.</span>"
|
|
|
|
playsound(user, 'sound/weapons/empty.ogg', 100, 1)
|
|
update_icon()
|
|
for(var/X in actions)
|
|
var/datum/action/A = X
|
|
A.UpdateButtonIcon()
|
|
|
|
/obj/item/weapon/gun/projectile/automatic/can_shoot()
|
|
return get_ammo()
|
|
|
|
/obj/item/weapon/gun/projectile/automatic/proc/empty_alarm()
|
|
if(!chambered && !get_ammo() && !alarmed)
|
|
playsound(src.loc, 'sound/weapons/smg_empty_alarm.ogg', 40, 1)
|
|
update_icon()
|
|
alarmed = 1
|
|
return
|
|
|
|
/obj/item/weapon/gun/projectile/automatic/c20r
|
|
name = "\improper C-20r SMG"
|
|
desc = "A bullpup two-round burst .45 SMG, designated 'C-20r'. Has a 'Scarborough Arms - Per falcis, per pravitas' buttstamp."
|
|
icon_state = "c20r"
|
|
item_state = "c20r"
|
|
origin_tech = "combat=5;materials=2;syndicate=8"
|
|
mag_type = /obj/item/ammo_box/magazine/smgm45
|
|
fire_sound = 'sound/weapons/Gunshot_smg.ogg'
|
|
fire_delay = 2
|
|
burst_size = 2
|
|
pin = /obj/item/device/firing_pin/implant/pindicate
|
|
|
|
/obj/item/weapon/gun/projectile/automatic/c20r/unrestricted
|
|
pin = /obj/item/device/firing_pin
|
|
|
|
/obj/item/weapon/gun/projectile/automatic/c20r/New()
|
|
..()
|
|
update_icon()
|
|
return
|
|
|
|
/obj/item/weapon/gun/projectile/automatic/c20r/afterattack()
|
|
..()
|
|
empty_alarm()
|
|
return
|
|
|
|
/obj/item/weapon/gun/projectile/automatic/c20r/update_icon()
|
|
..()
|
|
icon_state = "c20r[magazine ? "-[Ceiling(get_ammo(0)/4)*4]" : ""][chambered ? "" : "-e"][suppressed ? "-suppressed" : ""]"
|
|
return
|
|
|
|
/obj/item/weapon/gun/projectile/automatic/wt550
|
|
name = "security auto rifle"
|
|
desc = "An outdated personal defence weapon. Uses 4.6x30mm rounds and is designated the WT-550 Automatic Rifle."
|
|
icon_state = "wt550"
|
|
item_state = "arg"
|
|
mag_type = /obj/item/ammo_box/magazine/wt550m9
|
|
fire_delay = 2
|
|
can_suppress = 0
|
|
burst_size = 0
|
|
actions_types = list()
|
|
|
|
/obj/item/weapon/gun/projectile/automatic/wt550/update_icon()
|
|
..()
|
|
icon_state = "wt550[magazine ? "-[Ceiling(get_ammo(0)/4)*4]" : ""]"
|
|
return
|
|
|
|
/obj/item/weapon/gun/projectile/automatic/mini_uzi
|
|
name = "\improper 'Type U3' Uzi"
|
|
desc = "A lightweight, burst-fire submachine gun, for when you really want someone dead. Uses 9mm rounds."
|
|
icon_state = "mini-uzi"
|
|
origin_tech = "combat=5;materials=2;syndicate=8"
|
|
mag_type = /obj/item/ammo_box/magazine/uzim9mm
|
|
burst_size = 2
|
|
|
|
/obj/item/weapon/gun/projectile/automatic/m90
|
|
name = "\improper M-90gl Carbine"
|
|
desc = "A three-round burst 5.56 toploading carbine, designated 'M-90gl'. Has an attached underbarrel grenade launcher which can be toggled on and off."
|
|
icon_state = "m90"
|
|
item_state = "m90"
|
|
origin_tech = "combat=5;materials=2;syndicate=8"
|
|
mag_type = /obj/item/ammo_box/magazine/m556
|
|
fire_sound = 'sound/weapons/Gunshot_smg.ogg'
|
|
can_suppress = 0
|
|
var/obj/item/weapon/gun/projectile/revolver/grenadelauncher/underbarrel
|
|
burst_size = 3
|
|
fire_delay = 2
|
|
pin = /obj/item/device/firing_pin/implant/pindicate
|
|
|
|
/obj/item/weapon/gun/projectile/automatic/m90/New()
|
|
..()
|
|
underbarrel = new /obj/item/weapon/gun/projectile/revolver/grenadelauncher(src)
|
|
update_icon()
|
|
return
|
|
|
|
/obj/item/weapon/gun/projectile/automatic/m90/unrestricted
|
|
pin = /obj/item/device/firing_pin
|
|
|
|
/obj/item/weapon/gun/projectile/automatic/m90/unrestricted/New()
|
|
..()
|
|
underbarrel = new /obj/item/weapon/gun/projectile/revolver/grenadelauncher/unrestricted(src)
|
|
update_icon()
|
|
return
|
|
|
|
/obj/item/weapon/gun/projectile/automatic/m90/afterattack(atom/target, mob/living/user, flag, params)
|
|
if(select == 2)
|
|
underbarrel.afterattack(target, user, flag, params)
|
|
else
|
|
..()
|
|
return
|
|
/obj/item/weapon/gun/projectile/automatic/m90/attackby(obj/item/A, mob/user, params)
|
|
if(istype(A, /obj/item/ammo_casing))
|
|
if(istype(A, underbarrel.magazine.ammo_type))
|
|
underbarrel.attack_self()
|
|
underbarrel.attackby(A, user, params)
|
|
else
|
|
..()
|
|
/obj/item/weapon/gun/projectile/automatic/m90/update_icon()
|
|
..()
|
|
overlays.Cut()
|
|
switch(select)
|
|
if(0)
|
|
overlays += "[initial(icon_state)]semi"
|
|
if(1)
|
|
overlays += "[initial(icon_state)]burst"
|
|
if(2)
|
|
overlays += "[initial(icon_state)]gren"
|
|
icon_state = "[initial(icon_state)][magazine ? "" : "-e"]"
|
|
return
|
|
/obj/item/weapon/gun/projectile/automatic/m90/burst_select()
|
|
var/mob/living/carbon/human/user = usr
|
|
switch(select)
|
|
if(0)
|
|
select = 1
|
|
burst_size = initial(burst_size)
|
|
fire_delay = initial(fire_delay)
|
|
user << "<span class='notice'>You switch to [burst_size]-rnd burst.</span>"
|
|
if(1)
|
|
select = 2
|
|
user << "<span class='notice'>You switch to grenades.</span>"
|
|
if(2)
|
|
select = 0
|
|
burst_size = 1
|
|
fire_delay = 0
|
|
user << "<span class='notice'>You switch to semi-auto.</span>"
|
|
playsound(user, 'sound/weapons/empty.ogg', 100, 1)
|
|
update_icon()
|
|
return
|
|
|
|
/obj/item/weapon/gun/projectile/automatic/tommygun
|
|
name = "\improper Thompson SMG"
|
|
desc = "Based on the classic 'Chicago Typewriter'."
|
|
icon_state = "tommygun"
|
|
item_state = "shotgun"
|
|
w_class = 5
|
|
slot_flags = 0
|
|
origin_tech = "combat=5;materials=1;syndicate=2"
|
|
mag_type = /obj/item/ammo_box/magazine/tommygunm45
|
|
fire_sound = 'sound/weapons/Gunshot_smg.ogg'
|
|
can_suppress = 0
|
|
burst_size = 4
|
|
fire_delay = 1
|
|
|
|
/obj/item/weapon/gun/projectile/automatic/ar
|
|
name = "\improper NT-ARG 'Boarder'"
|
|
desc = "A robust assault rile used by Nanotrasen fighting forces."
|
|
icon_state = "arg"
|
|
item_state = "arg"
|
|
slot_flags = 0
|
|
origin_tech = "combat=5;materials=1"
|
|
mag_type = /obj/item/ammo_box/magazine/m556
|
|
fire_sound = 'sound/weapons/Gunshot_smg.ogg'
|
|
can_suppress = 0
|
|
burst_size = 3
|
|
fire_delay = 1 |