Files
Frenjo 10e11ae4c9 Tweaks energy weapons (part I?)
Adjusts the fire delays, charge levels and recharge speeds of many energy weapons.

Adjusts the damage of several types of energy beams.

Renames the "burst laser" to the "burst energy gun". Also updates the cargo ordering console's entry to match.

Converts a few weapon-related booleans to use TRUE/FALSE.

Fixes formatting of some weapon fire modes.
2023-07-24 00:51:19 +01:00

106 lines
4.1 KiB
Plaintext

/obj/item/melee/baton/slime
name = "slimebaton"
desc = "A modified stun baton designed to stun slimes and other lesser slimy xeno lifeforms for handling."
icon_state = "slimebaton"
item_state = "slimebaton"
slot_flags = SLOT_BELT
force = 9
lightcolor = "#33CCFF"
origin_tech = list(TECH_COMBAT = 2, TECH_BIO = 2)
agonyforce = 10 //It's not supposed to be great at stunning human beings.
hitcost = 48 //Less zap for less cost
description_info = "This baton will stun a slime or other slime-based lifeform for about five seconds, if hit with it while on."
/obj/item/melee/baton/slime/attack(mob/living/L, mob/user, hit_zone)
if(istype(L) && status) // Is it on?
if(L.mob_class & MOB_CLASS_SLIME) // Are they some kind of slime? (Prommies might pass this check someday).
if(isslime(L))
var/mob/living/simple_mob/slime/S = L
S.slimebatoned(user, 5) // Feral and xenobio slimes will react differently to this.
else
L.Weaken(5)
// Now for prommies.
if(ishuman(L))
var/mob/living/carbon/human/H = L
if(H.species && H.species.name == SPECIES_PROMETHEAN)
var/agony_to_apply = 60 - agonyforce
H.apply_damage(agony_to_apply, HALLOSS)
..()
/obj/item/melee/baton/slime/loaded/Initialize()
bcell = new/obj/item/cell/device(src)
update_icon()
return ..()
// Research borg's version
/obj/item/melee/baton/slime/robot
hitcost = 200
use_external_power = TRUE
// Xeno stun gun + projectile
/obj/item/gun/energy/taser/xeno
name = "xeno taser gun"
desc = "Straight out of NT's testing laboratories, this small gun is used to subdue non-humanoid xeno life forms. \
While marketed towards handling slimes, it may be useful for other creatures."
icon_state = "taserblueold"
fire_sound = 'sound/weapons/taser2.ogg'
charge_cost = 120 // Twice as many shots.
projectile_type = /obj/item/projectile/beam/stun/xeno
accuracy = 30 // Make it a bit easier to hit the slimes.
description_info = "This gun will stun a slime or other lesser slimy lifeform for about two seconds, if hit with the projectile it fires."
description_fluff = "An easy to use weapon designed by NanoTrasen, for NanoTrasen. This weapon is designed to subdue lesser \
slime-based xeno lifeforms at a distance. It is ineffective at stunning non-slimy lifeforms such as humanoids."
/obj/item/gun/energy/taser/xeno/robot // Borg version
self_recharge = TRUE
use_external_power = TRUE
/obj/item/gun/energy/taser/xeno/sec //NT's corner-cutting option for their on-station security.
desc = "An NT Mk30 NL retrofitted to fire beams for subduing non-humanoid slimy xeno life forms."
icon_state = "taserblue"
item_state = "taser"
projectile_type = /obj/item/projectile/beam/stun/xeno/weak
charge_cost = 480
accuracy = 0 //Same accuracy as a normal Sec taser.
description_fluff = "An NT Mk30 NL retrofitted after the events that occurred aboard the NRS Prometheus."
/obj/item/gun/energy/taser/xeno/sec/robot //Cyborg variant of the security xeno-taser.
self_recharge = TRUE
use_external_power = TRUE
/obj/item/projectile/beam/stun/xeno
icon_state = "omni"
agony = 4
nodamage = TRUE
// For whatever reason the projectile qdels itself early if this is on, meaning on_hit() won't be called on prometheans.
// Probably for the best so that it doesn't harm the slime.
taser_effect = 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/stun/xeno/weak //Weaker variant for non-research equipment, turrets, or rapid fire types.
agony = 3
/obj/item/projectile/beam/stun/xeno/on_hit(var/atom/target, var/blocked = 0, var/def_zone = null)
if(istype(target, /mob/living))
var/mob/living/L = target
if(L.mob_class & MOB_CLASS_SLIME)
if(isslime(L))
var/mob/living/simple_mob/slime/S = L
S.slimebatoned(firer, round(agony/2))
else
L.Weaken(round(agony/2))
if(ishuman(L))
var/mob/living/carbon/human/H = L
if(H.species && H.species.name == SPECIES_PROMETHEAN)
if(agony == initial(agony)) // ??????
agony = round((14 * agony) - agony) //60-4 = 56, 56 / 4 = 14. Prior was flat 60 - agony of the beam to equate to 60.
..()