Files
CHOMPStation2/modular_chomp/code/modules/projectiles/precursor/eclipse.dm
2025-04-27 14:02:33 +02:00

279 lines
8.9 KiB
Plaintext

/obj/item/gun/energy/freezegun
name = "Pulse Froster Prototype"
desc = "A strange gun pulsing with energy, it's touch chilling you to the core."
icon = 'modular_chomp/icons/obj/guns/precursor/eclipse.dmi'
icon_state = "cryogun"
item_state = "cryogun"
wielded_item_state = "cryogun-wielded"
matter = list(MAT_DURASTEEL = 1000, MAT_MORPHIUM = 500)
origin_tech = list(TECH_COMBAT = 6, TECH_POWER = 5, TECH_PRECURSOR = 3)
charge_cost = 80 //How much energy is needed to fire.
accept_cell_type = /obj/item/cell/device
cell_type = /obj/item/cell/device/weapon
projectile_type = /obj/item/projectile/energy/frostsphere
recoil_mode = 0
charge_meter = 1
reload_time = 10
move_delay = 0
firemodes = list(
list(mode_name="normal", fire_delay=5, projectile_type=/obj/item/projectile/energy/frostsphere, charge_cost = 80),
list(mode_name="shotgun", fire_delay=15, projectile_type=/obj/item/projectile/bullet/frostshotgun, charge_cost = 240),
)
/obj/item/gun/energy/flamegun
name = "Flame Crystal Projector"
desc = "A strange gun pulsing with energy, it's touch warming you up."
icon = 'modular_chomp/icons/obj/guns/precursor/eclipse.dmi'
icon_state = "flamegun"
item_state = "flamegun"
wielded_item_state = "flame-wielded"
w_class = ITEMSIZE_LARGE
accept_cell_type = /obj/item/cell/device
cell_type = /obj/item/cell/device/weapon
projectile_type = /obj/item/projectile/energy/flamecrystal
matter = list(MAT_DURASTEEL = 1000, MAT_MORPHIUM = 500)
origin_tech = list(TECH_COMBAT = 6, TECH_POWER = 5, TECH_PRECURSOR = 3)
recoil_mode = 0
charge_meter = 1
move_delay = 0
charge_cost = 80
reload_time = 10
firemodes = list(
list(mode_name="normal", fire_delay=5, projectile_type=/obj/item/projectile/energy/flamecrystal, charge_cost = 80),
list(mode_name="shotgun", fire_delay=15, projectile_type=/obj/item/projectile/bullet/flamegun, charge_cost = 240),
list(mode_name="explosive", fire_delay=10, projectile_type=/obj/item/projectile/energy/fireball, charge_cost = 160),
)
/obj/item/gun/energy/elementalray
name = "Proto-type Weapon Avatar"
desc = "A strange gun vibrating with energy, lathered with diffrent buttons and switches."
icon = 'modular_chomp/icons/obj/guns/precursor/eclipse.dmi'
icon_state = "avatar"
item_state = "avatar"
wielded_item_state = "avatar-wielded"
accept_cell_type = /obj/item/cell/device
cell_type = /obj/item/cell/device/weapon
projectile_type = /obj/item/projectile/bullet/flamegun
matter = list(MAT_DURASTEEL = 1000, MAT_MORPHIUM = 500)
origin_tech = list(TECH_COMBAT = 6, TECH_POWER = 5, TECH_PRECURSOR = 3)
recoil_mode = 0
charge_meter = 1
move_delay = 0
charge_cost = 160
reload_time = 20
firemodes = list(
list(mode_name="fire", burst=1, fire_delay=15, projectile_type=/obj/item/projectile/bullet/flamegun, charge_cost = 160, modifystate="avatarfire"),
list(mode_name="lighting", burst=1, fire_delay=20, projectile_type=/obj/item/projectile/beam/lightingsurge, charge_cost = 480, modifystate="avatarlighting"),
list(mode_name="frost", burst=3, fire_delay=15, projectile_type=/obj/item/projectile/energy/frostsphere, charge_cost = 260, modifystate="avatarfrost"),
list(mode_name="acid", burst=1, fire_delay=0.5, projectile_type=/obj/item/projectile/energy/muckblob, charge_cost = 10, modifystate="avataracid"),
)
/obj/item/gun/energy/elementalray/emag_act(var/remaining_charges, var/mob/user)
..()
to_chat(user, span_notice("You short circuit the internal locking mechanisms of \the [src]!"))
firemodes = list(
list(mode_name="fire", burst=1, fire_delay=15, projectile_type=/obj/item/projectile/bullet/flamegun, charge_cost = 160),
list(mode_name="lighting", burst=1, fire_delay=20, projectile_type=/obj/item/projectile/beam/lightingsurge, charge_cost = 480),
list(mode_name="frost", burst=3, fire_delay=15, projectile_type=/obj/item/projectile/energy/frostsphere, charge_cost = 160),
list(mode_name="acid", burst=1, fire_delay=0.5, projectile_type=/obj/item/projectile/energy/muckblob, charge_cost = 10),
list(mode_name="error", burst=1, fire_delay=30, projectile_type=/obj/item/projectile/bullet/errorelement, charge_cost = 1040),
)
return 1
/obj/item/projectile/bullet/errorelement //You are the bullet hell
use_submunitions = 1
only_submunitions = 1
range = 0
embed_chance = 0
submunition_spread_max = 3600
submunition_spread_min = 500
submunitions = list(/obj/item/projectile/energy/flamecrystal = 2, /obj/item/projectile/energy/frostsphere = 2, /obj/item/projectile/beam/lightingsurge = 1, /obj/item/projectile/energy/muckblob = 5)
hud_state = "laser_heat"
/obj/item/projectile/beam/lightingsurge //Anti-synth laser
damage = 60
light_color = "#00CCFF"
damage_type = ELECTROMAG
/obj/item/projectile/energy/muckblob
damage = 4
damage_type = BIOACID
check_armour = "bio"
combustion = FALSE
modifier_type_to_apply = /datum/modifier/muck
modifier_duration = 5
speed = 0.6
range = 8
/datum/modifier/muck
name = "acid covered"
desc = "You are covered in acid"
mob_overlay_state = "poisoned"
on_created_text = span_warning("You are covered in muck...")
on_expired_text = span_notice("You are no longer covered in muck.")
stacks = MODIFIER_STACK_ALLOWED
slowdown = 0.2
/obj/item/gun/energy/pulseglove
name = "Strange Glove"
desc = "A bulky glove cladded with strange tech. It hums with energy, and the battery port is inaccessiable"
icon = 'modular_chomp/icons/obj/guns/precursor/eclipse.dmi'
icon_state = "darkglove"
item_state = "darkglove"
charge_cost = 380 // 13 shots
projectile_type = /obj/item/projectile/bullet/lightingburst
cell_type = /obj/item/cell/device/weapon/recharge/alien
battery_lock = 1
/obj/item/projectile/energy/redlighting
name = "Flame Crystal"
icon = 'modular_chomp/icons/mob/eclipse.dmi' //commiting sin
icon_state = "redlighting"
damage = 20
armor_penetration = 20
hud_state = "laser_sniper"
/obj/item/projectile/energy/darkmeteor
name = "Strange Sphere"
icon = 'modular_chomp/icons/mob/eclipse.dmi' //commiting sin
icon_state = "darkmeteor"
damage = 60
damage_type = BRUTE
check_armour = "melee"
speed = 15
/obj/item/projectile/bullet/meteorstorm
use_submunitions = 1
only_submunitions = 1
range = 0
embed_chance = 0
submunition_spread_max = 3600
submunition_spread_min = 1200
submunitions = list(/obj/item/projectile/energy/darkmeteor = 3)
/obj/item/projectile/bullet/lightingburst
use_submunitions = 1
only_submunitions = 1
range = 0
embed_chance = 0
submunition_spread_max = 1200
submunition_spread_min = 200
submunitions = list(/obj/item/projectile/energy/redlighting = 3)
hud_state = "laser_sniper"
/obj/item/projectile/energy/mechahack
name = "remote hack"
icon = 'modular_chomp/icons/obj/guns/precursor/eclipse.dmi'
icon_state = "databreach"
nodamage = 1
irradiate = 3
speed = 1 //a bit faster due to the source having a 3 second wind up
/obj/item/projectile/energy/mechahack/on_hit(var/atom/target)
. = ..()
if(istype(target, /obj/mecha))
remote_eject(target)
/obj/item/projectile/energy/mechahack/proc/remote_eject(obj/mecha/M)
if(!M)
return
visible_message(span_critical("\The [M] is remotly hacked and ejects [M.occupant]!"))
M.go_out()
/obj/item/projectile/energy/lightingspark
name = "lighting spark"
icon_state = "spark"
nodamage = 1
damage_type = HALLOSS
speed = 2
var/power = 20 //How hard it will hit for with electrocute_act(), decreases with each bounce.
/obj/item/projectile/energy/lightingspark/attack_mob(var/mob/living/target_mob, var/distance, var/miss_modifier=0)
//First we shock the guy we just hit.
if(ishuman(target_mob))
var/mob/living/carbon/human/H = target_mob
var/obj/item/organ/external/affected = H.get_organ(check_zone(BP_TORSO))
H.electrocute_act(power, src, H.get_siemens_coefficient_organ(affected), affected, 0)
else
target_mob.electrocute_act(power, src, 0.75, BP_TORSO)
/obj/item/projectile/bullet/crystaline
name = "crystal bullet"
icon = 'modular_chomp/icons/obj/guns/precursor/eclipse.dmi'
icon_state = "crystal"
damage = 30
armor_penetration = 20
embed_chance = 0
speed = 2
/obj/item/projectile/energy/eclipse
name = "experimental laser"
icon = 'modular_chomp/icons/obj/guns/precursor/eclipse.dmi'
icon_state = "laser"
check_armour = "laser"
damage = 30
armor_penetration = 20
speed = 2
//The normal laser is easier to guard, but can chain screw ups easier
/obj/item/projectile/energy/eclipse/lorge
damage = 30
armor_penetration = 60
eyeblur = 3
icon_state = "mega_laser"
speed = 10
/obj/item/projectile/energy/eclipse/lorgealien
damage = 50
armor_penetration = 60
icon_state = "mega_laser_p"
speed = 10
/obj/item/projectile/bullet/crystalineburst
use_submunitions = 1
range = 0
embed_chance = 0
spread_submunition_damage = FALSE
submunition_spread_max = 120
submunition_spread_min = 60
submunitions = list(/obj/item/projectile/bullet/crystaline = 5)
/obj/item/projectile/energy/eclipse/janusjavelin //This will end you
name = "energy javelin"
icon_state = "javelin"
damage_type = SEARING
check_armour = "bullet"
damage = 90
armor_penetration = 50
speed = 10