Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

G2 Electroshock Grenade "Sonic Electric Ball Breakers (SEBB)" [Revived Edition] #6667

Merged
merged 3 commits into from
Jul 18, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions code/datums/supply_packs/explosives.dm
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,18 @@
containername = "\improper explosive M40 HEDP grenades crate (WARNING)"
group = "Explosives"

/datum/supply_packs/explosives_sebb
name = "G2 electroshock grenades crate (x6)"
contains = list(
/obj/item/storage/box/packet/sebb,
/obj/item/storage/box/packet/sebb,
)
cost = 30
containertype = /obj/structure/closet/crate/explosives
containername = "\improper G2 electroshock grenades crate (WARNING)"
group = "Explosives"


/datum/supply_packs/explosives_hedp
name = "M40 HEDP blast grenade box crate (x25)"
contains = list(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ GLOBAL_LIST_INIT(cm_vending_gear_commanding_officer, list(
list("HEDP Grenade Pack", 15, /obj/item/storage/box/packet/high_explosive, null, VENDOR_ITEM_REGULAR),
list("HEFA Grenade Pack", 15, /obj/item/storage/box/packet/hefa, null, VENDOR_ITEM_REGULAR),
list("WP Grenade Pack", 15, /obj/item/storage/box/packet/phosphorus, null, VENDOR_ITEM_REGULAR),
list("G2 Electroshock Grenade Packet (x3 grenades)", 15, /obj/item/storage/box/packet/sebb, null, VENDOR_ITEM_REGULAR),

list("RAIL ATTACHMENTS", 0, null, null, null),
list("Red-Dot Sight", 15, /obj/item/attachable/reddot, null, VENDOR_ITEM_REGULAR),
Expand Down
2 changes: 2 additions & 0 deletions code/game/machinery/vending/vendor_types/requisitions.dm
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@
list("M74 AGM-Smoke Airburst Grenade", floor(scale * 4), /obj/item/explosive/grenade/smokebomb/airburst, VENDOR_ITEM_REGULAR),
list("M74 AGM-Star Shell", floor(scale * 2), /obj/item/explosive/grenade/high_explosive/airburst/starshell, VENDOR_ITEM_REGULAR),
list("M74 AGM-Hornet Shell", floor(scale * 4), /obj/item/explosive/grenade/high_explosive/airburst/hornet_shell, VENDOR_ITEM_REGULAR),
list("G2 Electroshock Grenade", round(scale * 5), /obj/item/explosive/grenade/sebb, VENDOR_ITEM_REGULAR),
list("M40 HIRR Baton Slug", floor(scale * 8), /obj/item/explosive/grenade/slug/baton, VENDOR_ITEM_REGULAR),
list("M40 MFHS Metal Foam Grenade", floor(scale * 6), /obj/item/explosive/grenade/metal_foam, VENDOR_ITEM_REGULAR),
list("Plastic Explosives", floor(scale * 3), /obj/item/explosive/plastic, VENDOR_ITEM_REGULAR),
Expand Down Expand Up @@ -154,6 +155,7 @@
list("M74 AGM-Airburst Smoke Grenade Packet", 0, /obj/item/storage/box/packet/airburst_smoke, VENDOR_ITEM_REGULAR),
list("M74 AGM-S Star Shell Packet", 0, /obj/item/storage/box/packet/flare, VENDOR_ITEM_REGULAR),
list("M74 AGM-H Hornet Shell Packet", 0, /obj/item/storage/box/packet/hornet, VENDOR_ITEM_REGULAR),
list("G2 Electroshock grenade packet", 0, /obj/item/storage/box/packet/sebb, VENDOR_ITEM_REGULAR),
list("M20 mine box", 0, /obj/item/storage/box/explosive_mines, VENDOR_ITEM_REGULAR),

list("OTHER BOXES", -1, null, null),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ GLOBAL_LIST_INIT(cm_vending_gear_engi, list(
list("M74 AGM-Hornet Airburst Packet (x3 airburst grenades", 20, /obj/item/storage/box/packet/hornet, null, VENDOR_ITEM_REGULAR),
list("M20 Mine Box (x4 mines)", 18, /obj/item/storage/box/explosive_mines, null, VENDOR_ITEM_REGULAR),
list("M40 MFHS Metal Foam Grenade", 5, /obj/item/explosive/grenade/metal_foam, null, VENDOR_ITEM_REGULAR),
list("G2 Electroshock Grenade Packet (x3 grenades)", 16, /obj/item/storage/box/packet/sebb, null, VENDOR_ITEM_REGULAR),

list("PRIMARY AMMUNITION", 0, null, null, null),
list("M4RA AP Magazine (10x24mm)", 6, /obj/item/ammo_magazine/rifle/m4ra/ap, null, VENDOR_ITEM_REGULAR),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@ GLOBAL_LIST_INIT(cm_vending_gear_leader, list(
list("M74 AGM-Hornet Airburst Packet (x3 airburst grenades", 20, /obj/item/storage/box/packet/hornet, null, VENDOR_ITEM_REGULAR),
list("M20 Mine Box (x4 mines)", 20, /obj/item/storage/box/explosive_mines, null, VENDOR_ITEM_REGULAR),
list("M40 MFHS Metal Foam Grenade", 5, /obj/item/explosive/grenade/metal_foam, null, VENDOR_ITEM_REGULAR),
list("G2 Electroshock Grenade Packet (x3 grenades)", 16, /obj/item/storage/box/packet/sebb, null, VENDOR_ITEM_REGULAR),

list("MEDICAL SUPPLIES", 0, null, null, null),
list("Burn Kit", 2, /obj/item/stack/medical/advanced/ointment, null, VENDOR_ITEM_REGULAR),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ GLOBAL_LIST_INIT(cm_vending_gear_medic, list(
list("M74 AGM-Smoke Airburst Packet (x3 airburst grenades)", 10, /obj/item/storage/box/packet/airburst_smoke, null, VENDOR_ITEM_REGULAR),
list("M74 AGM-Hornet Airburst Packet (x3 airburst grenades", 20, /obj/item/storage/box/packet/hornet, null, VENDOR_ITEM_REGULAR),
list("M20 Mine Box (x4 mines)", 20, /obj/item/storage/box/explosive_mines, null, VENDOR_ITEM_REGULAR),
list("G2 Electroshock Grenade Packet (x3 grenades)", 16, /obj/item/storage/box/packet/sebb, null, VENDOR_ITEM_REGULAR),

list("PRIMARY AMMUNITION", 0, null, null, null),
list("M4RA AP Magazine (10x24mm)", 6, /obj/item/ammo_magazine/rifle/m4ra/ap, null, VENDOR_ITEM_REGULAR),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ GLOBAL_LIST_INIT(cm_vending_gear_spec, list(
list("M74 AGM-F Fragmentation Grenades x6", 40, /obj/effect/essentials_set/agmf_6_pack, null, VENDOR_ITEM_REGULAR),
list("M74 AGM-I Incendiary Grenades x6", 40, /obj/effect/essentials_set/agmi_6_pack, null, VENDOR_ITEM_REGULAR),
list("M74 AGM-S Smoke Grenades x6", 20, /obj/effect/essentials_set/agms_6_pack, null, VENDOR_ITEM_REGULAR),
list("G2 Electroshock Grenade Pack x6", 40, /obj/effect/essentials_set/sebb_6_pack, null, VENDOR_ITEM_REGULAR),

list("EXTRA FLAMETHROWER TANKS", 0, null, null, null),
list("Large Incinerator Tank", 40, /obj/item/ammo_magazine/flamer_tank/large, null, VENDOR_ITEM_REGULAR),
Expand Down Expand Up @@ -249,3 +250,13 @@ GLOBAL_LIST_INIT(cm_vending_clothing_specialist, list(
/obj/item/explosive/grenade/smokebomb/airburst,
/obj/item/explosive/grenade/smokebomb/airburst,
)

/obj/effect/essentials_set/sebb_6_pack
spawned_gear_list = list(
/obj/item/explosive/grenade/sebb,
/obj/item/explosive/grenade/sebb,
/obj/item/explosive/grenade/sebb,
/obj/item/explosive/grenade/sebb,
/obj/item/explosive/grenade/sebb,
/obj/item/explosive/grenade/sebb,
)
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ GLOBAL_LIST_INIT(cm_vending_gear_tl, list(
list("M74 AGM-Hornet Airburst Packet (x3 airburst grenades", 20, /obj/item/storage/box/packet/hornet, null, VENDOR_ITEM_REGULAR),
list("M20 Mine Box (x4 mines)", 20, /obj/item/storage/box/explosive_mines, null, VENDOR_ITEM_REGULAR),
list("M40 MFHS Metal Foam Grenade", 5, /obj/item/explosive/grenade/metal_foam, null, VENDOR_ITEM_REGULAR),
list("G2 Electroshock Grenade Packet (x3 grenades)", 16, /obj/item/storage/box/packet/sebb, null, VENDOR_ITEM_REGULAR),

list("PRIMARY AMMUNITION", 0, null, null, null),
list("M4RA AP Magazine (10x24mm)", 10, /obj/item/ammo_magazine/rifle/m4ra/ap, null, VENDOR_ITEM_REGULAR),
Expand Down
9 changes: 7 additions & 2 deletions code/game/objects/effects/overlays.dm
Original file line number Diff line number Diff line change
Expand Up @@ -223,6 +223,7 @@
icon_state = "empdisable"
name = "emp sparks"
effect_duration = 10
mouse_opacity = MOUSE_OPACITY_TRANSPARENT

/obj/effect/overlay/temp/emp_sparks/New(loc)
setDir(pick(GLOB.cardinals))
Expand All @@ -234,8 +235,12 @@
icon_state = "emppulse"
effect_duration = 20



/obj/effect/overlay/temp/elec_arc
icon = 'icons/effects/effects.dmi'
icon_state = "electricity"
name = "electric arc"
effect_duration = 3 SECONDS
mouse_opacity = MOUSE_OPACITY_TRANSPARENT

//gib animation

Expand Down
181 changes: 181 additions & 0 deletions code/game/objects/items/explosives/grenades/marines.dm
Original file line number Diff line number Diff line change
Expand Up @@ -465,6 +465,187 @@
icon_state = "grenade_phos_clf"
item_state = "grenade_phos_clf"

/obj/item/explosive/grenade/sebb
name = "\improper G2 Electroshock grenade"
desc = "This is a G2 Electroshock Grenade. Produced by Armat Battlefield Systems, it's sometimes referred to as the Sonic Electric Ball Breaker, \
after a rash of incidents where the intense 1.2 gV sonic payload caused... rupturing. \
A bounding landmine mode is available for this weapon which activates a small drill to self-bury itself when planted. Simply plant it at your feet and walk away."
icon_state = "grenade_sebb"
item_state = "grenade_sebb"
det_time = 3 SECONDS
underslug_launchable = TRUE
/// Maximum range of effect
var/range = 5
/// Maximum possible damage before falloff.
var/damage = 110
/// Factor to mutiply the effect range has on damage.
var/falloff_dam_reduction_mult = 20
/// Post falloff calc damage is divided by this to get xeno slowdown
var/xeno_slowdown_numerator = 12
/// Post falloff calc damage is multipled by this to get human stamina damage
var/human_stam_dam_factor = 0.9

/obj/item/explosive/grenade/sebb/get_examine_text(mob/user)
. = ..()
. += SPAN_NOTICE("To put into mine mode, plant at feet.")

/obj/item/explosive/grenade/sebb/afterattack(atom/target, mob/user, proximity)
var/turf/user_turf = get_turf(user)
if(active)
return

if(!isturf(target))
return

if(user.action_busy)
return

if(target != get_turf(user))
return

if(locate(/obj/item/explosive/mine) in get_turf(src))
to_chat(user, SPAN_WARNING("There already is a mine at this position!"))
return

if(antigrief_protection && user.faction == FACTION_MARINE && explosive_antigrief_check(src, user))
to_chat(user, SPAN_WARNING("\The [name]'s safe-area accident inhibitor prevents you from planting!"))
msg_admin_niche("[key_name(user)] attempted to plant \a [name] in [get_area(src)] [ADMIN_JMP(src.loc)]")
return

if(ishuman(user))
var/mob/living/carbon/human/human = user
if(!human.allow_gun_usage)
to_chat(user, SPAN_WARNING("Your programming prevents you from using this!"))
return

if(user_turf && (user_turf.density || locate(/obj/structure/fence) in user_turf))
to_chat(user, SPAN_WARNING("You can't plant a mine here."))
return

if(Adjacent(/obj/item/explosive/mine)) // bit more strict on this than normal mines
to_chat(user, SPAN_WARNING("Too close to another mine! Plant it somewhere less obvious."))
return

user.visible_message(SPAN_NOTICE("[user] starts deploying [src]."),
SPAN_NOTICE("You switch [src] into landmine mode and start placing it..."))
playsound(user.loc, 'sound/effects/thud.ogg', 40)
if(!do_after(user, 5 SECONDS * user.get_skill_duration_multiplier(SKILL_CONSTRUCTION), INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD))
to_chat(user, SPAN_NOTICE("You stop planting."))
return

user.visible_message(SPAN_NOTICE("[user] finishes deploying [src]."),
SPAN_NOTICE("You finish deploying [src]."))
var/obj/item/explosive/mine/sebb/planted = new /obj/item/explosive/mine/sebb(get_turf(user))
planted.activate_sensors()
planted.iff_signal = user.faction // assuring IFF is set
planted.pixel_x += rand(-5, 5)
planted.pixel_y += rand(-5, 5)
qdel(src)

/obj/item/explosive/grenade/sebb/activate()
..()
var/beeplen = 6 // Actual length of the sound rounded up to nearest decisecond
var/soundtime = det_time - beeplen
if(det_time < beeplen) // just play sound if detonation shorter than the sound
playsound(loc, 'sound/effects/sebb_explode.ogg', 90, 0, 10)
else
addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(playsound), loc, 'sound/effects/sebb_beep.ogg', 60, 0, 10), soundtime)



/obj/item/explosive/grenade/sebb/prime()
var/datum/effect_system/spark_spread/sparka = new
var/turf/sebb_turf = get_turf(src)
var/list/full_range = oview(range, src) // Fill a list of stuff in the range so we won't have to spam oview
new /obj/effect/overlay/temp/sebb(sebb_turf)

playsound(src.loc, 'sound/effects/sebb_explode.ogg', 90, 0, 10)

for(var/obj/structure/machinery/defenses/sentry/sentry_stun in full_range)
sentry_stun.sentry_range = 0 // Temporarily "disable" the sentry by killing its range then setting it back.
new /obj/effect/overlay/temp/elec_arc(get_turf(sentry_stun)) // sprites are meh but we need visual indication that the sentry was messed up
addtimer(VARSET_CALLBACK(sentry_stun, sentry_range, initial(sentry_stun.sentry_range)), 5 SECONDS) // assure to set it back
sentry_stun.visible_message(SPAN_DANGER("[src]'s screen flickes violently as it's shocked!"))
sentry_stun.visible_message(SPAN_DANGER("[src] says \"ERROR: Fire control system resetting due to critical voltage flucuation!\""))
sparka.set_up(1, 1, sentry_stun)
sparka.start()

for(var/turf/turf in full_range)
if(prob(8))
var/datum/effect_system/spark_spread/sparkTurf = new //using a different spike system because the spark system doesn't like when you reuse it for differant things
sparkTurf.set_up(1, 1, turf)
sparkTurf.start()
if(prob(10))
new /obj/effect/overlay/temp/emp_sparks(turf)

for(var/mob/living/carbon/mob in full_range) // no legacy mob support

var/mob_dist = get_dist(src, mob) // Distance from mob

/**
* Damage equation: damage - (mob distance * falloff_dam_reduction_mult)
* Example: A marine is 3 tiles out, the distance (3) is multiplied by falloff_dam_reduction_mult to get falloff.
* The raw damage is minused by falloff to get actual damage
*/

var/falloff = mob_dist * falloff_dam_reduction_mult
var/damage_applied = damage - falloff // Final damage applied after falloff calc
sparka.set_up(1, 1, mob)
sparka.start()
shake_camera(mob, 1, 1)
if(ishuman(mob))
var/mob/living/carbon/human/shocked_human = mob
if(isspeciessynth(shocked_human)) // Massive overvoltage to ungrounded robots is pretty bad
shocked_human.Stun(1 + (damage_applied/40))
damage_applied *= 1.5
new /obj/effect/overlay/temp/elec_arc(get_turf(shocked_human))
to_chat(mob, SPAN_HIGHDANGER("All of your systems jam up as your main bus is overvolted by [damage_applied*2] volts."))
mob.visible_message(SPAN_WARNING("[mob] seizes up from the elctric shock"))
shocked_human.take_overall_armored_damage(damage_applied, ARMOR_ENERGY, BURN, 90) // 90% chance to be on additional limbs
shocked_human.make_dizzy(damage_applied)
mob.apply_stamina_damage(damage_applied*human_stam_dam_factor) // Stamina damage
shocked_human.emote("pain")
else //nonhuman damage + slow
mob.apply_damage(damage_applied, BURN)
if((mob_dist < (range-3))) // 2 tiles around small superslow
mob.Superslow(2)
mob.Slow(damage_applied/11)

if(mob_dist < 1) // Range based stuff, standing ontop of the equivalent of a canned lighting bolt should mess you up.
mob.Superslow(3) // Note that humans will likely be in stamcrit so it's always worse for them when ontop of it and we can just balancing it on xenos.
mob.eye_blurry = damage_applied/4
mob.Daze(1)
else if((mob_dist < (range-1)) && (mob.mob_size < MOB_SIZE_XENO_VERY_SMALL)) // Flicker stun humans that are closer to the grenade and larvas too.
mob.apply_effect(1 + (damage_applied/100),WEAKEN) // 1 + damage/40
mob.eye_blurry = damage_applied/8

else
to_chat(mob, SPAN_HIGHDANGER("Your entire body seizes up as a powerful shock courses through it!"))


new /obj/effect/overlay/temp/emp_sparks(mob)
mob.make_jittery(damage_applied*2)
empulse(src, 1, 2) // mini EMP
qdel(src)


/obj/item/explosive/grenade/sebb/primed
desc = "A G2 Electroshock Grenade, looks like it's quite angry! Oh shit!"
det_time = 7 // 0.7 seconds to blow up. We want them to get caught if they go through.

/obj/item/explosive/grenade/sebb/primed/Initialize()
. = ..()
src.visible_message(SPAN_HIGHDANGER("[src] pops out of the ground!"))
activate()

/obj/effect/overlay/temp/sebb
icon = 'icons/effects/sebb.dmi'
icon_state = "sebb_explode"
layer = ABOVE_LIGHTING_PLANE
pixel_x = -175 // We need these offsets to force center the sprite because BYOND is dumb
pixel_y = -175
appearance_flags = RESET_COLOR

/*
//================================================
Nerve Gas Grenades
Expand Down
24 changes: 23 additions & 1 deletion code/game/objects/items/explosives/mine.dm
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
throw_speed = SPEED_VERY_FAST
unacidable = TRUE
flags_atom = FPRINT|CONDUCT
antigrief_protection = TRUE
allowed_sensors = list(/obj/item/device/assembly/prox_sensor)
max_container_volume = 120
reaction_limits = list( "max_ex_power" = 105, "base_ex_falloff" = 60, "max_ex_shards" = 32,
Expand Down Expand Up @@ -71,7 +72,12 @@
if(active || user.action_busy)
return

user.visible_message(SPAN_NOTICE("[user] starts deploying [src]."), \
if(antigrief_protection && user.faction == FACTION_MARINE && explosive_antigrief_check(src, user))
to_chat(user, SPAN_WARNING("\The [name]'s safe-area accident inhibitor prevents you from planting!"))
msg_admin_niche("[key_name(user)] attempted to plant \a [name] in [get_area(src)] [ADMIN_JMP(src.loc)]")
return

user.visible_message(SPAN_NOTICE("[user] starts deploying [src]."),
SPAN_NOTICE("You start deploying [src]."))
if(!do_after(user, 40, INTERRUPT_NO_NEEDHAND, BUSY_ICON_HOSTILE))
user.visible_message(SPAN_NOTICE("[user] stops deploying [src]."), \
Expand Down Expand Up @@ -317,3 +323,19 @@
customizable = TRUE
matter = list("metal" = 3750)
has_blast_wave_dampener = TRUE

/obj/item/explosive/mine/sebb
name = "\improper G2 Electroshock grenade"
icon_state = "grenade_sebb_planted"
desc = "A G2 electroshock grenade planted as a landmine."
pixel_y = -5
anchored = TRUE // this is supposed to be planeted already when spawned

/obj/item/explosive/mine/sebb/disarm()
. = ..()
new /obj/item/explosive/grenade/sebb(get_turf(src))
qdel(src)

/obj/item/explosive/mine/sebb/prime()
new /obj/item/explosive/grenade/sebb/primed(get_turf(src))
qdel(src)
2 changes: 1 addition & 1 deletion code/modules/clothing/head/helmet.dm
Original file line number Diff line number Diff line change
Expand Up @@ -354,7 +354,7 @@ GLOBAL_LIST_INIT(allowed_helmet_items, list(
armor_melee = CLOTHING_ARMOR_MEDIUM
armor_bullet = CLOTHING_ARMOR_MEDIUM
armor_laser = CLOTHING_ARMOR_MEDIUMLOW
armor_energy = CLOTHING_ARMOR_NONE
armor_energy = CLOTHING_ARMOR_LOW
armor_bomb = CLOTHING_ARMOR_LOW
armor_bio = CLOTHING_ARMOR_MEDIUM
armor_rad = CLOTHING_ARMOR_LOW
Expand Down
6 changes: 5 additions & 1 deletion code/modules/clothing/suits/marine_armor/_marine_armor.dm
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@
armor_melee = CLOTHING_ARMOR_MEDIUM
armor_bullet = CLOTHING_ARMOR_MEDIUM
armor_laser = CLOTHING_ARMOR_MEDIUMLOW
armor_energy = CLOTHING_ARMOR_NONE
armor_energy = CLOTHING_ARMOR_LOW
armor_bomb = CLOTHING_ARMOR_MEDIUMLOW
armor_bio = CLOTHING_ARMOR_MEDIUM
armor_rad = CLOTHING_ARMOR_MEDIUMLOW
Expand Down Expand Up @@ -361,6 +361,7 @@
armor_bomb = CLOTHING_ARMOR_MEDIUM
armor_bio = CLOTHING_ARMOR_MEDIUMHIGH
armor_internaldamage = CLOTHING_ARMOR_MEDIUMHIGH
armor_energy = CLOTHING_ARMOR_MEDIUM
specialty = "B12 pattern marine"
light_range = 5

Expand Down Expand Up @@ -547,6 +548,7 @@
armor_bomb = CLOTHING_ARMOR_HIGHPLUS
armor_bio = CLOTHING_ARMOR_MEDIUMHIGH
armor_rad = CLOTHING_ARMOR_MEDIUM
armor_energy = CLOTHING_ARMOR_MEDIUMLOW
armor_internaldamage = CLOTHING_ARMOR_MEDIUMHIGH
storage_slots = 2
slowdown = SLOWDOWN_ARMOR_LOWHEAVY
Expand Down Expand Up @@ -591,6 +593,7 @@
armor_bio = CLOTHING_ARMOR_MEDIUMLOW
armor_rad = CLOTHING_ARMOR_MEDIUMHIGH
armor_internaldamage = CLOTHING_ARMOR_MEDIUMHIGH
armor_energy = CLOTHING_ARMOR_MEDIUM
storage_slots = 2
flags_inventory = BLOCKSHARPOBJ|BLOCK_KNOCKDOWN
flags_armor_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN|BODY_FLAG_ARMS|BODY_FLAG_LEGS|BODY_FLAG_FEET
Expand Down Expand Up @@ -632,6 +635,7 @@
armor_bullet = CLOTHING_ARMOR_MEDIUMHIGH
armor_bomb = CLOTHING_ARMOR_VERYHIGH
armor_bio = CLOTHING_ARMOR_MEDIUMLOW
armor_energy = CLOTHING_ARMOR_MEDIUM
armor_internaldamage = CLOTHING_ARMOR_MEDIUMHIGH
flags_inventory = BLOCKSHARPOBJ|BLOCK_KNOCKDOWN
flags_item = MOB_LOCK_ON_EQUIP|NO_CRYO_STORE
Expand Down
Loading
Loading