mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-11 02:34:00 +00:00
-engine won't get unlimited floor tiles from reinforced floor and thus won't grow constantly; -collectors can receive energy from several sings; -various graphic glitches fixed; -released singularity can now be catched. In theory. -singularity cannot be killed by small/far explosion; -containment field cannot be exploded at all; -fields and singularity now are immune to blob; -messages improved; -machinery fingerprints handling fixed; -engines 3*3 sings must work now; -emitters (and some other machines) now really uses power; -collector arrays and controllers now requires engine access; -powerful singularity now deal more radiation damage, but you can hide behind walls; -improved generator's sprites Miscellaneous: -cell chargers now actually consumes power; -fixed examine verb for tanks; -fixed airlocks won't opens automatically in rare cases; -beer now don't instakill plants; -vents and scrubbers now requires and uses power; -more user-friendly canisters interface; Optimizations: -brig doors now causes lesser cpu load; -small optimizations and code cleanup for some atmos machinery; git-svn-id: http://tgstation13.googlecode.com/svn/trunk@691 316c924e-a436-60f5-8080-3fe189b3f50e
87 lines
2.2 KiB
Plaintext
87 lines
2.2 KiB
Plaintext
// the power cell
|
|
// charge from 0 to 100%
|
|
// fits in APC to provide backup power
|
|
|
|
/obj/item/weapon/cell/New()
|
|
..()
|
|
|
|
charge = charge * maxcharge/100.0 // map obj has charge as percentage, convert to real value here
|
|
|
|
spawn(5)
|
|
updateicon()
|
|
|
|
|
|
/obj/item/weapon/cell/proc/updateicon()
|
|
|
|
if(maxcharge <= 2500)
|
|
icon_state = "cell"
|
|
else
|
|
icon_state = "hpcell"
|
|
|
|
overlays = null
|
|
|
|
if(charge < 0.01)
|
|
return
|
|
else if(charge/maxcharge >=0.995)
|
|
overlays += image('power.dmi', "cell-o2")
|
|
else
|
|
overlays += image('power.dmi', "cell-o1")
|
|
|
|
/obj/item/weapon/cell/proc/percent() // return % charge of cell
|
|
return 100.0*charge/maxcharge
|
|
|
|
// use power from a cell
|
|
/obj/item/weapon/cell/proc/use(var/amount)
|
|
charge = max(0, charge-amount)
|
|
if(rigged && amount > 0)
|
|
explode()
|
|
|
|
// recharge the cell
|
|
/obj/item/weapon/cell/proc/give(var/amount)
|
|
var/power_used = min(maxcharge-charge,amount)
|
|
charge += power_used
|
|
if(rigged && amount > 0)
|
|
explode()
|
|
return power_used
|
|
|
|
|
|
/obj/item/weapon/cell/examine()
|
|
set src in view(1)
|
|
if(usr && !usr.stat)
|
|
if(maxcharge <= 2500)
|
|
usr << "[desc]\nThe manufacturer's label states this cell has a power rating of [maxcharge], and that you should not swallow it.\nThe charge meter reads [round(src.percent() )]%."
|
|
else
|
|
usr << "This power cell has an exciting chrome finish, as it is an uber-capacity cell type! It has a power rating of [maxcharge]!!!\nThe charge meter reads [round(src.percent() )]%."
|
|
|
|
|
|
/obj/item/weapon/cell/attackby(obj/item/W, mob/user)
|
|
var/obj/item/clothing/gloves/G = W
|
|
if(istype(G))
|
|
if(charge < 1000)
|
|
return
|
|
|
|
G.elecgen = 1
|
|
G.uses = min(5, round(charge / 1000))
|
|
use(G.uses*1000)
|
|
updateicon()
|
|
user << "\red These gloves are now electrically charged!"
|
|
|
|
else if(istype(W, /obj/item/weapon/reagent_containers/syringe))
|
|
var/obj/item/weapon/reagent_containers/syringe/S = W
|
|
|
|
user << "You inject the solution into the power cell."
|
|
|
|
if(S.reagents.has_reagent("plasma", 5))
|
|
|
|
rigged = 1
|
|
|
|
S.reagents.clear_reagents()
|
|
|
|
|
|
/obj/item/weapon/cell/proc/explode()
|
|
var/turf/T = get_turf(src.loc)
|
|
|
|
explosion(T, 0, 1, 2, 2) //TODO: involve charge
|
|
|
|
spawn(1)
|
|
del(src) |