From 145b627464b2b1aa9082dd84bf2baa9af5c756bf Mon Sep 17 00:00:00 2001 From: RavingManiac Date: Fri, 10 Jul 2015 19:12:43 +0800 Subject: [PATCH 1/3] Storage system altered to be storage space based --- code/game/objects/items.dm | 3 +- .../objects/items/weapons/storage/backpack.dm | 4 +- .../objects/items/weapons/storage/bags.dm | 14 +- .../objects/items/weapons/storage/belt.dm | 3 +- .../objects/items/weapons/storage/boxes.dm | 14 +- .../objects/items/weapons/storage/fancy.dm | 7 +- .../objects/items/weapons/storage/firstaid.dm | 2 - .../objects/items/weapons/storage/lockbox.dm | 1 - .../objects/items/weapons/storage/misc.dm | 1 - .../objects/items/weapons/storage/storage.dm | 151 ++++++++++++++++-- .../objects/items/weapons/storage/toolbox.dm | 2 +- .../items/weapons/storage/uplink_kits.dm | 1 - code/modules/mob/inventory.dm | 6 +- code/modules/power/lighting.dm | 2 +- .../research/xenoarchaeology/tools/tools.dm | 3 +- html/changelogs/RavingManiac-PR-10095.yml | 6 + icons/mob/screen1.dmi | Bin 168715 -> 169008 bytes 17 files changed, 165 insertions(+), 55 deletions(-) create mode 100644 html/changelogs/RavingManiac-PR-10095.yml diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index d39d0e187ee..fe2004e911d 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -9,6 +9,7 @@ var/burning = null var/hitsound = null var/w_class = 3.0 + var/storage_cost = null var/slot_flags = 0 //This is used to determine on which slots an item can fit. var/no_attack_log = 0 //If it's an item we don't want to log attack_logs with, set this to 1 pass_flags = PASSTABLE @@ -339,7 +340,7 @@ var/list/global/slot_flags_enumeration = list( var/allow = 0 if(H.back && istype(H.back, /obj/item/weapon/storage/backpack)) var/obj/item/weapon/storage/backpack/B = H.back - if(B.contents.len < B.storage_slots && w_class <= B.max_w_class) + if(B.can_be_inserted(src,1)) allow = 1 if(!allow) return 0 diff --git a/code/game/objects/items/weapons/storage/backpack.dm b/code/game/objects/items/weapons/storage/backpack.dm index e4df419e18e..c4b7133a22d 100644 --- a/code/game/objects/items/weapons/storage/backpack.dm +++ b/code/game/objects/items/weapons/storage/backpack.dm @@ -50,6 +50,7 @@ icon_state = "holdingpack" max_w_class = 4 max_storage_space = 56 + storage_cost = 29 New() ..() @@ -61,7 +62,7 @@ qdel(W) return ..() - + //Please don't clutter the parent storage item with stupid hacks. can_be_inserted(obj/item/W as obj, stop_messages = 0) if(istype(W, /obj/item/weapon/storage/backpack/holding)) @@ -74,7 +75,6 @@ icon_state = "giftbag0" item_state = "giftbag" w_class = 4.0 - storage_slots = 20 max_w_class = 3 max_storage_space = 400 // can store a ton of shit! item_state_slots = null diff --git a/code/game/objects/items/weapons/storage/bags.dm b/code/game/objects/items/weapons/storage/bags.dm index 4c808ad2f5f..8be4acb12c9 100644 --- a/code/game/objects/items/weapons/storage/bags.dm +++ b/code/game/objects/items/weapons/storage/bags.dm @@ -34,7 +34,6 @@ w_class = 4 max_w_class = 2 - storage_slots = 21 can_hold = list() // any cant_hold = list(/obj/item/weapon/disk/nuclear) @@ -61,7 +60,6 @@ w_class = 4 max_w_class = 2 - storage_slots = 21 can_hold = list() // any cant_hold = list(/obj/item/weapon/disk/nuclear) @@ -76,8 +74,7 @@ icon_state = "satchel" slot_flags = SLOT_BELT | SLOT_POCKET w_class = 3 - storage_slots = 50 - max_storage_space = 200 //Doesn't matter what this is, so long as it's more or equal to storage_slots * ore.w_class + max_storage_space = 200 max_w_class = 3 can_hold = list(/obj/item/weapon/ore) @@ -90,8 +87,7 @@ name = "plant bag" icon = 'icons/obj/hydroponics_machines.dmi' icon_state = "plantbag" - storage_slots = 50; //the number of plant pieces it can carry. - max_storage_space = 200 //Doesn't matter what this is, so long as it's more or equal to storage_slots * plants.w_class + max_storage_space = 200 max_w_class = 3 w_class = 2 can_hold = list(/obj/item/weapon/reagent_containers/food/snacks/grown,/obj/item/seeds,/obj/item/weapon/grown) @@ -111,6 +107,7 @@ var/capacity = 300; //the number of sheets it can carry. w_class = 3 + storage_slots = 7 allow_quick_empty = 1 // this function is superceded New() @@ -193,7 +190,7 @@ var/col_count = min(7,storage_slots) -1 if (adjusted_contents > 7) row_num = round((adjusted_contents-1) / 7) // 7 is the maximum allowed width. - src.standard_orient_objs(row_num, col_count, numbered_contents) + src.slot_orient_objs(row_num, col_count, numbered_contents) return @@ -248,8 +245,7 @@ icon = 'icons/obj/storage.dmi' icon_state = "cashbag" desc = "A bag for carrying lots of cash. It's got a big dollar sign printed on the front." - storage_slots = 50; //the number of cash pieces it can carry. - max_storage_space = 200 //Doesn't matter what this is, so long as it's more or equal to storage_slots * cash.w_class + max_storage_space = 200 max_w_class = 3 w_class = 2 can_hold = list(/obj/item/weapon/coin,/obj/item/weapon/spacecash) diff --git a/code/game/objects/items/weapons/storage/belt.dm b/code/game/objects/items/weapons/storage/belt.dm index 7080cd19319..4d5b5e2e463 100644 --- a/code/game/objects/items/weapons/storage/belt.dm +++ b/code/game/objects/items/weapons/storage/belt.dm @@ -4,6 +4,8 @@ icon = 'icons/obj/clothing/belts.dmi' icon_state = "utilitybelt" item_state = "utility" + storage_slots = 7 + max_w_class = 3 slot_flags = SLOT_BELT attack_verb = list("whipped", "lashed", "disciplined") @@ -100,7 +102,6 @@ desc = "Can hold security gear like handcuffs and flashes." icon_state = "securitybelt" item_state = "security" - storage_slots = 7 max_w_class = 3 max_storage_space = 28 can_hold = list( diff --git a/code/game/objects/items/weapons/storage/boxes.dm b/code/game/objects/items/weapons/storage/boxes.dm index 95c41916222..7a176d82e58 100644 --- a/code/game/objects/items/weapons/storage/boxes.dm +++ b/code/game/objects/items/weapons/storage/boxes.dm @@ -437,7 +437,6 @@ desc = "Drymate brand monkey cubes. Just add water!" icon = 'icons/obj/food.dmi' icon_state = "monkeycubebox" - storage_slots = 7 can_hold = list(/obj/item/weapon/reagent_containers/food/snacks/monkeycube) New() ..() @@ -551,11 +550,10 @@ desc = "Eight wrappers of fun! Ages 8 and up. Not suitable for children." icon = 'icons/obj/toy.dmi' icon_state = "spbox" - storage_slots = 8 can_hold = list(/obj/item/toy/snappop) New() ..() - for(var/i=1; i <= storage_slots; i++) + for(var/i=1; i <= 8; i++) new /obj/item/toy/snappop(src) /obj/item/weapon/storage/box/matches @@ -564,14 +562,13 @@ icon = 'icons/obj/cigarettes.dmi' icon_state = "matchbox" item_state = "zippo" - storage_slots = 10 w_class = 1 slot_flags = SLOT_BELT can_hold = list(/obj/item/weapon/flame/match) New() ..() - for(var/i=1; i <= storage_slots; i++) + for(var/i=1; i <= 10; i++) new /obj/item/weapon/flame/match(src) attackby(obj/item/weapon/flame/match/W as obj, mob/user as mob) @@ -589,7 +586,7 @@ icon_state = "syringe" New() ..() - for (var/i; i < storage_slots; i++) + for (var/i; i < 7; i++) new /obj/item/weapon/reagent_containers/hypospray/autoinjector(src) /obj/item/weapon/storage/box/lights @@ -598,9 +595,7 @@ icon_state = "light" desc = "This box is shaped on the inside so that only light tubes and bulbs fit." item_state = "syringe_kit" - storage_slots=21 can_hold = list(/obj/item/weapon/light/tube, /obj/item/weapon/light/bulb) - max_storage_space = 42 //holds 21 items of w_class 2 use_to_pickup = 1 // for picking up broken bulbs, not that most people will try /obj/item/weapon/storage/box/lights/bulbs/New() @@ -634,8 +629,7 @@ icon = 'icons/obj/storage.dmi' icon_state = "portafreezer" item_state = "medicalpack" - storage_slots=7 max_w_class = 3 can_hold = list(/obj/item/organ, /obj/item/weapon/reagent_containers/food, /obj/item/weapon/reagent_containers/glass) max_storage_space = 21 - use_to_pickup = 1 // for picking up broken bulbs, not that most people will try + use_to_pickup = 1 // for picking up broken bulbs, not that most people will try diff --git a/code/game/objects/items/weapons/storage/fancy.dm b/code/game/objects/items/weapons/storage/fancy.dm index 081d1f7ba65..e352dd2c958 100644 --- a/code/game/objects/items/weapons/storage/fancy.dm +++ b/code/game/objects/items/weapons/storage/fancy.dm @@ -46,7 +46,6 @@ icon_state = "eggbox" icon_type = "egg" name = "egg box" - storage_slots = 12 can_hold = list( /obj/item/weapon/reagent_containers/food/snacks/egg, /obj/item/weapon/reagent_containers/food/snacks/boiledegg @@ -54,7 +53,7 @@ /obj/item/weapon/storage/fancy/egg_box/New() ..() - for(var/i=1; i <= storage_slots; i++) + for(var/i=1; i <= 12; i++) new /obj/item/weapon/reagent_containers/food/snacks/egg(src) return @@ -69,14 +68,13 @@ icon_state = "candlebox5" icon_type = "candle" item_state = "candlebox5" - storage_slots = 5 throwforce = 2 slot_flags = SLOT_BELT /obj/item/weapon/storage/fancy/candle_box/New() ..() - for(var/i=1; i <= storage_slots; i++) + for(var/i=1; i <= 5; i++) new /obj/item/weapon/flame/candle(src) return @@ -90,7 +88,6 @@ icon = 'icons/obj/crayons.dmi' icon_state = "crayonbox" w_class = 2.0 - storage_slots = 6 icon_type = "crayon" can_hold = list( /obj/item/weapon/pen/crayon diff --git a/code/game/objects/items/weapons/storage/firstaid.dm b/code/game/objects/items/weapons/storage/firstaid.dm index c23dfcdb516..e58b0ac0a85 100644 --- a/code/game/objects/items/weapons/storage/firstaid.dm +++ b/code/game/objects/items/weapons/storage/firstaid.dm @@ -131,7 +131,6 @@ /obj/item/weapon/storage/firstaid/surgery name = "surgery kit" desc = "Contains tools for surgery." - storage_slots = 10 /obj/item/weapon/storage/firstaid/surgery/New() ..() @@ -161,7 +160,6 @@ can_hold = list(/obj/item/weapon/reagent_containers/pill,/obj/item/weapon/dice,/obj/item/weapon/paper) allow_quick_gather = 1 use_to_pickup = 1 - storage_slots = 14 use_sound = null /obj/item/weapon/storage/pill_bottle/antitox diff --git a/code/game/objects/items/weapons/storage/lockbox.dm b/code/game/objects/items/weapons/storage/lockbox.dm index 297ac1d4b18..f88f731e36d 100644 --- a/code/game/objects/items/weapons/storage/lockbox.dm +++ b/code/game/objects/items/weapons/storage/lockbox.dm @@ -8,7 +8,6 @@ w_class = 4 max_w_class = 3 max_storage_space = 14 //The sum of the w_classes of all the items in this storage item. - storage_slots = 4 req_access = list(access_armory) var/locked = 1 var/broken = 0 diff --git a/code/game/objects/items/weapons/storage/misc.dm b/code/game/objects/items/weapons/storage/misc.dm index 6bd9495714f..755ba299e1b 100644 --- a/code/game/objects/items/weapons/storage/misc.dm +++ b/code/game/objects/items/weapons/storage/misc.dm @@ -15,7 +15,6 @@ icon = 'icons/obj/food.dmi' icon_state = "donutbox" name = "donut box" - storage_slots = 6 var/startswith = 6 can_hold = list(/obj/item/weapon/reagent_containers/food/snacks/donut) foldable = /obj/item/stack/material/cardboard diff --git a/code/game/objects/items/weapons/storage/storage.dm b/code/game/objects/items/weapons/storage/storage.dm index 70c1d33d732..0bec6598b08 100644 --- a/code/game/objects/items/weapons/storage/storage.dm +++ b/code/game/objects/items/weapons/storage/storage.dm @@ -12,10 +12,16 @@ var/list/can_hold = new/list() //List of objects which this item can store (if set, it can't store anything else) var/list/cant_hold = new/list() //List of objects which this item can't store (in effect only if can_hold isn't set) var/list/is_seeing = new/list() //List of mobs which are currently seeing the contents of this item's storage - var/max_w_class = 2 //Max size of objects that this object can store (in effect only if can_hold isn't set) + var/max_w_class = null //Max size of objects that this object can store (in effect only if can_hold isn't set) var/max_storage_space = 14 //The sum of the storage costs of all the items in this storage item. - var/storage_slots = 7 //The number of storage slots in this container. + var/storage_slots = null //The number of storage slots in this container. var/obj/screen/storage/boxes = null + var/obj/screen/storage/storage_start = null //storage UI + var/obj/screen/storage/storage_continue = null + var/obj/screen/storage/storage_end = null + var/obj/screen/storage/stored_start = null + var/obj/screen/storage/stored_continue = null + var/obj/screen/storage/stored_end = null var/obj/screen/close/closer = null var/use_to_pickup //Set this to make it possible to use this item in an inverse way, so you can have the item in your hand and click items on the floor to pick them up. var/display_contents_with_number //Set this to make the storage item group contents of the same type and display them as a number. @@ -27,6 +33,12 @@ /obj/item/weapon/storage/Destroy() close_all() qdel(boxes) + qdel(src.storage_start) + qdel(src.storage_continue) + qdel(src.storage_end) + qdel(src.stored_start) + qdel(src.stored_continue) + qdel(src.stored_end) qdel(closer) ..() @@ -90,11 +102,19 @@ if(user.s_active) user.s_active.hide_from(user) user.client.screen -= src.boxes + user.client.screen -= src.storage_start + user.client.screen -= src.storage_continue + user.client.screen -= src.storage_end user.client.screen -= src.closer user.client.screen -= src.contents - user.client.screen += src.boxes user.client.screen += src.closer user.client.screen += src.contents + if(storage_slots) + user.client.screen += src.boxes + else + user.client.screen += src.storage_start + user.client.screen += src.storage_continue + user.client.screen += src.storage_end user.s_active = src is_seeing |= user return @@ -104,6 +124,9 @@ if(!user.client) return user.client.screen -= src.boxes + user.client.screen -= src.storage_start + user.client.screen -= src.storage_continue + user.client.screen -= src.storage_end user.client.screen -= src.closer user.client.screen -= src.contents if(user.s_active == src) @@ -155,7 +178,7 @@ return //This proc draws out the inventory and places the items on it. It uses the standard position. -/obj/item/weapon/storage/proc/standard_orient_objs(var/rows, var/cols, var/list/obj/item/display_contents) +/obj/item/weapon/storage/proc/slot_orient_objs(var/rows, var/cols, var/list/obj/item/display_contents) var/cx = 4 var/cy = 2+rows src.boxes.screen_loc = "4:16,2:16 to [4+cols]:16,[2+rows]:16" @@ -181,6 +204,50 @@ src.closer.screen_loc = "[4+cols+1]:16,2:16" return +/obj/item/weapon/storage/proc/space_orient_objs(var/list/obj/item/display_contents) + + var/storage_cap_width = 2 //length of sprite for storage box start and end + var/stored_cap_width = 4 + var/storage_width = min(max_storage_space*8,284) + + storage_start.overlays.Cut() + + var/matrix/M = matrix() + M.Scale((storage_width-storage_cap_width*2+3)/32,1) + src.storage_continue.transform = M + + src.storage_start.screen_loc = "4:16,2:16" + src.storage_continue.screen_loc = "4:[storage_cap_width+(storage_width-storage_cap_width*2)/2+2],2:16" + src.storage_end.screen_loc = "4:[19+storage_width-storage_cap_width],2:16" + + var/startpoint = 0 + var/endpoint = 1 + + for(var/obj/item/O in contents) + startpoint = endpoint + 1 + endpoint += storage_width * O.get_storage_cost()/max_storage_space + + var/matrix/M_start = matrix() + var/matrix/M_continue = matrix() + var/matrix/M_end = matrix() + M_start.Translate(startpoint,0) + M_continue.Scale((endpoint-startpoint-stored_cap_width*2)/32,1) + M_continue.Translate(startpoint+stored_cap_width+(endpoint-startpoint-stored_cap_width*2)/2 - 16,0) + M_end.Translate(endpoint-stored_cap_width,0) + src.stored_start.transform = M_start + src.stored_continue.transform = M_continue + src.stored_end.transform = M_end + storage_start.overlays += src.stored_start + storage_start.overlays += src.stored_continue + storage_start.overlays += src.stored_end + + O.screen_loc = "4:[round((startpoint+endpoint)/2)+2],2:16" + O.maptext = "" + O.layer = 20 + + src.closer.screen_loc = "4:[storage_width+19],2:16" + return + /datum/numbered_display var/obj/item/sample_object var/number @@ -212,12 +279,14 @@ adjusted_contents++ numbered_contents.Add( new/datum/numbered_display(I) ) - //var/mob/living/carbon/human/H = user - var/row_num = 0 - var/col_count = min(7,storage_slots) -1 - if (adjusted_contents > 7) - row_num = round((adjusted_contents-1) / 7) // 7 is the maximum allowed width. - src.standard_orient_objs(row_num, col_count, numbered_contents) + if(storage_slots == null) + src.space_orient_objs(numbered_contents) + else + var/row_num = 0 + var/col_count = min(7,storage_slots) -1 + if (adjusted_contents > 7) + row_num = round((adjusted_contents-1) / 7) // 7 is the maximum allowed width. + src.slot_orient_objs(row_num, col_count, numbered_contents) return //This proc return 1 if the item can be picked up and 0 if it can't. @@ -227,7 +296,7 @@ if(src.loc == W) return 0 //Means the item is already in the storage item - if(contents.len >= storage_slots) + if(storage_slots != null && contents.len >= storage_slots) if(!stop_messages) usr << "[src] is full, make some space." return 0 //Storage item is full @@ -244,9 +313,9 @@ usr << "[src] cannot hold [W]." return 0 - if (W.w_class > max_w_class) + if (max_w_class != null && W.w_class > max_w_class) if(!stop_messages) - usr << "[W] is too big for this [src]." + usr << "[W] is too long for this [src]." return 0 var/total_storage_space = W.get_storage_cost() @@ -255,7 +324,7 @@ if(total_storage_space > max_storage_space) if(!stop_messages) - usr << "[src] is full, make some space." + usr << "[src] is too full, make some space." return 0 if(W.w_class >= src.w_class && (istype(W, /obj/item/weapon/storage))) @@ -418,12 +487,48 @@ else verbs -= /obj/item/weapon/storage/verb/toggle_gathering_mode + spawn(5) + var/total_storage_space = 0 + for(var/obj/item/I in contents) + total_storage_space += I.get_storage_cost() + max_storage_space = max(total_storage_space,max_storage_space) //prevents spawned containers from being too small for their contents + src.boxes = new /obj/screen/storage( ) src.boxes.name = "storage" src.boxes.master = src src.boxes.icon_state = "block" src.boxes.screen_loc = "7,7 to 10,8" src.boxes.layer = 19 + + src.storage_start = new /obj/screen/storage( ) + src.storage_start.name = "storage" + src.storage_start.master = src + src.storage_start.icon_state = "storage_start" + src.storage_start.screen_loc = "7,7 to 10,8" + src.storage_start.layer = 19 + src.storage_continue = new /obj/screen/storage( ) + src.storage_continue.name = "storage" + src.storage_continue.master = src + src.storage_continue.icon_state = "storage_continue" + src.storage_continue.screen_loc = "7,7 to 10,8" + src.storage_continue.layer = 19 + src.storage_end = new /obj/screen/storage( ) + src.storage_end.name = "storage" + src.storage_end.master = src + src.storage_end.icon_state = "storage_end" + src.storage_end.screen_loc = "7,7 to 10,8" + src.storage_end.layer = 19 + + src.stored_start = new /obj //we just need these to hold the icon + src.stored_start.icon_state = "stored_start" + src.stored_start.layer = 19 + src.stored_continue = new /obj + src.stored_continue.icon_state = "stored_continue" + src.stored_continue.layer = 19 + src.stored_end = new /obj + src.stored_end.icon_state = "stored_end" + src.stored_end.layer = 19 + src.closer = new /obj/screen/close( ) src.closer.master = src src.closer.icon_state = "x" @@ -481,4 +586,20 @@ return depth /obj/item/proc/get_storage_cost() - return 2**(w_class-1) //1,2,4,8,16,... + if (storage_cost) + return storage_cost + else + if(w_class == 1) + return 1 + if(w_class == 2) + return 2 + if(w_class == 3) + return 4 + if(w_class == 4) + return 8 + if(w_class == 5) + return 16 + else + return 1000 + + //return 2**(w_class-1) //1,2,4,8,16,... diff --git a/code/game/objects/items/weapons/storage/toolbox.dm b/code/game/objects/items/weapons/storage/toolbox.dm index 11c2d6a8539..4bf67deaa0e 100644 --- a/code/game/objects/items/weapons/storage/toolbox.dm +++ b/code/game/objects/items/weapons/storage/toolbox.dm @@ -11,7 +11,7 @@ throw_range = 7 w_class = 4 max_w_class = 3 - max_storage_space = 14 //can hold 7 w_class-2 items or up to 3 w_class-3 items (with 1 w_class-2 item as change). + max_storage_space = 14 //enough to hold all starting contents origin_tech = list(TECH_COMBAT = 1) attack_verb = list("robusted") diff --git a/code/game/objects/items/weapons/storage/uplink_kits.dm b/code/game/objects/items/weapons/storage/uplink_kits.dm index 6b3fdd04ae5..c24126a0db2 100644 --- a/code/game/objects/items/weapons/storage/uplink_kits.dm +++ b/code/game/objects/items/weapons/storage/uplink_kits.dm @@ -127,7 +127,6 @@ /obj/item/weapon/storage/box/syndie_kit/chameleon name = "chameleon kit" desc = "Comes with all the clothes you need to impersonate most people. Acting lessons sold seperately." - storage_slots = 10 /obj/item/weapon/storage/box/syndie_kit/chameleon/New() ..() diff --git a/code/modules/mob/inventory.dm b/code/modules/mob/inventory.dm index 1115826be80..dcdf91f4c38 100644 --- a/code/modules/mob/inventory.dm +++ b/code/modules/mob/inventory.dm @@ -77,13 +77,13 @@ var/list/slot_equipment_priority = list( \ // Try put it in their backpack if(istype(src.back,/obj/item/weapon/storage)) var/obj/item/weapon/storage/backpack = src.back - if(backpack.contents.len < backpack.storage_slots) - newitem.loc = src.back + if(backpack.can_be_inserted(newitem, 1)) + newitem.loc = backpack return 1 // Try to place it in any item that can store stuff, on the mob. for(var/obj/item/weapon/storage/S in src.contents) - if (S.contents.len < S.storage_slots) + if(S.can_be_inserted(newitem, 1)) newitem.loc = S return 1 return 0 diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index 37133f7ff3d..4ef2ab4f49c 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -598,7 +598,7 @@ icon = 'icons/obj/lighting.dmi' force = 2 throwforce = 5 - w_class = 2 + w_class = 1 var/status = 0 // LIGHT_OK, LIGHT_BURNED or LIGHT_BROKEN var/base_state var/switchcount = 0 // number of times switched diff --git a/code/modules/research/xenoarchaeology/tools/tools.dm b/code/modules/research/xenoarchaeology/tools/tools.dm index e16db119c55..6d281eeedb7 100644 --- a/code/modules/research/xenoarchaeology/tools/tools.dm +++ b/code/modules/research/xenoarchaeology/tools/tools.dm @@ -30,7 +30,6 @@ icon_state = "satchel" slot_flags = SLOT_BELT | SLOT_POCKET w_class = 3 - storage_slots = 50 - max_storage_space = 200 //Doesn't matter what this is, so long as it's more or equal to storage_slots * ore.w_class + max_storage_space = 200 max_w_class = 3 can_hold = list(/obj/item/weapon/fossil) diff --git a/html/changelogs/RavingManiac-PR-10095.yml b/html/changelogs/RavingManiac-PR-10095.yml new file mode 100644 index 00000000000..05c9267af93 --- /dev/null +++ b/html/changelogs/RavingManiac-PR-10095.yml @@ -0,0 +1,6 @@ +author: RavingManiac + +delete-after: True + +changes: + - rscadd: "Storage in backpacks, boxes and other containers is now capacity-based. Some containers like belts remain slot-based." diff --git a/icons/mob/screen1.dmi b/icons/mob/screen1.dmi index 8181013f7ee1be7be12bec1c7496197e1c2a0c74..960bcfc32b2ecca9d5c5850d189136a6a6040a21 100644 GIT binary patch delta 13307 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 From 238406ae1d6ef4c0b2b9b6a7dd1b5391aadff7c6 Mon Sep 17 00:00:00 2001 From: RavingManiac Date: Tue, 14 Jul 2015 19:52:46 +0800 Subject: [PATCH 2/3] Tweaks to storage items --- code/game/objects/items/weapons/storage/bags.dm | 6 +++--- code/game/objects/items/weapons/storage/fancy.dm | 3 ++- code/game/objects/items/weapons/storage/storage.dm | 3 ++- code/modules/research/xenoarchaeology/tools/tools.dm | 2 +- 4 files changed, 8 insertions(+), 6 deletions(-) diff --git a/code/game/objects/items/weapons/storage/bags.dm b/code/game/objects/items/weapons/storage/bags.dm index 8be4acb12c9..295c8db5b0b 100644 --- a/code/game/objects/items/weapons/storage/bags.dm +++ b/code/game/objects/items/weapons/storage/bags.dm @@ -74,7 +74,7 @@ icon_state = "satchel" slot_flags = SLOT_BELT | SLOT_POCKET w_class = 3 - max_storage_space = 200 + max_storage_space = 100 max_w_class = 3 can_hold = list(/obj/item/weapon/ore) @@ -87,7 +87,7 @@ name = "plant bag" icon = 'icons/obj/hydroponics_machines.dmi' icon_state = "plantbag" - max_storage_space = 200 + max_storage_space = 100 max_w_class = 3 w_class = 2 can_hold = list(/obj/item/weapon/reagent_containers/food/snacks/grown,/obj/item/seeds,/obj/item/weapon/grown) @@ -245,7 +245,7 @@ icon = 'icons/obj/storage.dmi' icon_state = "cashbag" desc = "A bag for carrying lots of cash. It's got a big dollar sign printed on the front." - max_storage_space = 200 + max_storage_space = 100 max_w_class = 3 w_class = 2 can_hold = list(/obj/item/weapon/coin,/obj/item/weapon/spacecash) diff --git a/code/game/objects/items/weapons/storage/fancy.dm b/code/game/objects/items/weapons/storage/fancy.dm index e352dd2c958..6f23e6f9501 100644 --- a/code/game/objects/items/weapons/storage/fancy.dm +++ b/code/game/objects/items/weapons/storage/fancy.dm @@ -46,6 +46,7 @@ icon_state = "eggbox" icon_type = "egg" name = "egg box" + storage_slots = 12 can_hold = list( /obj/item/weapon/reagent_containers/food/snacks/egg, /obj/item/weapon/reagent_containers/food/snacks/boiledegg @@ -53,7 +54,7 @@ /obj/item/weapon/storage/fancy/egg_box/New() ..() - for(var/i=1; i <= 12; i++) + for(var/i=1; i <= storage_slots; i++) new /obj/item/weapon/reagent_containers/food/snacks/egg(src) return diff --git a/code/game/objects/items/weapons/storage/storage.dm b/code/game/objects/items/weapons/storage/storage.dm index 0bec6598b08..60cfa4e1bae 100644 --- a/code/game/objects/items/weapons/storage/storage.dm +++ b/code/game/objects/items/weapons/storage/storage.dm @@ -206,9 +206,10 @@ /obj/item/weapon/storage/proc/space_orient_objs(var/list/obj/item/display_contents) + var/baseline_max_storage_space = 28 //should be equal to backpack capacity var/storage_cap_width = 2 //length of sprite for storage box start and end var/stored_cap_width = 4 - var/storage_width = min(max_storage_space*8,284) + var/storage_width = min( round( 224 * max_storage_space/baseline_max_storage_space ,1) ,284) storage_start.overlays.Cut() diff --git a/code/modules/research/xenoarchaeology/tools/tools.dm b/code/modules/research/xenoarchaeology/tools/tools.dm index 6d281eeedb7..bc9d0ca21f5 100644 --- a/code/modules/research/xenoarchaeology/tools/tools.dm +++ b/code/modules/research/xenoarchaeology/tools/tools.dm @@ -30,6 +30,6 @@ icon_state = "satchel" slot_flags = SLOT_BELT | SLOT_POCKET w_class = 3 - max_storage_space = 200 + max_storage_space = 100 max_w_class = 3 can_hold = list(/obj/item/weapon/fossil) From a8cea3862ddcf6affbfd18663818b4a0b9ed6b02 Mon Sep 17 00:00:00 2001 From: RavingManiac Date: Tue, 5 Jan 2016 22:04:33 +0800 Subject: [PATCH 3/3] Backpack and box storage capacity set to 16 and 8 respectively. Maximum w-class set to 4 and 3 respectively. Storage box sprite made lighter to improve visibility against dark backgrounds. --- baystation12.int | 7 +------ .../objects/items/weapons/storage/backpack.dm | 4 ++-- .../objects/items/weapons/storage/storage.dm | 14 +++++++------- icons/mob/screen1.dmi | Bin 169008 -> 169010 bytes 4 files changed, 10 insertions(+), 15 deletions(-) diff --git a/baystation12.int b/baystation12.int index d1078d03e5e..b82874fded5 100644 --- a/baystation12.int +++ b/baystation12.int @@ -1,11 +1,6 @@ // BEGIN_INTERNALS /* -LAST_COMPILE_TIME: 1447913478 -DIR: code code\game code\game\objects code\game\objects\items code\game\objects\items\weapons code\game\objects\items\weapons\storage code\modules code\modules\mob -AUTO_FILE_DIR: OFF MAP_ICON_TYPE: 0 -LAST_COMPILE_VERSION: 507.1286 -WINDOW: code\game\objects\items\weapons\storage\storage.dm;code\game\objects\items\weapons\tape.dm;code\modules\mob\inventory.dm -FILE: code\game\objects\items\weapons\storage\storage.dm +AUTO_FILE_DIR: OFF */ // END_INTERNALS diff --git a/code/game/objects/items/weapons/storage/backpack.dm b/code/game/objects/items/weapons/storage/backpack.dm index 5aeec96eb8a..29a62117f35 100644 --- a/code/game/objects/items/weapons/storage/backpack.dm +++ b/code/game/objects/items/weapons/storage/backpack.dm @@ -22,8 +22,8 @@ ) w_class = 4 slot_flags = SLOT_BACK - max_w_class = 3 - max_storage_space = 28 + max_w_class = 4 + max_storage_space = 16 /obj/item/weapon/storage/backpack/attackby(obj/item/weapon/W as obj, mob/user as mob) if (src.use_sound) diff --git a/code/game/objects/items/weapons/storage/storage.dm b/code/game/objects/items/weapons/storage/storage.dm index 6290f698844..c6ee578dcee 100644 --- a/code/game/objects/items/weapons/storage/storage.dm +++ b/code/game/objects/items/weapons/storage/storage.dm @@ -12,8 +12,8 @@ var/list/can_hold = new/list() //List of objects which this item can store (if set, it can't store anything else) var/list/cant_hold = new/list() //List of objects which this item can't store (in effect only if can_hold isn't set) var/list/is_seeing = new/list() //List of mobs which are currently seeing the contents of this item's storage - var/max_w_class = null //Max size of objects that this object can store (in effect only if can_hold isn't set) - var/max_storage_space = 14 //The sum of the storage costs of all the items in this storage item. + var/max_w_class = 3 //Max size of objects that this object can store (in effect only if can_hold isn't set) + var/max_storage_space = 8 //The sum of the storage costs of all the items in this storage item. var/storage_slots = null //The number of storage slots in this container. var/obj/screen/storage/boxes = null var/obj/screen/storage/storage_start = null //storage UI @@ -206,10 +206,10 @@ /obj/item/weapon/storage/proc/space_orient_objs(var/list/obj/item/display_contents) - var/baseline_max_storage_space = 28 //should be equal to backpack capacity - var/storage_cap_width = 2 //length of sprite for storage box start and end - var/stored_cap_width = 4 - var/storage_width = min( round( 224 * max_storage_space/baseline_max_storage_space ,1) ,284) + var/baseline_max_storage_space = 16 //should be equal to default backpack capacity + var/storage_cap_width = 2 //length of sprite for start and end of the box representing total storage space + var/stored_cap_width = 4 //length of sprite for start and end of the box representing the stored item + var/storage_width = min( round( 224 * max_storage_space/baseline_max_storage_space ,1) ,284) //length of sprite for the box representing total storage space storage_start.overlays.Cut() @@ -295,7 +295,7 @@ /obj/item/weapon/storage/proc/can_be_inserted(obj/item/W as obj, stop_messages = 0) if(!istype(W)) return //Not an item - if(usr.isEquipped(W) && !usr.canUnEquip(W)) + if(usr && usr.isEquipped(W) && !usr.canUnEquip(W)) return 0 if(src.loc == W) diff --git a/icons/mob/screen1.dmi b/icons/mob/screen1.dmi index 960bcfc32b2ecca9d5c5850d189136a6a6040a21..d2220fffd14a651ed175b7b78f80948138bec6c3 100644 GIT binary patch delta 8771 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 delta 8769 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