9990337f32
Ah yes lets just change the basic portal generation proc but not change the actual calls to it for the most part, what could go wrong?!
339 lines
12 KiB
Plaintext
339 lines
12 KiB
Plaintext
/obj/item/gun/energy/ionrifle
|
|
name = "ion rifle"
|
|
desc = "A man-portable anti-armor weapon designed to disable mechanical threats at range."
|
|
icon_state = "ionrifle"
|
|
item_state = null //so the human update icon uses the icon_state instead.
|
|
can_flashlight = 1
|
|
w_class = WEIGHT_CLASS_HUGE
|
|
flags_1 = CONDUCT_1
|
|
slot_flags = ITEM_SLOT_BACK
|
|
ammo_type = list(/obj/item/ammo_casing/energy/ion)
|
|
ammo_x_offset = 3
|
|
flight_x_offset = 17
|
|
flight_y_offset = 9
|
|
|
|
/obj/item/gun/energy/ionrifle/emp_act(severity)
|
|
return
|
|
|
|
/obj/item/gun/energy/ionrifle/carbine
|
|
name = "ion carbine"
|
|
desc = "The MK.II Prototype Ion Projector is a lightweight carbine version of the larger ion rifle, built to be ergonomic and efficient."
|
|
icon_state = "ioncarbine"
|
|
w_class = WEIGHT_CLASS_NORMAL
|
|
slot_flags = ITEM_SLOT_BELT
|
|
pin = null
|
|
ammo_x_offset = 2
|
|
flight_x_offset = 18
|
|
flight_y_offset = 11
|
|
|
|
/obj/item/gun/energy/decloner
|
|
name = "biological demolecularisor"
|
|
desc = "A gun that discharges high amounts of controlled radiation to slowly break a target into component elements."
|
|
icon_state = "decloner"
|
|
ammo_type = list(/obj/item/ammo_casing/energy/declone)
|
|
pin = null
|
|
ammo_x_offset = 1
|
|
|
|
/obj/item/gun/energy/decloner/update_overlays()
|
|
..()
|
|
var/obj/item/ammo_casing/energy/shot = ammo_type[current_firemode_index]
|
|
if(!QDELETED(cell) && (cell.charge > shot.e_cost))
|
|
. += "decloner_spin"
|
|
|
|
/obj/item/gun/energy/floragun
|
|
name = "floral somatoray"
|
|
desc = "A tool that discharges controlled radiation which induces mutation in plant cells."
|
|
icon_state = "flora"
|
|
item_state = "gun"
|
|
ammo_type = list(/obj/item/ammo_casing/energy/flora/yield, /obj/item/ammo_casing/energy/flora/mut)
|
|
modifystate = 1
|
|
ammo_x_offset = 1
|
|
selfcharge = EGUN_SELFCHARGE
|
|
|
|
/obj/item/gun/energy/meteorgun
|
|
name = "meteor gun"
|
|
desc = "For the love of god, make sure you're aiming this the right way!"
|
|
icon_state = "meteor_gun"
|
|
item_state = "c20r"
|
|
w_class = WEIGHT_CLASS_BULKY
|
|
ammo_type = list(/obj/item/ammo_casing/energy/meteor)
|
|
cell_type = "/obj/item/stock_parts/cell/potato"
|
|
clumsy_check = 0 //Admin spawn only, might as well let clowns use it.
|
|
selfcharge = EGUN_SELFCHARGE
|
|
|
|
/obj/item/gun/energy/meteorgun/pen
|
|
name = "meteor pen"
|
|
desc = "The pen is mightier than the sword."
|
|
icon = 'icons/obj/bureaucracy.dmi'
|
|
icon_state = "pen"
|
|
item_state = "pen"
|
|
lefthand_file = 'icons/mob/inhands/items_lefthand.dmi'
|
|
righthand_file = 'icons/mob/inhands/items_righthand.dmi'
|
|
w_class = WEIGHT_CLASS_TINY
|
|
|
|
/obj/item/gun/energy/mindflayer
|
|
name = "\improper Mind Flayer"
|
|
desc = "A prototype weapon recovered from the ruins of Research-Station Epsilon."
|
|
icon_state = "xray"
|
|
item_state = null
|
|
ammo_type = list(/obj/item/ammo_casing/energy/mindflayer)
|
|
ammo_x_offset = 2
|
|
|
|
/obj/item/gun/energy/kinetic_accelerator/crossbow
|
|
name = "mini energy crossbow"
|
|
desc = "A weapon favored by syndicate stealth specialists."
|
|
icon_state = "crossbow"
|
|
item_state = "crossbow"
|
|
w_class = WEIGHT_CLASS_SMALL
|
|
custom_materials = list(/datum/material/iron=2000)
|
|
suppressed = TRUE
|
|
ammo_type = list(/obj/item/ammo_casing/energy/bolt)
|
|
weapon_weight = WEAPON_LIGHT
|
|
inaccuracy_modifier = 0.25
|
|
obj_flags = 0
|
|
overheat_time = 20
|
|
holds_charge = TRUE
|
|
unique_frequency = TRUE
|
|
can_flashlight = 0
|
|
max_mod_capacity = 0
|
|
|
|
/obj/item/gun/energy/kinetic_accelerator/crossbow/halloween
|
|
name = "candy corn crossbow"
|
|
desc = "A weapon favored by Syndicate trick-or-treaters."
|
|
icon_state = "crossbow_halloween"
|
|
item_state = "crossbow"
|
|
ammo_type = list(/obj/item/ammo_casing/energy/bolt/halloween)
|
|
|
|
/obj/item/gun/energy/kinetic_accelerator/crossbow/large
|
|
name = "energy crossbow"
|
|
desc = "A reverse engineered weapon using syndicate technology. This thing seems incredibly unwieldly, and seems to be using similar internals to the Proto-Kinetic Accelerator. It might not play nice when brought near weapons similar to it."
|
|
icon_state = "crossbowlarge"
|
|
w_class = WEIGHT_CLASS_BULKY
|
|
custom_materials = list(/datum/material/iron=4000)
|
|
suppressed = null
|
|
ammo_type = list(/obj/item/ammo_casing/energy/bolt/large)
|
|
weapon_weight = WEAPON_HEAVY
|
|
pin = null
|
|
unique_frequency = FALSE
|
|
|
|
/obj/item/gun/energy/plasmacutter
|
|
name = "plasma cutter"
|
|
desc = "A mining tool capable of expelling concentrated plasma bursts. You could use it to cut limbs off xenos! Or, you know, mine stuff."
|
|
icon_state = "plasmacutter"
|
|
item_state = "plasmacutter"
|
|
ammo_type = list(/obj/item/ammo_casing/energy/plasma)
|
|
flags_1 = CONDUCT_1
|
|
attack_verb = list("attacked", "slashed", "cut", "sliced")
|
|
force = 12
|
|
sharpness = SHARP_EDGED
|
|
inaccuracy_modifier = 0.25
|
|
can_charge = 0
|
|
|
|
heat = 3800
|
|
usesound = list('sound/items/welder.ogg', 'sound/items/welder2.ogg')
|
|
tool_behaviour = TOOL_WELDER
|
|
toolspeed = 0.7 //plasmacutters can be used as welders, and are faster than standard welders
|
|
|
|
/obj/item/gun/energy/plasmacutter/ComponentInitialize()
|
|
. = ..()
|
|
AddComponent(/datum/component/butchering, 25, 105, 0, 'sound/weapons/plasma_cutter.ogg')
|
|
AddElement(/datum/element/update_icon_blocker)
|
|
|
|
/obj/item/gun/energy/plasmacutter/examine(mob/user)
|
|
. = ..()
|
|
if(cell)
|
|
. += "<span class='notice'>[src] is [round(cell.percent())]% charged.</span>"
|
|
|
|
/obj/item/gun/energy/plasmacutter/attackby(obj/item/I, mob/user)
|
|
if(istype(I, /obj/item/stack/sheet/mineral/plasma))
|
|
I.use(1)
|
|
cell.give(1000)
|
|
to_chat(user, "<span class='notice'>You insert [I] in [src], recharging it.</span>")
|
|
else if(istype(I, /obj/item/stack/ore/plasma))
|
|
I.use(1)
|
|
cell.give(500)
|
|
to_chat(user, "<span class='notice'>You insert [I] in [src], recharging it.</span>")
|
|
else
|
|
..()
|
|
|
|
// Tool procs, in case plasma cutter is used as welder
|
|
/obj/item/gun/energy/plasmacutter/tool_use_check(mob/living/user, amount)
|
|
if(!QDELETED(cell) && (cell.charge >= amount * 100))
|
|
return TRUE
|
|
|
|
to_chat(user, "<span class='warning'>You need more charge to complete this task!</span>")
|
|
return FALSE
|
|
|
|
/obj/item/gun/energy/plasmacutter/use(amount)
|
|
return cell.use(amount * 100)
|
|
|
|
/obj/item/gun/energy/plasmacutter/adv
|
|
name = "advanced plasma cutter"
|
|
icon_state = "adv_plasmacutter"
|
|
force = 15
|
|
ammo_type = list(/obj/item/ammo_casing/energy/plasma/adv)
|
|
|
|
/obj/item/gun/energy/wormhole_projector
|
|
name = "bluespace wormhole projector"
|
|
desc = "A projector that emits high density quantum-coupled bluespace beams."
|
|
ammo_type = list(/obj/item/ammo_casing/energy/wormhole, /obj/item/ammo_casing/energy/wormhole/orange)
|
|
item_state = null
|
|
icon_state = "wormhole_projector"
|
|
pin = null
|
|
inaccuracy_modifier = 0.25
|
|
automatic_charge_overlays = FALSE
|
|
var/obj/effect/portal/p_blue
|
|
var/obj/effect/portal/p_orange
|
|
var/atmos_link = FALSE
|
|
|
|
/obj/item/gun/energy/wormhole_projector/update_icon_state()
|
|
icon_state = "[initial(icon_state)][current_firemode_index]"
|
|
item_state = icon_state
|
|
|
|
/obj/item/gun/energy/wormhole_projector/update_ammo_types()
|
|
. = ..()
|
|
for(var/i in 1 to ammo_type.len)
|
|
var/obj/item/ammo_casing/energy/wormhole/W = ammo_type[i]
|
|
if(istype(W))
|
|
W.gun = src
|
|
var/obj/item/projectile/beam/wormhole/WH = W.BB
|
|
if(istype(WH))
|
|
WH.gun = src
|
|
|
|
/obj/item/gun/energy/wormhole_projector/process_chamber()
|
|
..()
|
|
select_fire()
|
|
|
|
/obj/item/gun/energy/wormhole_projector/proc/on_portal_destroy(obj/effect/portal/P)
|
|
if(P == p_blue)
|
|
p_blue = null
|
|
else if(P == p_orange)
|
|
p_orange = null
|
|
|
|
/obj/item/gun/energy/wormhole_projector/proc/has_blue_portal()
|
|
if(istype(p_blue) && !QDELETED(p_blue))
|
|
return TRUE
|
|
return FALSE
|
|
|
|
/obj/item/gun/energy/wormhole_projector/proc/has_orange_portal()
|
|
if(istype(p_orange) && !QDELETED(p_orange))
|
|
return TRUE
|
|
return FALSE
|
|
|
|
/obj/item/gun/energy/wormhole_projector/proc/crosslink()
|
|
if(!has_blue_portal() && !has_orange_portal())
|
|
return
|
|
if(!has_blue_portal() && has_orange_portal())
|
|
p_orange.link_portal(null)
|
|
return
|
|
if(!has_orange_portal() && has_blue_portal())
|
|
p_blue.link_portal(null)
|
|
return
|
|
p_orange.link_portal(p_blue)
|
|
p_blue.link_portal(p_orange)
|
|
|
|
/obj/item/gun/energy/wormhole_projector/proc/create_portal(obj/item/projectile/beam/wormhole/W, turf/target)
|
|
var/obj/effect/portal/P = new /obj/effect/portal(target, 300, null, FALSE, null, atmos_link)
|
|
if(istype(W, /obj/item/projectile/beam/wormhole/orange))
|
|
qdel(p_orange)
|
|
p_orange = P
|
|
P.icon_state = "portal1"
|
|
else
|
|
qdel(p_blue)
|
|
p_blue = P
|
|
crosslink()
|
|
|
|
/* 3d printer 'pseudo guns' for borgs */
|
|
|
|
/obj/item/gun/energy/printer
|
|
name = "cyborg lmg"
|
|
desc = "A LMG that fires 3D-printed flechettes. They are slowly resupplied using the cyborg's internal power source."
|
|
icon_state = "l6closed0"
|
|
icon = 'icons/obj/guns/projectile.dmi'
|
|
cell_type = "/obj/item/stock_parts/cell/secborg"
|
|
ammo_type = list(/obj/item/ammo_casing/energy/c3dbullet)
|
|
can_charge = 0
|
|
use_cyborg_cell = 1
|
|
|
|
/obj/item/gun/energy/printer/ComponentInitialize()
|
|
. = ..()
|
|
AddElement(/datum/element/update_icon_blocker)
|
|
|
|
/obj/item/gun/energy/printer/emp_act()
|
|
return
|
|
|
|
/obj/item/gun/energy/temperature
|
|
name = "temperature gun"
|
|
icon_state = "freezegun"
|
|
desc = "A gun that changes temperatures."
|
|
ammo_type = list(/obj/item/ammo_casing/energy/temp, /obj/item/ammo_casing/energy/temp/hot)
|
|
cell_type = "/obj/item/stock_parts/cell/high"
|
|
pin = null
|
|
|
|
/obj/item/gun/energy/temperature/security
|
|
name = "security temperature gun"
|
|
desc = "A weapon that can only be used to its full potential by the truly robust."
|
|
pin = /obj/item/firing_pin
|
|
|
|
/obj/item/gun/energy/laser/instakill
|
|
name = "instakill rifle"
|
|
icon_state = "instagib"
|
|
item_state = "instagib"
|
|
desc = "A specialized ASMD laser-rifle, capable of flat-out disintegrating most targets in a single hit."
|
|
ammo_type = list(/obj/item/ammo_casing/energy/instakill)
|
|
force = 60
|
|
|
|
/obj/item/gun/energy/laser/instakill/red
|
|
desc = "A specialized ASMD laser-rifle, capable of flat-out disintegrating most targets in a single hit. This one has a red design."
|
|
icon_state = "instagibred"
|
|
item_state = "instagibred"
|
|
ammo_type = list(/obj/item/ammo_casing/energy/instakill/red)
|
|
|
|
/obj/item/gun/energy/laser/instakill/blue
|
|
desc = "A specialized ASMD laser-rifle, capable of flat-out disintegrating most targets in a single hit. This one has a blue design."
|
|
icon_state = "instagibblue"
|
|
item_state = "instagibblue"
|
|
ammo_type = list(/obj/item/ammo_casing/energy/instakill/blue)
|
|
|
|
/obj/item/gun/energy/laser/instakill/emp_act() //implying you could stop the instagib
|
|
return
|
|
|
|
/obj/item/gun/energy/gravity_gun
|
|
name = "one-point bluespace-gravitational manipulator"
|
|
desc = "An experimental, multi-mode device that fires bolts of Zero-Point Energy, causing local distortions in gravity."
|
|
ammo_type = list(/obj/item/ammo_casing/energy/gravity/repulse, /obj/item/ammo_casing/energy/gravity/attract, /obj/item/ammo_casing/energy/gravity/chaos)
|
|
item_state = "gravity_gun"
|
|
icon_state = "gravity_gun"
|
|
pin = null
|
|
var/power = 4
|
|
|
|
/obj/item/gun/energy/gravity_gun/security
|
|
pin = /obj/item/firing_pin
|
|
|
|
//Emitter Gun
|
|
|
|
/obj/item/gun/energy/emitter
|
|
name = "Emitter Carbine"
|
|
desc = "A small emitter fitted into a handgun case, do to size constraints and safety it can only shoot about ten times when fully charged."
|
|
icon_state = "emitter_carbine"
|
|
force = 12
|
|
w_class = WEIGHT_CLASS_SMALL
|
|
inaccuracy_modifier = 0.25
|
|
cell_type = /obj/item/stock_parts/cell/super
|
|
ammo_type = list(/obj/item/ammo_casing/energy/emitter)
|
|
automatic_charge_overlays = FALSE
|
|
|
|
/obj/item/gun/energy/emitter/update_icon_state()
|
|
var/obj/item/ammo_casing/energy/shot = ammo_type[current_firemode_index]
|
|
if(!QDELETED(cell) && (cell.charge > shot.e_cost))
|
|
icon_state = "emitter_carbine_empty"
|
|
else
|
|
icon_state = "emitter_carbine"
|
|
|
|
//the pickle ray
|
|
/obj/item/gun/energy/pickle_gun
|
|
name = "pickle ray"
|
|
desc = "funniest shit i've ever seen"
|
|
icon_state = "decloner"
|
|
no_pin_required = TRUE
|
|
ammo_type = list(/obj/item/ammo_casing/energy/pickle) |