Files
CHOMPStation2/code/modules/power/cell.dm
rastaf.zero@gmail.com 90b9654061 Massive singularity fix:
-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
2010-12-23 03:31:13 +00:00

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)