Change this to bcell.Use(chrgdeducamt). Use() will also call the explode if the cell is rigged. See why procs are nice? We don't have to add more code. Use() will return true or false depending on whether it was able to deduct the charge, so do if(Use(amount)) and have the code in the scope related to the baton succeeding to stun.

>// use power from a cell
/obj/item/weapon/cell/proc/use(var/amount)
	if(rigged && amount > 0)
		explode()
		return 0

	if(charge < amount)	return 0
	charge = (charge - amount)
	return 1