Bolas in the game

- Throw it at running people to sometimes trip them and legcuff them
 - Throw it at walking people to not really do anything at all
 - Can be thrown or fired from a mech
 - Mech weapon can only be attached to the Gygax
 - Allows for ranged security and good crowd control
 - Part 1 of 2 changes to Gygax for better sec(TM)
This commit is contained in:
ComicIronic
2014-08-04 17:12:06 +01:00
parent 874128c82b
commit c6c7e3f4bb
12 changed files with 130 additions and 1 deletions

View File

@@ -177,6 +177,47 @@
origin_tech = "materials=1"
var/breakouttime = 300 //Deciseconds = 30s = 0.5 minute
/obj/item/weapon/legcuffs/bolas
name = "bolas"
desc = "An entangling bolas. Throw at your foes to trip them and prevent them from running."
gender = PLURAL
icon = 'icons/obj/items.dmi'
icon_state = "bolas"
flags = FPRINT | TABLEPASS | CONDUCT
slot_flags = SLOT_BELT
throwforce = 2
w_class = 2.0
m_amt = 500
w_type = RECYK_METAL
origin_tech = "materials=1"
attack_verb = list("lashed", "bludgeoned", "whipped")
force = 10
var/dispenser = 0
var/throw_sound = 'sound/weapons/whip.ogg'
suicide_act(mob/living/user)
viewers(user) << "\red <b>[user] is wrapping the [src.name] around \his neck! It looks like \he's trying to commit suicide.</b>"
return(OXYLOSS)
/obj/item/weapon/legcuffs/bolas/throw_at(var/atom/A, range, speed) //mostly copied and modified from gun code - Comic
var /obj/item/projectile/thrownbolas/T = new /obj/item/projectile/thrownbolas(usr.loc) //creates a bolas projectile (projectile is used for compatibility with mechs)
var /turf/targetloc = get_turf(A) //gets the position of the clicked atom
T.current = usr.loc //projectile is placed on user
T.starting = usr.loc
T.original = targetloc
T.yo = (targetloc.y - T.starting.y)
T.xo = (targetloc.x - T.starting.x)
if (ishuman(usr)) // determines if the bolas should spawn an item when it dies (prevents infinite spam from mechsWell)
T.shot_from = "hand"
else
T.shot_from = "mecha"
T.process()
playsound(src, throw_sound, 20, 1)
Destroy() //gets rid of the bolas item in the hand
// /obj/item/weapon/legcuffs/bolas/cyborg To be implemented
// dispenser = 1
/obj/item/weapon/legcuffs/beartrap
name = "bear trap"
throw_speed = 2

View File

@@ -401,3 +401,33 @@
log_message("Launched a mouse-trap from [src.name], targeting [target]. HONK!")
do_after_cooldown()
return
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/bolas
name = "PCMK-6 Bolas Launcher"
icon_state = "mecha_bolas"
projectile = /obj/item/weapon/legcuffs/bolas
fire_sound = 'sound/weapons/whip.ogg'
projectiles = 10
missile_speed = 5
missile_range = 30
projectile_energy_cost = 50
equip_cooldown = 10
construction_time = 300
construction_cost = list("iron"=20000)
can_attach(obj/mecha/combat/gygax/M as obj)
if(..())
if(istype(M))
return 1
return 0
action(target)
if(!action_checks(target)) return
set_ready_state(0)
var/obj/item/weapon/legcuffs/bolas/M = new projectile(chassis.loc)
playsound(chassis, fire_sound, 50, 1)
M.throw_at(target, missile_range, missile_speed)
projectiles--
log_message("Fired from [src.name], targeting [target].")
do_after_cooldown()
return

View File

@@ -181,10 +181,13 @@
else
return 1
proc/OnDeath() //if assigned, allows for code when the projectile disappears
return 1
process()
if(kill_count < 1)
//del(src)
OnDeath()
returnToPool(src)
return
kill_count--
@@ -193,6 +196,7 @@
current = locate(min(max(x + xo, 1), world.maxx), min(max(y + yo, 1), world.maxy), z)
if((x == 1 || x == world.maxx || y == 1 || y == world.maxy))
//del(src)
OnDeath()
returnToPool(src)
return
step_towards(src, current)
@@ -206,9 +210,11 @@
proc/dumbfire(var/dir) // for spacepods, go snowflake go
if(!dir)
//del(src)
OnDeath()
returnToPool(src)
if(kill_count < 1)
//del(src)
OnDeath()
returnToPool(src)
kill_count--
spawn while(loc)

View File

@@ -138,6 +138,49 @@
M.adjustBrainLoss(20)
M.hallucination += 20
/obj/item/projectile/thrownbolas
name ="bolas"
icon_state= "bolas_thrown"
damage = 3
kill_count = 50
damage_type = BRUTE
flag = "bullet"
anchored = 0 //it's an object, can still be affected by singularity
on_hit(var/atom/target, var/blocked = 0)
log_admin("[src] has hit an atom of [target]")
if(isliving(target) && current != starting) //if the target is a live creature other than the thrower
var/mob/living/M = target
if(ishuman(M)) //if they're a human species
var/mob/living/carbon/human/H = M
if(H.m_intent == "run") //if they're set to run (though not necessarily running at that moment)
if(prob(70)) //this probability is up for change and mostly a placeholder - Comic
step(H, H.dir)
H << "\blue Your legs have been tangled!"
viewers(H) << "\red [H] was tripped by the bolas!"
H.Stun(5) //used instead of setting damage in vars to avoid non-human targets being affected
H.Weaken(10)
H.legcuffed = new /obj/item/weapon/legcuffs/bolas(H) //applies legcuff properties inherited through legcuffs
H.update_inv_legcuffed()
else if(H.legcuffed) //if the target is already legcuffed (has to be walking)
OnDeath()
else //walking, but uncuffed, or the running prob(70) failed
H << "\blue You stumble over the thrown bolas"
step(H, H.dir)
H.m_intent = "walk"
OnDeath()
else
M.Stun(2) //minor stun damage to anything not human
OnDeath()
else
OnDeath()
OnDeath()
if(shot_from == "hand") //if it's thrown, we want it to respawn the item. Mechs don't do this to avoid spam and infinite bolas works
var /obj/item/weapon/legcuffs/bolas/B = new /obj/item/weapon/legcuffs/bolas
B.loc = current
Destroy()
/obj/item/projectile/kinetic
name = "kinetic force"
icon_state = "energy"

View File

@@ -928,6 +928,15 @@ other types of metals and chemistry for reagents).
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/scattershot
category = "Exosuit Equipment"
/datum/design/mech_bolas
name = "Exosuit Weapon Design (PCMK-6 Bolas Launcher)"
desc = "Allows for the construction of PCMK-6 Bolas Launcher."
id = "mech_bolas"
build_type = MECHFAB
req_tech = list("combat" = 3)
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/bolas
category = "Exosuit Equipment"
/datum/design/mech_laser
name = "Exosuit Weapon Design (CH-PS \"Immolator\" Laser)"
desc = "Allows for the construction of CH-PS Laser."

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 156 KiB

After

Width:  |  Height:  |  Size: 156 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 155 KiB

After

Width:  |  Height:  |  Size: 155 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 KiB

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 35 KiB