mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-07-21 21:10:30 +01:00
fa7214de3c
Revives https://github.com/Aurorastation/Aurora.3/pull/17215 with the needed species changes. As I said last time this was tried, the key issue is that our walkspeed is a lot lower than any other server's. Even if we add atom gliding as is, it would just look like gliding through molasses and would give you motion sickness, because it takes a half-second to finish a glide to another tile. Meaning that to compensate the movement speed has now been significantly buffed for everyone. Yes, even dionae, G2, simple mobs, everyone. As compensation, m'sai/bishop/unathi sprint were especially nerfed because otherwise they'd go lightspeed. https://github.com/user-attachments/assets/7ba07389-b874-4a7d-8dd5-b5d3bfe611e4 --------- Signed-off-by: Matt Atlas <mattiathebest2000@hotmail.it> Co-authored-by: Matt Atlas <liermattia@gmail.com> Co-authored-by: VMSolidus <evilexecutive@gmail.com> Co-authored-by: Batrachophreno <Batrochophreno@gmail.com>
546 lines
19 KiB
Plaintext
546 lines
19 KiB
Plaintext
//Weapons and items used exclusively by the Vaurcae, typically only for event shenanigans, and possibly random finds in the future. All items here should have
|
|
//"Vaurca" in the item path at some point, so they can be easily spawned in-game.
|
|
|
|
/obj/item/clothing/mask/gas/vaurca
|
|
desc = "A Vaurcae mandible garment with an attached gas filter and air-tube."
|
|
name = "mandible garment"
|
|
icon = 'icons/obj/vaurca_items.dmi'
|
|
icon_state = "m_garment"
|
|
item_state = "m_garment"
|
|
w_class = WEIGHT_CLASS_SMALL
|
|
flags_inv = null
|
|
body_parts_covered = null
|
|
filtered_gases = list(GAS_NITROGEN, GAS_N2O, GAS_CHLORINE, GAS_ALIEN)
|
|
contained_sprite = 1
|
|
|
|
/obj/item/clothing/mask/gas/vaurca/adjust_mask(mob/user)
|
|
to_chat(user, "This mask is too tight to adjust.")
|
|
return
|
|
|
|
/obj/item/clothing/mask/gas/vaurca/filter
|
|
desc = "A basic screw on filter attached beneath the mouthparts of the common Vaurca."
|
|
name = "filter port"
|
|
icon_state = "filterport"
|
|
w_class = WEIGHT_CLASS_SMALL
|
|
flags_inv = null
|
|
body_parts_covered = null
|
|
species_restricted = list(BODYTYPE_VAURCA, BODYTYPE_VAURCA_WARFORM, BODYTYPE_VAURCA_BREEDER, BODYTYPE_VAURCA_BULWARK)
|
|
item_state = 0
|
|
|
|
/obj/item/clothing/head/shaper
|
|
name = "shaper helmet"
|
|
desc = "A mirrored helm commonly worn by Preimminents. The helm masks the visage of its wearer, symbolically and literally blinding them to all but the path set in front of them."
|
|
icon = 'icons/obj/vaurca_items.dmi'
|
|
icon_state = "shaper_helmet"
|
|
item_state = "shaper_helmet"
|
|
contained_sprite = TRUE
|
|
sprite_sheets = list(
|
|
BODYTYPE_VAURCA_BULWARK = 'icons/mob/species/bulwark/head.dmi'
|
|
)
|
|
species_restricted = list(BODYTYPE_VAURCA, BODYTYPE_VAURCA_BULWARK)
|
|
body_parts_covered = HEAD|EYES
|
|
|
|
/obj/item/clothing/head/expression
|
|
name = "human expression mask"
|
|
desc = "A mask that allows emotively challenged aliens to convey facial expressions. This one depicts a human."
|
|
icon = 'icons/obj/vaurca_items.dmi'
|
|
icon_state = "human_helmet"
|
|
item_state = "human_helmet"
|
|
build_from_parts = TRUE
|
|
worn_overlay = "face"
|
|
contained_sprite = TRUE
|
|
sprite_sheets = list(
|
|
BODYTYPE_VAURCA_BULWARK = 'icons/mob/species/bulwark/head.dmi'
|
|
)
|
|
species_restricted = list(BODYTYPE_VAURCA, BODYTYPE_VAURCA_BULWARK)
|
|
|
|
/obj/item/clothing/head/expression/skrell
|
|
name = "skrell expression mask"
|
|
desc = "A mask that allows emotively challenged aliens to convey facial expressions. This one depicts a Skrell."
|
|
icon_state = "skrell_helmet"
|
|
item_state = "skrell_helmet"
|
|
sprite_sheets = list(
|
|
BODYTYPE_VAURCA_BULWARK = 'icons/mob/species/bulwark/head.dmi'
|
|
)
|
|
species_restricted = list(BODYTYPE_VAURCA, BODYTYPE_VAURCA_BULWARK)
|
|
|
|
/obj/item/clothing/head/expression/unathi
|
|
name = "unathi expression mask"
|
|
desc = "A mask that allows emotively challenged aliens to convey facial expressions. This one depicts a Unathi."
|
|
icon_state = "unathi_helmet"
|
|
item_state = "unathi_helmet"
|
|
sprite_sheets = list(
|
|
BODYTYPE_VAURCA_BULWARK = 'icons/mob/species/bulwark/head.dmi'
|
|
)
|
|
species_restricted = list(BODYTYPE_VAURCA, BODYTYPE_VAURCA_BULWARK)
|
|
|
|
/obj/item/clothing/head/shroud
|
|
name = "vaurcan shroud"
|
|
desc = "This relatively new design is meant to cover the head of a Vaurca, to both protect against sunlight, and to cover their mandibles. This one is blue."
|
|
icon = 'icons/obj/vaurca_items.dmi'
|
|
icon_state = "vacshroudblue"
|
|
item_state = "vacshroudblue"
|
|
body_parts_covered = HEAD|FACE|EYES
|
|
contained_sprite = TRUE
|
|
|
|
/obj/item/clothing/head/shroud/red
|
|
desc = "This relatively new design is meant to cover the head of a Vaurca, to both protect against sunlight, and to cover their mandibles. This one is red."
|
|
icon_state = "vacshroudred"
|
|
item_state = "vacshroudred"
|
|
|
|
/obj/item/clothing/head/shroud/green
|
|
desc = "This relatively new design is meant to cover the head of a Vaurca, to both protect against sunlight, and to cover their mandibles. This one is green."
|
|
icon_state = "vacshroudgreen"
|
|
item_state = "vacshroudgreen"
|
|
|
|
/obj/item/clothing/head/shroud/purple
|
|
desc = "This relatively new design is meant to cover the head of a Vaurca, to both protect against sunlight, and to cover their mandibles. This one is purple."
|
|
icon_state = "vacshroudpurple"
|
|
item_state = "vacshroudpurple"
|
|
|
|
/obj/item/clothing/head/shroud/brown
|
|
desc = "This relatively new design is meant to cover the head of a Vaurca, to both protect against sunlight, and to cover their mandibles. This one is brown."
|
|
icon_state = "vacshroudbrown"
|
|
item_state = "vacshroudbrown"
|
|
|
|
/obj/item/clothing/head/shroud/colorable
|
|
desc = "This relatively new design is meant to cover the head of a Vaurca, to both protect against sunlight, and to cover their mandibles."
|
|
icon_state = "vacshroudcol"
|
|
item_state = "vacshroudcol"
|
|
worn_overlay = "over"
|
|
build_from_parts = TRUE
|
|
|
|
/obj/item/melee/energy/vaurca
|
|
name = "thermal knife"
|
|
desc = "A Vaurcae-designed combat knife with a thermal energy blade designed for close-quarter encounters."
|
|
icon = 'icons/obj/vaurca_items.dmi'
|
|
icon_state = "eknife0"
|
|
item_state = "eknife0"
|
|
active_force = 25
|
|
active_throwforce = 20
|
|
active_w_class = WEIGHT_CLASS_HUGE
|
|
force = 11
|
|
throwforce = 5
|
|
throw_speed = 5
|
|
throw_range = 10
|
|
w_class = WEIGHT_CLASS_TINY
|
|
atom_flags = ATOM_FLAG_NO_BLOOD
|
|
obj_flags = OBJ_FLAG_CONDUCTABLE
|
|
attack_verb = list("stabbed", "chopped", "sliced", "cleaved", "slashed", "cut")
|
|
sharp = 1
|
|
edge = TRUE
|
|
contained_sprite = 1
|
|
|
|
|
|
/obj/item/melee/energy/vaurca/activate(mob/living/user)
|
|
..()
|
|
icon_state = "eknife1"
|
|
item_state = icon_state
|
|
damtype = "fire"
|
|
if(ishuman(user))
|
|
var/mob/living/carbon/human/H = user
|
|
H.update_inv_l_hand()
|
|
H.update_inv_r_hand()
|
|
to_chat(user, SPAN_NOTICE("\The [src] is now energised."))
|
|
|
|
/obj/item/melee/energy/vaurca/deactivate(mob/living/user)
|
|
..()
|
|
icon_state = "eknife0"
|
|
item_state = icon_state
|
|
damtype = "brute"
|
|
if(ishuman(user))
|
|
var/mob/living/carbon/human/H = user
|
|
H.update_inv_l_hand()
|
|
H.update_inv_r_hand()
|
|
to_chat(user, SPAN_NOTICE("\The [src] is de-energised."))
|
|
|
|
/obj/item/vaurca/box
|
|
name = "puzzle box"
|
|
desc = "A classic Zo'rane puzzle box, a common sight in Vaurcae colonies."
|
|
icon_state = "puzzlebox"
|
|
contained_sprite = 1
|
|
icon = 'icons/obj/vaurca_items.dmi'
|
|
|
|
/obj/item/vaurca/box/attack_self(mob/user as mob)
|
|
|
|
if(isvaurca(user))
|
|
to_chat(user, SPAN_NOTICE("You are familiar with the box's solution, and open it to reveal an ancient thing. How tedious."))
|
|
var/obj/item/archaeological_find/X = new /obj/item/archaeological_find
|
|
user.remove_from_mob(src)
|
|
user.put_in_hands(X)
|
|
qdel(src)
|
|
|
|
else if(isipc(user))
|
|
to_chat(user, SPAN_NOTICE("You analyze the box's markings, and begin to calculate with robotic efficiency every possible combination. (You must stand still to complete the puzzle box.)"))
|
|
if(do_after(user, 100))
|
|
to_chat(user, SPAN_NOTICE("Calculations complete. You begin to brute-force the box with a mechanical determination."))
|
|
if(do_after(user, 600))
|
|
to_chat(user, SPAN_NOTICE("After a minute of brute-force puzzle solving, the box finally opens to reveal an ancient thing."))
|
|
var/obj/item/archaeological_find/X = new /obj/item/archaeological_find
|
|
user.remove_from_mob(src)
|
|
user.put_in_hands(X)
|
|
qdel(src)
|
|
|
|
else
|
|
to_chat(user, SPAN_NOTICE("You stare at the box for a few seconds, trying to even comprehend what you're looking at... (You must stand still to complete the puzzle box.)"))
|
|
if(do_after(user, 60))
|
|
to_chat(user, "<span class = 'notice'>After a few more seconds, you hesitantly turn the first piece of the puzzle box.</span>")
|
|
if(do_after(user,30))
|
|
to_chat(user, "<span class = 'notice'>After nothing bad happens, you dive into the puzzle with a feeling of confidence!</span>")
|
|
if(do_after(user,200))
|
|
to_chat(user, "<span class = 'notice'>Twenty seconds pass, and suddenly you're feeling a lot less confident. You struggle on...</span>")
|
|
if(do_after(user,100))
|
|
to_chat(user, SPAN_NOTICE("You blink, and suddenly you've lost your place, your thoughts, your mind..."))
|
|
if(do_after(user,20))
|
|
to_chat(user, SPAN_NOTICE("You find yourself again, and get back to turning pieces. At this point it is just randomly."))
|
|
if(do_after(user,600))
|
|
to_chat(user, SPAN_NOTICE("A minute goes by, and with one final turn the box looks just like it did when you started. Fucking bugs."))
|
|
|
|
/obj/item/melee/vaurca/navcomp
|
|
name = "navcomp coordinate archive"
|
|
desc = "A rather heavy data disk for a Vaurcan hiveship navigation drive."
|
|
icon = 'icons/obj/vaurca_items.dmi'
|
|
icon_state = "harddisk"
|
|
force = 15
|
|
throwforce = 5
|
|
w_class = WEIGHT_CLASS_NORMAL
|
|
contained_sprite = 1
|
|
|
|
/obj/item/melee/vaurca/rock
|
|
name = "Sedantis rock"
|
|
desc = "A large chunk of alien earth from the distant Vaurcan world of Sedantis I. Just looking at it makes you feel funny."
|
|
icon_state = "glowing"
|
|
icon = 'icons/obj/vaurca_items.dmi'
|
|
force = 22
|
|
throwforce = 30
|
|
w_class = WEIGHT_CLASS_BULKY
|
|
contained_sprite = 1
|
|
|
|
/obj/item/grenade/spawnergrenade/vaurca
|
|
name = "K'ois delivery pod"
|
|
desc = "A sophisticated K'ois delivery pod, for seeding a planet from the comfort of space."
|
|
spawner_type = /obj/machinery/portable_atmospherics/hydroponics/soil/invisible
|
|
deliveryamt = 7
|
|
contained_sprite = 1
|
|
icon = 'icons/obj/vaurca_items.dmi'
|
|
icon_state = "beacon"
|
|
force = 22
|
|
throwforce = 30
|
|
w_class = WEIGHT_CLASS_BULKY
|
|
var/seed = /datum/seed/koisspore
|
|
|
|
/obj/item/grenade/spawnergrenade/vaurca/prime()
|
|
|
|
if(spawner_type && deliveryamt)
|
|
var/turf/T = get_turf(src)
|
|
playsound(T, 'sound/effects/phasein.ogg', 100, 1)
|
|
for(var/mob/living/carbon/human/M in viewers(T, null))
|
|
M.flash_act(ignore_inherent = TRUE)
|
|
|
|
for(var/i=1, i<=deliveryamt, i++)
|
|
var/obj/machinery/portable_atmospherics/hydroponics/soil/invisible/x = new spawner_type(T, new seed())
|
|
x.tumble(4)
|
|
qdel(src)
|
|
return
|
|
|
|
/obj/item/grenade/spawnergrenade/vaurca/liidra
|
|
name = "Black K'ois delivery pod"
|
|
desc = "A device made for rapid spread of black k'ois."
|
|
icon_state = "liibeacon"
|
|
seed = /datum/seed/koisspore/black
|
|
|
|
/obj/item/clothing/suit/space/void/vaurca
|
|
name = "voidsuit"
|
|
contained_sprite = 1
|
|
icon = 'icons/obj/vaurca_items.dmi'
|
|
icon_state = "void"
|
|
item_state = "void"
|
|
desc = "A lightweight Zo'rane designed Vaurcan softsuit, for extremely extended EVA operations."
|
|
slowdown = 0
|
|
|
|
species_restricted = list(BODYTYPE_VAURCA)
|
|
|
|
boots = /obj/item/clothing/shoes/magboots/vaurca
|
|
helmet = /obj/item/clothing/head/helmet/space/void/vaurca
|
|
|
|
/obj/item/clothing/head/helmet/space/void/vaurca
|
|
name = "void helmet"
|
|
desc = "An alien looking Zo'rane softsuit helmet."
|
|
contained_sprite = 1
|
|
icon = 'icons/obj/vaurca_items.dmi'
|
|
icon_state = "helm_void"
|
|
item_state = "helm_void"
|
|
|
|
species_restricted = list(BODYTYPE_VAURCA)
|
|
|
|
light_overlay = "helmet_light_dual_green"
|
|
light_color = "#3e7c3e"
|
|
|
|
/obj/item/clothing/shoes/magboots/vaurca
|
|
desc = "A pair of heavy mag-claws designed for a Vaurca."
|
|
name = "mag-claws"
|
|
item_state = "boots_void"
|
|
icon_state = "boots_void"
|
|
contained_sprite = 1
|
|
icon = 'icons/obj/vaurca_items.dmi'
|
|
|
|
species_restricted = list(BODYTYPE_VAURCA, BODYTYPE_VAURCA_WARFORM, BODYTYPE_VAURCA_BULWARK)
|
|
sprite_sheets = list(
|
|
BODYTYPE_VAURCA_BULWARK = 'icons/mob/species/bulwark/shoes.dmi'
|
|
)
|
|
|
|
action_button_name = "Toggle the magclaws"
|
|
|
|
/obj/item/clothing/suit/space/void/scout
|
|
name = "scout armor"
|
|
contained_sprite = 1
|
|
icon = 'icons/obj/vaurca_items.dmi'
|
|
icon_state = "scout"
|
|
item_state = "scout"
|
|
desc = "Armor designed for K'laxan scouts, made of lightweight sturdy material that does not restrict movement."
|
|
slowdown = -0.2
|
|
|
|
species_restricted = list(BODYTYPE_VAURCA)
|
|
armor = list(
|
|
MELEE = ARMOR_MELEE_RESISTANT,
|
|
BULLET = ARMOR_BALLISTIC_SMALL,
|
|
LASER = ARMOR_LASER_SMALL,
|
|
BOMB = ARMOR_BOMB_PADDED,
|
|
BIO = ARMOR_BIO_SHIELDED
|
|
)
|
|
/obj/item/clothing/head/helmet/space/void/scout
|
|
name = "scout helmet"
|
|
desc = "A helmet designed for K'laxan scouts, made of lightweight sturdy material that does not restrict movement."
|
|
contained_sprite = 1
|
|
icon = 'icons/obj/vaurca_items.dmi'
|
|
icon_state = "helm_scout"
|
|
item_state = "helm_scout"
|
|
|
|
species_restricted = list(BODYTYPE_VAURCA)
|
|
armor = list(
|
|
MELEE = ARMOR_MELEE_RESISTANT,
|
|
BULLET = ARMOR_BALLISTIC_SMALL,
|
|
LASER = ARMOR_LASER_SMALL,
|
|
BOMB = ARMOR_BOMB_PADDED,
|
|
BIO = ARMOR_BIO_SHIELDED
|
|
)
|
|
light_overlay = "helmet_light_dual_green"
|
|
light_color = "#3e7c3e"
|
|
|
|
/obj/item/clothing/suit/space/void/commando
|
|
name = "commando armor"
|
|
contained_sprite = 1
|
|
icon = 'icons/obj/vaurca_items.dmi'
|
|
icon_state = "commando"
|
|
item_state = "commando"
|
|
desc = "A design perfected by the Zo'ra, this armor is commonly used by frontline warriors of a Hive. Ablative design deflects lasers away from the body while providing moderate physical protection."
|
|
|
|
species_restricted = list(BODYTYPE_VAURCA)
|
|
armor = list(
|
|
MELEE = ARMOR_MELEE_RESISTANT,
|
|
BULLET = ARMOR_BALLISTIC_MEDIUM,
|
|
LASER = ARMOR_LASER_MAJOR,
|
|
BOMB = ARMOR_BOMB_PADDED,
|
|
BIO = ARMOR_BIO_SHIELDED,
|
|
RAD = ARMOR_RAD_MINOR
|
|
)
|
|
/obj/item/clothing/head/helmet/space/void/commando
|
|
name = "commando helmet"
|
|
desc = "A design perfected by the Zo'ra, this helmet is commonly used by frontline warriors of a Hive. Ablative design deflects lasers away from the body while providing moderate physical protection."
|
|
contained_sprite = 1
|
|
icon = 'icons/obj/vaurca_items.dmi'
|
|
icon_state = "helm_commando"
|
|
item_state = "helm_commando"
|
|
|
|
species_restricted = list(BODYTYPE_VAURCA)
|
|
armor = list(
|
|
MELEE = ARMOR_MELEE_RESISTANT,
|
|
BULLET = ARMOR_BALLISTIC_MEDIUM,
|
|
LASER = ARMOR_LASER_MAJOR,
|
|
BOMB = ARMOR_BOMB_PADDED,
|
|
BIO = ARMOR_BIO_SHIELDED,
|
|
RAD = ARMOR_RAD_MINOR
|
|
)
|
|
|
|
light_overlay = "helmet_light_dual_green"
|
|
light_color = "#3e7c3e"
|
|
|
|
/obj/item/clothing/mask/gas/vaurca/tactical
|
|
name = "tactical garment"
|
|
desc = "A tactical mandible garment with state of the art air filtration."
|
|
item_flags = ITEM_FLAG_BLOCK_GAS_SMOKE_EFFECT | ITEM_FLAG_AIRTIGHT | ITEM_FLAG_FLEXIBLE_MATERIAL | ITEM_FLAG_THICK_MATERIAL
|
|
flags_inv = HIDEEARS|HIDEEYES|HIDEFACE
|
|
body_parts_covered = FACE|EYES
|
|
gas_filter_strength = 3
|
|
w_class = WEIGHT_CLASS_SMALL
|
|
filtered_gases = list(GAS_NITROGEN, GAS_N2O)
|
|
armor = list(
|
|
MELEE = ARMOR_MELEE_RESISTANT,
|
|
BULLET = ARMOR_BALLISTIC_MINOR,
|
|
LASER = ARMOR_LASER_SMALL,
|
|
BIO = ARMOR_BIO_STRONG,
|
|
RAD = ARMOR_RAD_MINOR
|
|
)
|
|
icon = 'icons/obj/vaurca_items.dmi'
|
|
icon_state = "m_metalg"
|
|
item_state = "m_metalg"
|
|
contained_sprite = 1
|
|
|
|
/obj/item/melee/energy/vaurca_zweihander
|
|
name = "thermal greatblade"
|
|
desc = "An infamous execution blade of the Zo'ra, due to its size, only the largest Za were able to carry it in active combat."
|
|
icon = 'icons/obj/vaurca_items.dmi'
|
|
icon_state = "greatblade0"
|
|
item_state = "greatblade0"
|
|
active_force = 33
|
|
armor_penetration = 30
|
|
active_throwforce = 20
|
|
active_w_class = WEIGHT_CLASS_HUGE
|
|
force = 15
|
|
throwforce = 10
|
|
throw_speed = 5
|
|
throw_range = 10
|
|
w_class = WEIGHT_CLASS_BULKY
|
|
atom_flags = ATOM_FLAG_NO_BLOOD
|
|
obj_flags = OBJ_FLAG_CONDUCTABLE
|
|
attack_verb = list("stabbed", "chopped", "sliced", "cleaved", "slashed", "cut")
|
|
sharp = 1
|
|
edge = TRUE
|
|
contained_sprite = 1
|
|
base_reflectchance = 40
|
|
base_block_chance = 60
|
|
shield_power = 150
|
|
|
|
/obj/item/melee/energy/vaurca_zweihander/attack(mob/living/target_mob, mob/living/user, target_zone)
|
|
user.setClickCooldown(16)
|
|
..()
|
|
|
|
/obj/item/melee/energy/vaurca_zweihander/pre_attack(var/mob/living/target, var/mob/living/user)
|
|
if(istype(target))
|
|
cleave(user, target)
|
|
..()
|
|
|
|
/obj/item/melee/energy/vaurca_zweihander/activate(mob/living/user)
|
|
..()
|
|
icon_state = "greatblade1"
|
|
item_state = icon_state
|
|
damtype = "fire"
|
|
if(ishuman(user))
|
|
var/mob/living/carbon/human/H = user
|
|
H.update_inv_l_hand()
|
|
H.update_inv_r_hand()
|
|
to_chat(user, SPAN_NOTICE("\The [src] is now energised."))
|
|
|
|
/obj/item/melee/energy/vaurca_zweihander/deactivate(mob/living/user)
|
|
..()
|
|
icon_state = "greatblade0"
|
|
item_state = icon_state
|
|
damtype = "brute"
|
|
if(ishuman(user))
|
|
var/mob/living/carbon/human/H = user
|
|
H.update_inv_l_hand()
|
|
H.update_inv_r_hand()
|
|
to_chat(user, SPAN_NOTICE("\The [src] is de-energised."))
|
|
|
|
/obj/item/gun/launcher/crossbow/vaurca
|
|
name = "gauss rifle"
|
|
desc = "An unwieldy, heavy weapon that propels metal projectiles with magnetic coils that run its length."
|
|
contained_sprite = 1
|
|
icon = 'icons/obj/vaurca_items.dmi'
|
|
icon_state = "gaussrifle"
|
|
item_state = "gaussrifle"
|
|
fire_sound = SFX_SHOOT_GAUSS
|
|
fire_sound_text = "a subdued boom"
|
|
fire_delay = 12
|
|
slot_flags = SLOT_BACK
|
|
needspin = TRUE
|
|
recoil = 6
|
|
|
|
is_wieldable = TRUE
|
|
|
|
release_speed = 5
|
|
var/list/belt = new/list()
|
|
var/belt_size = 12 //holds this + one in the chamber
|
|
recoil_wielded = 2
|
|
accuracy_wielded = -1
|
|
fire_delay_wielded = 1
|
|
|
|
/obj/item/gun/launcher/crossbow/vaurca/consume_next_projectile(mob/user=null)
|
|
return bolt
|
|
|
|
/obj/item/gun/launcher/crossbow/vaurca/handle_post_fire(mob/user, atom/target)
|
|
bolt = null
|
|
tension = 1
|
|
..()
|
|
|
|
/obj/item/gun/launcher/crossbow/vaurca/unique_action(mob/living/user)
|
|
pump(user)
|
|
|
|
/obj/item/gun/launcher/crossbow/vaurca/proc/pump(mob/M as mob)
|
|
playsound(M, 'sound/weapons/reloads/shotgun_pump.ogg', 60, 1)
|
|
|
|
if(bolt)
|
|
if(tension < max_tension)
|
|
if(do_after(M, 5 * tension))
|
|
to_chat(M, SPAN_WARNING("You pump [src], charging the magnetic coils."))
|
|
tension++
|
|
else
|
|
to_chat(M, SPAN_NOTICE("\The [src]'s magnetic coils are at maximum charge."))
|
|
return
|
|
var/obj/item/next
|
|
if(belt.len)
|
|
next = belt[1]
|
|
if(do_after(M, 10))
|
|
if(next)
|
|
belt -= next //Remove grenade from loaded list.
|
|
bolt = next
|
|
to_chat(M, SPAN_WARNING("You pump [src], loading \a [next] into the chamber."))
|
|
else
|
|
to_chat(M, SPAN_WARNING("You pump [src], but the magazine is empty."))
|
|
|
|
/obj/item/gun/launcher/crossbow/vaurca/proc/load(obj/item/W, mob/user)
|
|
if(belt.len >= belt_size)
|
|
to_chat(user, SPAN_WARNING("[src] is full."))
|
|
return
|
|
user.remove_from_mob(W)
|
|
W.forceMove(src)
|
|
belt.Insert(1, W) //add to the head of the list, so that it is loaded on the next pump
|
|
user.visible_message("[user] inserts \a [W] into [src].", SPAN_NOTICE("You insert \a [W] into [src]."))
|
|
|
|
/obj/item/gun/launcher/crossbow/vaurca/proc/unload(mob/user)
|
|
if(belt.len)
|
|
var/obj/item/arrow/rod/R = belt[belt.len]
|
|
belt.len--
|
|
user.put_in_hands(R)
|
|
user.visible_message("[user] removes \a [R] from [src].", SPAN_NOTICE("You remove \a [R] from [src]."))
|
|
else
|
|
to_chat(user, SPAN_WARNING("[src] is empty."))
|
|
|
|
/obj/item/gun/launcher/crossbow/vaurca/attackby(obj/item/attacking_item, mob/user)
|
|
if(istype(attacking_item, /obj/item/arrow))
|
|
load(attacking_item, user)
|
|
if(istype(attacking_item, /obj/item/stack/rods))
|
|
var/obj/item/stack/rods/R = attacking_item
|
|
if (R.use(1))
|
|
var/obj/item/arrow/rod/ROD = new /obj/item/arrow/rod(src)
|
|
load(ROD, user)
|
|
else
|
|
..()
|
|
|
|
/obj/item/gun/launcher/crossbow/vaurca/attack_hand(mob/user)
|
|
if(user.get_inactive_hand() == src)
|
|
unload(user)
|
|
else
|
|
..()
|
|
|
|
/obj/item/gun/launcher/crossbow/vaurca/superheat_rod(mob/user)
|
|
if(!user || !bolt) return
|
|
if(bolt.throwforce >= 25) return
|
|
if(!istype(bolt,/obj/item/arrow/rod)) return
|
|
|
|
bolt.throwforce = 25
|
|
bolt.icon_state = "metal-rod-superheated"
|
|
|
|
/obj/item/gun/launcher/crossbow/vaurca/update_icon()
|
|
return
|