mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-08-22 03:27:46 +01:00
Merge remote-tracking branch 'VOREStation/master' into medbeam
This commit is contained in:
@@ -180,15 +180,15 @@
|
||||
if(dna_lock && attached_lock.stored_dna)
|
||||
if(!authorized_user(user))
|
||||
if(attached_lock.safety_level == 0)
|
||||
to_chat(M, "<span class='danger'>\The [src] buzzes in dissapoint and displays an invalid DNA symbol.</span>")
|
||||
to_chat(M, "<span class='danger'>\The [src] buzzes in dissapointment and displays an invalid DNA symbol.</span>")
|
||||
return 0
|
||||
if(!attached_lock.exploding)
|
||||
if(attached_lock.safety_level == 1)
|
||||
to_chat(M, "<span class='danger'>\The [src] hisses in dissapointment.</span>")
|
||||
visible_message("<span class='game say'><span class='name'>\The [src]</span> announces, \"Self-destruct occurring in ten seconds.\"</span>", "<span class='game say'><span class='name'>\The [src]</span> announces, \"Self-destruct occurring in ten seconds.\"</span>")
|
||||
attached_lock.exploding = 1
|
||||
spawn(100)
|
||||
explosion(src, 0, 0, 3, 4)
|
||||
attached_lock.exploding = 1
|
||||
sleep(1)
|
||||
qdel(src)
|
||||
return 0
|
||||
@@ -693,7 +693,7 @@
|
||||
if (istype(in_chamber))
|
||||
user.visible_message("<span class = 'warning'>[user] pulls the trigger.</span>")
|
||||
play_fire_sound()
|
||||
if(istype(in_chamber, /obj/item/projectile/beam/lastertag))
|
||||
if(istype(in_chamber, /obj/item/projectile/beam/lasertag))
|
||||
user.show_message("<span class = 'warning'>You feel rather silly, trying to commit suicide with a toy.</span>")
|
||||
mouthshoot = 0
|
||||
return
|
||||
|
||||
@@ -1,247 +1,261 @@
|
||||
/obj/item/weapon/gun/energy/laser
|
||||
name = "laser rifle"
|
||||
desc = "A Hephaestus Industries G40E rifle, designed to kill with concentrated energy blasts. This variant has the ability to \
|
||||
switch between standard fire and a more efficent but weaker 'suppressive' fire."
|
||||
icon_state = "laser"
|
||||
item_state = "laser"
|
||||
wielded_item_state = "laser-wielded"
|
||||
fire_delay = 8
|
||||
slot_flags = SLOT_BELT|SLOT_BACK
|
||||
w_class = ITEMSIZE_LARGE
|
||||
force = 10
|
||||
origin_tech = list(TECH_COMBAT = 3, TECH_MAGNET = 2)
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 2000)
|
||||
projectile_type = /obj/item/projectile/beam/midlaser
|
||||
// one_handed_penalty = 30
|
||||
|
||||
firemodes = list(
|
||||
list(mode_name="normal", fire_delay=8, projectile_type=/obj/item/projectile/beam/midlaser, charge_cost = 240),
|
||||
list(mode_name="suppressive", fire_delay=5, projectile_type=/obj/item/projectile/beam/weaklaser, charge_cost = 60),
|
||||
)
|
||||
|
||||
/obj/item/weapon/gun/energy/laser/mounted
|
||||
self_recharge = 1
|
||||
use_external_power = 1
|
||||
one_handed_penalty = 0 // Not sure if two-handing gets checked for mounted weapons, but better safe than sorry.
|
||||
|
||||
/obj/item/weapon/gun/energy/laser/practice
|
||||
name = "practice laser carbine"
|
||||
desc = "A modified version of the HI G40E, this one fires less concentrated energy bolts designed for target practice."
|
||||
projectile_type = /obj/item/projectile/beam/practice
|
||||
charge_cost = 48
|
||||
|
||||
cell_type = /obj/item/weapon/cell/device
|
||||
|
||||
firemodes = list(
|
||||
list(mode_name="normal", projectile_type=/obj/item/projectile/beam/practice, charge_cost = 48),
|
||||
list(mode_name="suppressive", projectile_type=/obj/item/projectile/beam/practice, charge_cost = 12),
|
||||
)
|
||||
|
||||
/obj/item/weapon/gun/energy/retro
|
||||
name = "retro laser"
|
||||
icon_state = "retro"
|
||||
item_state = "retro"
|
||||
desc = "An older model of the basic lasergun. Nevertheless, it is still quite deadly and easy to maintain, making it a favorite amongst pirates and other outlaws."
|
||||
slot_flags = SLOT_BELT
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
projectile_type = /obj/item/projectile/beam
|
||||
fire_delay = 10 //old technology
|
||||
|
||||
/obj/item/weapon/gun/energy/retro/mounted
|
||||
self_recharge = 1
|
||||
use_external_power = 1
|
||||
|
||||
/obj/item/weapon/gun/energy/retro/empty
|
||||
icon_state = "retro"
|
||||
cell_type = null
|
||||
|
||||
|
||||
/datum/category_item/catalogue/anomalous/precursor_a/alien_pistol
|
||||
name = "Precursor Alpha Weapon - Appendageheld Laser"
|
||||
desc = "This object strongly resembles a weapon, and if one were to pull the \
|
||||
trigger located on the handle of the object, it would fire a deadly \
|
||||
laser at whatever it was pointed at. The beam fired appears to cause too \
|
||||
much damage to whatever it would hit to have served as a long ranged repair tool, \
|
||||
therefore this object was most likely designed to be a deadly weapon. If so, this \
|
||||
has several implications towards its creators;\
|
||||
<br><br>\
|
||||
Firstly, it implies that these precursors, at some point during their development, \
|
||||
had needed to defend themselves, or otherwise had a need to utilize violence, and \
|
||||
as such created better tools to do so. It is unclear if violence was employed against \
|
||||
themselves as a form of in-fighting, or if violence was exclusive to outside species.\
|
||||
<br><br>\
|
||||
Secondly, the shape and design of the weapon implies that the creators of this \
|
||||
weapon were able to grasp objects, and be able to manipulate the trigger independently \
|
||||
from merely holding onto the weapon, making certain types of appendages like tentacles be \
|
||||
unlikely.\
|
||||
<br><br>\
|
||||
An interesting note about this weapon, when compared to contemporary energy weapons, is \
|
||||
that this gun appears to be inferior to modern laser weapons. The beam fired has less \
|
||||
of an ability to harm, and the power consumption appears to be higher than average for \
|
||||
a human-made energy side-arm. One possible explaination is that the creators of this \
|
||||
weapon, in their later years, had less of a need to optimize their capability for war, \
|
||||
and instead focused on other endeavors. Another explaination is that vast age of the weapon \
|
||||
may have caused it to degrade, yet still remain functional at a reduced capability."
|
||||
value = CATALOGUER_REWARD_MEDIUM
|
||||
|
||||
/obj/item/weapon/gun/energy/alien
|
||||
name = "alien pistol"
|
||||
desc = "A weapon that works very similarly to a traditional energy weapon. How this came to be will likely be a mystery for the ages."
|
||||
catalogue_data = list(/datum/category_item/catalogue/anomalous/precursor_a/alien_pistol)
|
||||
icon_state = "alienpistol"
|
||||
item_state = "alienpistol"
|
||||
fire_sound = 'sound/weapons/eLuger.ogg'
|
||||
fire_delay = 10 // Handguns should be inferior to two-handed weapons. Even alien ones I suppose.
|
||||
charge_cost = 480 // Five shots.
|
||||
|
||||
projectile_type = /obj/item/projectile/beam/cyan
|
||||
cell_type = /obj/item/weapon/cell/device/weapon/recharge/alien // Self charges.
|
||||
origin_tech = list(TECH_COMBAT = 8, TECH_MAGNET = 7)
|
||||
modifystate = "alienpistol"
|
||||
|
||||
|
||||
/obj/item/weapon/gun/energy/captain
|
||||
name = "antique laser gun"
|
||||
icon_state = "caplaser"
|
||||
item_state = "caplaser"
|
||||
desc = "A rare weapon, handcrafted by a now defunct specialty manufacturer on Luna for a small fortune. It's certainly aged well."
|
||||
force = 5
|
||||
slot_flags = SLOT_BELT
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
projectile_type = /obj/item/projectile/beam
|
||||
origin_tech = null
|
||||
fire_delay = 10 //Old pistol
|
||||
charge_cost = 480 //to compensate a bit for self-recharging
|
||||
cell_type = /obj/item/weapon/cell/device/weapon/recharge/captain
|
||||
battery_lock = 1
|
||||
|
||||
/obj/item/weapon/gun/energy/lasercannon
|
||||
name = "laser cannon"
|
||||
desc = "With the laser cannon, the lasing medium is enclosed in a tube lined with uranium-235 and subjected to high neutron \
|
||||
flux in a nuclear reactor core. This incredible technology may help YOU achieve high excitation rates with small laser volumes!"
|
||||
icon_state = "lasercannon"
|
||||
item_state = null
|
||||
origin_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 3, TECH_POWER = 3)
|
||||
slot_flags = SLOT_BELT|SLOT_BACK
|
||||
projectile_type = /obj/item/projectile/beam/heavylaser/cannon
|
||||
battery_lock = 1
|
||||
fire_delay = 20
|
||||
w_class = ITEMSIZE_LARGE
|
||||
// one_handed_penalty = 90 // The thing's heavy and huge.
|
||||
accuracy = 45
|
||||
charge_cost = 600
|
||||
|
||||
/obj/item/weapon/gun/energy/lasercannon/mounted
|
||||
name = "mounted laser cannon"
|
||||
self_recharge = 1
|
||||
use_external_power = 1
|
||||
recharge_time = 10
|
||||
accuracy = 0 // Mounted cannons are just fine the way they are.
|
||||
one_handed_penalty = 0 // Not sure if two-handing gets checked for mounted weapons, but better safe than sorry.
|
||||
projectile_type = /obj/item/projectile/beam/heavylaser
|
||||
charge_cost = 400
|
||||
fire_delay = 20
|
||||
|
||||
/obj/item/weapon/gun/energy/xray
|
||||
name = "xray laser gun"
|
||||
desc = "A high-power laser gun capable of expelling concentrated xray blasts, which are able to penetrate matter easier than \
|
||||
standard photonic beams, resulting in an effective 'anti-armor' energy weapon."
|
||||
icon_state = "xray"
|
||||
item_state = "xray"
|
||||
origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 3, TECH_MAGNET = 2)
|
||||
projectile_type = /obj/item/projectile/beam/xray
|
||||
charge_cost = 200
|
||||
|
||||
/obj/item/weapon/gun/energy/sniperrifle
|
||||
name = "marksman energy rifle"
|
||||
desc = "The HI DMR 9E is an older design of Hephaestus Industries. A designated marksman rifle capable of shooting powerful \
|
||||
ionized beams, this is a weapon to kill from a distance."
|
||||
icon_state = "sniper"
|
||||
item_state = "sniper"
|
||||
item_state_slots = list(slot_r_hand_str = "z8carbine", slot_l_hand_str = "z8carbine") //placeholder
|
||||
origin_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 5, TECH_POWER = 4)
|
||||
projectile_type = /obj/item/projectile/beam/sniper
|
||||
slot_flags = SLOT_BACK
|
||||
battery_lock = 1
|
||||
charge_cost = 600
|
||||
fire_delay = 35
|
||||
force = 10
|
||||
w_class = ITEMSIZE_HUGE // So it can't fit in a backpack.
|
||||
accuracy = -45 //shooting at the hip
|
||||
scoped_accuracy = 0
|
||||
// requires_two_hands = 1
|
||||
// one_handed_penalty = 60 // The weapon itself is heavy, and the long barrel makes it hard to hold steady with just one hand.
|
||||
|
||||
/obj/item/weapon/gun/energy/sniperrifle/verb/scope()
|
||||
set category = "Object"
|
||||
set name = "Use Scope"
|
||||
set popup_menu = 1
|
||||
|
||||
toggle_scope(2.0)
|
||||
|
||||
/obj/item/weapon/gun/energy/monorifle
|
||||
name = "antique mono-rifle"
|
||||
desc = "An old laser rifle. This one can only fire once before requiring recharging."
|
||||
description_fluff = "Modeled after ancient hunting rifles, this rifle was dubbed the 'Rainy Day Special' by some, due to its use as some barmens' fight-stopper of choice. One shot is all it takes, or so they say."
|
||||
icon_state = "eshotgun"
|
||||
item_state = "shotgun"
|
||||
origin_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 4, TECH_POWER = 3)
|
||||
projectile_type = /obj/item/projectile/beam/sniper
|
||||
slot_flags = SLOT_BACK
|
||||
charge_cost = 1300
|
||||
fire_delay = 20
|
||||
force = 8
|
||||
w_class = ITEMSIZE_LARGE
|
||||
accuracy = 10
|
||||
scoped_accuracy = 15
|
||||
var/scope_multiplier = 1.5
|
||||
|
||||
/obj/item/weapon/gun/energy/monorifle/verb/sights()
|
||||
set category = "Object"
|
||||
set name = "Aim Down Sights"
|
||||
set popup_menu = 1
|
||||
|
||||
toggle_scope(scope_multiplier)
|
||||
|
||||
/obj/item/weapon/gun/energy/monorifle/combat
|
||||
name = "combat mono-rifle"
|
||||
desc = "A modernized version of the mono-rifle. This one can fire twice before requiring recharging."
|
||||
description_fluff = "A modern design produced by a company once working from Saint Columbia, based on the antique mono-rifle 'Rainy Day Special' design."
|
||||
icon_state = "ecshotgun"
|
||||
item_state = "cshotgun"
|
||||
charge_cost = 1000
|
||||
force = 12
|
||||
accuracy = 0
|
||||
scoped_accuracy = 20
|
||||
|
||||
////////Laser Tag////////////////////
|
||||
|
||||
/obj/item/weapon/gun/energy/lasertag
|
||||
name = "laser tag gun"
|
||||
item_state = "laser"
|
||||
desc = "Standard issue weapon of the Imperial Guard"
|
||||
origin_tech = list(TECH_COMBAT = 1, TECH_MAGNET = 2)
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 2000)
|
||||
projectile_type = /obj/item/projectile/beam/lastertag/blue
|
||||
cell_type = /obj/item/weapon/cell/device/weapon/recharge
|
||||
battery_lock = 1
|
||||
var/required_vest
|
||||
|
||||
/obj/item/weapon/gun/energy/lasertag/special_check(var/mob/living/carbon/human/M)
|
||||
if(ishuman(M))
|
||||
if(!istype(M.wear_suit, required_vest))
|
||||
M << "<span class='warning'>You need to be wearing your laser tag vest!</span>"
|
||||
return 0
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/gun/energy/lasertag/blue
|
||||
icon_state = "bluetag"
|
||||
item_state = "bluetag"
|
||||
projectile_type = /obj/item/projectile/beam/lastertag/blue
|
||||
required_vest = /obj/item/clothing/suit/bluetag
|
||||
|
||||
/obj/item/weapon/gun/energy/lasertag/red
|
||||
icon_state = "redtag"
|
||||
item_state = "redtag"
|
||||
projectile_type = /obj/item/projectile/beam/lastertag/red
|
||||
required_vest = /obj/item/clothing/suit/redtag
|
||||
/obj/item/weapon/gun/energy/laser
|
||||
name = "laser rifle"
|
||||
desc = "A Hephaestus Industries G40E rifle, designed to kill with concentrated energy blasts. This variant has the ability to \
|
||||
switch between standard fire and a more efficent but weaker 'suppressive' fire."
|
||||
icon_state = "laser"
|
||||
item_state = "laser"
|
||||
wielded_item_state = "laser-wielded"
|
||||
fire_delay = 8
|
||||
slot_flags = SLOT_BELT|SLOT_BACK
|
||||
w_class = ITEMSIZE_LARGE
|
||||
force = 10
|
||||
origin_tech = list(TECH_COMBAT = 3, TECH_MAGNET = 2)
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 2000)
|
||||
projectile_type = /obj/item/projectile/beam/midlaser
|
||||
// one_handed_penalty = 30
|
||||
|
||||
firemodes = list(
|
||||
list(mode_name="normal", fire_delay=8, projectile_type=/obj/item/projectile/beam/midlaser, charge_cost = 240),
|
||||
list(mode_name="suppressive", fire_delay=5, projectile_type=/obj/item/projectile/beam/weaklaser, charge_cost = 60),
|
||||
)
|
||||
|
||||
/obj/item/weapon/gun/energy/laser/mounted
|
||||
self_recharge = 1
|
||||
use_external_power = 1
|
||||
one_handed_penalty = 0 // Not sure if two-handing gets checked for mounted weapons, but better safe than sorry.
|
||||
|
||||
/obj/item/weapon/gun/energy/laser/practice
|
||||
name = "practice laser carbine"
|
||||
desc = "A modified version of the HI G40E, this one fires less concentrated energy bolts designed for target practice."
|
||||
projectile_type = /obj/item/projectile/beam/practice
|
||||
charge_cost = 48
|
||||
|
||||
cell_type = /obj/item/weapon/cell/device
|
||||
|
||||
firemodes = list(
|
||||
list(mode_name="normal", projectile_type=/obj/item/projectile/beam/practice, charge_cost = 48),
|
||||
list(mode_name="suppressive", projectile_type=/obj/item/projectile/beam/practice, charge_cost = 12),
|
||||
)
|
||||
|
||||
/obj/item/weapon/gun/energy/retro
|
||||
name = "retro laser"
|
||||
icon_state = "retro"
|
||||
item_state = "retro"
|
||||
desc = "An older model of the basic lasergun. Nevertheless, it is still quite deadly and easy to maintain, making it a favorite amongst pirates and other outlaws."
|
||||
slot_flags = SLOT_BELT
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
projectile_type = /obj/item/projectile/beam
|
||||
fire_delay = 10 //old technology
|
||||
|
||||
/obj/item/weapon/gun/energy/retro/mounted
|
||||
self_recharge = 1
|
||||
use_external_power = 1
|
||||
|
||||
/obj/item/weapon/gun/energy/retro/empty
|
||||
icon_state = "retro"
|
||||
cell_type = null
|
||||
|
||||
|
||||
/datum/category_item/catalogue/anomalous/precursor_a/alien_pistol
|
||||
name = "Precursor Alpha Weapon - Appendageheld Laser"
|
||||
desc = "This object strongly resembles a weapon, and if one were to pull the \
|
||||
trigger located on the handle of the object, it would fire a deadly \
|
||||
laser at whatever it was pointed at. The beam fired appears to cause too \
|
||||
much damage to whatever it would hit to have served as a long ranged repair tool, \
|
||||
therefore this object was most likely designed to be a deadly weapon. If so, this \
|
||||
has several implications towards its creators;\
|
||||
<br><br>\
|
||||
Firstly, it implies that these precursors, at some point during their development, \
|
||||
had needed to defend themselves, or otherwise had a need to utilize violence, and \
|
||||
as such created better tools to do so. It is unclear if violence was employed against \
|
||||
themselves as a form of in-fighting, or if violence was exclusive to outside species.\
|
||||
<br><br>\
|
||||
Secondly, the shape and design of the weapon implies that the creators of this \
|
||||
weapon were able to grasp objects, and be able to manipulate the trigger independently \
|
||||
from merely holding onto the weapon, making certain types of appendages like tentacles be \
|
||||
unlikely.\
|
||||
<br><br>\
|
||||
An interesting note about this weapon, when compared to contemporary energy weapons, is \
|
||||
that this gun appears to be inferior to modern laser weapons. The beam fired has less \
|
||||
of an ability to harm, and the power consumption appears to be higher than average for \
|
||||
a human-made energy side-arm. One possible explaination is that the creators of this \
|
||||
weapon, in their later years, had less of a need to optimize their capability for war, \
|
||||
and instead focused on other endeavors. Another explaination is that vast age of the weapon \
|
||||
may have caused it to degrade, yet still remain functional at a reduced capability."
|
||||
value = CATALOGUER_REWARD_MEDIUM
|
||||
|
||||
/obj/item/weapon/gun/energy/alien
|
||||
name = "alien pistol"
|
||||
desc = "A weapon that works very similarly to a traditional energy weapon. How this came to be will likely be a mystery for the ages."
|
||||
catalogue_data = list(/datum/category_item/catalogue/anomalous/precursor_a/alien_pistol)
|
||||
icon_state = "alienpistol"
|
||||
item_state = "alienpistol"
|
||||
fire_delay = 10 // Handguns should be inferior to two-handed weapons. Even alien ones I suppose.
|
||||
charge_cost = 480 // Five shots.
|
||||
|
||||
projectile_type = /obj/item/projectile/beam/cyan
|
||||
cell_type = /obj/item/weapon/cell/device/weapon/recharge/alien // Self charges.
|
||||
origin_tech = list(TECH_COMBAT = 8, TECH_MAGNET = 7)
|
||||
modifystate = "alienpistol"
|
||||
|
||||
|
||||
/obj/item/weapon/gun/energy/captain
|
||||
name = "antique laser gun"
|
||||
icon_state = "caplaser"
|
||||
item_state = "caplaser"
|
||||
desc = "A rare weapon, handcrafted by a now defunct specialty manufacturer on Luna for a small fortune. It's certainly aged well."
|
||||
force = 5
|
||||
slot_flags = SLOT_BELT
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
projectile_type = /obj/item/projectile/beam
|
||||
origin_tech = null
|
||||
fire_delay = 10 //Old pistol
|
||||
charge_cost = 480 //to compensate a bit for self-recharging
|
||||
cell_type = /obj/item/weapon/cell/device/weapon/recharge/captain
|
||||
battery_lock = 1
|
||||
|
||||
/obj/item/weapon/gun/energy/lasercannon
|
||||
name = "laser cannon"
|
||||
desc = "With the laser cannon, the lasing medium is enclosed in a tube lined with uranium-235 and subjected to high neutron \
|
||||
flux in a nuclear reactor core. This incredible technology may help YOU achieve high excitation rates with small laser volumes!"
|
||||
icon_state = "lasercannon"
|
||||
item_state = null
|
||||
origin_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 3, TECH_POWER = 3)
|
||||
slot_flags = SLOT_BELT|SLOT_BACK
|
||||
projectile_type = /obj/item/projectile/beam/heavylaser/cannon
|
||||
battery_lock = 1
|
||||
fire_delay = 20
|
||||
w_class = ITEMSIZE_LARGE
|
||||
// one_handed_penalty = 90 // The thing's heavy and huge.
|
||||
accuracy = 45
|
||||
charge_cost = 600
|
||||
|
||||
/obj/item/weapon/gun/energy/lasercannon/mounted
|
||||
name = "mounted laser cannon"
|
||||
self_recharge = 1
|
||||
use_external_power = 1
|
||||
recharge_time = 10
|
||||
accuracy = 0 // Mounted cannons are just fine the way they are.
|
||||
one_handed_penalty = 0 // Not sure if two-handing gets checked for mounted weapons, but better safe than sorry.
|
||||
projectile_type = /obj/item/projectile/beam/heavylaser
|
||||
charge_cost = 400
|
||||
fire_delay = 20
|
||||
|
||||
/obj/item/weapon/gun/energy/xray
|
||||
name = "xray laser gun"
|
||||
desc = "A high-power laser gun capable of expelling concentrated xray blasts, which are able to penetrate matter easier than \
|
||||
standard photonic beams, resulting in an effective 'anti-armor' energy weapon."
|
||||
icon_state = "xray"
|
||||
item_state = "xray"
|
||||
origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 3, TECH_MAGNET = 2)
|
||||
projectile_type = /obj/item/projectile/beam/xray
|
||||
charge_cost = 200
|
||||
|
||||
/obj/item/weapon/gun/energy/sniperrifle
|
||||
name = "marksman energy rifle"
|
||||
desc = "The HI DMR 9E is an older design of Hephaestus Industries. A designated marksman rifle capable of shooting powerful \
|
||||
ionized beams, this is a weapon to kill from a distance."
|
||||
icon_state = "sniper"
|
||||
item_state = "sniper"
|
||||
item_state_slots = list(slot_r_hand_str = "z8carbine", slot_l_hand_str = "z8carbine") //placeholder
|
||||
origin_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 5, TECH_POWER = 4)
|
||||
projectile_type = /obj/item/projectile/beam/sniper
|
||||
slot_flags = SLOT_BACK
|
||||
battery_lock = 1
|
||||
charge_cost = 600
|
||||
fire_delay = 35
|
||||
force = 10
|
||||
w_class = ITEMSIZE_HUGE // So it can't fit in a backpack.
|
||||
accuracy = -45 //shooting at the hip
|
||||
scoped_accuracy = 0
|
||||
// requires_two_hands = 1
|
||||
// one_handed_penalty = 60 // The weapon itself is heavy, and the long barrel makes it hard to hold steady with just one hand.
|
||||
|
||||
/obj/item/weapon/gun/energy/sniperrifle/verb/scope()
|
||||
set category = "Object"
|
||||
set name = "Use Scope"
|
||||
set popup_menu = 1
|
||||
|
||||
toggle_scope(2.0)
|
||||
|
||||
/obj/item/weapon/gun/energy/monorifle
|
||||
name = "antique mono-rifle"
|
||||
desc = "An old laser rifle. This one can only fire once before requiring recharging."
|
||||
description_fluff = "Modeled after ancient hunting rifles, this rifle was dubbed the 'Rainy Day Special' by some, due to its use as some barmens' fight-stopper of choice. One shot is all it takes, or so they say."
|
||||
icon_state = "eshotgun"
|
||||
item_state = "shotgun"
|
||||
origin_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 4, TECH_POWER = 3)
|
||||
projectile_type = /obj/item/projectile/beam/sniper
|
||||
slot_flags = SLOT_BACK
|
||||
charge_cost = 1300
|
||||
fire_delay = 20
|
||||
force = 8
|
||||
w_class = ITEMSIZE_LARGE
|
||||
accuracy = 10
|
||||
scoped_accuracy = 15
|
||||
var/scope_multiplier = 1.5
|
||||
|
||||
/obj/item/weapon/gun/energy/monorifle/verb/sights()
|
||||
set category = "Object"
|
||||
set name = "Aim Down Sights"
|
||||
set popup_menu = 1
|
||||
|
||||
toggle_scope(scope_multiplier)
|
||||
|
||||
/obj/item/weapon/gun/energy/monorifle/combat
|
||||
name = "combat mono-rifle"
|
||||
desc = "A modernized version of the mono-rifle. This one can fire twice before requiring recharging."
|
||||
description_fluff = "A modern design produced by a company once working from Saint Columbia, based on the antique mono-rifle 'Rainy Day Special' design."
|
||||
icon_state = "ecshotgun"
|
||||
item_state = "cshotgun"
|
||||
charge_cost = 1000
|
||||
force = 12
|
||||
accuracy = 0
|
||||
scoped_accuracy = 20
|
||||
|
||||
////////Laser Tag////////////////////
|
||||
|
||||
/obj/item/weapon/gun/energy/lasertag
|
||||
name = "laser tag gun"
|
||||
item_state = "laser"
|
||||
desc = "Standard issue weapon of the Imperial Guard"
|
||||
origin_tech = list(TECH_COMBAT = 1, TECH_MAGNET = 2)
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 2000)
|
||||
projectile_type = /obj/item/projectile/beam/lasertag/blue
|
||||
cell_type = /obj/item/weapon/cell/device/weapon/recharge
|
||||
battery_lock = 1
|
||||
var/required_vest
|
||||
|
||||
/obj/item/weapon/gun/energy/lasertag/special_check(var/mob/living/carbon/human/M)
|
||||
if(ishuman(M))
|
||||
if(!istype(M.wear_suit, required_vest))
|
||||
M << "<span class='warning'>You need to be wearing your laser tag vest!</span>"
|
||||
return 0
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/gun/energy/lasertag/blue
|
||||
icon_state = "bluetag"
|
||||
item_state = "bluetag"
|
||||
projectile_type = /obj/item/projectile/beam/lasertag/blue
|
||||
required_vest = /obj/item/clothing/suit/bluetag
|
||||
|
||||
/obj/item/weapon/gun/energy/lasertag/red
|
||||
icon_state = "redtag"
|
||||
item_state = "redtag"
|
||||
projectile_type = /obj/item/projectile/beam/lasertag/red
|
||||
required_vest = /obj/item/clothing/suit/redtag
|
||||
|
||||
/obj/item/weapon/gun/energy/lasertag/omni
|
||||
projectile_type = /obj/item/projectile/beam/lasertag/omni
|
||||
|
||||
// Laser scattergun, proof of concept.
|
||||
|
||||
/obj/item/weapon/gun/energy/lasershotgun
|
||||
name = "laser scattergun"
|
||||
icon = 'icons/obj/energygun.dmi'
|
||||
item_state = "laser"
|
||||
icon_state = "scatter"
|
||||
desc = "A strange Almachi weapon, utilizing a refracting prism to turn a single laser blast into a diverging cluster."
|
||||
origin_tech = list(TECH_COMBAT = 3, TECH_MAGNET = 1, TECH_MATERIAL = 4)
|
||||
|
||||
projectile_type = /obj/item/projectile/scatter/laser
|
||||
@@ -109,6 +109,8 @@ obj/item/weapon/gun/projectile/revolver/detective45/verb/rename_gun()
|
||||
options["H&K PT"] = "detective_panther"
|
||||
options["Vintage LeMat"] = "lemat_old"
|
||||
options["Webley MKVI "] = "webley"
|
||||
options["Lombardi Buzzard"] = "detective_buzzard"
|
||||
options["Constable Deluxe 2502"] = "detective_constable"
|
||||
var/choice = input(M,"Choose your sprite!","Resprite Gun") in options
|
||||
if(src && choice && !M.stat && in_range(M,src))
|
||||
icon_state = options[choice]
|
||||
@@ -275,4 +277,4 @@ obj/item/weapon/gun/projectile/revolver/detective45/verb/rename_gun()
|
||||
desc = "A shiny Mosley Autococker automatic revolver, with black accents. Marketed as the 'Revolver for the Modern Era'. Uses .44 magnum rounds."
|
||||
fire_delay = 5.7 //Autorevolver. Also synced with the animation
|
||||
fire_anim = "mosley_fire"
|
||||
origin_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 2)
|
||||
origin_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 2)
|
||||
|
||||
@@ -84,8 +84,17 @@
|
||||
var/accuracy = 0
|
||||
var/dispersion = 0.0
|
||||
|
||||
// Sub-munitions. Basically, multi-projectile shotgun, rather than pellets.
|
||||
var/use_submunitions = FALSE
|
||||
var/only_submunitions = FALSE // Will the projectile delete itself after firing the submunitions?
|
||||
var/list/submunitions = list() // Assoc list of the paths of any submunitions, and how many they are. [projectilepath] = [projectilecount].
|
||||
var/submunition_spread_max = 30 // Divided by 10 to get the percentile dispersion.
|
||||
var/submunition_spread_min = 5 // Above.
|
||||
var/force_max_submunition_spread = FALSE // Do we just force the maximum?
|
||||
var/spread_submunition_damage = FALSE // Do we assign damage to our sub projectiles based on our main projectile damage?
|
||||
|
||||
var/damage = 10
|
||||
var/damage_type = BRUTE //BRUTE, BURN, TOX, OXY, CLONE, HALLOSS are the only things that should be in here
|
||||
var/damage_type = BRUTE //BRUTE, BURN, TOX, OXY, CLONE, HALLOSS, ELECTROCUTE, BIOACID are the only things that should be in here
|
||||
var/SA_bonus_damage = 0 // Some bullets inflict extra damage on simple animals.
|
||||
var/SA_vulnerability = null // What kind of simple animal the above bonus damage should be applied to. Set to null to apply to all SAs.
|
||||
var/nodamage = 0 //Determines if the projectile will skip any damage inflictions
|
||||
@@ -346,10 +355,18 @@
|
||||
/obj/item/projectile/proc/preparePixelProjectile(atom/target, atom/source, params, spread = 0)
|
||||
var/turf/curloc = get_turf(source)
|
||||
var/turf/targloc = get_turf(target)
|
||||
|
||||
if(istype(source, /atom/movable))
|
||||
var/atom/movable/MT = source
|
||||
if(MT.locs && MT.locs.len) // Multi tile!
|
||||
for(var/turf/T in MT.locs)
|
||||
if(get_dist(T, target) < get_turf(curloc))
|
||||
curloc = get_turf(T)
|
||||
|
||||
trajectory_ignore_forcemove = TRUE
|
||||
forceMove(get_turf(source))
|
||||
trajectory_ignore_forcemove = FALSE
|
||||
starting = get_turf(source)
|
||||
starting = curloc
|
||||
original = target
|
||||
if(targloc || !params)
|
||||
yo = targloc.y - curloc.y
|
||||
@@ -641,6 +658,37 @@
|
||||
if(get_turf(target) == get_turf(src))
|
||||
direct_target = target
|
||||
|
||||
if(use_submunitions && submunitions.len)
|
||||
var/temp_min_spread = 0
|
||||
if(force_max_submunition_spread)
|
||||
temp_min_spread = submunition_spread_max
|
||||
else
|
||||
temp_min_spread = submunition_spread_min
|
||||
|
||||
var/damage_override = null
|
||||
|
||||
if(spread_submunition_damage)
|
||||
damage_override = damage
|
||||
if(nodamage)
|
||||
damage_override = 0
|
||||
|
||||
var/projectile_count = 0
|
||||
|
||||
for(var/proj in submunitions)
|
||||
projectile_count += submunitions[proj]
|
||||
|
||||
damage_override = round(damage_override / max(1, projectile_count))
|
||||
|
||||
for(var/path in submunitions)
|
||||
for(var/count = 1 to submunitions[path])
|
||||
var/obj/item/projectile/SM = new path(get_turf(loc))
|
||||
SM.shot_from = shot_from
|
||||
SM.silenced = silenced
|
||||
SM.dispersion = rand(temp_min_spread, submunition_spread_max) / 10
|
||||
if(!isnull(damage_override))
|
||||
SM.damage = damage_override
|
||||
SM.launch_projectile(target, target_zone, user, params, angle_override)
|
||||
|
||||
preparePixelProjectile(target, user? user : get_turf(src), params, forced_spread)
|
||||
return fire(angle_override, direct_target)
|
||||
|
||||
@@ -651,3 +699,45 @@
|
||||
silenced = launcher.silenced
|
||||
|
||||
return launch_projectile(target, target_zone, user, params, angle_override, forced_spread)
|
||||
|
||||
/obj/item/projectile/proc/launch_projectile_from_turf(atom/target, target_zone, mob/user, params, angle_override, forced_spread = 0)
|
||||
original = target
|
||||
def_zone = check_zone(target_zone)
|
||||
firer = user
|
||||
var/direct_target
|
||||
if(get_turf(target) == get_turf(src))
|
||||
direct_target = target
|
||||
|
||||
if(use_submunitions && submunitions.len)
|
||||
var/temp_min_spread = 0
|
||||
if(force_max_submunition_spread)
|
||||
temp_min_spread = submunition_spread_max
|
||||
else
|
||||
temp_min_spread = submunition_spread_min
|
||||
|
||||
var/damage_override = null
|
||||
|
||||
if(spread_submunition_damage)
|
||||
damage_override = damage
|
||||
if(nodamage)
|
||||
damage_override = 0
|
||||
|
||||
var/projectile_count = 0
|
||||
|
||||
for(var/proj in submunitions)
|
||||
projectile_count += submunitions[proj]
|
||||
|
||||
damage_override = round(damage_override / max(1, projectile_count))
|
||||
|
||||
for(var/path in submunitions)
|
||||
for(var/count = 1 to submunitions[path])
|
||||
var/obj/item/projectile/SM = new path(get_turf(loc))
|
||||
SM.shot_from = shot_from
|
||||
SM.silenced = silenced
|
||||
SM.dispersion = rand(temp_min_spread, submunition_spread_max) / 10
|
||||
if(!isnull(damage_override))
|
||||
SM.damage = damage_override
|
||||
SM.launch_projectile_from_turf(target, target_zone, user, params, angle_override)
|
||||
|
||||
preparePixelProjectile(target, get_turf(src), params, forced_spread)
|
||||
return fire(angle_override, direct_target)
|
||||
|
||||
@@ -63,7 +63,7 @@
|
||||
icon_state = "emitter"
|
||||
fire_sound = 'sound/weapons/emitter.ogg'
|
||||
light_color = "#00CC33"
|
||||
excavation_amount = 70 // 3 shots to mine a turf
|
||||
excavation_amount = 140 // 2 shots to dig a standard rock turf. Superior due to being a mounted tool beam, to make it actually viable.
|
||||
|
||||
muzzle_type = /obj/effect/projectile/muzzle/emitter
|
||||
tracer_type = /obj/effect/projectile/tracer/emitter
|
||||
@@ -89,6 +89,7 @@
|
||||
/obj/item/projectile/beam/cyan
|
||||
name = "cyan beam"
|
||||
icon_state = "cyan"
|
||||
fire_sound = 'sound/weapons/eluger.ogg'
|
||||
damage = 40
|
||||
light_color = "#00C6FF"
|
||||
|
||||
@@ -125,62 +126,52 @@
|
||||
tracer_type = /obj/effect/projectile/tracer/emitter
|
||||
impact_type = /obj/effect/projectile/impact/emitter
|
||||
|
||||
/obj/item/projectile/beam/lastertag/blue
|
||||
/obj/item/projectile/beam/lasertag
|
||||
name = "lasertag beam"
|
||||
icon_state = "bluelaser"
|
||||
damage = 0
|
||||
eyeblur = 0
|
||||
no_attack_log = 1
|
||||
damage_type = BURN
|
||||
check_armour = "laser"
|
||||
light_color = "#0066FF"
|
||||
|
||||
combustion = FALSE
|
||||
|
||||
/obj/item/projectile/beam/lasertag/blue
|
||||
icon_state = "bluelaser"
|
||||
light_color = "#0066FF"
|
||||
|
||||
muzzle_type = /obj/effect/projectile/muzzle/laser_blue
|
||||
tracer_type = /obj/effect/projectile/tracer/laser_blue
|
||||
impact_type = /obj/effect/projectile/impact/laser_blue
|
||||
|
||||
/obj/item/projectile/beam/lastertag/blue/on_hit(var/atom/target, var/blocked = 0)
|
||||
if(istype(target, /mob/living/carbon/human))
|
||||
/obj/item/projectile/beam/lasertag/blue/on_hit(var/atom/target, var/blocked = 0)
|
||||
if(ishuman(target))
|
||||
var/mob/living/carbon/human/M = target
|
||||
if(istype(M.wear_suit, /obj/item/clothing/suit/redtag))
|
||||
M.Weaken(5)
|
||||
return 1
|
||||
|
||||
/obj/item/projectile/beam/lastertag/red
|
||||
name = "lasertag beam"
|
||||
/obj/item/projectile/beam/lasertag/red
|
||||
icon_state = "laser"
|
||||
damage = 0
|
||||
no_attack_log = 1
|
||||
damage_type = BURN
|
||||
check_armour = "laser"
|
||||
light_color = "#FF0D00"
|
||||
|
||||
combustion = FALSE
|
||||
|
||||
/obj/item/projectile/beam/lastertag/red/on_hit(var/atom/target, var/blocked = 0)
|
||||
if(istype(target, /mob/living/carbon/human))
|
||||
/obj/item/projectile/beam/lasertag/red/on_hit(var/atom/target, var/blocked = 0)
|
||||
if(ishuman(target))
|
||||
var/mob/living/carbon/human/M = target
|
||||
if(istype(M.wear_suit, /obj/item/clothing/suit/bluetag))
|
||||
M.Weaken(5)
|
||||
return 1
|
||||
|
||||
/obj/item/projectile/beam/lastertag/omni//A laser tag bolt that stuns EVERYONE
|
||||
name = "lasertag beam"
|
||||
/obj/item/projectile/beam/lasertag/omni//A laser tag bolt that stuns EVERYONE
|
||||
icon_state = "omnilaser"
|
||||
damage = 0
|
||||
damage_type = BURN
|
||||
check_armour = "laser"
|
||||
light_color = "#00C6FF"
|
||||
|
||||
combustion = FALSE
|
||||
|
||||
muzzle_type = /obj/effect/projectile/muzzle/laser_omni
|
||||
tracer_type = /obj/effect/projectile/tracer/laser_omni
|
||||
impact_type = /obj/effect/projectile/impact/laser_omni
|
||||
|
||||
/obj/item/projectile/beam/lastertag/omni/on_hit(var/atom/target, var/blocked = 0)
|
||||
if(istype(target, /mob/living/carbon/human))
|
||||
/obj/item/projectile/beam/lasertag/omni/on_hit(var/atom/target, var/blocked = 0)
|
||||
if(ishuman(target))
|
||||
var/mob/living/carbon/human/M = target
|
||||
if((istype(M.wear_suit, /obj/item/clothing/suit/bluetag))||(istype(M.wear_suit, /obj/item/clothing/suit/redtag)))
|
||||
M.Weaken(5)
|
||||
@@ -222,4 +213,17 @@
|
||||
/obj/item/projectile/beam/stun/med
|
||||
name = "stun beam"
|
||||
icon_state = "stun"
|
||||
agony = 30
|
||||
agony = 30
|
||||
|
||||
/obj/item/projectile/beam/shock
|
||||
name = "shock beam"
|
||||
icon_state = "lightning"
|
||||
damage_type = ELECTROCUTE
|
||||
|
||||
muzzle_type = /obj/effect/projectile/muzzle/lightning
|
||||
tracer_type = /obj/effect/projectile/tracer/lightning
|
||||
impact_type = /obj/effect/projectile/impact/lightning
|
||||
|
||||
damage = 30
|
||||
agony = 15
|
||||
eyeblur = 2
|
||||
|
||||
@@ -0,0 +1,62 @@
|
||||
|
||||
/*
|
||||
* Home of the purely submunition projectiles.
|
||||
*/
|
||||
|
||||
/obj/item/projectile/scatter
|
||||
name = "scatter projectile"
|
||||
icon = 'icons/obj/projectiles.dmi'
|
||||
icon_state = "bullet"
|
||||
density = FALSE
|
||||
anchored = TRUE
|
||||
unacidable = TRUE
|
||||
pass_flags = PASSTABLE
|
||||
mouse_opacity = 0
|
||||
|
||||
use_submunitions = TRUE
|
||||
|
||||
damage = 8
|
||||
spread_submunition_damage = TRUE
|
||||
only_submunitions = TRUE
|
||||
range = 0 // Immediately deletes itself after firing, as its only job is to fire other projectiles.
|
||||
|
||||
submunition_spread_max = 30
|
||||
submunition_spread_min = 2
|
||||
|
||||
submunitions = list(
|
||||
/obj/item/projectile/bullet/pellet/shotgun/flak = 3
|
||||
)
|
||||
|
||||
/obj/item/projectile/scatter/laser
|
||||
damage = 40
|
||||
|
||||
submunition_spread_max = 40
|
||||
submunition_spread_min = 10
|
||||
|
||||
submunitions = list(
|
||||
/obj/item/projectile/beam/prismatic = 4
|
||||
)
|
||||
|
||||
/obj/item/projectile/beam/prismatic
|
||||
name = "prismatic beam"
|
||||
icon_state = "omnilaser"
|
||||
damage = 10
|
||||
damage_type = BURN
|
||||
check_armour = "laser"
|
||||
light_color = "#00C6FF"
|
||||
|
||||
stutter = 2
|
||||
|
||||
muzzle_type = /obj/effect/projectile/muzzle/laser_omni
|
||||
tracer_type = /obj/effect/projectile/tracer/laser_omni
|
||||
impact_type = /obj/effect/projectile/impact/laser_omni
|
||||
|
||||
/obj/item/projectile/scatter/ion
|
||||
damage = 20
|
||||
|
||||
submunition_spread_max = 40
|
||||
submunition_spread_min = 10
|
||||
|
||||
submunitions = list(
|
||||
/obj/item/projectile/bullet/shotgun/ion = 3
|
||||
)
|
||||
@@ -17,5 +17,7 @@
|
||||
user.face_atom(A)
|
||||
if(ismob(A) && user.aiming)
|
||||
user.aiming.aim_at(A, src)
|
||||
if(!isliving(A))
|
||||
return 0
|
||||
return 1
|
||||
return 0
|
||||
Reference in New Issue
Block a user