Merge pull request #4844 from Unfit/hlhjlklk

Fixes stack behaviour with silicons
This commit is contained in:
d3athrow
2015-06-12 12:06:22 -05:00
6 changed files with 70 additions and 67 deletions

View File

@@ -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)

View File

@@ -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

View File

@@ -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)

View File

@@ -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)

View File

@@ -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

View File

@@ -1,2 +1,3 @@
author: Unid
changes: []
changes:
- bugfix: Fixed stacks not disappearing from silicons when used up.