-
-
Notifications
You must be signed in to change notification settings - Fork 444
/
Copy patharmor.dm
563 lines (494 loc) · 25.1 KB
/
armor.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
/obj/item/clothing/suit/armor
allowed = null
body_parts_covered = CHEST
cold_protection = CHEST|GROIN
min_cold_protection_temperature = ARMOR_MIN_TEMP_PROTECT
heat_protection = CHEST|GROIN
max_heat_protection_temperature = ARMOR_MAX_TEMP_PROTECT
strip_delay = 60
equip_delay_other = 40
max_integrity = 250
resistance_flags = NONE
armor = list(MELEE = 30, BULLET = 30, LASER = 30, ENERGY = 10, BOMB = 25, BIO = 0, RAD = 0, FIRE = 50, ACID = 50, WOUND = 15)
cryo_preserve = TRUE
/obj/item/clothing/suit/armor/Initialize(mapload)
. = ..()
if(!allowed)
allowed = GLOB.security_vest_allowed
/obj/item/clothing/suit/armor/vest
name = "armor vest"
desc = "A slim Type I armored vest that provides decent protection against most types of damage."
icon_state = "armoralt"
item_state = "armoralt"
blood_overlay_type = "armor"
dog_fashion = /datum/dog_fashion/back
/obj/item/clothing/suit/armor/vest/alt
desc = "A Type I armored vest that provides decent protection against most types of damage."
icon_state = "armor"
item_state = "armor"
/obj/item/clothing/suit/armor/vest/old
name = "degrading armor vest"
desc = "Older generation Type 1 armored vest. Due to degradation over time the vest is far less maneuverable to move in."
icon_state = "armor"
item_state = "armor"
slowdown = 1
/obj/item/clothing/suit/armor/vest/blueshirt
name = "large armor vest"
desc = "A large, yet comfortable piece of armor, protecting you from some threats."
icon_state = "blueshift"
item_state = "blueshift"
custom_premium_price = 600
/obj/item/clothing/suit/armor/hos
name = "armored greatcoat"
desc = "A greatcoat enhanced with a special alloy for some extra protection and style for those with a commanding presence."
icon_state = "hos"
item_state = "greatcoat"
body_parts_covered = CHEST|GROIN|ARMS|LEGS
armor = list(MELEE = 30, BULLET = 30, LASER = 30, ENERGY = 10, BOMB = 25, BIO = 0, RAD = 0, FIRE = 70, ACID = 90, WOUND = 20)
cold_protection = CHEST|GROIN|LEGS|ARMS
heat_protection = CHEST|GROIN|LEGS|ARMS
strip_delay = 80
clothing_flags = THICKMATERIAL
mutantrace_variation = DIGITIGRADE_VARIATION
pocket_storage_component_path = /datum/component/storage/concrete/pockets/hosarmor
/obj/item/clothing/suit/armor/hos/trenchcoat
name = "armored trenchcoat"
desc = "A trenchcoat enhanced with a special lightweight kevlar. The epitome of tactical plainclothes."
icon_state = "hostrench"
item_state = "hostrench"
flags_inv = 0
strip_delay = 80
/obj/item/clothing/suit/armor/vest/warden
name = "warden's jacket"
desc = "A navy-blue armored jacket with blue shoulder designations and '/Warden/' stitched into one of the chest pockets."
icon_state = "warden_alt"
item_state = "armor"
body_parts_covered = CHEST|GROIN|ARMS
cold_protection = CHEST|GROIN|ARMS|HANDS
heat_protection = CHEST|GROIN|ARMS|HANDS
strip_delay = 70
resistance_flags = FLAMMABLE
dog_fashion = null
/obj/item/clothing/suit/armor/vest/warden/alt
name = "warden's armored jacket"
desc = "A red jacket with silver rank pips and body armor strapped on top."
icon_state = "warden_jacket"
mutantrace_variation = DIGITIGRADE_VARIATION
/obj/item/clothing/suit/armor/vest/leather
name = "security overcoat"
desc = "Lightly armored leather overcoat meant as casual wear for high-ranking officers. Bears the crest of Nanotrasen Security."
icon_state = "leathercoat-sec"
item_state = "hostrench"
body_parts_covered = CHEST|GROIN|ARMS|LEGS
cold_protection = CHEST|GROIN|LEGS|ARMS
heat_protection = CHEST|GROIN|LEGS|ARMS
mutantrace_variation = DIGITIGRADE_VARIATION
dog_fashion = null
/obj/item/clothing/suit/armor/vest/capcarapace
name = "captain's carapace"
desc = "A fireproof armored chestpiece reinforced with ceramic plates and plasteel pauldrons to provide additional protection whilst still offering maximum mobility and flexibility. Issued only to the station's finest, although it does chafe your nipples."
icon_state = "capcarapace"
item_state = "armor"
body_parts_covered = CHEST|GROIN
armor = list(MELEE = 50, BULLET = 40, LASER = 50, ENERGY = 10, BOMB = 25, BIO = 0, RAD = 0, FIRE = 100, ACID = 90, WOUND = 10)
dog_fashion = null
resistance_flags = FIRE_PROOF
/obj/item/clothing/suit/armor/vest/capcarapace/syndicate
name = "syndicate captain's vest"
desc = "A sinister looking vest of advanced armor worn over a black and red fireproof jacket. The gold collar and shoulders denote that this belongs to a high ranking syndicate officer."
icon_state = "syndievest"
/obj/item/clothing/suit/armor/vest/capcarapace/alt
name = "captain's parade jacket"
desc = "For when an armoured vest isn't fashionable enough."
icon_state = "capformal"
item_state = "capspacesuit"
/obj/item/clothing/suit/armor/vest/hop_formal
name = "head of personnel's parade jacket"
desc = "For when an armoured vest isn't fashionable enough."
icon_state = "hopformal"
item_state = "hopformal"
/obj/item/clothing/suit/armor/vest/capcarapace/centcom
name = "\improper CentCom carapace"
desc = "A CentCom green alteration of the captain's carapace. Issued only to Nanotrasen's finest, although it does chafe your pecks."
icon_state = "centcarapace"
item_state = "centcarapace"
/obj/item/clothing/suit/armor/riot
name = "riot suit"
desc = "A suit of semi-flexible polycarbonate body armor with heavy padding to protect against melee attacks. Helps the wearer resist shoving in close quarters."
icon_state = "riot"
item_state = "riot"
body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
cold_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
armor = list(MELEE = 50, BULLET = 10, LASER = 10, ENERGY = 10, BOMB = 0, BIO = 0, RAD = 0, FIRE = 80, ACID = 80, WOUND = 30)
blocks_shove_knockdown = TRUE
strip_delay = 80
equip_delay_other = 60
slowdown = 0.33
mutantrace_variation = DIGITIGRADE_VARIATION
/obj/item/clothing/suit/armor/bone
name = "bone armor"
desc = "A mass of bones wrapped together into a protective shell. Not as effective as modern protection, but it still offers notable protection."
allowed = list (/obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/tank/internals/ipc_coolant, /obj/item/melee/spear, /obj/item/melee/spear/bonespear, /obj/item/claymore/bone, /obj/item/gun/ballistic/bow, /obj/item/organ/regenerative_core/legion, /obj/item/kitchen/knife/combat)
icon_state = "bonearmor"
item_state = "bonearmor"
blood_overlay_type = "armor"
armor = list(MELEE = 45, BULLET = 15, LASER = 15, ENERGY = 5, BOMB = 35, BIO = 0, RAD = 0, FIRE = 10, ACID = 10, WOUND = 15)
slowdown = 0.2
body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS
/obj/item/clothing/suit/armor/bone/heavy
name = "heavy bone armor"
desc = "A hefty set of bones that covers most of the body. Slowing, but able to repel considerable blows."
icon_state = "hbonearmor"
item_state = "hbonearmor"
armor = list(MELEE = 55, BULLET = 20, LASER = 20, ENERGY = 10, BOMB = 65, BIO = 0, RAD = 0, FIRE = 20, ACID = 20, WOUND = 20)
slowdown = 0.4
/obj/item/clothing/suit/armor/tribalcoat
name = "tribal coat"
desc = "A light, yet tough leather coat, reinforced with bone pauldrons. Often worn by tribal leaders."
allowed = list (/obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/tank/internals/ipc_coolant, /obj/item/melee/spear, /obj/item/melee/spear/bonespear, /obj/item/claymore/bone, /obj/item/gun/ballistic/bow, /obj/item/organ/regenerative_core/legion, /obj/item/kitchen/knife/combat)
icon_state = "tribalcoat"
item_state = "tribalcoat"
blood_overlay_type = "armor"
armor = list(MELEE = 35, BULLET = 10, LASER = 5, ENERGY = 5, BOMB = 50, BIO = 0, RAD = 0, FIRE = 30, ACID = 30, WOUND = 10) //Better against bomb than goliath, but worse in other ways
body_parts_covered = CHEST|GROIN|LEGS|ARMS
resistance_flags = FLAMMABLE
/obj/item/clothing/suit/armor/pathfinder
name = "pathfinder cloak"
desc = "A thick cloak woven from sinew and hides, designed to protect its wearer from hazardous weather."
allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/pickaxe, /obj/item/melee/spear, /obj/item/melee/spear/bonespear, /obj/item/claymore/bone, /obj/item/gun/ballistic/bow, /obj/item/organ/regenerative_core/legion, /obj/item/kitchen/knife/combat)
icon_state = "pathcloak"
item_state = "pathcloak"
armor = list(MELEE = 30, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 50, BIO = 0, RAD = 0, FIRE = 50, ACID = 50, WOUND = 15)
resistance_flags = FIRE_PROOF
body_parts_covered = CHEST|GROIN|LEGS|ARMS
heat_protection = CHEST|GROIN|LEGS|ARMS
max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
cold_protection = CHEST|GROIN|LEGS|ARMS
min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT
mutantrace_variation = DIGITIGRADE_VARIATION
/obj/item/clothing/suit/armor/pathfinder/Initialize(mapload)
. = ..()
AddComponent(/datum/component/armor_plate, null, null, list(MELEE = 10, BULLET = 5, LASER = 5, ENERGY = 5, BOMB = 5)) //maximum armor 60/15/15/15/65
/obj/item/clothing/suit/armor/bulletproof
name = "bulletproof armor"
desc = "A Type III heavy bulletproof vest that excels in protecting the wearer against traditional projectile weaponry and explosives to a minor extent."
icon_state = "bulletproof"
item_state = "armor"
blood_overlay_type = "armor"
armor = list(MELEE = 15, BULLET = 60, LASER = 10, ENERGY = 10, BOMB = 40, BIO = 0, RAD = 0, FIRE = 50, ACID = 50, WOUND = 20)
strip_delay = 70
equip_delay_other = 50
/obj/item/clothing/suit/armor/laserproof
name = "reflective jacket"
desc = "A jacket that excels in protecting the wearer against energy projectiles, reflecting them back to reduce incoming damage."
icon_state = "armor_reflec"
item_state = "armor_reflec"
blood_overlay_type = "armor"
body_parts_covered = CHEST|GROIN|ARMS
cold_protection = CHEST|GROIN|ARMS
heat_protection = CHEST|GROIN|ARMS
armor = list(MELEE = 10, BULLET = 10, LASER = 60, ENERGY = 50, BOMB = 0, BIO = 0, RAD = 0, FIRE = 100, ACID = 100)
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF
/obj/item/clothing/suit/armor/laserproof/equipped(mob/user, slot)
. = ..()
if(slot_flags & slot)
RegisterSignal(user, COMSIG_ATOM_BULLET_ACT, PROC_REF(do_reflect))
/obj/item/clothing/suit/armor/laserproof/dropped(mob/user)
if(user.get_item_by_slot(ITEM_SLOT_OCLOTHING) == src)
UnregisterSignal(user, COMSIG_ATOM_BULLET_ACT)
return ..()
/obj/item/clothing/suit/armor/laserproof/proc/do_reflect(mob/living/defender, obj/projectile/incoming, def_zone)
if(!(incoming.reflectable & REFLECT_NORMAL))
return NONE
if(!(def_zone in list(BODY_ZONE_CHEST, BODY_ZONE_PRECISE_GROIN, BODY_ZONE_L_ARM, BODY_ZONE_R_ARM))) //If not shot where ablative is covering you, you don't get the reflection bonus!
return NONE
incoming.damage *= 0.5 // split the damage between you and whoever it gets reflected at
incoming.on_hit(defender, defender.run_armor_check(def_zone, incoming.armor_flag, "", "", incoming.armour_penetration))
incoming.setAngle()
if(incoming.hitscan) // hitscan check
incoming.store_hitscan_collision(incoming.trajectory.copy_to())
incoming.firer = defender
var/new_angle_s = incoming.Angle + rand(120,240)
while(new_angle_s > 180) // Translate to regular projectile degrees
new_angle_s -= 360
incoming.setAngle(new_angle_s)
playsound(defender, pick('sound/weapons/bulletflyby.ogg', 'sound/weapons/bulletflyby2.ogg', 'sound/weapons/bulletflyby3.ogg'), 75, 1)
return BULLET_ACT_FORCE_PIERCE
/obj/item/clothing/suit/armor/vest/det_suit
name = "detective's armor vest"
desc = "An armored vest with a detective's badge on it."
icon_state = "detective-armor"
resistance_flags = FLAMMABLE
dog_fashion = null
/obj/item/clothing/suit/armor/vest/det_suit/Initialize(mapload)
. = ..()
allowed = GLOB.detective_vest_allowed
//All of the armor below is mostly unused
/obj/item/clothing/suit/armor/centcom
name = "\improper CentCom armor"
desc = "A suit that protects against some damage."
icon_state = "centcom"
item_state = "centcom"
w_class = WEIGHT_CLASS_BULKY
body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
allowed = list(/obj/item/gun/energy, /obj/item/melee/baton, /obj/item/restraints/handcuffs, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/tank/internals/ipc_coolant)
clothing_flags = THICKMATERIAL
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
cold_protection = CHEST | GROIN | LEGS | FEET | ARMS | HANDS
min_cold_protection_temperature = SPACE_SUIT_MIN_TEMP_PROTECT
heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
max_heat_protection_temperature = SPACE_SUIT_MAX_TEMP_PROTECT
armor = list(MELEE = 80, BULLET = 80, LASER = 50, ENERGY = 50, BOMB = 100, BIO = 100, RAD = 100, FIRE = 90, ACID = 90)
/obj/item/clothing/suit/armor/heavy
name = "heavy armor"
desc = "A heavily armored suit that protects against moderate damage."
icon_state = "heavy"
item_state = "swat_suit"
w_class = WEIGHT_CLASS_BULKY
gas_transfer_coefficient = 0.9
clothing_flags = THICKMATERIAL
body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
slowdown = 3
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
armor = list(MELEE = 80, BULLET = 80, LASER = 50, ENERGY = 50, BOMB = 100, BIO = 100, RAD = 100, FIRE = 90, ACID = 90)
/obj/item/clothing/suit/armor/tdome
body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
clothing_flags = THICKMATERIAL
cold_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
armor = list(MELEE = 80, BULLET = 80, LASER = 50, ENERGY = 50, BOMB = 100, BIO = 100, RAD = 100, FIRE = 90, ACID = 90)
/obj/item/clothing/suit/armor/tdome/red
name = "thunderdome suit"
desc = "Reddish armor."
icon_state = "tdred"
item_state = "tdred"
/obj/item/clothing/suit/armor/tdome/green
name = "thunderdome suit"
desc = "Pukish armor." //classy.
icon_state = "tdgreen"
item_state = "tdgreen"
/obj/item/clothing/suit/armor/riot/knight
name = "plate armour"
desc = "A classic suit of plate armour, highly effective at stopping melee attacks."
icon_state = "knight_green"
item_state = "knight_green"
mutantrace_variation = NONE
/obj/item/clothing/suit/armor/riot/knight/yellow
icon_state = "knight_yellow"
item_state = "knight_yellow"
/obj/item/clothing/suit/armor/riot/knight/blue
icon_state = "knight_blue"
item_state = "knight_blue"
/obj/item/clothing/suit/armor/riot/knight/red
icon_state = "knight_red"
item_state = "knight_red"
/obj/item/clothing/suit/armor/vest/durathread
name = "durathread vest"
desc = "A vest made of durathread with strips of leather acting as trauma plates."
icon_state = "durathread"
item_state = "durathread"
strip_delay = 60
equip_delay_other = 40
max_integrity = 200
resistance_flags = FLAMMABLE
armor = list(MELEE = 20, BULLET = 10, LASER = 30, ENERGY = 5, BOMB = 15, BIO = 0, RAD = 0, FIRE = 40, ACID = 50)
/obj/item/clothing/suit/armor/vest/russian
name = "russian vest"
desc = "A bulletproof vest with forest camo. Good thing there's plenty of forests to hide in around here, right?"
icon_state = "rus_armor"
item_state = "rus_armor"
armor = list(MELEE = 25, BULLET = 30, LASER = 0, ENERGY = 15, BOMB = 10, BIO = 0, RAD = 20, FIRE = 20, ACID = 50, WOUND = 10)
/obj/item/clothing/suit/armor/vest/russian_coat
name = "russian battle coat"
desc = "Used in extremly cold fronts, made out of real bears."
icon_state = "rus_coat"
item_state = "rus_coat"
body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
cold_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
min_cold_protection_temperature = SPACE_SUIT_MIN_TEMP_PROTECT
armor = list(MELEE = 25, BULLET = 20, LASER = 20, ENERGY = 10, BOMB = 20, BIO = 50, RAD = 20, FIRE = -10, ACID = 50, WOUND = 10)
/obj/item/clothing/suit/armor/stormtrooper
name = "Storm Trooper Armor"
desc = "Battle Armor from a long lost empire"
icon_state = "stormtrooper"
item_state = "stormtrooper"
body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
cold_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
armor = list(MELEE = 30, BULLET = 30, LASER = 50, ENERGY = 15, BOMB = 30, BIO = 20, RAD = 10, FIRE = 80, ACID = 80, WOUND = 10)
slowdown = 0.9
/obj/item/clothing/suit/hooded/cloak/goliath
name = "goliath cloak"
icon_state = "goliath_cloak"
desc = "A staunch, practical cape made out of numerous monster materials. It is coveted amongst exiles and hermits."
allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/pickaxe, /obj/item/melee/spear, /obj/item/melee/spear/bonespear, /obj/item/claymore/bone, /obj/item/gun/ballistic/bow, /obj/item/organ/regenerative_core/legion, /obj/item/kitchen/knife/combat)
armor = list(MELEE = 35, BULLET = 25, LASER = 25, ENERGY = 10, BOMB = 35, BIO = 0, RAD = 0, FIRE = 50, ACID = 50, WOUND = 10) //a fair alternative to bone armor, requiring alternative materials and gaining a suit slot
resistance_flags = FIRE_PROOF
hoodtype = /obj/item/clothing/head/hooded/cloakhood/goliath
body_parts_covered = CHEST|GROIN|ARMS
/obj/item/clothing/head/hooded/cloakhood/goliath
name = "goliath cloak hood"
icon_state = "golhood"
desc = "A protective and concealing hood."
armor = list(MELEE = 35, BULLET = 25, LASER = 25, ENERGY = 10, BOMB = 35, BIO = 0, RAD = 0, FIRE = 50, ACID = 50, WOUND = 10)
resistance_flags = FIRE_PROOF
flags_inv = HIDEEARS|HIDEEYES|HIDEHAIR|HIDEFACIALHAIR
transparent_protection = HIDEMASK
/obj/item/clothing/suit/hooded/cloak/goliath/desert
name = "brown leather cape"
desc = "An ash-coated cloak."
icon_state = "desertcloak"
armor = list()
resistance_flags = 0
hoodtype = /obj/item/clothing/head/hooded/cloakhood/goliath/desert
/obj/item/clothing/head/hooded/cloakhood/goliath/desert
name = "goliath cloak hood"
icon_state = "desertcloak"
desc = "The hood of an ashy cloak."
armor = list()
resistance_flags = 0
flags_inv = HIDEEARS|HIDEEYES|HIDEHAIR|HIDEFACIALHAIR
transparent_protection = HIDEMASK
/obj/item/clothing/suit/hooded/cloak/drake
name = "drake armour"
icon_state = "dragon"
desc = "A suit of armour fashioned from the remains of an ash drake."
allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/resonator, /obj/item/mining_scanner, /obj/item/t_scanner/adv_mining_scanner, /obj/item/gun/energy/kinetic_accelerator, /obj/item/pickaxe, /obj/item/melee/spear, /obj/item/melee/spear/bonespear, /obj/item/claymore/bone, /obj/item/gun/ballistic/bow, /obj/item/organ/regenerative_core/legion, /obj/item/kitchen/knife/combat)
armor = list(MELEE = 70, BULLET = 5, LASER = 5, ENERGY = 5, BOMB = 60, BIO = 60, RAD = 50, FIRE = 100, ACID = 100)
hoodtype = /obj/item/clothing/head/hooded/cloakhood/drake
heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
resistance_flags = FIRE_PROOF | ACID_PROOF
transparent_protection = HIDEGLOVES|HIDESUITSTORAGE|HIDEJUMPSUIT|HIDESHOES
/obj/item/clothing/head/hooded/cloakhood/drake
name = "drake helm"
icon_state = "dragon"
desc = "The skull of a dragon."
armor = list(MELEE = 70, BULLET = 5, LASER = 5, ENERGY = 5, BOMB = 60, BIO = 60, RAD = 50, FIRE = 100, ACID = 100)
heat_protection = HEAD
max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
resistance_flags = FIRE_PROOF | ACID_PROOF
/obj/item/clothing/suit/armor/elder_atmosian
name = "\improper Elder Atmosian Armor"
desc = "A superb armor made with the toughest and rarest materials available to man."
icon_state = "h2armor"
item_state = "h2armor"
armor = list(MELEE = 35, BULLET = 30, LASER = 25, ENERGY = 25, BOMB = 85, BIO = 20, RAD = 50, FIRE = 75, ACID = 40, WOUND = 15)
body_parts_covered = CHEST|GROIN|LEGS|ARMS|HANDS
cold_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
resistance_flags = FIRE_PROOF | ACID_PROOF
clothing_flags = THICKMATERIAL
mutantrace_variation = DIGITIGRADE_VARIATION
//////////////// PLATED ARMOR ////////////////
// Helmet type in code/modules/clothing/head/helmet.dm
/obj/item/clothing/suit/armor/plated
name = "empty plated armor vest"
desc = "A lightweight general-purpose over-armor suit that is designed to hold various types of armor plating. Won't do much without them."
icon_state = "plate-armor"
item_state = "plate-armor"
blood_overlay_type = "armor"
w_class = WEIGHT_CLASS_SMALL // It's just some fabric, after all
armor = list(MELEE = 5, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 10, ACID = 0, WOUND = 0)
slowdown = 0
var/obj/item/kevlar_plating/plating
/obj/item/clothing/suit/armor/plated/attack_self(mob/user)
if(!plating)
to_chat(user, span_warning("[src] doesn't have any plating to remove!"))
return
user.visible_message("[user] removes [plating] from [src]!", span_notice("You remove [plating]."))
user.put_in_hands(plating)
name = initial(name)
armor = armor.setRating(5,0,0,0,0,0,0,10,0,0,0) //because initial(armor) apparently doesn't work
slowdown = initial(slowdown)
w_class = initial(w_class)
body_parts_partial_covered = initial(body_parts_partial_covered)
plating = null
/obj/item/clothing/suit/armor/plated/examine(mob/user)
.=..()
if(plating)
. += span_info("It has [plating] slotted.")
/obj/item/clothing/suit/armor/plated/attackby(obj/item/I, mob/user, params)
. = ..()
if(!istype(I, /obj/item/kevlar_plating))
return
if(plating)
to_chat(user, span_warning("[src] already has [plating] slotted!"))
return
if(!user.transferItemToLoc(I, src))
return
user.visible_message("[user] inserts [plating] into [src]!", span_notice("You insert [plating] into [src]."))
var/obj/item/kevlar_plating/K = I
name = "[K.name_set] plated armor vest"
slowdown = K.slowdown_set
if (islist(armor) || isnull(armor)) //For an explanation see code/modules/clothing/under/accessories.dm#L39 - accessory detach proc
armor = getArmor(arglist(armor))
if (islist(K.armor) || isnull(K.armor))
K.armor = getArmor(arglist(K.armor))
armor = armor.attachArmor(K.armor)
w_class = WEIGHT_CLASS_BULKY
body_parts_partial_covered = K.partial_coverage
plating = K
//////////////// ARMOR PLATES ////////////////////////////////////////////////
// These armors are supposed to be a mid-game direct upgrade for security that enables
// them to dynamically respond depending on their skillset and/or the situation at hand
//
// balancing reference:
// default armor, slowdown 0
// armor = list(MELEE = 30, BULLET = 30, LASER = 30, ENERGY = 10, BOMB = 25, BIO = 0, RAD = 0, FIRE = 50, ACID = 50, WOUND = 15)
// bulletproof armor, slowdown 0
// armor = list(MELEE = 15, BULLET = 60, LASER = 10, ENERGY = 10, BOMB = 40, BIO = 0, RAD = 0, FIRE = 50, ACID = 50, WOUND = 20)
// hos hardsuit, slowdown 1
// armor = list(MELEE = 45, BULLET = 30, LASER = 30, ENERGY = 10, BOMB = 25, BIO = 100, RAD = 50, FIRE = 95, ACID = 95, WOUND = 25)
// riot armor, slowdown 0.33
// armor = list(MELEE = 50, BULLET = 10, LASER = 10, ENERGY = 10, BOMB = 0, BIO = 0, RAD = 0, FIRE = 80, ACID = 80, WOUND = 30)
//////////////////////////////////////////////////////////////////////////////
/obj/item/kevlar_plating
name = "debug plating"
desc = "You shouldn't see this!"
icon = 'icons/obj/kevlar.dmi'
icon_state = "mki"
force = 2
var/name_set = "debug"
var/slowdown_set = 0 // Slowdown value to set on the vest, for reference a hardsuit has "1" slowdown
armor = list(MELEE = 100, BULLET = 100, LASER = 100, ENERGY = 100, BOMB = 100, BIO = 100, RAD = 100, FIRE = 100, ACID = 100, WOUND = 100) // Armor value to set on the vest
var/partial_coverage = LEGS|FEET|ARMS|HANDS // Areas that the vest will cover besides the chest, NEVER INCLUDE CHEST OR GROIN
/obj/item/kevlar_plating/mki
name = "MK.I bluespace plating"
desc = "Incredibly light bluespace-infused armor plating that offers great movement while also providing some protection."
name_set = "MK.I bluespace"
slowdown_set = -0.1 // Speeds you up a bit in exchange for giving up some armor
armor = list(MELEE = 15, BULLET = 20, LASER = 25, ENERGY = 5, BOMB = 5, BIO = 0, RAD = 0, FIRE = 30, ACID = 40, WOUND = 10) // Slightly worse than default armor
partial_coverage = 0
/obj/item/kevlar_plating/mkii
name = "MK.II ceramic plating"
desc = "Light armor plating that can be carried easily while providing robust protection."
icon_state = "mkii"
force = 4
name_set = "MK.II ceramic"
slowdown_set = 0
armor = list(MELEE = 30, BULLET = 35, LASER = 35, ENERGY = 15, BOMB = 25, BIO = 0, RAD = 0, FIRE = 40, ACID = 50, WOUND = 20) // Slightly better than default armor
partial_coverage = 0
/obj/item/kevlar_plating/mkiii
name = "MK.III plasteel plating"
desc = "Weighted armor plating that impedes movement but greatly improves the durability of the wearer. Covers your limbs partially."
icon_state = "mkiii"
force = 6
name_set = "MK.III plasteel"
slowdown_set = 0.15 // Slow
armor = list(MELEE = 40, BULLET = 45, LASER = 45, ENERGY = 25, BOMB = 30, BIO = 0, RAD = 0, FIRE = 50, ACID = 60, WOUND = 35) //Robust
partial_coverage = LEGS|ARMS
/obj/item/kevlar_plating/mkiv
name = "MK.IV titanium plating"
desc = "Incredibly heavy armor plating that makes shooting the covered areas almost pointless. Covers your limbs partially."
icon_state = "mkiv"
force = 8
name_set = "MK.IV titanium"
w_class = WEIGHT_CLASS_BULKY
slowdown_set = 0.4 // Very slow
armor = list(MELEE = 55, BULLET = 60, LASER = 60, ENERGY = 40, BOMB = 40, BIO = 0, RAD = 0, FIRE = 65, ACID = 75, WOUND = 50) //Walking tank
partial_coverage = LEGS|ARMS