mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-07-12 23:54:24 +01:00
Adds a whole bunch of Exosuit weapons and other miscellaneous parts.
This commit is contained in:
@@ -0,0 +1,85 @@
|
||||
//Concussion, or 'dizzyness' grenades.
|
||||
|
||||
/obj/item/weapon/grenade/concussion
|
||||
name = "concussion grenade"
|
||||
desc = "A polymer concussion grenade, optimized for disorienting personnel without causing large amounts of injury."
|
||||
icon_state = "concussion"
|
||||
item_state = "grenade"
|
||||
|
||||
var/blast_radius = 5
|
||||
|
||||
/obj/item/weapon/grenade/concussion/detonate()
|
||||
..()
|
||||
concussion_blast(get_turf(src), blast_radius)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
/obj/proc/concussion_blast(atom/target, var/radius = 5)
|
||||
var/turf/T = get_turf(target)
|
||||
if(is_below_sound_pressure(T))
|
||||
visible_message("<span class='notice'>Whump.</span>")
|
||||
return
|
||||
playsound(src.loc, 'sound/effects/bang.ogg', 75, 1, -3)
|
||||
if(istype(T))
|
||||
for(var/mob/living/L in orange(T, radius))
|
||||
if(ishuman(L))
|
||||
var/mob/living/carbon/human/H = L
|
||||
to_chat(H, "<span class='critical'>WHUMP.</span>")
|
||||
|
||||
var/ear_safety = 0
|
||||
|
||||
H.get_ear_protection()
|
||||
|
||||
var/bang_effectiveness = H.species.sound_mod
|
||||
|
||||
if((get_dist(H, T) <= round(radius * 0.3 * bang_effectiveness) || src.loc == H.loc || src.loc == H))
|
||||
if(ear_safety > 0)
|
||||
H.Confuse(2)
|
||||
else
|
||||
H.Confuse(8)
|
||||
H.Weaken(1)
|
||||
if ((prob(14) || (H == src.loc && prob(70))))
|
||||
H.ear_damage += rand(1, 10)
|
||||
else
|
||||
H.ear_damage += rand(0, 5)
|
||||
H.ear_deaf = max(H.ear_deaf,15)
|
||||
if(H.client)
|
||||
if(prob(50))
|
||||
H.client.spinleft()
|
||||
else
|
||||
H.client.spinright()
|
||||
|
||||
else if(get_dist(H, T) <= round(radius * 0.5 * bang_effectiveness))
|
||||
if(!ear_safety)
|
||||
H.Confuse(6)
|
||||
H.ear_damage += rand(0, 3)
|
||||
H.ear_deaf = max(H.ear_deaf,10)
|
||||
|
||||
if(H.client)
|
||||
if(prob(50))
|
||||
H.client.spinleft()
|
||||
else
|
||||
H.client.spinright()
|
||||
|
||||
else if(!ear_safety && get_dist(H, T) <= (radius * bang_effectiveness))
|
||||
H.Confuse(4)
|
||||
H.ear_damage += rand(0, 1)
|
||||
H.ear_deaf = max(H.ear_deaf,5)
|
||||
|
||||
if(H.ear_damage >= 15)
|
||||
to_chat(H, "<span class='danger'>Your ears start to ring badly!</span>")
|
||||
|
||||
if(prob(H.ear_damage - 5))
|
||||
to_chat(H, "<span class='danger'>You can't hear anything!</span>")
|
||||
H.sdisabilities |= DEAF
|
||||
else if(H.ear_damage >= 5)
|
||||
to_chat(H, "<span class='danger'>Your ears start to ring!</span>")
|
||||
if(istype(L, /mob/living/silicon/robot))
|
||||
var/mob/living/silicon/robot/R = L
|
||||
if(L.client)
|
||||
if(prob(50))
|
||||
L.client.spinleft()
|
||||
else
|
||||
L.client.spinright()
|
||||
to_chat(R, "<span class='critical'>Gyroscopic failure.</span>")
|
||||
return
|
||||
@@ -31,6 +31,10 @@
|
||||
damage = 15
|
||||
armor_penetration = 20
|
||||
|
||||
/obj/item/projectile/bullet/pellet/fragment/weak
|
||||
damage = 4
|
||||
armor_penetration = 40
|
||||
|
||||
/obj/item/weapon/grenade/explosive
|
||||
name = "fragmentation grenade"
|
||||
desc = "A fragmentation grenade, optimized for harming personnel without causing massive structural damage."
|
||||
@@ -98,3 +102,12 @@
|
||||
num_fragments = 200 //total number of fragments produced by the grenade
|
||||
|
||||
//The radius of the circle used to launch projectiles. Lower values mean less projectiles are used but if set too low gaps may appear in the spread pattern
|
||||
|
||||
/obj/item/weapon/grenade/explosive/mini
|
||||
name = "mini fragmentation grenade"
|
||||
desc = "A miniaturized fragmentation grenade, this one poses relatively little threat on its own."
|
||||
icon_state = "minifrag"
|
||||
fragment_types = list(/obj/item/projectile/bullet/pellet/fragment)
|
||||
num_fragments = 20
|
||||
spread_range = 3
|
||||
explosion_size = 1
|
||||
|
||||
@@ -744,7 +744,7 @@ Loot piles can be depleted, if loot_depleted is turned on. Note that players wh
|
||||
|
||||
uncommon_loot = list(
|
||||
/obj/item/mecha_parts/mecha_equipment/shocker,
|
||||
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang,
|
||||
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/grenade,
|
||||
/obj/item/mecha_parts/mecha_equipment/weapon/energy/laser,
|
||||
/obj/item/mecha_parts/mecha_equipment/weapon/energy/taser,
|
||||
/obj/item/device/kit/paint/gygax,
|
||||
@@ -784,7 +784,7 @@ Loot piles can be depleted, if loot_depleted is turned on. Note that players wh
|
||||
|
||||
uncommon_loot = list(
|
||||
/obj/item/mecha_parts/mecha_equipment/shocker,
|
||||
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang,
|
||||
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/grenade,
|
||||
/obj/item/mecha_parts/mecha_equipment/weapon/energy/laser,
|
||||
/obj/item/mecha_parts/mecha_equipment/antiproj_armor_booster,
|
||||
/obj/item/device/kit/paint/durand,
|
||||
|
||||
Reference in New Issue
Block a user