mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-21 12:02:31 +01:00
For a robust crafting system, I need a new materials framework. For a new materials framework, I need to clean up reagents. To clean up reagents, I need to pare down foods from reagent holders. To pare down foods from reagent holders, I need to port edibility components. To port edibility components, I need to port processing components. To port processing components, I need to port tool behaviors. This is all back-end code, no new features or functionality from this.
245 lines
10 KiB
Plaintext
245 lines
10 KiB
Plaintext
/obj/item/gun/energy/blaster
|
|
name = "blaster pistol"
|
|
desc = "A tiny energy pistol converted to fire off energy bolts rather than lasers beams."
|
|
icon = 'icons/obj/guns/blaster_pistol.dmi'
|
|
icon_state = "blaster_pistol"
|
|
item_state = "blaster_pistol"
|
|
has_item_ratio = FALSE
|
|
fire_sound = 'sound/weapons/laser1.ogg'
|
|
slot_flags = SLOT_BELT|SLOT_HOLSTER
|
|
w_class = WEIGHT_CLASS_SMALL
|
|
force = 11
|
|
origin_tech = list(TECH_COMBAT = 2, TECH_MAGNET = 2)
|
|
matter = list(DEFAULT_WALL_MATERIAL = 2000)
|
|
offhand_accuracy = 1
|
|
projectile_type = /obj/projectile/energy/blaster
|
|
max_shots = 12
|
|
|
|
burst_delay = 2
|
|
sel_mode = 1
|
|
|
|
firemodes = list(
|
|
list(mode_name="semiauto", burst=1, fire_delay=0, move_delay=null, burst_accuracy=null, dispersion=null),
|
|
list(mode_name="2-round bursts", burst=2, fire_delay=null, move_delay=2, burst_accuracy=list(1,0,0), dispersion=list(0, 10, 15))
|
|
)
|
|
|
|
/obj/item/gun/energy/blaster/mounted/mech
|
|
name = "rapidfire blaster"
|
|
desc = "An aged but reliable rapidfire blaster tuned to expel projectiles at high fire rates."
|
|
fire_sound = 'sound/weapons/laserstrong.ogg'
|
|
projectile_type = /obj/projectile/energy/blaster/heavy
|
|
burst = 5
|
|
burst_delay = 3
|
|
max_shots = 30
|
|
charge_cost = 100
|
|
use_external_power = TRUE
|
|
self_recharge = TRUE
|
|
recharge_time = 1.5
|
|
dispersion = list(3,6,9,12)
|
|
firemodes = list()
|
|
|
|
/obj/item/gun/energy/blaster/pilot_special
|
|
name = "pilot's sidearm"
|
|
desc = "A robust, low in maintenance blaster pistol. Customized for peak performance and perfect for self-defense purposes."
|
|
max_shots = 12
|
|
accuracy = 2 // Likely to get nothing else, so they gotta know how to make it count.
|
|
offhand_accuracy = 2
|
|
|
|
/obj/item/gun/energy/blaster/revolver
|
|
name = "blaster revolver"
|
|
desc = "A robust eight-shot blaster."
|
|
icon = 'icons/obj/guns/blaster_revolver.dmi'
|
|
icon_state = "blaster_revolver"
|
|
item_state = "blaster_revolver"
|
|
fire_sound = 'sound/weapons/laserstrong.ogg'
|
|
projectile_type = /obj/projectile/energy/blaster
|
|
max_shots = 8
|
|
w_class = WEIGHT_CLASS_SMALL
|
|
|
|
/obj/item/gun/energy/blaster/revolver/unique_action(mob/living/user)
|
|
user.visible_message(SPAN_WARNING("\The [user] spins the cylinder of \the [src]!"), SPAN_WARNING("You spin the cylinder of \the [src]!"), SPAN_NOTICE("You hear something metallic spin and click."))
|
|
playsound(src.loc, 'sound/weapons/revolver_spin.ogg', 100, 1)
|
|
|
|
/obj/item/gun/energy/blaster/carbine
|
|
name = "blaster carbine"
|
|
desc = "A short-barreled blaster carbine meant for easy handling and comfort when in combat."
|
|
icon = 'icons/obj/guns/blaster_carbine.dmi'
|
|
icon_state = "blaster_carbine"
|
|
item_state = "blaster_carbine"
|
|
max_shots = 16
|
|
origin_tech = list(TECH_COMBAT = 3, TECH_MAGNET = 2)
|
|
offhand_accuracy = 0
|
|
projectile_type = /obj/projectile/energy/blaster
|
|
slot_flags = SLOT_BELT
|
|
w_class = WEIGHT_CLASS_NORMAL
|
|
|
|
/obj/item/gun/energy/blaster/rifle
|
|
name = "bolt slinger"
|
|
desc = "A blaster rifle which seems to work by accelerating particles and flinging them out in destructive bolts."
|
|
icon = 'icons/obj/guns/blaster_rifle.dmi'
|
|
icon_state = "blaster_rifle"
|
|
item_state = "blaster_rifle"
|
|
max_shots = 20
|
|
origin_tech = list(TECH_COMBAT = 4, TECH_MAGNET = 3)
|
|
offhand_accuracy = 0
|
|
projectile_type = /obj/projectile/energy/blaster/heavy
|
|
|
|
force = 15
|
|
slot_flags = SLOT_BACK
|
|
w_class = WEIGHT_CLASS_BULKY
|
|
can_bayonet = TRUE
|
|
knife_x_offset = 23
|
|
knife_y_offset = 13
|
|
fire_delay = 25
|
|
accuracy = -3
|
|
scoped_accuracy = 4
|
|
|
|
fire_delay_wielded = 10
|
|
accuracy_wielded = 1
|
|
|
|
is_wieldable = TRUE
|
|
|
|
/obj/item/gun/energy/blaster/rifle/verb/scope()
|
|
set category = "Object.Held"
|
|
set name = "Use Scope"
|
|
set src in usr
|
|
|
|
if(wielded)
|
|
toggle_scope(2.0, usr)
|
|
else
|
|
to_chat(usr, SPAN_WARNING("You can't look through the scope without stabilizing the rifle!"))
|
|
|
|
/obj/item/gun/energy/blaster/tcaf
|
|
name = "blaster rifle"
|
|
desc = "Developed by Zavodskoi Interstellar, the Z.I. Guardian is a burst-fire blaster rifle designed for the armed forces of the Republic of Biesel. Cheap, reliable and easy to mass-produce, these weapons can be seen across the branches of the TCAF."
|
|
desc_extended = "Released in early 2464, the Guardian is a modernisation of the outdated blasters previously used by the TCFL developed in conjunction with the Zo'ra Hive. Since its release, it has been widely adopted by Biesel, leading to a slight fall in NanoTrasen market share as Zavodskoi took their place as the main arms supplier of the TCAF."
|
|
icon = 'icons/obj/guns/blaster_ar.dmi'
|
|
icon_state = "blaster_ar"
|
|
item_state = "blaster_ar"
|
|
max_shots = 24
|
|
projectile_type = /obj/projectile/energy/blaster/heavy
|
|
fire_sound = 'sound/weapons/laserstrong.ogg'
|
|
slot_flags = SLOT_BACK
|
|
w_class = WEIGHT_CLASS_BULKY
|
|
is_wieldable = TRUE
|
|
can_bayonet = TRUE
|
|
knife_x_offset = 23
|
|
knife_y_offset = 13
|
|
accuracy = -1
|
|
fire_delay = ROF_RIFLE
|
|
fire_delay_wielded = 5
|
|
burst_delay = 4
|
|
accuracy_wielded = 2
|
|
origin_tech = list(TECH_COMBAT = 5, TECH_MAGNET = 3, TECH_PHORON = 2)
|
|
firemodes = list(
|
|
list(mode_name="semiauto", burst=1, fire_delay=ROF_INTERMEDIATE),
|
|
list(mode_name="3-round bursts", burst=3, burst_accuracy=list(2,1,1), dispersion=list(0, 7.5))
|
|
)
|
|
|
|
/obj/item/gun/energy/blaster/himeo
|
|
name = "himean assault blaster"
|
|
desc = "The standard infantry blaster of the Himean Planetary Guard. 'TO RESIST EVIL BY FORCE' is stamped on the side."
|
|
desc_extended = "Originally developed in 2351, the Type-11 \"Guthrie\" is a descendant of the first Himean-made weapons; haphazardly overcharged mining equipment. If it ain't broke, don't fix it; variants \
|
|
of this rifle have served in the United Syndicates' arsenal for generations, although none have matched modern improvements 'borrowed' from Zavodskoi Interstellar. Waterproof, spaceproof, idiot-proof; it's here to stay, even as advanced Xanan ballistics \
|
|
creep their way into the market. Ironically, lend-lease aid to the now-defunct League of Independent Corporate-Free Systems have seen a great deal of these end up in the hands of pirates."
|
|
icon = 'icons/obj/guns/himeo_blaster.dmi'
|
|
icon_state = "himeoblaster"
|
|
item_state = "himeoblaster"
|
|
projectile_type = /obj/projectile/energy/blaster/heavy
|
|
usesound = 'sound/weapons/plasma_cutter.ogg'
|
|
fire_sound = 'sound/weapons/gunshot/slammer.ogg'
|
|
cell_type = /obj/item/cell/hydrogen
|
|
needspin = FALSE // can't remove the cell if it has a pin
|
|
charge_cost = 500 // 20 mag
|
|
slot_flags = SLOT_BACK
|
|
w_class = WEIGHT_CLASS_BULKY
|
|
is_wieldable = TRUE
|
|
can_bayonet = FALSE
|
|
sharp = FALSE
|
|
edge = FALSE
|
|
accuracy = -1
|
|
fire_delay = ROF_RIFLE
|
|
fire_delay_wielded = 5
|
|
burst_delay = 4
|
|
accuracy_wielded = 2
|
|
origin_tech = list(TECH_COMBAT = 5, TECH_MAGNET = 3)
|
|
firemodes = list(
|
|
list(mode_name="semiauto", burst=1, fire_delay=ROF_INTERMEDIATE),
|
|
list(mode_name="2-round bursts", burst=2, burst_accuracy=list(2,1,1), dispersion=list(0, 7.5)),
|
|
list(mode_name="full auto", can_autofire=1, burst=1, fire_delay=5, fire_delay_wielded=2, one_hand_fa_penalty=12, burst_accuracy = list(0,-1,-1,-2,-2,-2,-3,-3), dispersion = list(5, 10, 15, 20, 25)) //same as the assault rifle
|
|
)
|
|
|
|
/obj/item/gun/energy/blaster/himeo/mechanics_hints(mob/user, distance, is_adjacent)
|
|
. += ..()
|
|
. += "When fully drained, this weapon will automatically eject the empty energy cell, allowing for rapid reload."
|
|
|
|
/obj/item/gun/energy/blaster/himeo/feedback_hints(mob/user, distance, is_adjacent)
|
|
. += ..()
|
|
if(is_adjacent)
|
|
if(power_supply)
|
|
. += SPAN_NOTICE("It has a <b>[capitalize_first_letters(power_supply.name)]</b> in the cell mount.")
|
|
else
|
|
. += SPAN_WARNING("It has no cell installed.")
|
|
|
|
/obj/item/gun/energy/blaster/himeo/attackby(obj/item/attacking_item, mob/user)
|
|
if(attacking_item.tool_behaviour == TOOL_SCREWDRIVER)
|
|
if(power_supply)
|
|
playsound(user, 'sound/machines/compbeep1.ogg', 40, FALSE)
|
|
to_chat(user, SPAN_NOTICE("You uninstall \the [power_supply]."))
|
|
power_supply.forceMove(get_turf(src))
|
|
if(ishuman(user))
|
|
var/mob/living/carbon/human/H = user
|
|
H.put_in_hands(power_supply)
|
|
power_supply = null
|
|
update_icon()
|
|
else
|
|
to_chat(user, SPAN_WARNING("\The [src] doesn't have a cell installed!"))
|
|
else if(istype(attacking_item, /obj/item/cell/hydrogen))
|
|
if(power_supply)
|
|
to_chat(user, SPAN_WARNING("\The [src] already has a cell in the chamber!"))
|
|
else
|
|
playsound(user, 'sound/weapons/kinetic_reload.ogg', 40, FALSE)
|
|
to_chat(user, SPAN_NOTICE("You install \the [attacking_item] into \the [src]."))
|
|
user.drop_from_inventory(attacking_item, src)
|
|
power_supply = attacking_item
|
|
update_icon()
|
|
else
|
|
..()
|
|
|
|
/obj/item/gun/energy/blaster/himeo/afterattack(atom/A, mob/living/user) // if the cell is drained, eject it so we're not fumbling for a screwdriver mid-shootout
|
|
..()
|
|
if(power_supply.charge == 0)
|
|
power_supply.forceMove(get_turf(src.loc))
|
|
user.visible_message(
|
|
"[power_supply] pops out of the cell mount!",
|
|
SPAN_NOTICE("[power_supply] pops out of \the [src] and clatters on the floor!")
|
|
)
|
|
power_supply.update_icon()
|
|
power_supply = null
|
|
playsound(user, 'sound/machines/rig/rig_retract.ogg', 40, FALSE)
|
|
update_icon()
|
|
|
|
/obj/item/gun/energy/blaster/himeo/pistol
|
|
name = "himean heavy blaster pistol"
|
|
desc = "The standard sidearm of the Himean Planetary Guard. For those revolutions you cannot fight with fists."
|
|
desc_extended = "A plasma cutter gave its life for the first Type-45 \"Sabo-Tabby\" pistol. Powered by the same hydrogen cells as the Type-11 \"Guthrie\" rifle, this robust model has earned the nickname of \
|
|
the 'One Big Handgun' in those foreign markets it has cropped up. What was initially seen as a flaw in the power converter led to its 'magnum'-sized blaster bolts."
|
|
icon = 'icons/obj/guns/himeo_pistol.dmi'
|
|
icon_state = "himeopistol"
|
|
item_state = "himeopistol"
|
|
projectile_type = /obj/projectile/energy/blaster/heavy
|
|
usesound = 'sound/weapons/plasma_cutter.ogg'
|
|
fire_sound = 'sound/weapons/laserstrong.ogg'
|
|
charge_cost = 1250 // leaky but lethal
|
|
slot_flags = SLOT_BELT|SLOT_HOLSTER
|
|
w_class = WEIGHT_CLASS_SMALL
|
|
force = 11
|
|
is_wieldable = FALSE
|
|
can_bayonet = FALSE
|
|
sharp = FALSE
|
|
edge = FALSE
|
|
origin_tech = list(TECH_COMBAT = 5, TECH_MAGNET = 3)
|
|
firemodes = list(
|
|
list(mode_name="semiauto", burst=1, fire_delay=ROF_INTERMEDIATE)
|
|
)
|