mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-10 18:32:03 +00:00
Merge pull request #4844 from Unfit/hlhjlklk
Fixes stack behaviour with silicons
This commit is contained in:
@@ -243,46 +243,53 @@
|
||||
var/list/um = R.contents|R.module.modules
|
||||
// ^ makes single list of active (R.contents) and inactive modules (R.module.modules)
|
||||
for(var/obj/O in um)
|
||||
// Engineering
|
||||
if(istype(O,/obj/item/stack/cable_coil))
|
||||
if(O:amount < 50)
|
||||
O:amount += 2
|
||||
if(O:amount > 50)
|
||||
O:amount = 50
|
||||
// Stacks
|
||||
if(istype(O,/obj/item/stack))
|
||||
var/obj/item/stack/S=O
|
||||
if(!istype(S,/obj/item/stack/cable_coil) || !istype(S,/obj/item/stack/medical))
|
||||
continue //Only recharge cable coils and medical stacks
|
||||
|
||||
if(S.amount < S.max_amount)
|
||||
S.amount += 2
|
||||
if(S.amount > S.max_amount)
|
||||
S.amount = S.max_amount
|
||||
// Security
|
||||
if(istype(O,/obj/item/device/flash))
|
||||
if(O:broken)
|
||||
O:broken = 0
|
||||
O:times_used = 0
|
||||
O:icon_state = "flash"
|
||||
var/obj/item/device/flash/F=O
|
||||
if(F.broken)
|
||||
F.broken = 0
|
||||
F.times_used = 0
|
||||
F.icon_state = "flash"
|
||||
if(istype(O,/obj/item/weapon/gun/energy/taser/cyborg))
|
||||
if(O:power_supply.charge < O:power_supply.maxcharge)
|
||||
O:power_supply.give(O:charge_cost)
|
||||
O:update_icon()
|
||||
var/obj/item/weapon/gun/energy/taser/cyborg/C=O
|
||||
if(C.power_supply.charge < C.power_supply.maxcharge)
|
||||
C.power_supply.give(C.charge_cost)
|
||||
C.update_icon()
|
||||
else
|
||||
O:charge_tick = 0
|
||||
C.charge_tick = 0
|
||||
if(istype(O,/obj/item/weapon/melee/baton))
|
||||
var/obj/item/weapon/melee/baton/B = O
|
||||
if(B.bcell)
|
||||
B.bcell.charge = B.bcell.maxcharge
|
||||
//Combat
|
||||
if(istype(O,/obj/item/weapon/gun/energy/laser/cyborg))
|
||||
if(O:power_supply.charge < O:power_supply.maxcharge)
|
||||
O:power_supply.give(O:charge_cost)
|
||||
O:update_icon()
|
||||
var/obj/item/weapon/gun/energy/laser/cyborg/C=O
|
||||
if(C.power_supply.charge < C.power_supply.maxcharge)
|
||||
C.power_supply.give(C.charge_cost)
|
||||
C.update_icon()
|
||||
else
|
||||
O:charge_tick = 0
|
||||
C.charge_tick = 0
|
||||
if(istype(O,/obj/item/weapon/gun/energy/lasercannon/cyborg))
|
||||
if(O:power_supply.charge < O:power_supply.maxcharge)
|
||||
O:power_supply.give(O:charge_cost)
|
||||
O:update_icon()
|
||||
else
|
||||
O:charge_tick = 0
|
||||
var/obj/item/weapon/gun/energy/lasercannon/cyborg/C=O
|
||||
if(C.power_supply.charge < C.power_supply.maxcharge)
|
||||
C.power_supply.give(C.charge_cost)
|
||||
C.update_icon()
|
||||
//Mining
|
||||
if(istype(O,/obj/item/weapon/gun/energy/kinetic_accelerator/cyborg))
|
||||
if(O:power_supply.charge < O:power_supply.maxcharge)
|
||||
O:power_supply.give(O:charge_cost)
|
||||
O:update_icon()
|
||||
var/obj/item/weapon/gun/energy/kinetic_accelerator/cyborg/C=O
|
||||
if(C.power_supply.charge < C.power_supply.maxcharge)
|
||||
C.power_supply.give(C.charge_cost)
|
||||
C.update_icon()
|
||||
else
|
||||
O:charge_tick = 0
|
||||
//Service
|
||||
@@ -294,11 +301,6 @@
|
||||
var/obj/item/weapon/reagent_containers/glass/bottle/robot/B = O
|
||||
if(B.reagent && (B.reagents.get_reagent_amount(B.reagent) < B.volume))
|
||||
B.reagents.add_reagent(B.reagent, 2)
|
||||
if(istype(O,/obj/item/stack/medical/bruise_pack) || istype(O,/obj/item/stack/medical/ointment) || istype(O,/obj/item/stack/medical/advanced/bruise_pack) || istype(O,/obj/item/stack/medical/advanced/ointment) || istype(O,/obj/item/stack/medical/splint))
|
||||
if(O:amount < O:max_amount)
|
||||
O:amount += 2
|
||||
if(O:amount > O:max_amount)
|
||||
O:amount = O:max_amount
|
||||
if(istype(O,/obj/item/weapon/melee/defibrillator))
|
||||
var/obj/item/weapon/melee/defibrillator/D = O
|
||||
D.charges = initial(D.charges)
|
||||
|
||||
@@ -121,18 +121,6 @@ var/global/list/datum/stack_recipe/metal_recipes = list ( \
|
||||
returnToPool(src)
|
||||
return 2
|
||||
|
||||
/obj/item/stack/sheet/metal/use(var/amount)
|
||||
ASSERT(isnum(src.amount))
|
||||
if(src.amount>=amount)
|
||||
src.amount-=amount
|
||||
else
|
||||
return 0
|
||||
. = 1
|
||||
if (src.amount<=0)
|
||||
if(usr)
|
||||
usr.before_take_item(src)
|
||||
spawn returnToPool(src)
|
||||
|
||||
/obj/item/stack/sheet/metal/recycle(var/datum/materials/rec)
|
||||
rec.addAmount("iron",1*amount)
|
||||
return 1
|
||||
|
||||
@@ -146,7 +146,7 @@
|
||||
var/obj/item/stack/new_item = O
|
||||
new_item.amount = R.res_amount*multiplier
|
||||
//new_item.add_to_stacks(usr)
|
||||
src.amount-=R.req_amount*multiplier
|
||||
src.use(R.req_amount*multiplier)
|
||||
if (src.amount<=0)
|
||||
var/oldsrc = src
|
||||
//src = null //dont kill proc after del()
|
||||
@@ -172,13 +172,31 @@
|
||||
|
||||
/obj/item/stack/proc/use(var/amount)
|
||||
ASSERT(isnum(src.amount))
|
||||
|
||||
if(src.amount>=amount)
|
||||
src.amount-=amount
|
||||
else
|
||||
return 0
|
||||
. = 1
|
||||
if (src.amount<=0)
|
||||
if (src.amount<=0) //If the stack is empty after removing the required amount of items!
|
||||
if(usr)
|
||||
if(istype(usr,/mob/living/silicon/robot))
|
||||
var/mob/living/silicon/robot/R=usr
|
||||
if(R.module)
|
||||
R.module.modules -= src
|
||||
if(R.module_active == src) R.module_active = null
|
||||
if(R.module_state_1 == src)
|
||||
R.uneq_module(R.module_state_1)
|
||||
R.module_state_1 = null
|
||||
R.inv1.icon_state = "inv1"
|
||||
else if(R.module_state_2 == src)
|
||||
R.uneq_module(R.module_state_2)
|
||||
R.module_state_2 = null
|
||||
R.inv2.icon_state = "inv2"
|
||||
else if(R.module_state_3 == src)
|
||||
R.uneq_module(R.module_state_3)
|
||||
R.module_state_3 = null
|
||||
R.inv3.icon_state = "inv3"
|
||||
usr.before_take_item(src)
|
||||
spawn returnToPool(src)
|
||||
|
||||
|
||||
@@ -15,19 +15,6 @@
|
||||
siemens_coefficient = 1
|
||||
max_amount = 60
|
||||
|
||||
/obj/item/stack/tile/use(var/amount)
|
||||
ASSERT(isnum(src.amount))
|
||||
if(src.amount>=amount)
|
||||
src.amount-=amount
|
||||
else
|
||||
return 0
|
||||
. = 1
|
||||
if (src.amount<=0)
|
||||
if(usr)
|
||||
usr.before_take_item(src)
|
||||
spawn
|
||||
returnToPool(src)
|
||||
|
||||
/obj/item/stack/tile/plasteel/New(var/loc, var/amount=null)
|
||||
. = ..()
|
||||
pixel_x = rand(1, 14)
|
||||
|
||||
@@ -539,17 +539,12 @@
|
||||
else
|
||||
stat(null, text("No Cell Inserted!"))
|
||||
|
||||
|
||||
/*
|
||||
/mob/living/silicon/robot/proc/show_cable_lengths()
|
||||
var/obj/item/stack/cable_coil/coil = installed_module(/obj/item/stack/cable_coil)
|
||||
if(coil)
|
||||
stat(null, text("Cable Lengths: [coil.amount]/[coil.max_amount]"))
|
||||
|
||||
/mob/living/silicon/robot/proc/show_welder_fuel()
|
||||
var/obj/item/weapon/weldingtool/WT = installed_module(/obj/item/weapon/weldingtool)
|
||||
if(WT)
|
||||
stat(null, text("Welder Fuel: [WT.get_fuel()]/[WT.max_fuel]"))
|
||||
|
||||
/mob/living/silicon/robot/proc/show_metal_sheets()
|
||||
var/obj/item/stack/sheet/metal/cyborg/M = installed_module(/obj/item/stack/sheet/metal/cyborg)
|
||||
if(M)
|
||||
@@ -564,7 +559,16 @@
|
||||
var/obj/item/stack/sheet/glass/rglass/G = installed_module(/obj/item/stack/sheet/glass/rglass)
|
||||
if(G)
|
||||
stat(null, text("Reinforced Glass Sheets: [G.amount]/50"))
|
||||
*/
|
||||
/mob/living/silicon/robot/proc/show_welder_fuel()
|
||||
var/obj/item/weapon/weldingtool/WT = installed_module(/obj/item/weapon/weldingtool)
|
||||
if(WT)
|
||||
stat(null, text("Welder Fuel: [WT.get_fuel()]/[WT.max_fuel]"))
|
||||
|
||||
/mob/living/silicon/robot/proc/show_stacks()
|
||||
if(!module) return
|
||||
for(var/obj/item/stack/S in module.modules)
|
||||
stat(null, text("[S.name]: [S.amount]/[S.max_amount]"))
|
||||
|
||||
// update the status screen display
|
||||
/mob/living/silicon/robot/Stat()
|
||||
@@ -572,11 +576,14 @@
|
||||
if(statpanel("Status"))
|
||||
show_cell_power()
|
||||
show_jetpack_pressure()
|
||||
/*
|
||||
show_cable_lengths()
|
||||
show_welder_fuel()
|
||||
show_metal_sheets()
|
||||
show_glass_sheets()
|
||||
show_rglass_sheets()
|
||||
show_rglass_sheets()*/
|
||||
show_welder_fuel()
|
||||
show_stacks()
|
||||
|
||||
|
||||
/mob/living/silicon/robot/restrained()
|
||||
return 0
|
||||
|
||||
@@ -1,2 +1,3 @@
|
||||
author: Unid
|
||||
changes: []
|
||||
changes:
|
||||
- bugfix: Fixed stacks not disappearing from silicons when used up.
|
||||
|
||||
Reference in New Issue
Block a user