-
Notifications
You must be signed in to change notification settings - Fork 524
/
Copy pathboxes.dm
1373 lines (1207 loc) · 50.8 KB
/
boxes.dm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
/*
* Everything derived from the common cardboard box.
* Basically everything except the original is a kit (starts full).
*
* Contains:
* Empty box, starter boxes (survival/engineer),
* Latex glove and sterile mask boxes,
* Syringe, beaker, dna injector boxes,
* Blanks, flashbangs, and EMP grenade boxes,
* Tracking and chemical implant boxes,
* Prescription glasses and drinking glass boxes,
* Condiment bottle and silly cup boxes,
* Donkpocket and monkeycube boxes,
* ID boxes,
* Handcuff, mousetrap, and pillbottle boxes,
* Snap-pops,
* Replacement light boxes.
* Kitchen utensil box
* Random preserved snack box
* For syndicate call-ins see uplink_kits.dm
* Firing pin boxes - Testing and Normal. one for sec, one for science.
*/
/obj/item/storage/box
name = "box"
desc = "It's just an ordinary box."
icon = 'icons/obj/storage/boxes.dmi'
icon_state = "box"
item_state = "box"
contained_sprite = TRUE
var/illustration = "writing"
// BubbleWrap - if set, can be folded (when empty) into a sheet of cardboard
var/foldable = /obj/item/stack/material/cardboard
///Boolean, if set, can be crushed into a trash item when empty
var/trash = null
var/maxHealth = 20 //health is already defined
use_sound = 'sound/items/storage/box.ogg'
drop_sound = 'sound/items/drop/cardboardbox.ogg'
pickup_sound = 'sound/items/pickup/cardboardbox.ogg'
var/chewable = TRUE
/obj/item/storage/box/Initialize()
. = ..()
health = maxHealth
if(foldable)
desc_info += "You can fold this into a sheet. "
if(ispath(src.trash))
desc_info += "This can be crumpled up into a trash item when empty, or forcibly crumpled on harm intent. "
if(illustration)
AddOverlays(illustration)
/obj/item/storage/box/proc/damage(var/severity)
health -= severity
check_health()
/obj/item/storage/box/proc/check_health()
if (health <= 0)
qdel(src)
/obj/item/storage/box/attack_generic(var/mob/user)
if(!chewable)
return
if(istype(user, /mob/living))
var/mob/living/L = user
if (istype(L, /mob/living/carbon/alien/diona) || istype(L, /mob/living/simple_animal) || istype(L, /mob/living/carbon/human))//Monkey-like things do attack_generic, not crew
if(contents.len && !locate(/obj/item/reagent_containers/food) in src) // you can tear open empty boxes for nesting material, or for food
to_chat(user, SPAN_WARNING("There's no food in that box!"))
return
var/damage
if (!L.mob_size)
damage = 3//A safety incase i forgot to set a mob_size on something
else
damage = L.mob_size//he bigger you are, the faster it tears
if (!damage || damage <= 0)
return
user.do_attack_animation(src)
if ((health-damage) <= 0)
L.visible_message(SPAN_DANGER("[L] tears open the [src], spilling its contents everywhere!"),
SPAN_DANGER("You tear open the [src], spilling its contents everywhere!"))
spill()
else
shake_animation()
var/toplay = pick(list('sound/effects/creatures/nibble1.ogg','sound/effects/creatures/nibble2.ogg'))
playsound(loc, toplay, 30, 1)
damage(damage)
..()
/obj/item/storage/box/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if (health < maxHealth)
if (health >= (maxHealth * 0.5))
. += SPAN_WARNING("It is slightly torn.")
else
. += SPAN_DANGER("It is full of tears and holes.")
// BubbleWrap - A box can be folded up to make card
/obj/item/storage/box/attack_self(mob/user as mob)
if(..())
return
if(ispath(src.foldable) || ispath(src.trash))
var/found = 0
for(var/mob/M in range(1))
if(M.s_active == src)
src.close(M) // Close any open UI windows first
if(M == user)
found = 1
if(!found) // User is too far away
return
if(ispath(src.foldable))
if(contents.len)
return
to_chat(user, SPAN_NOTICE("You fold \the [src] flat.")) //make cardboard
playsound(src.loc, 'sound/items/storage/boxfold.ogg', 30, 1)
var/obj/item/foldable = new src.foldable()
qdel(src)
user.put_in_hands(foldable) //try to put it inhands if possible
if(ispath(src.trash) && user.a_intent == I_HURT)
if(!contents.len)
to_chat(user, SPAN_NOTICE("You crumple up \the [src]."))
else
user.visible_message(SPAN_DANGER("You crush \the [src], spilling its contents everywhere!"), SPAN_DANGER("[user] crushes \the [src], spilling its contents everywhere!"))
spill()
playsound(src.loc, 'sound/items/pickup/wrapper.ogg', 30, 1)
var/obj/item/trash = new src.trash()
qdel(src)
user.put_in_hands(trash)
/obj/item/storage/box/attackby(obj/item/attacking_item, mob/user)
if(istype(attacking_item, /obj/item/stack/packageWrap))
var/total_storage_space = attacking_item.get_storage_cost()
for(var/obj/item/I in contents)
total_storage_space += I.get_storage_cost()
if(total_storage_space <= max_storage_space)
var/question = tgui_input_list(user, "Will you want to wrap \the [src] or store the item inside?", "Wrap or Store", list("Wrap", "Store"))
if(question == "Wrap")
return
else if(question == "Store")
return ..()
else
..()
/obj/item/storage/box/survival
name = "emergency survival box"
desc = "A faithful box that will remain with you, no matter where you go, and probably save you."
icon_state = "redbox"
illustration = "survival"
max_storage_space = DEFAULT_BOX_STORAGE
can_hold = list(
/obj/item/clothing/mask,
/obj/item/tank/emergency_oxygen,
/obj/item/device/flashlight/flare,
/obj/item/stack/medical,
/obj/item/reagent_containers/hypospray/autoinjector,
/obj/item/reagent_containers/inhaler,
/obj/item/device/oxycandle,
/obj/item/extinguisher/mini,
/obj/item/device/radio,
/obj/item/device/flashlight,
/obj/item/reagent_containers/food/drinks/flask,
/obj/item/storage/box/fancy/cigarettes,
/obj/item/flame/lighter,
/obj/item/disk/nuclear,
/obj/item/crowbar,
/obj/item/airbubble
)
starts_with = list(
/obj/item/clothing/mask/breath = 1,
/obj/item/tank/emergency_oxygen = 1,
/obj/item/device/oxycandle = 1,
/obj/item/device/flashlight/flare/glowstick/red = 1,
/obj/item/stack/medical/bruise_pack = 1,
/obj/item/reagent_containers/hypospray/autoinjector/inaprovaline = 1
)
/obj/item/storage/box/survival/engineer
illustration = "survivaleng"
starts_with = list(
/obj/item/clothing/mask/breath = 1,
/obj/item/tank/emergency_oxygen/engi = 1,
/obj/item/device/oxycandle = 1,
/obj/item/device/flashlight/flare = 1,
/obj/item/stack/medical/bruise_pack = 1,
/obj/item/reagent_containers/hypospray/autoinjector/inaprovaline = 1
)
/obj/item/storage/box/vaurca
icon_state = "redbox"
illustration = "survivalvox"
starts_with = list(/obj/item/clothing/mask/breath = 1, /obj/item/reagent_containers/inhaler/phoron_special = 1)
/obj/item/storage/box/gloves
name = "box of sterile gloves"
desc = "Contains sterile gloves."
illustration = "latex"
max_storage_space = DEFAULT_BOX_STORAGE
starts_with = list(/obj/item/clothing/gloves/latex = 2,
/obj/item/clothing/gloves/latex/nitrile = 2,
/obj/item/clothing/gloves/latex/nitrile/unathi = 1,
/obj/item/clothing/gloves/latex/nitrile/tajara = 1,
/obj/item/clothing/gloves/latex/nitrile/vaurca = 1)
/obj/item/storage/box/masks
name = "box of surgical masks"
desc = "This box contains masks of surgicality."
illustration = "sterile"
starts_with = list(/obj/item/clothing/mask/surgical = 4, /obj/item/clothing/mask/surgical/w = 3)
/obj/item/storage/box/syringes
name = "box of syringes"
desc = "A box full of syringes."
icon_state = "secbox"
item_state = "secbox"
illustration = "syringe"
starts_with = list(/obj/item/reagent_containers/syringe = 20)
/obj/item/storage/box/syringegun
name = "box of syringe gun cartridges"
desc = "A box full of compressed gas cartridges."
icon_state = "secbox"
item_state = "secbox"
illustration = "syringe"
starts_with = list(/obj/item/syringe_cartridge = 7)
/obj/item/storage/box/beakers
name = "box of beakers"
illustration = "beaker"
starts_with = list(/obj/item/reagent_containers/glass/beaker = 7)
/obj/item/storage/box/injectors
name = "box of DNA injectors"
desc = "This box contains injectors it seems."
icon_state = "secbox"
item_state = "secbox"
illustration = "dna"
starts_with = list(/obj/item/dnainjector/h2m = 3, /obj/item/dnainjector/m2h = 3)
/obj/item/storage/box/tungstenslugs
name = "box of compact tungsten slugs"
desc = "A box with several compact tungsten slugs, aimed for use in gauss carbines."
icon_state = "ammobox"
item_state = "ammobox"
illustration = null
drop_sound = 'sound/items/drop/ammobox.ogg'
pickup_sound = 'sound/items/pickup/ammobox.ogg'
starts_with = list(/obj/item/ammo_casing/gauss/carbine = 4)
/obj/item/storage/box/blanks
name = "box of blank shells"
desc = "It has a picture of a shotgun shell and several warning symbols on the front."
icon_state = "shellbox"
item_state = "shellbox"
illustration = "blankshot"
drop_sound = 'sound/items/drop/ammobox.ogg'
pickup_sound = 'sound/items/pickup/ammobox.ogg'
starts_with = list(/obj/item/ammo_casing/shotgun/blank = 8)
/obj/item/storage/box/beanbags
name = "box of beanbag shells"
desc = "It has a picture of a shotgun shell and several warning symbols on the front.<br>WARNING: Live ammunition. Misuse may result in serious injury or death."
icon_state = "shellbox"
item_state = "shellbox"
illustration = "beanshot"
drop_sound = 'sound/items/drop/ammobox.ogg'
pickup_sound = 'sound/items/pickup/ammobox.ogg'
starts_with = list(/obj/item/ammo_casing/shotgun/beanbag = 8)
/obj/item/storage/box/shotgunammo
name = "box of shotgun slugs"
desc = "It has a picture of a shotgun shell and several warning symbols on the front.<br>WARNING: Live ammunition. Misuse may result in serious injury or death."
icon_state = "shellbox"
item_state = "shellbox"
illustration = "lethalslug"
drop_sound = 'sound/items/drop/ammobox.ogg'
pickup_sound = 'sound/items/pickup/ammobox.ogg'
starts_with = list(/obj/item/ammo_casing/shotgun = 8)
/obj/item/storage/box/shotgunshells
name = "box of shotgun shells"
desc = "It has a picture of a shotgun shell and several warning symbols on the front.<br>WARNING: Live ammunition. Misuse may result in serious injury or death."
icon_state = "shellbox"
item_state = "shellbox"
illustration = "lethalshell"
drop_sound = 'sound/items/drop/ammobox.ogg'
pickup_sound = 'sound/items/pickup/ammobox.ogg'
starts_with = list(/obj/item/ammo_casing/shotgun/pellet = 8)
/obj/item/storage/box/flashshells
name = "box of illumination shells"
desc = "It has a picture of a shotgun shell and several warning symbols on the front.<br>WARNING: Live ammunition. Misuse may result in serious injury or death."
icon_state = "shellbox"
item_state = "shellbox"
illustration = "illumshot"
drop_sound = 'sound/items/drop/ammobox.ogg'
pickup_sound = 'sound/items/pickup/ammobox.ogg'
starts_with = list(/obj/item/ammo_casing/shotgun/flash = 8)
/obj/item/storage/box/stunshells
name = "box of stun shells"
desc = "It has a picture of a shotgun shell and several warning symbols on the front.<br>WARNING: Live ammunition. Misuse may result in serious injury or death."
icon_state = "shellbox"
item_state = "shellbox"
illustration = "stunshot"
drop_sound = 'sound/items/drop/ammobox.ogg'
pickup_sound = 'sound/items/pickup/ammobox.ogg'
starts_with = list(/obj/item/ammo_casing/shotgun/stunshell = 8)
/obj/item/storage/box/practiceshells
name = "box of practice shells"
desc = "It has a picture of a shotgun shell and several warning symbols on the front.<br>WARNING: Live ammunition. Misuse may result in serious injury or death."
icon_state = "shellbox"
item_state = "shellbox"
illustration = "blankshot"
drop_sound = 'sound/items/drop/ammobox.ogg'
pickup_sound = 'sound/items/pickup/ammobox.ogg'
starts_with = list(/obj/item/ammo_casing/shotgun/practice = 8)
/obj/item/storage/box/haywireshells
name = "box of haywire shells"
desc = "It has a picture of a shotgun shell and several warning symbols on the front.<br>WARNING: Live ammunition. Misuse may result in serious injury or death."
icon_state = "shellbox"
item_state = "shellbox"
illustration = "empshot"
drop_sound = 'sound/items/drop/ammobox.ogg'
pickup_sound = 'sound/items/pickup/ammobox.ogg'
starts_with = list(/obj/item/ammo_casing/shotgun/emp = 8)
/obj/item/storage/box/incendiaryshells
name = "box of incendiary shells"
desc = "It has a picture of a shotgun shell and several warning symbols on the front.<br>WARNING: Live ammunition. Misuse may result in serious injury or death."
icon_state = "shellbox"
item_state = "shellbox"
illustration = "incendiaryshot"
drop_sound = 'sound/items/drop/ammobox.ogg'
pickup_sound = 'sound/items/pickup/ammobox.ogg'
starts_with = list(/obj/item/ammo_casing/shotgun/incendiary = 8)
/obj/item/storage/box/trackingslugs
name = "box of tracking slugs"
desc = "It has a picture of a shotgun shell and several warning symbols on the front.<br>WARNING: Live ammunition. Misuse may result in serious injury or death."
icon_state = "shellbox"
item_state = "shellbox"
illustration = "trackingshot"
drop_sound = 'sound/items/drop/ammobox.ogg'
pickup_sound = 'sound/items/pickup/ammobox.ogg'
starts_with = list(/obj/item/ammo_casing/shotgun/tracking = 4)
/obj/item/storage/box/wallgunammo
name = "box of wall gun slugs"
desc = "It has a picture of a shotgun shell and several warning symbols on the front.<br>WARNING: Live ammunition. Misuse may result in serious injury or death."
icon_state = "shellbox"
item_state = "shellbox"
illustration = "lethalslug"
drop_sound = 'sound/items/drop/ammobox.ogg'
pickup_sound = 'sound/items/pickup/ammobox.ogg'
starts_with = list(/obj/item/ammo_casing/shotgun/moghes = 8)
/obj/item/storage/box/sniperammo
name = "box of 14.5mm shells"
desc = "It has a picture of a gun and several warning symbols on the front.<br>WARNING: Live ammunition. Misuse may result in serious injury or death."
icon_state = "ammobox"
item_state = "ammobox"
illustration = null
drop_sound = 'sound/items/drop/ammobox.ogg'
pickup_sound = 'sound/items/pickup/ammobox.ogg'
starts_with = list(/obj/item/ammo_casing/a145 = 7)
/obj/item/storage/box/ammo10mm
name = "box of 10mm shells"
desc = "It has a picture of a gun and several warning symbols on the front.<br>WARNING: Live ammunition. Misuse may result in serious injury or death."
icon_state = "ammobox"
item_state = "ammobox"
illustration = null
drop_sound = 'sound/items/drop/ammobox.ogg'
pickup_sound = 'sound/items/pickup/ammobox.ogg'
starts_with = list(/obj/item/ammo_casing/c10mm = 10)
/obj/item/storage/box/governmentammo
name = "box of .45-70 Govt. rounds"
desc = "It has a picture of a rifle shell and several warning symbols on the front.<br>WARNING: Live ammunition. Misuse may result in serious injury or death."
icon_state = "ammobox"
item_state = "ammobox"
illustration = null
drop_sound = 'sound/items/drop/ammobox.ogg'
pickup_sound = 'sound/items/pickup/ammobox.ogg'
starts_with = list(/obj/item/ammo_casing/govt = 8)
/obj/item/storage/box/flashbangs
name = "box of flashbangs"
desc = "A box containing 7 antipersonnel flashbang grenades.<br> WARNING: These devices are extremely dangerous and can cause blindness or deafness in repeated use."
icon_state = "secbox"
item_state = "secbox"
illustration = "flashbang"
starts_with = list(/obj/item/grenade/flashbang = 7)
/obj/item/storage/box/stingers
name = "box of stinger grenades"
desc = "A box containing 7 antipersonnel stinger grenades. <br> WARNING: These devices are extremely dangerous and can cause injury."
icon_state = "secbox"
item_state = "secbox"
illustration = "stinger"
starts_with = list(/obj/item/grenade/stinger = 7)
/obj/item/storage/box/firingpins
name = "box of firing pins"
desc = "A box of NT brand Firearm authentication pins; Needed to operate most weapons."
illustration = "firingpin"
starts_with = list(/obj/item/device/firing_pin = 7)
/obj/item/storage/box/securitypins
name = "box of wireless-control firing pins"
desc = "A box of NT brand Firearm authentication pins; Needed to operate most weapons. These firing pins are wireless-control enabled."
illustration = "firingpin"
starts_with = list(/obj/item/device/firing_pin/wireless = 7)
/obj/item/storage/box/testpins
name = "box of firing pins"
desc = "A box of NT brand Testing Authentication pins; allows guns to fire in designated firing ranges."
illustration = "firingpin"
starts_with = list(/obj/item/device/firing_pin/test_range = 7)
/obj/item/storage/box/loyaltypins
name = "box of firing pins"
desc = "A box of specialised \"loyalty\" authentication pins produced by NanoTrasen; these check to see if the user of the gun it's installed in has been implanted with a mind shield implant. Often used in ERTs."
illustration = "firingpin"
starts_with = list(/obj/item/device/firing_pin/implant/loyalty = 7)
/obj/item/storage/box/loyaltypins/fill()
..()
new /obj/item/device/firing_pin/implant/loyalty(src)
new /obj/item/device/firing_pin/implant/loyalty(src)
new /obj/item/device/firing_pin/implant/loyalty(src)
new /obj/item/device/firing_pin/implant/loyalty(src)
/obj/item/storage/box/firingpinsRD
name = "box of assorted firing pins"
desc = "A box of varied assortment of firing pins. Appears to have R&D stickers on all sides of the box. Also seems to have a smiley face sticker on the top of it."
illustration = "firingpin"
starts_with = list(/obj/item/device/firing_pin = 2, /obj/item/device/firing_pin/access = 2, /obj/item/device/firing_pin/implant/loyalty = 2, /obj/item/device/firing_pin/clown = 1, /obj/item/device/firing_pin/dna = 1)
/obj/item/storage/box/psireceiver
name = "box of psionic receivers"
desc = "A box of psionic receivers, which can be surgically implanted to act as a replacement for an underdeveloped or non-existent zona bovinae. This one has a large sticker on the side reading FOR RESEARCH USE ONLY."
illustration = "implant"
starts_with = list(/obj/item/organ/internal/augment/psi = 4)
/obj/item/storage/box/tethers
name = "box of tethering devices"
desc = "A box containing eight electro-tethers, used primarily to keep track of partners during expeditions."
starts_with = list(/obj/item/tethering_device = 8)
make_exact_fit = TRUE
/obj/item/storage/box/teargas
name = "box of pepperspray grenades"
desc = "A box containing 7 tear gas grenades. A gas mask is printed on the label.<br> WARNING: Exposure carries risk of serious injury or death. Keep away from persons with lung conditions."
icon_state = "secbox"
item_state = "secbox"
illustration = "grenade"
starts_with = list(/obj/item/grenade/chem_grenade/teargas = 6)
/obj/item/storage/box/smokebombs
name = "box of smoke grenades"
desc = "A box full of smoke grenades, used by special law enforcement teams and military organisations. Provides cover, confusion, and distraction."
icon_state = "secbox"
item_state = "secbox"
illustration = "grenade"
starts_with = list(/obj/item/grenade/smokebomb = 7)
/obj/item/storage/box/emps
name = "box of emp grenades"
desc = "A box containing 5 military grade EMP grenades.<br> WARNING: Do not use near unshielded electronics or biomechanical augmentations, death or permanent paralysis may occur."
icon_state = "secbox"
item_state = "secbox"
illustration = "emp"
starts_with = list(/obj/item/grenade/empgrenade = 5)
/obj/item/storage/box/smokes
name = "box of smoke bombs"
desc = "A box containing 5 smoke bombs."
icon_state = "secbox"
item_state = "secbox"
illustration = "grenade"
starts_with = list(/obj/item/grenade/smokebomb = 5)
/obj/item/storage/box/anti_photons
name = "box of anti-photon grenades"
desc = "A box containing 5 experimental photon disruption grenades."
icon_state = "secbox"
item_state = "secbox"
illustration = "grenade"
starts_with = list(/obj/item/grenade/anti_photon = 5)
/obj/item/storage/box/frags
name = "box of frag grenades"
desc = "A box containing 5 military grade fragmentation grenades.<br> WARNING: Live explosives. Misuse may result in serious injury or death."
icon_state = "secbox"
item_state = "secbox"
illustration = "grenade"
starts_with = list(/obj/item/grenade/frag = 5)
/obj/item/storage/box/grenades/napalm
name = "box of napalm grenades"
desc = "A box containing 3 napalm grenades."
icon_state = "secbox"
item_state = "secbox"
illustration = "grenade"
starts_with = list(/obj/item/grenade/napalm = 3)
/obj/item/storage/box/cardox
name = "box of cardox grenades"
desc = "A box containing 5 experimental cardox grenades."
icon_state = "secbox"
item_state = "secbox"
illustration = "grenade"
starts_with = list(/obj/item/grenade/chem_grenade/large/phoroncleaner = 5)
/obj/item/storage/box/trackimp
name = "boxed tracking implant kit"
desc = "Box full of scum-bag tracking utensils."
icon_state = "secbox"
item_state = "secbox"
illustration = "implant"
starts_with = list(/obj/item/implantcase/tracking = 4, /obj/item/implanter = 1, /obj/item/implantpad = 1, /obj/item/locator = 1)
/obj/item/storage/box/chemimp
name = "boxed chemical implant kit"
desc = "Box of stuff used to implant chemicals."
illustration = "implant"
starts_with = list(/obj/item/implantcase/chem = 4, /obj/item/implanter = 1, /obj/item/implantpad = 1)
/obj/item/storage/box/chemimp/fill()
..()
new /obj/item/implantcase/chem(src)
new /obj/item/implantcase/chem(src)
new /obj/item/implantcase/chem(src)
new /obj/item/implantcase/chem(src)
new /obj/item/implantcase/chem(src)
new /obj/item/implanter(src)
new /obj/item/implantpad(src)
/obj/item/storage/box/rxglasses
name = "box of prescription glasses"
desc = "This box contains nerd glasses."
illustration = "glasses"
starts_with = list(/obj/item/clothing/glasses/regular = 7)
/obj/item/storage/box/drinkingglasses
name = "box of drinking glasses"
desc = "It has a picture of drinking glasses on it."
illustration = "drinkglass"
starts_with = list(/obj/item/reagent_containers/food/drinks/drinkingglass = 6)
/obj/item/storage/box/cdeathalarm_kit
name = "death alarm kit"
desc = "Box of stuff used to implant death alarms."
illustration = "implant"
starts_with = list(/obj/item/implanter = 1, /obj/item/implantcase/death_alarm = 6, /obj/item/implantpad = 1)
/obj/item/storage/box/condimentbottles
name = "box of condiment bottles"
desc = "It has a large ketchup smear on it."
illustration = "condiment"
starts_with = list(/obj/item/reagent_containers/food/condiment = 6)
/obj/item/storage/box/cups
name = "box of paper cups"
illustration = "cup"
desc = "It has pictures of paper cups on the front."
starts_with = list(/obj/item/reagent_containers/food/drinks/sillycup = 7)
/obj/item/storage/box/donkpockets
name = "box of donk-pockets"
desc = "<B>Instructions:</B> <I>Heat in microwave. Product will cool if not eaten within seven minutes.</I>"
icon_state = "donkpocketbox"
item_state = "redbox"
illustration = null
starts_with = list(/obj/item/reagent_containers/food/snacks/donkpocket = 6)
/obj/item/storage/box/sinpockets
name = "box of donk-pockets"
desc = "<B>Instructions:</B> <I>Heat in microwave. Product will cool if not eaten within seven minutes.</I>"
icon_state = "donkpocketbox"
item_state = "redbox"
illustration = null
starts_with = list(/obj/item/reagent_containers/food/snacks/donkpocket/sinpocket = 6)
desc_antag = "Crush bottom of package to initiate chemical heating. Wait for 20 seconds before consumption. Product will cool if not eaten within seven minutes."
/obj/item/storage/box/donkpockets/gwok
name = "box of teriyaki Gwok-pockets"
icon_state = "gwokpocketbox"
item_state = "redbox"
illustration = null
starts_with = list(/obj/item/reagent_containers/food/snacks/donkpocket/teriyaki = 6)
/obj/item/storage/box/donkpockets/gwok/takoyaki
name = "box of takoyaki Gwok-pockets"
starts_with = list(/obj/item/reagent_containers/food/snacks/donkpocket/takoyaki = 6)
/obj/item/storage/box/janitorgloves
name = "janitorial gloves box"
desc = "A box full of janitorial gloves of all shapes and sizes."
make_exact_fit = TRUE
can_hold = list(
/obj/item/clothing/gloves/janitor
)
starts_with = list(
/obj/item/clothing/gloves/janitor = 1,
/obj/item/clothing/gloves/janitor/tajara = 1,
/obj/item/clothing/gloves/janitor/unathi = 1,
/obj/item/clothing/gloves/janitor/vaurca = 1
)
/obj/item/storage/box/monkeycubes
name = "monkey cube box"
desc = "Drymate brand monkey cubes. Just add water!"
desc_extended = "The manufacture of a cubed animal produces subjects that are similar but have marked differences compared to their ordinary cousins. Higher brain functions are all but destroyed \
and the life expectancy of the cubed animal is greatly reduced, with most expiring only a few days after introduction with water."
icon_state = "monkeycubebox"
illustration = null
can_hold = list(/obj/item/reagent_containers/food/snacks/monkeycube)
starts_with = list(/obj/item/reagent_containers/food/snacks/monkeycube/wrapped = 5)
/obj/item/storage/box/monkeycubes/farwacubes
name = "farwa cube box"
desc = "Drymate brand farwa cubes, shipped from Adhomai. Just add water!"
starts_with = list(/obj/item/reagent_containers/food/snacks/monkeycube/wrapped/farwacube = 5)
/obj/item/storage/box/monkeycubes/stokcubes
name = "stok cube box"
desc = "Drymate brand stok cubes, shipped from Moghes. Just add water!"
starts_with = list(/obj/item/reagent_containers/food/snacks/monkeycube/wrapped/stokcube = 5)
/obj/item/storage/box/monkeycubes/neaeracubes
name = "neaera cube box"
desc = "Drymate brand neaera cubes, shipped from Nralakk IV. Just add water!"
starts_with = list(/obj/item/reagent_containers/food/snacks/monkeycube/wrapped/neaeracube = 5)
/obj/item/storage/box/monkeycubes/vkrexicubes
name = "vkrexi cube box"
desc = "Drymate brand vkrexi cubes. Just add water!"
starts_with = list(/obj/item/reagent_containers/food/snacks/monkeycube/wrapped/vkrexicube = 5)
/obj/item/storage/box/ids
name = "box of spare IDs"
desc = "Has so many empty IDs."
illustration = "id"
starts_with = list(/obj/item/card/id = 7)
/obj/item/storage/box/handcuffs
name = "box of spare handcuffs"
desc = "A box full of handcuffs."
icon_state = "secbox"
item_state = "secbox"
illustration = "handcuff"
starts_with = list(/obj/item/handcuffs = 7)
/obj/item/storage/box/zipties
name = "box of zipties"
desc = "A box full of zipties."
illustration = "handcuff"
starts_with = list(/obj/item/handcuffs/ziptie = 7)
/obj/item/storage/box/mousetraps
name = "box of Pest-B-Gon mousetraps"
desc = "<B><span class='warning'>WARNING:</span></B> <I>Keep out of reach of children</I>."
illustration = "mousetraps"
starts_with = list(/obj/item/device/assembly/mousetrap = 6)
/obj/item/storage/box/pillbottles
name = "box of pill bottles"
desc = "It has pictures of pill bottles on its front."
illustration = "pillbox"
starts_with = list(/obj/item/storage/pill_bottle = 7)
/obj/item/storage/box/spraybottles
name = "box of spray bottles"
desc = "It has pictures of spray bottles on its front."
illustration = "spray"
starts_with = list(/obj/item/reagent_containers/spray = 7)
/obj/item/storage/box/snappops
name = "snap pop box"
desc = "Eight wrappers of fun! Ages 8 and up. Not suitable for children."
icon = 'icons/obj/toy.dmi'
icon_state = "spbox"
can_hold = list(/obj/item/toy/snappop)
starts_with = list(/obj/item/toy/snappop = 8)
/obj/item/storage/box/snappops/syndi
desc_antag = "These snap pops have an extra compound added that will deploy a tiny smokescreen when snapped."
starts_with = list(/obj/item/toy/snappop/syndi = 8)
/obj/item/storage/box/partypopper
name = "party popper box"
desc = "Six cones of confetti conflagarating fun!"
illustration = "partypopper"
starts_with = list(/obj/item/toy/partypopper = 6)
/obj/item/storage/box/autoinjectors
name = "box of empty injectors"
desc = "Contains empty autoinjectors."
illustration = "epipen"
starts_with = list(/obj/item/reagent_containers/hypospray/autoinjector = 7)
/obj/item/storage/box/lights
name = "box of replacement bulbs"
illustration = "light"
desc = "This box is shaped on the inside so that only light tubes and bulbs fit."
use_to_pickup = TRUE // for picking up broken bulbs, not that most people will try
make_exact_fit = TRUE
/obj/item/storage/box/lights/bulbs
starts_with = list(/obj/item/light/bulb = 21)
/obj/item/storage/box/lights/tubes
name = "box of replacement tubes"
illustration = "lighttube"
starts_with = list(/obj/item/light/tube = 21)
/obj/item/storage/box/lights/mixed
name = "box of replacement lights"
illustration = "lightmixed"
starts_with = list(/obj/item/light/tube = 14, /obj/item/light/bulb = 7)
/obj/item/storage/box/lights/coloredmixed
name = "box of colored lights"
illustration = "lightmixed"
/obj/item/storage/box/lights/coloredmixed/fill() // too lazy for this one
..()
var/static/list/tube_colors = list(
/obj/item/light/tube/colored/red,
/obj/item/light/tube/colored/green,
/obj/item/light/tube/colored/blue,
/obj/item/light/tube/colored/magenta,
/obj/item/light/tube/colored/yellow,
/obj/item/light/tube/colored/cyan
)
var/static/list/bulbs_colors = list(
/obj/item/light/bulb/colored/red,
/obj/item/light/bulb/colored/green,
/obj/item/light/bulb/colored/blue,
/obj/item/light/bulb/colored/magenta,
/obj/item/light/bulb/colored/yellow,
/obj/item/light/bulb/colored/cyan
)
for(var/i = 0, i < 14, i++)
var/type = pick(tube_colors)
new type(src)
for(var/i = 0, i < 7, i++)
var/type = pick(bulbs_colors)
new type(src)
/obj/item/storage/box/lights/colored/red
name = "box of red lights"
illustration = "lightmixed"
starts_with = list(/obj/item/light/tube/colored/red = 14, /obj/item/light/bulb/colored/red = 7)
/obj/item/storage/box/lights/colored/green
name = "box of green lights"
illustration = "lightmixed"
starts_with = list(/obj/item/light/tube/colored/green = 14, /obj/item/light/bulb/colored/green = 7)
/obj/item/storage/box/lights/colored/blue
name = "box of blue lights"
illustration = "lightmixed"
starts_with = list(/obj/item/light/tube/colored/blue = 14, /obj/item/light/bulb/colored/blue = 7)
/obj/item/storage/box/lights/colored/cyan
name = "box of cyan lights"
illustration = "lightmixed"
starts_with = list(/obj/item/light/tube/colored/cyan = 14, /obj/item/light/bulb/colored/cyan = 7)
/obj/item/storage/box/lights/colored/yellow
name = "box of yellow lights"
illustration = "lightmixed"
starts_with = list(/obj/item/light/tube/colored/yellow = 14, /obj/item/light/bulb/colored/yellow = 7)
/obj/item/storage/box/lights/colored/magenta
name = "box of magenta lights"
illustration = "lightmixed"
starts_with = list(/obj/item/light/tube/colored/magenta = 14, /obj/item/light/bulb/colored/magenta = 7)
/obj/item/storage/box/freezer
name = "portable freezer"
desc = "This nifty shock-resistant device will keep your 'groceries' nice and non-spoiled."
icon_state = "portafreezer"
item_state = "medicalpack"
max_w_class = WEIGHT_CLASS_NORMAL
max_storage_space = DEFAULT_LARGEBOX_STORAGE
use_to_pickup = FALSE // for picking up broken bulbs, not that most people will try
chewable = FALSE
/obj/item/storage/box/freezer/organcooler
name = "organ cooler"
desc = "A sealed, cooled container to keep organs from decaying."
icon_state = "organcooler"
item_state = "redbox"
max_w_class = WEIGHT_CLASS_NORMAL
foldable = FALSE
w_class = WEIGHT_CLASS_BULKY
can_hold = list(
/obj/item/organ,
/obj/item/reagent_containers/food,
/obj/item/reagent_containers/glass,
/obj/item/gun
)
storage_slots = 2
/obj/item/storage/box/kitchen
name = "kitchen supplies"
illustration = "knife"
desc = "Contains an assortment of utensils and containers useful in the preparation of food and drinks."
/obj/item/storage/box/kitchen/fill()
new /obj/item/material/knife(src)//Should always have a knife
var/list/utensils = list(
/obj/item/material/kitchen/rollingpin,
/obj/item/reagent_containers/glass/beaker,
/obj/item/material/kitchen/utensil/fork,
/obj/item/reagent_containers/food/condiment/enzyme,
/obj/item/material/kitchen/utensil/spoon,
/obj/item/material/kitchen/utensil/knife,
/obj/item/reagent_containers/food/drinks/shaker
)
for (var/i = 0,i<6,i++)
var/type = pick(utensils)
new type(src)
/obj/item/storage/box/snack
name = "rations box"
illustration = "snack"
desc = "Contains a random assortment of preserved foods. Guaranteed to remain edible* in room-temperature longterm storage for centuries!"
/obj/item/storage/box/snack/fill()
var/list/snacks = list(
/obj/item/reagent_containers/food/snacks/koisbar_clean,
/obj/item/reagent_containers/food/snacks/candy,
/obj/item/reagent_containers/food/snacks/candy/koko,
/obj/item/reagent_containers/food/snacks/candy_corn,
/obj/item/reagent_containers/food/snacks/chips,
/obj/item/reagent_containers/food/snacks/chocolatebar,
/obj/item/reagent_containers/food/snacks/chocolateegg,
/obj/item/reagent_containers/food/snacks/popcorn,
/obj/item/reagent_containers/food/snacks/sosjerky,
/obj/item/reagent_containers/food/snacks/no_raisin,
/obj/item/reagent_containers/food/snacks/spacetwinkie,
/obj/item/reagent_containers/food/snacks/cheesiehonkers,
/obj/item/reagent_containers/food/snacks/syndicake,
/obj/item/reagent_containers/food/snacks/fortunecookie,
/obj/item/reagent_containers/food/snacks/poppypretzel,
/obj/item/reagent_containers/food/snacks/cracker,
/obj/item/reagent_containers/food/snacks/liquidfood,
/obj/item/reagent_containers/food/snacks/skrellsnacks,
/obj/item/reagent_containers/food/snacks/tastybread,
/obj/item/reagent_containers/food/snacks/meatsnack,
/obj/item/reagent_containers/food/snacks/maps,
/obj/item/reagent_containers/food/snacks/nathisnack,
/obj/item/reagent_containers/food/snacks/adhomian_can,
/obj/item/reagent_containers/food/snacks/tuna,
/obj/item/storage/box/fancy/gum,
/obj/item/storage/box/fancy/cookiesnack,
/obj/item/storage/box/fancy/admints,
/obj/item/storage/box/fancy/vkrexitaffy
)
for (var/i = 0,i<7,i++)
var/type = pick(snacks)
new type(src)
/obj/item/storage/box/stims
name = "stimpack value kit"
desc = "A box with several stimpack medipens for the economical miner."
icon_state = "syringe"
starts_with = list(/obj/item/reagent_containers/hypospray/autoinjector/stimpack = 4)
/obj/item/storage/box/inhalers
name = "inhaler kit"
desc = "A box filled with several inhalers and empty inhaler cartridges."
illustration = "inhalers"
starts_with = list(/obj/item/personal_inhaler = 2, /obj/item/reagent_containers/personal_inhaler_cartridge = 6)
/obj/item/storage/box/inhalers_large
name = "combat inhaler kit"
desc = "A box filled with a combat inhaler and several large empty inhaler cartridges."
illustration = "inhalers"
starts_with = list(/obj/item/personal_inhaler/combat = 1, /obj/item/reagent_containers/personal_inhaler_cartridge/large = 6)
/obj/item/storage/box/inhalers_auto
name = "autoinhaler kit"
desc = "A box filled with a combat inhaler and several large empty inhaler cartridges."
icon_state = "secbox"
item_state = "secbox"
illustration = "inhalers"
starts_with = list(/obj/item/reagent_containers/inhaler = 8)
/obj/item/storage/box/clams
name = "box of Ras'val clam"
desc = "A box filled with clams from the Ras'val sea, imported by Njadra'Akhar Enterprises."
starts_with = list(/obj/item/reagent_containers/food/snacks/clam = 5)
/obj/item/storage/box/produce
name = "produce box"
desc = "A large box of random, leftover produce."
icon_state = "largebox"
illustration = "fruit"
starts_with = list(/obj/random_produce/box = 15)
make_exact_fit = TRUE
/obj/item/storage/box/candy
name = "candy box"
desc = "A large box of assorted small candy."
icon_state = "largebox"
illustration = "writing_large"
make_exact_fit = TRUE
/obj/item/storage/box/candy/fill()
var/list/assorted_list = list(
/obj/item/reagent_containers/food/snacks/cb01 = 1,
/obj/item/reagent_containers/food/snacks/cb02 = 1,
/obj/item/reagent_containers/food/snacks/cb03 = 1,
/obj/item/reagent_containers/food/snacks/cb04 = 1,
/obj/item/reagent_containers/food/snacks/cb05 = 1,
/obj/item/reagent_containers/food/snacks/cb06 = 1,
/obj/item/reagent_containers/food/snacks/cb07 = 1,
/obj/item/reagent_containers/food/snacks/cb08 = 1,
/obj/item/reagent_containers/food/snacks/cb09 = 1,
/obj/item/reagent_containers/food/snacks/cb10 = 1
)
for(var/i in 1 to 24)
var/chosen_candy = pickweight(assorted_list)
new chosen_candy(src)
/obj/item/storage/box/crabmeat
name = "box of crab legs"
desc = "A box filled with high-quality crab legs. Shipped on-board by popular demand!"
starts_with = list(/obj/item/reagent_containers/food/snacks/crabmeat = 5)
/obj/item/storage/box/tranquilizer
name = "box of tranquilizer darts"
desc = "It has a picture of a tranquilizer dart and several warning symbols on the front.<br>WARNING: Live ammunition. Misuse may result in serious injury or death."
icon_state = "shellbox"
item_state = "shellbox"
illustration = "incendiaryshot"
drop_sound = 'sound/items/drop/ammobox.ogg'
pickup_sound = 'sound/items/pickup/ammobox.ogg'
starts_with = list(/obj/item/ammo_casing/tranq = 8)
/obj/item/storage/box/toothpaste
can_hold = list(/obj/item/reagent_containers/toothpaste,
/obj/item/reagent_containers/toothbrush,
/obj/item/reagent_containers/food/drinks/flask/vacuumflask/mouthwash,
)
starts_with = list(/obj/item/reagent_containers/toothpaste = 1,
/obj/item/reagent_containers/toothbrush = 1,
/obj/item/reagent_containers/food/drinks/flask/vacuumflask/mouthwash = 1,
)
/obj/item/storage/box/toothpaste/green
starts_with = list(/obj/item/reagent_containers/toothpaste = 1,
/obj/item/reagent_containers/toothbrush/green = 1,
/obj/item/reagent_containers/food/drinks/flask/vacuumflask/mouthwash = 1,
)
/obj/item/storage/box/toothpaste/red
starts_with = list(/obj/item/reagent_containers/toothpaste = 1,
/obj/item/reagent_containers/toothbrush/red = 1,
/obj/item/reagent_containers/food/drinks/flask/vacuumflask/mouthwash = 1,
)
/obj/item/storage/box/holobadge
name = "holobadge box"
desc = "A box claiming to contain holobadges."
starts_with = list(/obj/item/clothing/accessory/badge/holo = 4,
/obj/item/clothing/accessory/badge/holo/cord = 2)
/obj/item/storage/box/sol_visa
name = "Sol Alliance visa recommendations box"
desc = "A box full of Sol Aliance visa recommendation slips."
illustration = "paper"
starts_with = list(/obj/item/clothing/accessory/badge/sol_visa = 6)
/obj/item/storage/box/ceti_visa
name = "TCAF recruitment papers box"
desc = "A box full of papers that signify one as a recruit of the Tau Ceti Armed Forces."
illustration = "paper"
starts_with = list(/obj/item/clothing/accessory/badge/tcaf_papers = 6)
/obj/item/storage/box/hadii_card