mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-06-05 06:05:58 +01:00
b9fa1bc8f4
## About The Pull Request This adds a craftable laser musket to the game. It's slow and unwieldy, but consistent! I'd be happy to tweak the numbers if it's too good/bad. This PR also adds an independent militia ERT, who travels the spinward sector to help defend stations! TO DO LIST: - [x] Finish worn sprites - [x] Add a crafting recipe on par with the pipegun - [x] Add bayonets - [x] Separate charging into two stages and REDO THE AUDIO AAAA - [x] Clean up code (Needs review, totally) Scrapped: - Possibly add overcharge mechanic (This is just beyond my skill level for now) - Find a unique sound for the weapon firing (We have a unique projectile, and I can't a sound that fits more than the laser gun one)      Inhands by RedSentry27 Suit sprite by Kinnebian Prime Laser Musket sprites by RedSentry27 Balance Considerations (ew): 25 damage (30 on prime) Normal wound 40 Stamina damage (45 on prime) Weak to armour (prime not weak to armor) 2 second charge time, needs to be charged twice No overcharge Requires two hands to hold (like a chainsaw) Crafting Recipe: One rifle stock Fifteen Cable Coils Four Iron Rods One micro laser One capacitor One pair of prescription glasses One drinking glass Craft for 10 seconds with a wirecutter and screwdriver Prime crafting recipe: (REQUIRES READING MAINTENANCE LOOT: "journal of a space ranger") One laser musket Fifteen cable coils Five silver One water recycler Fifteen units of nuka cola Craft for 30 seconds with a screwdriver while wearing cowboy boots and a cowboy hat ## Why It's Good For The Game The idea of assistants and revs forming firing lines in the halls to shoot eachother sounds hilarious. Besides, we need a parallel to the pipegun, and this is the funniest way to do so. ## Changelog 🆑 Cheshify, Kinnebian, and RedSentry27 add: Maintenance engineers have sent out blueprints across the sector for a new laser musket. admin: A new energy-gun toting ERT is available to send to the crew. --------- Co-authored-by: carlarctg <53100513+carlarctg@users.noreply.github.com>
241 lines
7.0 KiB
Plaintext
241 lines
7.0 KiB
Plaintext
/obj/projectile/beam
|
|
name = "laser"
|
|
icon_state = "laser"
|
|
pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE
|
|
damage = 20
|
|
damage_type = BURN
|
|
hitsound = 'sound/weapons/sear.ogg'
|
|
hitsound_wall = 'sound/weapons/effects/searwall.ogg'
|
|
armor_flag = LASER
|
|
eyeblur = 2
|
|
impact_effect_type = /obj/effect/temp_visual/impact_effect/red_laser
|
|
light_system = MOVABLE_LIGHT
|
|
light_range = 1
|
|
light_power = 1
|
|
light_color = COLOR_SOFT_RED
|
|
ricochets_max = 50 //Honk!
|
|
ricochet_chance = 80
|
|
reflectable = REFLECT_NORMAL
|
|
wound_bonus = -20
|
|
bare_wound_bonus = 10
|
|
|
|
|
|
/obj/projectile/beam/laser
|
|
tracer_type = /obj/effect/projectile/tracer/laser
|
|
muzzle_type = /obj/effect/projectile/muzzle/laser
|
|
impact_type = /obj/effect/projectile/impact/laser
|
|
wound_bonus = -20
|
|
damage = 25
|
|
bare_wound_bonus = 40
|
|
|
|
//overclocked laser, does a bit more damage but has much higher wound power (-0 vs -20)
|
|
/obj/projectile/beam/laser/hellfire
|
|
name = "hellfire laser"
|
|
wound_bonus = 0
|
|
damage = 30
|
|
speed = 0.6 // higher power = faster, that's how light works right
|
|
|
|
/obj/projectile/beam/laser/hellfire/Initialize(mapload)
|
|
. = ..()
|
|
transform *= 2
|
|
|
|
/obj/projectile/beam/laser/heavylaser
|
|
name = "heavy laser"
|
|
icon_state = "heavylaser"
|
|
damage = 40
|
|
tracer_type = /obj/effect/projectile/tracer/heavy_laser
|
|
muzzle_type = /obj/effect/projectile/muzzle/heavy_laser
|
|
impact_type = /obj/effect/projectile/impact/heavy_laser
|
|
|
|
/obj/projectile/beam/laser/on_hit(atom/target, blocked = FALSE)
|
|
. = ..()
|
|
if(iscarbon(target))
|
|
var/mob/living/carbon/M = target
|
|
M.ignite_mob()
|
|
else if(isturf(target))
|
|
impact_effect_type = /obj/effect/temp_visual/impact_effect/red_laser/wall
|
|
|
|
/obj/projectile/beam/laser/musket
|
|
name = "low-power laser"
|
|
icon_state = "laser_musket"
|
|
impact_effect_type = /obj/effect/temp_visual/impact_effect/purple_laser
|
|
damage = 25
|
|
stamina = 40
|
|
light_color = COLOR_STRONG_VIOLET
|
|
weak_against_armour = TRUE
|
|
|
|
/obj/projectile/beam/laser/musket/prime
|
|
name = "mid-power laser"
|
|
damage = 30
|
|
stamina = 45
|
|
weak_against_armour = FALSE
|
|
|
|
/obj/projectile/beam/weak
|
|
damage = 15
|
|
|
|
/obj/projectile/beam/weak/penetrator
|
|
armour_penetration = 50
|
|
|
|
/obj/projectile/beam/practice
|
|
name = "practice laser"
|
|
damage = 0
|
|
|
|
/obj/projectile/beam/scatter
|
|
name = "laser pellet"
|
|
icon_state = "scatterlaser"
|
|
damage = 5
|
|
|
|
/obj/projectile/beam/xray
|
|
name = "\improper X-ray beam"
|
|
icon_state = "xray"
|
|
damage = 15
|
|
range = 15
|
|
armour_penetration = 100
|
|
pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE | PASSCLOSEDTURF | PASSMACHINE | PASSSTRUCTURE | PASSDOORS
|
|
|
|
impact_effect_type = /obj/effect/temp_visual/impact_effect/green_laser
|
|
light_color = LIGHT_COLOR_GREEN
|
|
tracer_type = /obj/effect/projectile/tracer/xray
|
|
muzzle_type = /obj/effect/projectile/muzzle/xray
|
|
impact_type = /obj/effect/projectile/impact/xray
|
|
|
|
/obj/projectile/beam/disabler
|
|
name = "disabler beam"
|
|
icon_state = "omnilaser"
|
|
damage = 30
|
|
damage_type = STAMINA
|
|
armor_flag = ENERGY
|
|
hitsound = 'sound/weapons/sear_disabler.ogg'
|
|
eyeblur = 0
|
|
impact_effect_type = /obj/effect/temp_visual/impact_effect/blue_laser
|
|
light_color = LIGHT_COLOR_BLUE
|
|
tracer_type = /obj/effect/projectile/tracer/disabler
|
|
muzzle_type = /obj/effect/projectile/muzzle/disabler
|
|
impact_type = /obj/effect/projectile/impact/disabler
|
|
|
|
/obj/projectile/beam/disabler/weak
|
|
damage = 15
|
|
|
|
/obj/projectile/beam/pulse
|
|
name = "pulse"
|
|
icon_state = "u_laser"
|
|
damage = 50
|
|
impact_effect_type = /obj/effect/temp_visual/impact_effect/blue_laser
|
|
light_color = LIGHT_COLOR_BLUE
|
|
tracer_type = /obj/effect/projectile/tracer/pulse
|
|
muzzle_type = /obj/effect/projectile/muzzle/pulse
|
|
impact_type = /obj/effect/projectile/impact/pulse
|
|
wound_bonus = 10
|
|
|
|
/obj/projectile/beam/pulse/on_hit(atom/target, blocked = FALSE)
|
|
. = ..()
|
|
if (!QDELETED(target) && (isturf(target) || isstructure(target)))
|
|
if(isobj(target))
|
|
SSexplosions.med_mov_atom += target
|
|
else
|
|
SSexplosions.medturf += target
|
|
|
|
/obj/projectile/beam/pulse/shotgun
|
|
damage = 30
|
|
|
|
/obj/projectile/beam/pulse/heavy
|
|
name = "heavy pulse laser"
|
|
icon_state = "pulse1_bl"
|
|
projectile_piercing = ALL
|
|
var/pierce_hits = 2
|
|
|
|
/obj/projectile/beam/pulse/heavy/on_hit(atom/target, blocked = FALSE)
|
|
if(pierce_hits <= 0)
|
|
projectile_piercing = NONE
|
|
pierce_hits -= 1
|
|
..()
|
|
|
|
/obj/projectile/beam/emitter
|
|
name = "emitter beam"
|
|
icon_state = "emitter"
|
|
damage = 30
|
|
impact_effect_type = /obj/effect/temp_visual/impact_effect/green_laser
|
|
light_color = LIGHT_COLOR_GREEN
|
|
wound_bonus = -40
|
|
bare_wound_bonus = 70
|
|
|
|
/obj/projectile/beam/emitter/singularity_pull()
|
|
return //don't want the emitters to miss
|
|
|
|
/obj/projectile/beam/emitter/hitscan
|
|
hitscan = TRUE
|
|
muzzle_type = /obj/effect/projectile/muzzle/laser/emitter
|
|
tracer_type = /obj/effect/projectile/tracer/laser/emitter
|
|
impact_type = /obj/effect/projectile/impact/laser/emitter
|
|
impact_effect_type = null
|
|
hitscan_light_intensity = 3
|
|
hitscan_light_range = 0.75
|
|
hitscan_light_color_override = COLOR_LIME
|
|
muzzle_flash_intensity = 6
|
|
muzzle_flash_range = 2
|
|
muzzle_flash_color_override = COLOR_LIME
|
|
impact_light_intensity = 7
|
|
impact_light_range = 2.5
|
|
impact_light_color_override = COLOR_LIME
|
|
|
|
/obj/projectile/beam/lasertag
|
|
name = "laser tag beam"
|
|
icon_state = "omnilaser"
|
|
hitsound = null
|
|
damage = 0
|
|
damage_type = STAMINA
|
|
var/suit_types = list(/obj/item/clothing/suit/redtag, /obj/item/clothing/suit/bluetag)
|
|
impact_effect_type = /obj/effect/temp_visual/impact_effect/blue_laser
|
|
light_color = LIGHT_COLOR_BLUE
|
|
|
|
/obj/projectile/beam/lasertag/on_hit(atom/target, blocked = FALSE)
|
|
. = ..()
|
|
if(ishuman(target))
|
|
var/mob/living/carbon/human/M = target
|
|
if(istype(M.wear_suit))
|
|
if(M.wear_suit.type in suit_types)
|
|
M.adjustStaminaLoss(34)
|
|
|
|
/obj/projectile/beam/lasertag/redtag
|
|
icon_state = "laser"
|
|
suit_types = list(/obj/item/clothing/suit/bluetag)
|
|
impact_effect_type = /obj/effect/temp_visual/impact_effect/red_laser
|
|
light_color = COLOR_SOFT_RED
|
|
tracer_type = /obj/effect/projectile/tracer/laser
|
|
muzzle_type = /obj/effect/projectile/muzzle/laser
|
|
impact_type = /obj/effect/projectile/impact/laser
|
|
|
|
/obj/projectile/beam/lasertag/redtag/hitscan
|
|
hitscan = TRUE
|
|
|
|
/obj/projectile/beam/lasertag/bluetag
|
|
icon_state = "bluelaser"
|
|
suit_types = list(/obj/item/clothing/suit/redtag)
|
|
tracer_type = /obj/effect/projectile/tracer/laser/blue
|
|
muzzle_type = /obj/effect/projectile/muzzle/laser/blue
|
|
impact_type = /obj/effect/projectile/impact/laser/blue
|
|
|
|
/obj/projectile/beam/lasertag/bluetag/hitscan
|
|
hitscan = TRUE
|
|
|
|
//a shrink ray that shrinks stuff, which grows back after a short while.
|
|
/obj/projectile/beam/shrink
|
|
name = "shrink ray"
|
|
icon_state = "blue_laser"
|
|
hitsound = 'sound/weapons/shrink_hit.ogg'
|
|
damage = 0
|
|
damage_type = STAMINA
|
|
armor_flag = ENERGY
|
|
impact_effect_type = /obj/effect/temp_visual/impact_effect/shrink
|
|
light_color = LIGHT_COLOR_BLUE
|
|
var/shrink_time = 90
|
|
|
|
/obj/projectile/beam/shrink/on_hit(atom/target, blocked = FALSE)
|
|
. = ..()
|
|
if(isopenturf(target) || isindestructiblewall(target))//shrunk floors wouldnt do anything except look weird, i-walls shouldn't be bypassable
|
|
return
|
|
target.AddComponent(/datum/component/shrink, shrink_time)
|
|
|
|
/obj/projectile/beam/shrink/is_hostile_projectile()
|
|
return TRUE
|