Files
b1029a24f8 Power Cell Rework + Energy Weapon Rebalance (& misc changes) (#7438)
- all cells in the game are now small, medium, large
- super, hyper capacity cells, device, and weapon cells are all removed
- cells now have standardized variants, some of which are printable by
R&D
- energy weapons rebalanced
- **advanced energy guns and stun revolvers removed** - use the new
modular weapon system and microfission cells.

---------

Co-authored-by: silicons <silicons@silicons.dev>
2025-12-24 12:15:01 +01:00

110 lines
4.4 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
damage_force = 9
active_color = "#33CCFF"
origin_tech = list(TECH_COMBAT = 2, TECH_BIO = 2)
description_info = "This baton will stun a slime or other slime-based lifeform for about five seconds, if hit with it while on."
charge_cost = /obj/item/cell/basic/tier_1/weapon::max_charge / 10
stun_power = 10
var/extra_slime_stun_power = 40
var/extra_slime_stun_flags = ELECTROCUTE_ACT_FLAG_SILENT | ELECTROCUTE_ACT_FLAG_DISTRIBUTE
/obj/item/melee/baton/slime/apply_powered_melee_impact(atom/target, mob/attacker, datum/event_args/actor/actor, use_target_zone, efficiency)
..()
if(istype(target, /mob/living))
var/mob/living/living_target = target
var/mob/living/carbon/human/maybe_human = target
if((living_target.mob_class & MOB_CLASS_SLIME) || (istype(maybe_human) && maybe_human.species?.get_species_id() == SPECIES_ID_PROMETHEAN))
if(istype(living_target, /mob/living/simple_mob/slime))
var/mob/living/simple_mob/slime/slime_target = living_target
slime_target.slimebatoned(attacker, extra_slime_stun_power * 0.1)
else
living_target.electrocute(
stun_power = extra_slime_stun_power,
source = src,
hit_zone = use_target_zone || BP_TORSO,
flags = extra_slime_stun_flags,
)
/obj/item/melee/baton/slime/loaded
cell_type = /obj/item/cell/basic/tier_1/weapon
// Research borg's version
/obj/item/melee/baton/slime/robot
charge_cost = 200
legacy_use_external_power = TRUE
/datum/firemode/energy/xeno_taser
name = "stun"
cycle_cooldown = 0.4 SECONDS
projectile_type = /obj/projectile/beam/stun/xeno
charge_cost = 240
// Xeno stun gun + projectile
/obj/item/gun/projectile/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 = "taserold"
fire_sound = 'sound/weapons/taser2.ogg'
charge_cost = POWER_CELL_CAPACITY_WEAPON / 24
no_pin_required = 1
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."
firemodes = list(
/datum/firemode/energy/xeno_taser
)
/obj/item/gun/projectile/energy/taser/xeno/robot // Borg version
self_recharge = 1
use_external_power = 1
recharge_time = 3
/obj/item/gun/projectile/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 = "taserold"
item_state = "taser"
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/projectile/energy/taser/xeno/sec/robot //Cyborg variant of the security xeno-taser.
self_recharge = 1
use_external_power = 1
recharge_time = 3
/obj/projectile/beam/stun/xeno
icon_state = "omni"
damage_inflict_agony = 4
nodamage = TRUE
legacy_muzzle_type = /obj/effect/projectile/muzzle/laser_omni
legacy_tracer_type = /obj/effect/projectile/tracer/laser_omni
legacy_impact_type = /obj/effect/projectile/impact/laser_omni
/obj/projectile/beam/stun/xeno/on_impact(atom/target, impact_flags, def_zone, efficiency)
. = ..()
if(. & PROJECTILE_IMPACT_FLAGS_UNCONDITIONAL_ABORT)
return
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(damage_inflict_agony/2))
else
L.afflict_paralyze(20 * round(damage_inflict_agony/2))
if(ishuman(L))
var/mob/living/carbon/human/H = L
if(H.species && H.species.get_species_id() == SPECIES_ID_PROMETHEAN)
if(damage_inflict_agony == initial(damage_inflict_agony)) // ??????
damage_inflict_agony = round((14 * damage_inflict_agony) - damage_inflict_agony) //60-4 = 56, 56 / 4 = 14. Prior was flat 60 - agony of the beam to equate to 60.