mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-07-18 18:46:24 +01:00
@@ -472,7 +472,7 @@ emp_act
|
||||
mass = I.w_class/THROWNOBJ_KNOCKBACK_DIVISOR
|
||||
var/momentum = speed*mass
|
||||
|
||||
if(O.throw_source && momentum >= THROWNOBJ_KNOCKBACK_SPEED)
|
||||
if(O.throw_source && momentum >= THROWNOBJ_KNOCKBACK_SPEED && !buckled)
|
||||
var/dir = get_dir(O.throw_source, src)
|
||||
|
||||
visible_message("<font color='red'>[src] staggers under the impact!</font>","<font color='red'>You stagger under the impact!</font>")
|
||||
|
||||
@@ -17,13 +17,21 @@
|
||||
item_state = "bolt"
|
||||
throwforce = 10
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
sharp = FALSE
|
||||
sharp = TRUE
|
||||
edge = TRUE
|
||||
embed_chance = 0 // it fizzles!
|
||||
catchable = FALSE // oh god
|
||||
|
||||
/obj/item/weapon/arrow/energy/throw_impact(atom/hit_atom)
|
||||
. = ..()
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/arrow/energy/equipped()
|
||||
if(isliving(loc))
|
||||
var/mob/living/L = loc
|
||||
L.drop_from_inventory(src)
|
||||
qdel(src) // noh
|
||||
|
||||
/obj/item/weapon/gun/launcher/crossbow/bow
|
||||
name = "shortbow"
|
||||
desc = "A common shortbow, capable of firing arrows at high speed towards a target. Useful for hunting while keeping quiet."
|
||||
@@ -35,15 +43,20 @@
|
||||
fire_sound_text = "a solid thunk"
|
||||
fire_delay = 25
|
||||
slot_flags = SLOT_BACK
|
||||
tension = 3
|
||||
release_force = 20
|
||||
release_speed = 15
|
||||
var/drawn = FALSE
|
||||
|
||||
/obj/item/weapon/gun/launcher/crossbow/bow/update_release_force(obj/item/projectile)
|
||||
return 0
|
||||
|
||||
/obj/item/weapon/gun/launcher/crossbow/bow/proc/unload(mob/user)
|
||||
var/obj/item/weapon/arrow/A = bolt
|
||||
bolt = null
|
||||
drawn = FALSE
|
||||
A.forceMove(get_turf(user))
|
||||
user.put_in_hands(A)
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/gun/launcher/crossbow/bow/consume_next_projectile(mob/user)
|
||||
if(!drawn)
|
||||
@@ -57,10 +70,17 @@
|
||||
update_icon()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/gun/launcher/crossbow/bow/attack_self(mob/living/user)
|
||||
if(bolt)
|
||||
user.visible_message("[user] relaxes the tension on [src]'s string and removes [bolt].","You relax the tension on [src]'s string and remove [bolt].")
|
||||
/obj/item/weapon/gun/launcher/crossbow/bow/attack_hand(mob/living/user)
|
||||
if(loc == user && bolt && !drawn)
|
||||
user.visible_message("<b>[user]</b> removes [bolt] from [src].","You remove [bolt] from [src].")
|
||||
unload(user)
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/gun/launcher/crossbow/bow/attack_self(mob/living/user)
|
||||
if(drawn)
|
||||
user.visible_message("<b>[user]</b> relaxes the tension on [src]'s string.","You relax the tension on [src]'s string.")
|
||||
drawn = FALSE
|
||||
update_icon()
|
||||
else
|
||||
draw(user)
|
||||
@@ -75,13 +95,9 @@
|
||||
|
||||
current_user = user
|
||||
user.visible_message("<b>[user]</b> begins to draw back the string of [src].","<span class='notice'>You begin to draw back the string of [src].</span>")
|
||||
|
||||
if(do_after(user, 25, src, exclusive = TASK_ALL_EXCLUSIVE))
|
||||
drawn = TRUE
|
||||
user.visible_message("<b>[user]</b> draws the string on [src] back fully!", "You draw the string on [src] back fully!")
|
||||
else
|
||||
user.visible_message("<b>[user]</b> stops drawing and relaxes the string of [src].","<span class='warning'>You stop drawing back and relax the string of [src].</span>")
|
||||
drawn = FALSE
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/gun/launcher/crossbow/bow/attackby(obj/item/W as obj, mob/user)
|
||||
@@ -109,6 +125,7 @@
|
||||
|
||||
/obj/item/weapon/gun/launcher/crossbow/bow/hardlight/unload(mob/user)
|
||||
qdel_null(bolt)
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/gun/launcher/crossbow/bow/hardlight/attack_self(mob/living/user)
|
||||
if(drawn)
|
||||
|
||||
Reference in New Issue
Block a user