Files
Aurora.3/code/game/objects/items/weapons/power_cells.dm
T
VMSolidusandGitHub e2b00ebe46 The XenoMechMed PR (#21318)
This PR is something me and NobleRow have been cooking behind the scenes
with the goal of adding new Xenoarch content that fits two objectives.

1. Providing cross-department cooperation opportunities (Machinists and
Medical)
2. Making use of content entirely unique to Aurora, such as our recently
refactored organs.

So I've added several new and exciting xenoarch "finds" that relate to
Medical and Machinists, as well as several new parts for Machinists to
work with. On the xenoarch side of things, we have the new "anomalous"
heart and lung items, which you can study by calling over a surgeon to
implant into your free choice of a monkey, or a particularly
enthusiastic human volunteer. There are also two new "anomalous" mech
components, one of them an anomalous drone bay, and the other an
anomalous power core. To study them, call a machinist over and have them
make a mech for you to experiment with.

The new xenoarch "finds" each feature heavily rng stat modifiers that
are unique to the objects in question, and make use of a very large
number of variables that I had previously worked to unhardcode.

I had a batch of sprites done by NobleRow, and I was adding new mech
equipment in this PR, so while we were at it, I've added a new LTL
variant of the mech submachine gun, as well as a new light variant of
the mech-mounted KA, which was highly requested by both miners and
xenoarch players on account of the 9 tile blast radius KA being "Not
always good to have".

All of the sprites in this PR were made by @NobleRow
2025-09-10 19:04:57 +00:00

251 lines
7.5 KiB
Plaintext

/obj/item/cell
name = "power cell"
desc = "A rechargable electrochemical power cell."
icon = 'icons/obj/machinery/cell_charger.dmi'
icon_state = "cell"
item_state = "cell"
contained_sprite = TRUE
origin_tech = list(TECH_POWER = 1)
force = 11
throwforce = 5.0
throw_speed = 3
throw_range = 5
w_class = WEIGHT_CLASS_NORMAL
/// Note %age converted to actual charge in New()
var/charge = 0
var/maxcharge = 1000
/// True if rigged to explode
var/rigged = FALSE
/// If not 100% reliable, it will build up faults.
var/minor_fault = 0
matter = list(DEFAULT_WALL_MATERIAL = 700, MATERIAL_GLASS = 50)
recyclable = TRUE
/// Percentage of maxcharge to recharge per minute, though it will trickle charge every process tick (every ~2 seconds), leave null for no self-recharge
var/self_charge_percentage
/// Smaller variant, used by energy guns and similar small devices
/obj/item/cell/device
name = "device power cell"
desc = "A small power cell designed to power handheld devices."
icon_state = "device"
w_class = WEIGHT_CLASS_SMALL
force = 0
throw_speed = 5
throw_range = 7
maxcharge = 100
matter = list(MATERIAL_STEEL = 70, MATERIAL_GLASS = 5)
/obj/item/cell/device/high
name = "advanced power cell"
desc = "A small, advanced power cell designed to power more energy demanding handheld devices."
icon_state = "hdevice"
maxcharge = 250
matter = list(MATERIAL_STEEL = 150, MATERIAL_GLASS = 10)
/obj/item/cell/device/variable/New(newloc, charge_amount)
..(newloc)
maxcharge = charge_amount
charge = maxcharge
/obj/item/cell/crap
name = "old power cell"
desc = "A cheap, old power cell. It's probably been in use for quite some time now."
origin_tech = list(TECH_POWER = 0)
maxcharge = 500
matter = list(DEFAULT_WALL_MATERIAL = 700, MATERIAL_GLASS = 40)
/obj/item/cell/crap/empty/Initialize()
. = ..()
charge = 0
update_icon()
/obj/item/cell/crap/cig
name = "\improper rechargable mini-battery"
desc = "A miniature power cell designed to power very small handheld devices."
maxcharge = 200
/obj/item/cell/secborg
name = "security borg rechargable D battery"
origin_tech = list(TECH_POWER = 0)
maxcharge = 600 //600 max charge / 100 charge per shot = six shots
matter = list(DEFAULT_WALL_MATERIAL = 700, MATERIAL_GLASS = 40)
/obj/item/cell/secborg/empty/Initialize()
. = ..()
charge = 0
update_icon()
/obj/item/cell/apc
name = "heavy-duty power cell"
origin_tech = list(TECH_POWER = 1)
maxcharge = 5000
matter = list(DEFAULT_WALL_MATERIAL = 700, MATERIAL_GLASS = 50)
/obj/item/cell/high
name = "high-capacity power cell"
origin_tech = list(TECH_POWER = 2)
icon_state = "hcell"
maxcharge = 10000
matter = list(DEFAULT_WALL_MATERIAL = 700, MATERIAL_GLASS = 60)
/obj/item/cell/high/empty/Initialize()
. = ..()
charge = 0
update_icon()
/obj/item/cell/super
name = "super-capacity power cell"
origin_tech = list(TECH_POWER = 5)
icon_state = "scell"
maxcharge = 20000
matter = list(DEFAULT_WALL_MATERIAL = 700, MATERIAL_GLASS = 70)
/obj/item/cell/super/empty/Initialize()
. = ..()
charge = 0
update_icon()
/obj/item/cell/hyper
name = "hyper-capacity power cell"
origin_tech = list(TECH_POWER = 6)
icon_state = "hpcell"
maxcharge = 30000
matter = list(DEFAULT_WALL_MATERIAL = 200, MATERIAL_GOLD = 50, MATERIAL_SILVER = 50, MATERIAL_GLASS = 40)
/obj/item/cell/hyper/empty/Initialize()
. = ..()
charge = 0
update_icon()
/obj/item/cell/infinite
name = "infinite-capacity power cell!"
icon_state = "icell"
origin_tech = null
maxcharge = 30000 //determines how badly mobs get shocked
matter = list(DEFAULT_WALL_MATERIAL = 700, MATERIAL_GLASS = 80)
/obj/item/cell/infinite/check_charge()
return 1
/obj/item/cell/infinite/use()
return 1
/obj/item/cell/potato
name = "potato battery"
desc = "A rechargable starch based power cell."
origin_tech = list(TECH_POWER = 1)
icon = 'icons/obj/power.dmi' //'icons/obj/harvest.dmi'
icon_state = "potato_cell" //"potato_battery"
charge = 100
maxcharge = 300
minor_fault = 1
/obj/item/cell/slime
name = "charged slime core"
desc = "A yellow slime core infused with phoron, it crackles with power."
origin_tech = list(TECH_POWER = 2, TECH_BIO = 4)
icon = 'icons/mob/npc/slimes.dmi'
icon_state = "yellow slime extract"
maxcharge = 15000
matter = null
/// Slime cores recharges 10% every one minute.
self_charge_percentage = 10
/obj/item/cell/slime/mechanics_hints(mob/user, distance, is_adjacent)
. += ..()
. += "This slime core is energized with powerful bluespace energies, allowing it to regenerate ten percent of its charge every minute."
/obj/item/cell/slime/antagonist_hints(mob/user, distance, is_adjacent)
. += ..()
. += "Auto-charges, so maybe be fucking careful if you try rigging this one."
/obj/item/cell/nuclear
name = "miniaturized nuclear power cell"
desc = "A small self-charging cell with a thorium core that can store an immense amount of charge."
origin_tech = list(TECH_POWER = 8, TECH_ILLEGAL = 4)
icon_state = "icell"
maxcharge = 50000
matter = null
/// Nuclear cells recharge 20% every one minute.
self_charge_percentage = 10
/obj/item/cell/device/emergency_light
name = "miniature power cell"
desc = "A small power cell intended for use with emergency lighting."
/// Emergency lights use 0.2 W per tick, meaning ~10 minutes of emergency power from a cell
maxcharge = 120
w_class = WEIGHT_CLASS_TINY
matter = list(MATERIAL_GLASS = 20)
/obj/item/cell/device/emergency_light/empty/Initialize()
. = ..()
charge = 0
update_icon()
/obj/item/cell/proto
name = "proto power cell"
desc = "A heavy-duty reliable military-grade power cell. Doesn't look to fit any modern standards."
icon_state = "proto"
maxcharge = 25000
origin_tech = list(TECH_POWER = 6)
/obj/item/cell/proto/empty/Initialize()
. = ..()
charge = 0
update_icon()
/obj/item/cell/hydrogen
name = "hydrogen blaster canister"
desc = "An industrial-grade hydrogen power cell, used in various blaster weapons- or blaster-adjacent power tools- in place of expensive phoron."
icon_state = "hycell"
/// Hydrogen is actually used today in electric cars
maxcharge = 10000
matter = list(DEFAULT_WALL_MATERIAL = 700, MATERIAL_GLASS = 70)
w_class = WEIGHT_CLASS_SMALL
drop_sound = 'sound/items/drop/gascan.ogg'
pickup_sound = 'sound/items/pickup/gascan.ogg'
origin_tech = list(TECH_POWER = 4)
/obj/item/cell/mecha
name = "power core"
origin_tech = list(TECH_POWER = 2)
icon_state = "core"
w_class = WEIGHT_CLASS_BULKY
maxcharge = 20000
matter = list(DEFAULT_WALL_MATERIAL = 20000, MATERIAL_GLASS = 10000)
/obj/item/cell/mecha/nuclear
name = "nuclear power core"
origin_tech = list(TECH_POWER = 3, TECH_MATERIAL = 3)
icon_state = "nuclear_core"
maxcharge = 30000
matter = list(DEFAULT_WALL_MATERIAL = 20000, MATERIAL_GLASS = 10000, MATERIAL_URANIUM = 10000)
/// Nuclear mecha cores recharges 5% every one minute
self_charge_percentage = 5
/obj/item/cell/mecha/phoron
name = "phoron power core"
origin_tech = list(TECH_POWER = 5, TECH_MATERIAL = 5)
icon_state = "phoron_core"
maxcharge = 50000
matter = list(DEFAULT_WALL_MATERIAL = 20000, MATERIAL_GLASS = 10000, MATERIAL_PHORON = 5000)
/// Phoron mecha cores recharges 10% every one minute
self_charge_percentage = 10
/obj/item/cell/mecha/phoron/alien
name = "anomalous power core"
origin_tech = list(TECH_POWER = 9, TECH_MATERIAL = 9)
icon_state = "alien_power_cell"
desc = "A mercurial gem gleaming with anomalous white light. Pale, cold flames dance along its surface, which crackle with static charge upon touching any object."
/obj/item/cell/mecha/phoron/alien/Initialize()
. = ..()
maxcharge *= rand(0.75, 1.25)
self_charge_percentage *= rand(0.75, 1.25)