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

65 lines
2.3 KiB
Plaintext

//* This file is explicitly licensed under the MIT license. *//
//* Copyright (c) 2024 Citadel Station Developers *//
/datum/prototype/design/generated/gun_component/particle_array
abstract_type = /datum/prototype/design/generated/gun_component/particle_array
/**
* ## Warning - Caveats
* * Component signal hooks currently always fire, even if this isn't the active array.
*/
/obj/item/gun_component/particle_array
name = "weapon particle array"
desc = "A nondescript particle array used in energy weapons."
icon = 'icons/modules/projectiles/components/particle_array.dmi'
component_slot = GUN_COMPONENT_PARTICLE_ARRAY
/// base charge cost in cell units
var/base_charge_cost = /obj/item/cell/basic/tier_1/weapon::max_charge / 24
/// base delay add
var/base_delay_add = 0 SECONDS
/// considered lethal?
/// * lethal arrays can be disabled on a separate 'safety' setting
var/considered_lethal = FALSE
/// our selection name
var/selection_name = "unknown particle"
/// our render color
var/render_color = "#ffffff"
/// projectile type
var/projectile_type
/**
* Consume next projectile hook
*/
/obj/item/gun_component/particle_array/proc/consume_next_projectile(datum/gun_firing_cycle/cycle)
// appliy delay if needed
// sorry no subtracting with add! that can result in weird shit happening.
if(cycle.cycle_iterations_fired == 1 && base_delay_add > 0)
// first one, inject base delay
cycle.firing_delay += base_delay_add
cycle.overall_cooldown_adjust += base_delay_add
var/effective_power_use = base_charge_cost * cycle.next_projectile_cost_multiplier
if(effective_power_use)
if(!installed.modular_use_checked_power(src, effective_power_use))
return GUN_FIRED_FAIL_EMPTY
return generate_projectile(cycle)
/**
* Generates a projectile.
* * The projectile will be created in nullspace. You must immediately
* move or delete it, or this constitutes a memory leak.
*/
/obj/item/gun_component/particle_array/proc/generate_projectile(datum/gun_firing_cycle/cycle) as /obj/projectile
return new projectile_type
/**
* Base projectile subtype for particle array / modular energy weapons.
*/
/obj/projectile/particle_array
abstract_type = /obj/projectile/particle_array
icon = 'icons/modules/projectiles/projectile.dmi'
tracer_icon = 'icons/modules/projectiles/projectile-tracer.dmi'