diff --git a/code/game/machinery/autolathe_datums.dm b/code/game/machinery/autolathe_datums.dm index 172a92852a..ca56b4bf78 100644 --- a/code/game/machinery/autolathe_datums.dm +++ b/code/game/machinery/autolathe_datums.dm @@ -217,7 +217,7 @@ category = "Medical" /datum/autolathe/recipe/syringegun_ammo - name = "syringe" + name = "syringe gun cartridge" path = /obj/item/weapon/syringe_cartridge category = "Arms and Ammunition" diff --git a/code/game/machinery/rechargestation.dm b/code/game/machinery/rechargestation.dm index 1020833e31..d41ab317d9 100644 --- a/code/game/machinery/rechargestation.dm +++ b/code/game/machinery/rechargestation.dm @@ -169,7 +169,8 @@ return if(!R.cell.fully_charged()) var/diff = min(R.cell.maxcharge - R.cell.charge, charge_rate) // Capped at charge_rate charge / tick - if (cell.use(diff)) + if (cell.charge >= diff) + cell.use(diff) R.cell.give(diff) if(weld_rate && R.getBruteLoss()) R.adjustBruteLoss(-1) diff --git a/code/game/objects/items/devices/floor_painter.dm b/code/game/objects/items/devices/floor_painter.dm index a1c21a7b3f..43bc58261b 100644 --- a/code/game/objects/items/devices/floor_painter.dm +++ b/code/game/objects/items/devices/floor_painter.dm @@ -108,7 +108,7 @@ mode_nice = design mode = "[replacetext(design, "-", "")]full" if("corner") - var/design = input("Which design?", "Floor painter") in list("black", "red", "blue", "green", "yellow", "purple", "neutral", "white", "white-grey", "white-red", "white-blue", "white-green", "white-yellow", "white-purple") + var/design = input("Which design?", "Floor painter") in list("black", "red", "blue", "green", "yellow", "purple", "neutral", "white", "white-red", "white-blue", "white-green", "white-yellow", "white-purple") mode_nice = "[design] corner" mode = "[replacetext(design, "-", "")]corner" tile_dir_mode = 2 @@ -128,11 +128,13 @@ if(design == "white") mode = "whitehall" mode_nice = "white side" - tile_dir_mode = 1 + else if(design == "black") // because SOMEONE made the black/grey side/corner sprite have the same name as the 'empty space' sprite :( + mode = "blackfloor" + mode_nice = design else mode_nice = design mode = replacetext(design, "-", "") - tile_dir_mode = 1 + tile_dir_mode = 1 if("special") var/design = input("Which design?", "Floor painter") in list("arrival", "escape", "caution", "warning", "white-warning", "white-blue-green", "loadingarea", "delivery", "bot", "white-delivery", "white-bot") if(design == "white-blue-green") diff --git a/code/game/objects/items/weapons/power_cells.dm b/code/game/objects/items/weapons/power_cells.dm index d40294b5e7..96c635b778 100644 --- a/code/game/objects/items/weapons/power_cells.dm +++ b/code/game/objects/items/weapons/power_cells.dm @@ -105,8 +105,11 @@ name = "infinite-capacity power cell!" icon_state = "icell" origin_tech = null - maxcharge = 30000 + maxcharge = 30000 //determines how badly mobs get shocked matter = list(DEFAULT_WALL_MATERIAL = 700, "glass" = 80) + + check_charge() + return 1 use() return 1 diff --git a/code/game/objects/items/weapons/stunbaton.dm b/code/game/objects/items/weapons/stunbaton.dm index 8747bbfacf..bed0591a7e 100644 --- a/code/game/objects/items/weapons/stunbaton.dm +++ b/code/game/objects/items/weapons/stunbaton.dm @@ -35,12 +35,13 @@ /obj/item/weapon/melee/baton/proc/deductcharge(var/chrgdeductamt) if(bcell) - if(bcell.use(chrgdeductamt)) + if(bcell.checked_use(chrgdeductamt)) return 1 else status = 0 update_icon() return 0 + return null /obj/item/weapon/melee/baton/update_icon() if(status) diff --git a/code/modules/clothing/spacesuits/rig/rig.dm b/code/modules/clothing/spacesuits/rig/rig.dm index 235ac1fd22..7cbd14cb21 100644 --- a/code/modules/clothing/spacesuits/rig/rig.dm +++ b/code/modules/clothing/spacesuits/rig/rig.dm @@ -707,7 +707,7 @@ take_hit((100/severity_class), "electrical pulse", 1) /obj/item/weapon/rig/proc/shock(mob/user) - if (electrocute_mob(user, cell, src)) + if (electrocute_mob(user, cell, src)) //electrocute_mob() handles removing charge from the cell, no need to do that here. spark_system.start() if(user.stunned) return 1 diff --git a/code/modules/clothing/spacesuits/rig/rig_attackby.dm b/code/modules/clothing/spacesuits/rig/rig_attackby.dm index effa64087e..d9e75f9907 100644 --- a/code/modules/clothing/spacesuits/rig/rig_attackby.dm +++ b/code/modules/clothing/spacesuits/rig/rig_attackby.dm @@ -3,9 +3,7 @@ if(!istype(user,/mob/living)) return 0 if(electrified != 0) - if(cell && cell.charge >= 100) - cell.use(100) - if(shock(user, 100)) + if(shock(user)) //Handles removing charge from the cell, as well. No need to do that here. return // Pass repair items on to the chestpiece. @@ -193,8 +191,6 @@ /obj/item/weapon/rig/attack_hand(var/mob/user) if(electrified != 0) - if(cell && cell.charge >= 100) - cell.use(100) - if(shock(user, 100)) + if(shock(user)) //Handles removing charge from the cell, as well. No need to do that here. return ..() \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/human_powers.dm b/code/modules/mob/living/carbon/human/human_powers.dm index 0357d4ee09..27a8f93753 100644 --- a/code/modules/mob/living/carbon/human/human_powers.dm +++ b/code/modules/mob/living/carbon/human/human_powers.dm @@ -253,6 +253,6 @@ visible_message("\The [src] quivers slightly, then splits apart with a wet slithering noise.") - del(src) + qdel(src) diff --git a/code/modules/mob/living/carbon/resist.dm b/code/modules/mob/living/carbon/resist.dm index 7a4c184ca7..9a511504f3 100644 --- a/code/modules/mob/living/carbon/resist.dm +++ b/code/modules/mob/living/carbon/resist.dm @@ -118,7 +118,7 @@ say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" )) - del(handcuffed) + qdel(handcuffed) handcuffed = null if(buckled && buckled.buckle_require_restraints) buckled.unbuckle_mob() @@ -139,7 +139,7 @@ say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" )) - del(legcuffed) + qdel(legcuffed) legcuffed = null update_inv_legcuffed() diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 589af5a168..5d192a50cd 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -1081,8 +1081,9 @@ if(cell.charge == 0) return 0 - if(cell.use(amount * CELLRATE * CYBORG_POWER_USAGE_MULTIPLIER)) - used_power_this_tick += amount * CYBORG_POWER_USAGE_MULTIPLIER + var/power_use = amount * CYBORG_POWER_USAGE_MULTIPLIER + if(cell.checked_use(CELLRATE * power_use)) + used_power_this_tick += power_use return 1 return 0 diff --git a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm index 1dcd98ffdc..217b1f0914 100644 --- a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm +++ b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm @@ -51,7 +51,7 @@ if(locate(/obj/machinery/portable_atmospherics/hydroponics/soil/invisible) in loc) var/obj/machinery/portable_atmospherics/hydroponics/soil/invisible/SP = locate() in loc - del(SP) + qdel(SP) if(!pulledby) var/obj/effect/plant/food diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm index 6523e2f85f..bf32a41f8d 100644 --- a/code/modules/power/cell.dm +++ b/code/modules/power/cell.dm @@ -10,7 +10,7 @@ ..() updateicon() -/obj/item/weapon/cell/drain_power(var/drain_check, var/surge, var/amount = 0) +/obj/item/weapon/cell/drain_power(var/drain_check, var/surge, var/power = 0) if(drain_check) return 1 @@ -18,9 +18,9 @@ if(charge <= 0) return 0 - var/cell_amt = min((amount * CELLRATE), charge) - use(cell_amt) - return cell_amt / CELLRATE + var/cell_amt = power * CELLRATE + + return use(cell_amt) / CELLRATE /obj/item/weapon/cell/proc/updateicon() overlays.Cut() @@ -38,13 +38,26 @@ /obj/item/weapon/cell/proc/fully_charged() return (charge == maxcharge) -// use power from a cell +// checks if the power cell is able to provide the specified amount of charge +/obj/item/weapon/cell/proc/check_charge(var/amount) + return (charge >= amount) + +// use power from a cell, returns the amount actually used /obj/item/weapon/cell/proc/use(var/amount) if(rigged && amount > 0) explode() return 0 - charge = max(0, charge - amount) - return charge + var/used = min(charge, amount) + charge -= used + return used + +// Checks if the specified amount can be provided. If it can, it removes the amount +// from the cell and returns 1. Otherwise does nothing and returns 0. +/obj/item/weapon/cell/proc/checked_use(var/amount) + if(!check_charge(amount)) + return 0 + use(amount) + return 1 // recharge the cell /obj/item/weapon/cell/proc/give(var/amount) diff --git a/code/modules/power/power.dm b/code/modules/power/power.dm index 387a8c03d1..3b9d094bda 100644 --- a/code/modules/power/power.dm +++ b/code/modules/power/power.dm @@ -374,7 +374,7 @@ if (source_area) source_area.use_power(drained_energy/CELLRATE) else if (istype(power_source,/datum/powernet)) - var/drained_power = drained_energy/CELLRATE //convert from "joules" to "watts" + var/drained_power = drained_energy/CELLRATE drained_power = PN.draw_power(drained_power) else if (istype(power_source, /obj/item/weapon/cell)) cell.use(drained_energy) diff --git a/code/modules/projectiles/guns/energy.dm b/code/modules/projectiles/guns/energy.dm index 32771984f6..2a7fdad647 100644 --- a/code/modules/projectiles/guns/energy.dm +++ b/code/modules/projectiles/guns/energy.dm @@ -78,7 +78,7 @@ /obj/item/weapon/gun/energy/consume_next_projectile() if(!power_supply) return null if(!ispath(projectile_type)) return null - if(!power_supply.use(charge_cost)) return null + if(!power_supply.checked_use(charge_cost)) return null return new projectile_type(src) /obj/item/weapon/gun/energy/proc/get_external_power_supply() diff --git a/html/changelog.html b/html/changelog.html index 6cc3c3bc31..0aadb8c879 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -56,6 +56,36 @@ -->