anchor.diff:  /obj/machinery/power/shipweapon/process()
   	if(stat & (BROKEN|MAINT))
   		return
  -	if(state != 2)
  -		return
  -	var/load = min((cell.maxcharge-cell.charge)/GLOB.CELLRATE, charge_rate)		// charge at set rate, limited to spare capacity
  -	add_load(load) // add the load to the terminal side network
  -	cell.give(surplus() * GLOB.CELLRATE)	// increase the charge
  -
  -	update_icon()
  +	if(src.state != 2 || (!powernet && active_power_usage))
  +		update_icon()
  +		return
  +	if(!active_power_usage || avail(active_power_usage))
  +		var/load = min((cell.maxcharge-cell.charge)/GLOB.CELLRATE, charge_rate)		// charge at set rate, limited to spare capacity
  +		add_load(load) // add the load to the terminal side network
  +		cell.give(surplus() * GLOB.CELLRATE)	// increase the charge
  +		if(!powered)
  +			powered = 1
  +			update_icon()
  +		else
  +			if(powered)
  +				powered = 0
  +				update_icon()
  +			return
   
   /obj/machinery/power/shipweapon/proc/can_fire()
   	if(state != 2)
  
positive.code: 
  	return 1
  
  
  
  
  /obj/machinery/power/shipweapon/verb/rotate()
  	set name = "Rotate"
  	set category = "Object"
  
negative.code: 	var/obj/item/weapon/stock_parts/cell/cell
  	var/charge_rate = 30000
  
  	use_power = 0
  	idle_power_usage = 10
  	active_power_usage = 300
  
  	var/state = 0
  	var/locked = 0
  	var/powered = 0
  
  	var/projectile_type = /obj/item/projectile/ship_projectile/phase_blast
  	var/projectile_sound = 'sound/effects/phasefire.ogg'
  
  /obj/machinery/power/shipweapon/New()
  	..()
  