Advertisement
Guest User

bow.dm

a guest
Apr 20th, 2018
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.96 KB | None | 0 0
  1. /obj/item/weapon/gun/ballistic/bow
  2. name = "bow"
  3. desc = "A sturdy bow made out of wood and reinforced with iron."
  4. icon_state = "bow_unloaded"
  5. item_state = "bow"
  6. var/icon_state_loaded = "bow_loaded"
  7. var/icon_state_firing = "bow_firing"
  8. var/item_state_loaded = "bow"
  9. var/item_state_firing = "bow"
  10. fire_sound = 'sound/weapons/grenadelaunch.ogg'
  11. mag_type = /obj/item/ammo_box/magazine/internal/bow
  12. flags = HANDSLOW
  13. weapon_weight = WEAPON_HEAVY
  14. var/draw_sound = 'sound/weapons/draw_bow.ogg'
  15. var/ready_to_fire = 0
  16. var/slowdown_when_ready = 2
  17.  
  18. /obj/item/weapon/gun/ballistic/bow/update_icon()
  19. if(ready_to_fire)
  20. icon_state = icon_state_firing
  21. item_state = item_state_firing
  22. slowdown = slowdown_when_ready
  23. else if(magazine.ammo_count() && !ready_to_fire)
  24. icon_state = icon_state_loaded
  25. item_state = item_state_loaded
  26. slowdown = initial(slowdown)
  27. else
  28. icon_state = initial(icon_state)
  29. item_state = initial(item_state)
  30. slowdown = initial(slowdown)
  31.  
  32. /obj/item/weapon/gun/ballistic/bow/dropped(mob/user)
  33. if(magazine && magazine.ammo_count())
  34. magazine.empty_magazine()
  35. ready_to_fire = FALSE
  36. update_icon()
  37.  
  38. /obj/item/weapon/gun/ballistic/bow/attack_self(mob/living/user)
  39. if(!ready_to_fire && magazine.ammo_count())
  40. ready_to_fire = TRUE
  41. playsound(user, draw_sound, 100, 1)
  42. update_icon()
  43. else
  44. ready_to_fire = FALSE
  45. update_icon()
  46.  
  47. /obj/item/weapon/gun/ballistic/bow/attackby(obj/item/A, mob/user, params)
  48. var/num_loaded = magazine.attackby(A, user, params, 1)
  49. if(num_loaded)
  50. to_chat(user, "<span class='notice'>You ready \the [A] into \the [src].</span>")
  51. update_icon()
  52. chamber_round()
  53.  
  54. /obj/item/weapon/gun/ballistic/bow/can_shoot()
  55. . = ..()
  56. if(!ready_to_fire)
  57. return FALSE
  58.  
  59. /obj/item/weapon/gun/ballistic/bow/shoot_with_empty_chamber(mob/living/user as mob|obj)
  60. return
  61.  
  62. /obj/item/weapon/gun/ballistic/bow/process_chamber(empty_chamber = 0)
  63. . = ..()
  64. if(chambered && !chambered.BB)
  65. qdel(chambered)
  66. ready_to_fire = FALSE
  67. update_icon()
  68.  
  69. // ammo
  70. /obj/item/ammo_box/magazine/internal/bow
  71. name = "bow internal magazine"
  72. ammo_type = /obj/item/ammo_casing/caseless/arrow
  73. caliber = "arrow"
  74. max_ammo = 1
  75.  
  76.  
  77. /obj/item/projectile/bullet/reusable/arrow
  78. name = "arrow"
  79. icon_state = "arrow"
  80. ammo_type = /obj/item/ammo_casing/caseless/arrow
  81. range = 10
  82. damage = 25
  83. damage_type = BRUTE
  84.  
  85. /obj/item/ammo_casing/caseless/arrow
  86. name = "arrow"
  87. desc = "Stab, stab, stab."
  88. icon_state = "arrow"
  89. force = 10
  90. sharpness = IS_SHARP
  91. projectile_type = /obj/item/projectile/bullet/reusable/arrow
  92. caliber = "arrow"
  93.  
  94. //quiver
  95. /obj/item/weapon/storage/backpack/quiver
  96. name = "quiver"
  97. desc = "A quiver for holding arrows."
  98. icon_state = "quiver"
  99. item_state = "quiver"
  100. storage_slots = 20
  101. can_hold = list(
  102. /obj/item/ammo_casing/caseless/arrow
  103. )
  104.  
  105. /obj/item/weapon/storage/backpack/quiver/full/New()
  106. ..()
  107. for(var/i in 1 to storage_slots)
  108. new /obj/item/ammo_casing/caseless/arrow(src)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement