diff --git a/code/modules/projectiles/guns/energy/bola.dm b/code/modules/projectiles/guns/energy/bola.dm new file mode 100644 index 0000000000..ba8482d1f6 --- /dev/null +++ b/code/modules/projectiles/guns/energy/bola.dm @@ -0,0 +1,38 @@ +/obj/item/gun/energy/bolagun + name = "bola blaster" + desc = "Specially made-to-order by Xenonomix, the \"Bola-Blaster\" launches an energy net that consolodates around the target's legs to hinder their movement!." + icon_state = "netgun" + item_state = "gun" // Placeholder + + fire_sound = 'sound/weapons/eluger.ogg' + origin_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 5, TECH_MAGNET = 3) + projectile_type = /obj/item/projectile/bola/energy + charge_cost = 400 //Low energy cost. + fire_delay = 10 //Rapid fire! + +/obj/item/gun/energy/bolagun/update_icon() + if(power_supply == null) + if(modifystate) + icon_state = "[modifystate]_open" + else + icon_state = "[initial(icon_state)]_open" + return + else if(charge_meter) + var/ratio = power_supply.charge / power_supply.maxcharge + + //make sure that rounding down will not give us the empty state even if we have charge for a shot left. + if(power_supply.charge < charge_cost) + ratio = 0 + else + ratio = max(round(ratio, 0.25) * 100, 25) + + if(modifystate) + icon_state = "[modifystate][ratio]" + else + icon_state = "[initial(icon_state)][ratio]" + + else if(power_supply) + if(modifystate) + icon_state = "[modifystate]" + else + icon_state = "[initial(icon_state)]" diff --git a/code/modules/projectiles/guns/energy/netgun_vr.dm b/code/modules/projectiles/guns/energy/netgun.dm similarity index 100% rename from code/modules/projectiles/guns/energy/netgun_vr.dm rename to code/modules/projectiles/guns/energy/netgun.dm diff --git a/code/modules/projectiles/projectile/special.dm b/code/modules/projectiles/projectile/special.dm index 5fe9e87e0d..4ec402ada0 100644 --- a/code/modules/projectiles/projectile/special.dm +++ b/code/modules/projectiles/projectile/special.dm @@ -282,13 +282,22 @@ /obj/item/projectile/bola/on_hit(var/atom/target, var/blocked = 0) if(ishuman(target)) - var/mob/living/carbon/human/M = target + var/mob/living/carbon/human/human_target = target var/obj/item/handcuffs/legcuffs/bola/B = new(src.loc) - if(!B.place_legcuffs(M,firer)) + for(var/obj/item/clothing/cloth in list(human_target.wear_suit, human_target.w_uniform, human_target.shoes)) //Check if we have a thick material covering our feet. + if((cloth.body_parts_covered & FEET) && (cloth.item_flags & THICKMATERIAL)) + ..() + return + if(!B.place_legcuffs(human_target,firer)) if(B) qdel(B) ..() +/obj/item/projectile/bola/energy + name = "energy_bola" + icon_state = "bola_energy" + damage = 0 + /obj/item/projectile/webball name = "ball of web" icon_state = "bola" diff --git a/code/modules/research/tg/designs/weapon_designs.dm b/code/modules/research/tg/designs/weapon_designs.dm index 2a634b86e5..b0a551dd29 100644 --- a/code/modules/research/tg/designs/weapon_designs.dm +++ b/code/modules/research/tg/designs/weapon_designs.dm @@ -381,6 +381,19 @@ ) departmental_flags = DEPARTMENT_BITFLAG_SECURITY | DEPARTMENT_BITFLAG_SCIENCE +/datum/design_techweb/bola_gun + name = "Bola Blaster" + desc = "The \"Bola Blaster\" is an energy net projector designed to immobilize humanoid creatures." + id = "bolablaster" + // req_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 5, TECH_MAGNET = 3) + build_type = PROTOLATHE + materials = list(MAT_STEEL = 6000, MAT_GLASS = 3000) + build_path = /obj/item/gun/energy/bolagun + category = list( + RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_RANGED + ) + departmental_flags = DEPARTMENT_BITFLAG_SECURITY | DEPARTMENT_BITFLAG_SCIENCE + // Misc weapons /datum/design_techweb/pummeler diff --git a/code/modules/research/tg/techwebs/nodes/security_nodes.dm b/code/modules/research/tg/techwebs/nodes/security_nodes.dm index e3ad7cb241..ad3988d572 100644 --- a/code/modules/research/tg/techwebs/nodes/security_nodes.dm +++ b/code/modules/research/tg/techwebs/nodes/security_nodes.dm @@ -58,6 +58,7 @@ design_ids = list( "netgun", "sizenetgun", + "bolablaster", "sickshot", "pummeler", "protector", diff --git a/icons/obj/projectiles.dmi b/icons/obj/projectiles.dmi index a0c5b9027e..19c1d1aef3 100644 Binary files a/icons/obj/projectiles.dmi and b/icons/obj/projectiles.dmi differ diff --git a/vorestation.dme b/vorestation.dme index ccedcc835a..5822fc139d 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -4278,6 +4278,7 @@ #include "code\modules\projectiles\guns\toy.dm" #include "code\modules\projectiles\guns\vox.dm" #include "code\modules\projectiles\guns\energy\altevian_vr.dm" +#include "code\modules\projectiles\guns\energy\bola.dm" #include "code\modules\projectiles\guns\energy\bsharpoon_vr.dm" #include "code\modules\projectiles\guns\energy\crestrose_vr.dm" #include "code\modules\projectiles\guns\energy\cyborg.dm" @@ -4286,7 +4287,7 @@ #include "code\modules\projectiles\guns\energy\hooklauncher.dm" #include "code\modules\projectiles\guns\energy\kinetic_accelerator_vr.dm" #include "code\modules\projectiles\guns\energy\laser.dm" -#include "code\modules\projectiles\guns\energy\netgun_vr.dm" +#include "code\modules\projectiles\guns\energy\netgun.dm" #include "code\modules\projectiles\guns\energy\nuclear.dm" #include "code\modules\projectiles\guns\energy\particle.dm" #include "code\modules\projectiles\guns\energy\phase.dm"