diff --git a/code/game/objects/items/weaponry.dm b/code/game/objects/items/weaponry.dm
index 13acf7e990..17bbb0a12f 100644
--- a/code/game/objects/items/weaponry.dm
+++ b/code/game/objects/items/weaponry.dm
@@ -1,592 +1,592 @@
-/obj/item/banhammer
- desc = "A banhammer"
- name = "banhammer"
- icon = 'icons/obj/items_and_weapons.dmi'
- icon_state = "toyhammer"
- slot_flags = SLOT_BELT
- throwforce = 0
- w_class = WEIGHT_CLASS_TINY
- throw_speed = 3
- throw_range = 7
- attack_verb = list("banned")
- max_integrity = 200
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 70)
- resistance_flags = FIRE_PROOF
-
-/obj/item/banhammer/suicide_act(mob/user)
- user.visible_message("[user] is hitting [user.p_them()]self with [src]! It looks like [user.p_theyre()] trying to ban [user.p_them()]self from life.")
- return (BRUTELOSS|FIRELOSS|TOXLOSS|OXYLOSS)
-
-/obj/item/banhammer/attack(mob/M, mob/user)
+/obj/item/banhammer
+ desc = "A banhammer"
+ name = "banhammer"
+ icon = 'icons/obj/items_and_weapons.dmi'
+ icon_state = "toyhammer"
+ slot_flags = SLOT_BELT
+ throwforce = 0
+ w_class = WEIGHT_CLASS_TINY
+ throw_speed = 3
+ throw_range = 7
+ attack_verb = list("banned")
+ max_integrity = 200
+ armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 70)
+ resistance_flags = FIRE_PROOF
+
+/obj/item/banhammer/suicide_act(mob/user)
+ user.visible_message("[user] is hitting [user.p_them()]self with [src]! It looks like [user.p_theyre()] trying to ban [user.p_them()]self from life.")
+ return (BRUTELOSS|FIRELOSS|TOXLOSS|OXYLOSS)
+
+/obj/item/banhammer/attack(mob/M, mob/user)
if(user.zone_selected == "head")
M.visible_message("[user] are stroking the head of [M] with a bangammer", "[user] are stroking the head with a bangammer", "you hear a bangammer stroking a head");
else
M.visible_message("[M] has been banned FOR NO REISIN by [user]", "You have been banned FOR NO REISIN by [user]", "you hear a banhammer banning someone")
- playsound(loc, 'sound/effects/adminhelp.ogg', 15) //keep it at 15% volume so people don't jump out of their skin too much
-
-/obj/item/sord
- name = "\improper SORD"
- desc = "This thing is so unspeakably shitty you are having a hard time even holding it."
- icon_state = "sord"
- item_state = "sord"
- lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
- slot_flags = SLOT_BELT
- force = 2
- throwforce = 1
- w_class = WEIGHT_CLASS_NORMAL
- hitsound = 'sound/weapons/bladeslice.ogg'
- attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
-
-/obj/item/sord/suicide_act(mob/user)
- user.visible_message("[user] is trying to impale [user.p_them()]self with [src]! It might be a suicide attempt if it weren't so shitty.", \
- "You try to impale yourself with [src], but it's USELESS...")
- return SHAME
-
-/obj/item/claymore
- name = "claymore"
- desc = "What are you standing around staring at this for? Get to killing!"
- icon_state = "claymore"
- item_state = "claymore"
- lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
- hitsound = 'sound/weapons/bladeslice.ogg'
- flags_1 = CONDUCT_1
- slot_flags = SLOT_BELT | SLOT_BACK
- force = 40
- throwforce = 10
- w_class = WEIGHT_CLASS_NORMAL
- attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
- block_chance = 50
- sharpness = IS_SHARP
- max_integrity = 200
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 50)
- resistance_flags = FIRE_PROOF
-
-/obj/item/claymore/suicide_act(mob/user)
- user.visible_message("[user] is falling on [src]! It looks like [user.p_theyre()] trying to commit suicide!")
- return(BRUTELOSS)
-
-/obj/item/claymore/highlander //ALL COMMENTS MADE REGARDING THIS SWORD MUST BE MADE IN ALL CAPS
- desc = "THERE CAN BE ONLY ONE, AND IT WILL BE YOU!!!\nActivate it in your hand to point to the nearest victim."
- flags_1 = CONDUCT_1 | NODROP_1 | DROPDEL_1
- slot_flags = null
- block_chance = 0 //RNG WON'T HELP YOU NOW, PANSY
- luminosity = 3
- attack_verb = list("brutalized", "eviscerated", "disemboweled", "hacked", "carved", "cleaved") //ONLY THE MOST VISCERAL ATTACK VERBS
- var/notches = 0 //HOW MANY PEOPLE HAVE BEEN SLAIN WITH THIS BLADE
- var/obj/item/disk/nuclear/nuke_disk //OUR STORED NUKE DISK
-
-/obj/item/claymore/highlander/Initialize()
- . = ..()
- START_PROCESSING(SSobj, src)
-
-/obj/item/claymore/highlander/Destroy()
- if(nuke_disk)
- nuke_disk.forceMove(get_turf(src))
- nuke_disk.visible_message("The nuke disk is vulnerable!")
- nuke_disk = null
- STOP_PROCESSING(SSobj, src)
- return ..()
-
-/obj/item/claymore/highlander/process()
- if(ishuman(loc))
- var/mob/living/carbon/human/H = loc
- loc.layer = LARGE_MOB_LAYER //NO HIDING BEHIND PLANTS FOR YOU, DICKWEED (HA GET IT, BECAUSE WEEDS ARE PLANTS)
- H.bleedsuppress = TRUE //AND WE WON'T BLEED OUT LIKE COWARDS
- else
- if(!admin_spawned)
- qdel(src)
-
-
-/obj/item/claymore/highlander/pickup(mob/living/user)
- to_chat(user, "The power of Scotland protects you! You are shielded from all stuns and knockdowns.")
- user.add_stun_absorption("highlander", INFINITY, 1, " is protected by the power of Scotland!", "The power of Scotland absorbs the stun!", " is protected by the power of Scotland!")
- user.status_flags += IGNORESLOWDOWN
-
-/obj/item/claymore/highlander/dropped(mob/living/user)
- user.status_flags -= IGNORESLOWDOWN
- qdel(src) //If this ever happens, it's because you lost an arm
-
-/obj/item/claymore/highlander/examine(mob/user)
- ..()
- to_chat(user, "It has [!notches ? "nothing" : "[notches] notches"] scratched into the blade.")
- if(nuke_disk)
- to_chat(user, "It's holding the nuke disk!")
-
-/obj/item/claymore/highlander/attack(mob/living/target, mob/living/user)
- . = ..()
- if(target && target.stat == DEAD && target.mind && target.mind.special_role == "highlander")
- user.fully_heal() //STEAL THE LIFE OF OUR FALLEN FOES
- add_notch(user)
- target.visible_message("[target] crumbles to dust beneath [user]'s blows!", "As you fall, your body crumbles to dust!")
- target.dust()
-
-/obj/item/claymore/highlander/attack_self(mob/living/user)
- var/closest_victim
- var/closest_distance = 255
- for(var/mob/living/carbon/human/H in GLOB.player_list - user)
- if(H.client && H.mind.special_role == "highlander" && (!closest_victim || get_dist(user, closest_victim) < closest_distance))
- closest_victim = H
- if(!closest_victim)
- to_chat(user, "[src] thrums for a moment and falls dark. Perhaps there's nobody nearby.")
- return
- to_chat(user, "[src] thrums and points to the [dir2text(get_dir(user, closest_victim))].")
-
-/obj/item/claymore/highlander/IsReflect()
- return 1 //YOU THINK YOUR PUNY LASERS CAN STOP ME?
-
-/obj/item/claymore/highlander/proc/add_notch(mob/living/user) //DYNAMIC CLAYMORE PROGRESSION SYSTEM - THIS IS THE FUTURE
- notches++
- force++
- var/new_name = name
- switch(notches)
- if(1)
- to_chat(user, "Your first kill - hopefully one of many. You scratch a notch into [src]'s blade.")
- to_chat(user, "You feel your fallen foe's soul entering your blade, restoring your wounds!")
- new_name = "notched claymore"
- if(2)
- to_chat(user, "Another falls before you. Another soul fuses with your own. Another notch in the blade.")
- new_name = "double-notched claymore"
- add_atom_colour(rgb(255, 235, 235), ADMIN_COLOUR_PRIORITY)
- if(3)
- to_chat(user, "You're beginning to relish the thrill of battle.")
- new_name = "triple-notched claymore"
- add_atom_colour(rgb(255, 215, 215), ADMIN_COLOUR_PRIORITY)
- if(4)
- to_chat(user, "You've lost count of how many you've killed.")
- new_name = "many-notched claymore"
- add_atom_colour(rgb(255, 195, 195), ADMIN_COLOUR_PRIORITY)
- if(5)
- to_chat(user, "Five voices now echo in your mind, cheering the slaughter.")
- new_name = "battle-tested claymore"
- add_atom_colour(rgb(255, 175, 175), ADMIN_COLOUR_PRIORITY)
- if(6)
- to_chat(user, "Is this what the vikings felt like? Visions of glory fill your head as you slay your sixth foe.")
- new_name = "battle-scarred claymore"
- add_atom_colour(rgb(255, 155, 155), ADMIN_COLOUR_PRIORITY)
- if(7)
- to_chat(user, "Kill. Butcher. Conquer.")
- new_name = "vicious claymore"
- add_atom_colour(rgb(255, 135, 135), ADMIN_COLOUR_PRIORITY)
- if(8)
- to_chat(user, "IT NEVER GETS OLD. THE SCREAMING. THE BLOOD AS IT SPRAYS ACROSS YOUR FACE.")
- new_name = "bloodthirsty claymore"
- add_atom_colour(rgb(255, 115, 115), ADMIN_COLOUR_PRIORITY)
- if(9)
- to_chat(user, "ANOTHER ONE FALLS TO YOUR BLOWS. ANOTHER WEAKLING UNFIT TO LIVE.")
- new_name = "gore-stained claymore"
- add_atom_colour(rgb(255, 95, 95), ADMIN_COLOUR_PRIORITY)
- if(10)
- user.visible_message("[user]'s eyes light up with a vengeful fire!", \
- "YOU FEEL THE POWER OF VALHALLA FLOWING THROUGH YOU! THERE CAN BE ONLY ONE!!!")
- user.update_icons()
- new_name = "GORE-DRENCHED CLAYMORE OF [pick("THE WHIMSICAL SLAUGHTER", "A THOUSAND SLAUGHTERED CATTLE", "GLORY AND VALHALLA", "ANNIHILATION", "OBLITERATION")]"
- icon_state = "claymore_valhalla"
- item_state = "cultblade"
- remove_atom_colour(ADMIN_COLOUR_PRIORITY)
-
- name = new_name
- playsound(user, 'sound/items/screwdriver2.ogg', 50, 1)
-
-/obj/item/katana
- name = "katana"
- desc = "Woefully underpowered in D20"
- icon_state = "katana"
- item_state = "katana"
- lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
- flags_1 = CONDUCT_1
- slot_flags = SLOT_BELT | SLOT_BACK
- force = 40
- throwforce = 10
- w_class = WEIGHT_CLASS_NORMAL
- hitsound = 'sound/weapons/bladeslice.ogg'
- attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
- block_chance = 50
- sharpness = IS_SHARP
- max_integrity = 200
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 50)
- resistance_flags = FIRE_PROOF
-
-/obj/item/katana/cursed
- slot_flags = null
-
-/obj/item/katana/suicide_act(mob/user)
- user.visible_message("[user] is slitting [user.p_their()] stomach open with [src]! It looks like [user.p_theyre()] trying to commit seppuku!")
- return(BRUTELOSS)
-
-/obj/item/wirerod
- name = "wired rod"
- desc = "A rod with some wire wrapped around the top. It'd be easy to attach something to the top bit."
- icon_state = "wiredrod"
- item_state = "rods"
- flags_1 = CONDUCT_1
- force = 9
- throwforce = 10
- w_class = WEIGHT_CLASS_NORMAL
- materials = list(MAT_METAL=1150, MAT_GLASS=75)
- attack_verb = list("hit", "bludgeoned", "whacked", "bonked")
-
-/obj/item/wirerod/attackby(obj/item/I, mob/user, params)
- if(istype(I, /obj/item/shard))
- var/obj/item/twohanded/spear/S = new /obj/item/twohanded/spear
-
- remove_item_from_storage(user)
- qdel(I)
- qdel(src)
-
- user.put_in_hands(S)
- to_chat(user, "You fasten the glass shard to the top of the rod with the cable.")
-
- else if(istype(I, /obj/item/device/assembly/igniter) && !(I.flags_1 & NODROP_1))
- var/obj/item/melee/baton/cattleprod/P = new /obj/item/melee/baton/cattleprod
-
- remove_item_from_storage(user)
-
- to_chat(user, "You fasten [I] to the top of the rod with the cable.")
-
- qdel(I)
- qdel(src)
-
- user.put_in_hands(P)
- else
- return ..()
-
-
-/obj/item/throwing_star
- name = "throwing star"
- desc = "An ancient weapon still used to this day due to it's ease of lodging itself into victim's body parts"
- icon_state = "throwingstar"
- item_state = "eshield0"
- lefthand_file = 'icons/mob/inhands/equipment/shields_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/equipment/shields_righthand.dmi'
- force = 2
- throwforce = 20 //This is never used on mobs since this has a 100% embed chance.
- throw_speed = 4
- embedded_pain_multiplier = 4
- w_class = WEIGHT_CLASS_SMALL
- embed_chance = 100
- embedded_fall_chance = 0 //Hahaha!
- sharpness = IS_SHARP
- materials = list(MAT_METAL=500, MAT_GLASS=500)
- resistance_flags = FIRE_PROOF
-
-
-/obj/item/switchblade
- name = "switchblade"
- icon_state = "switchblade"
- lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
- desc = "A sharp, concealable, spring-loaded knife."
- flags_1 = CONDUCT_1
- force = 3
- w_class = WEIGHT_CLASS_SMALL
- throwforce = 5
- throw_speed = 3
- throw_range = 6
- materials = list(MAT_METAL=12000)
- origin_tech = "engineering=3;combat=2"
- hitsound = 'sound/weapons/genhit.ogg'
- attack_verb = list("stubbed", "poked")
- resistance_flags = FIRE_PROOF
- var/extended = 0
-
-/obj/item/switchblade/attack_self(mob/user)
- extended = !extended
- playsound(src.loc, 'sound/weapons/batonextend.ogg', 50, 1)
- if(extended)
- force = 20
- w_class = WEIGHT_CLASS_NORMAL
- throwforce = 23
- icon_state = "switchblade_ext"
- attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
- hitsound = 'sound/weapons/bladeslice.ogg'
- sharpness = IS_SHARP
- else
- force = 3
- w_class = WEIGHT_CLASS_SMALL
- throwforce = 5
- icon_state = "switchblade"
- attack_verb = list("stubbed", "poked")
- hitsound = 'sound/weapons/genhit.ogg'
- sharpness = IS_BLUNT
-
-/obj/item/switchblade/suicide_act(mob/user)
- user.visible_message("[user] is slitting [user.p_their()] own throat with [src]! It looks like [user.p_theyre()] trying to commit suicide!")
- return (BRUTELOSS)
-
-/obj/item/phone
- name = "red phone"
- desc = "Should anything ever go wrong..."
- icon = 'icons/obj/items_and_weapons.dmi'
- icon_state = "red_phone"
- force = 3
- throwforce = 2
- throw_speed = 3
- throw_range = 4
- w_class = WEIGHT_CLASS_SMALL
- attack_verb = list("called", "rang")
- hitsound = 'sound/weapons/ring.ogg'
-
-/obj/item/phone/suicide_act(mob/user)
- if(locate(/obj/structure/chair/stool) in user.loc)
- user.visible_message("[user] begins to tie a noose with [src]'s cord! It looks like [user.p_theyre()] trying to commit suicide!")
- else
- user.visible_message("[user] is strangling [user.p_them()]self with [src]'s cord! It looks like [user.p_theyre()] trying to commit suicide!")
- return(OXYLOSS)
-
-/obj/item/cane
- name = "cane"
- desc = "A cane used by a true gentleman. Or a clown."
- icon = 'icons/obj/items_and_weapons.dmi'
- icon_state = "cane"
- item_state = "stick"
- lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi'
- force = 5
- throwforce = 5
- w_class = WEIGHT_CLASS_SMALL
- materials = list(MAT_METAL=50)
- attack_verb = list("bludgeoned", "whacked", "disciplined", "thrashed")
-
-/obj/item/staff
- name = "wizard staff"
- desc = "Apparently a staff used by the wizard."
- icon = 'icons/obj/wizard.dmi'
- icon_state = "staff"
- lefthand_file = 'icons/mob/inhands/weapons/staves_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/weapons/staves_righthand.dmi'
- force = 3
- throwforce = 5
- throw_speed = 2
- throw_range = 5
- w_class = WEIGHT_CLASS_SMALL
- armour_penetration = 100
- attack_verb = list("bludgeoned", "whacked", "disciplined")
- resistance_flags = FLAMMABLE
-
-/obj/item/staff/broom
- name = "broom"
- desc = "Used for sweeping, and flying into the night while cackling. Black cat not included."
- icon = 'icons/obj/wizard.dmi'
- icon_state = "broom"
- resistance_flags = FLAMMABLE
-
-/obj/item/staff/stick
- name = "stick"
- desc = "A great tool to drag someone else's drinks across the bar."
- icon = 'icons/obj/items_and_weapons.dmi'
- icon_state = "stick"
- item_state = "stick"
- lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi'
- force = 3
- throwforce = 5
- throw_speed = 2
- throw_range = 5
- w_class = WEIGHT_CLASS_SMALL
-
-/obj/item/ectoplasm
- name = "ectoplasm"
- desc = "spooky"
- gender = PLURAL
- icon = 'icons/obj/wizard.dmi'
- icon_state = "ectoplasm"
-
-/obj/item/ectoplasm/suicide_act(mob/user)
- user.visible_message("[user] is inhaling [src]! It looks like [user.p_theyre()] trying to visit the astral plane.")
- return (OXYLOSS)
-
-/obj/item/mounted_chainsaw
- name = "mounted chainsaw"
- desc = "A chainsaw that has replaced your arm."
- icon_state = "chainsaw_on"
- item_state = "mounted_chainsaw"
- lefthand_file = 'icons/mob/inhands/weapons/chainsaw_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/weapons/chainsaw_righthand.dmi'
- flags_1 = NODROP_1 | ABSTRACT_1 | DROPDEL_1
- w_class = WEIGHT_CLASS_HUGE
- force = 21
- throwforce = 0
- throw_range = 0
- throw_speed = 0
- sharpness = IS_SHARP
- attack_verb = list("sawed", "torn", "cut", "chopped", "diced")
- hitsound = 'sound/weapons/chainsawhit.ogg'
-
-/obj/item/mounted_chainsaw/Destroy()
- var/obj/item/bodypart/part
- new /obj/item/twohanded/required/chainsaw(get_turf(src))
- if(iscarbon(loc))
- var/mob/living/carbon/holder = loc
- var/index = holder.get_held_index_of_item(src)
- if(index)
- part = holder.hand_bodyparts[index]
- . = ..()
- if(part)
- part.drop_limb()
-
-/obj/item/statuebust
- name = "bust"
- desc = "A priceless ancient marble bust, the kind that belongs in a museum." //or you can hit people with it
- icon = 'icons/obj/statue.dmi'
- icon_state = "bust"
- force = 15
- throwforce = 10
- throw_speed = 5
- throw_range = 2
- attack_verb = list("busted")
-
-/obj/item/tailclub
- name = "tail club"
- desc = "For the beating to death of lizards with their own tails."
- icon_state = "tailclub"
- force = 14
- throwforce = 1 // why are you throwing a club do you even weapon
- throw_speed = 1
- throw_range = 1
- attack_verb = list("clubbed", "bludgeoned")
-
-/obj/item/melee/chainofcommand/tailwhip
- name = "liz o' nine tails"
- desc = "A whip fashioned from the severed tails of lizards."
- icon_state = "tailwhip"
- origin_tech = "engineering=3;combat=3;biotech=3"
- needs_permit = 0
-
-/obj/item/melee/chainofcommand/tailwhip/kitty
- name = "cat o' nine tails"
- desc = "A whip fashioned from the severed tails of cats."
- icon_state = "catwhip"
-
-/obj/item/melee/skateboard
- name = "skateboard"
- desc = "A skateboard. It can be placed on its wheels and ridden, or used as a strong weapon."
- icon_state = "skateboard"
- item_state = "skateboard"
- force = 12
- throwforce = 4
- w_class = WEIGHT_CLASS_HUGE
- attack_verb = list("smacked", "whacked", "slammed", "smashed")
-
-/obj/item/melee/skateboard/attack_self(mob/user)
- new /obj/vehicle/scooter/skateboard(get_turf(user))
- qdel(src)
-
-/obj/item/melee/baseball_bat
- name = "baseball bat"
- desc = "There ain't a skull in the league that can withstand a swatter."
- icon = 'icons/obj/items_and_weapons.dmi'
- icon_state = "baseball_bat"
- item_state = "baseball_bat"
- lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi'
- force = 10
- throwforce = 12
- attack_verb = list("beat", "smacked")
- w_class = WEIGHT_CLASS_HUGE
- var/homerun_ready = 0
- var/homerun_able = 0
-
-/obj/item/melee/baseball_bat/homerun
- name = "home run bat"
- desc = "This thing looks dangerous... Dangerously good at baseball, that is."
- homerun_able = 1
-
-/obj/item/melee/baseball_bat/attack_self(mob/user)
- if(!homerun_able)
- ..()
- return
- if(homerun_ready)
- to_chat(user, "You're already ready to do a home run!")
- ..()
- return
- to_chat(user, "You begin gathering strength...")
- playsound(get_turf(src), 'sound/magic/lightning_chargeup.ogg', 65, 1)
- if(do_after(user, 90, target = src))
- to_chat(user, "You gather power! Time for a home run!")
- homerun_ready = 1
- ..()
-
-/obj/item/melee/baseball_bat/attack(mob/living/target, mob/living/user)
- . = ..()
- var/atom/throw_target = get_edge_target_turf(target, user.dir)
- if(homerun_ready)
- user.visible_message("It's a home run!")
- target.throw_at(throw_target, rand(8,10), 14, user)
- target.ex_act(EXPLODE_HEAVY)
- playsound(get_turf(src), 'sound/weapons/homerun.ogg', 100, 1)
- homerun_ready = 0
- return
- else if(!target.anchored)
- target.throw_at(throw_target, rand(1,2), 7, user)
-
-/obj/item/melee/baseball_bat/ablative
- name = "metal baseball bat"
- desc = "This bat is made of highly reflective, highly armored material."
- icon_state = "baseball_bat_metal"
- item_state = "baseball_bat_metal"
- force = 12
- throwforce = 15
-
-/obj/item/melee/baseball_bat/ablative/IsReflect()//some day this will reflect thrown items instead of lasers
- var/picksound = rand(1,2)
- var/turf = get_turf(src)
- if(picksound == 1)
- playsound(turf, 'sound/weapons/effects/batreflect1.ogg', 50, 1)
- if(picksound == 2)
- playsound(turf, 'sound/weapons/effects/batreflect2.ogg', 50, 1)
- return 1
-
-/obj/item/melee/flyswatter
- name = "flyswatter"
- desc = "Useful for killing insects of all sizes."
- icon = 'icons/obj/items_and_weapons.dmi'
- icon_state = "flyswatter"
- item_state = "flyswatter"
- lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi'
- force = 1
- throwforce = 1
- attack_verb = list("swatted", "smacked")
- hitsound = 'sound/effects/snap.ogg'
- w_class = WEIGHT_CLASS_SMALL
- //Things in this list will be instantly splatted. Flyman weakness is handled in the flyman species weakness proc.
- var/list/strong_against
-
-/obj/item/melee/flyswatter/Initialize()
- . = ..()
- strong_against = typecacheof(list(
- /mob/living/simple_animal/hostile/poison/bees/,
- /mob/living/simple_animal/butterfly,
- /mob/living/simple_animal/cockroach,
- /obj/item/queen_bee
- ))
-
-
-/obj/item/melee/flyswatter/afterattack(atom/target, mob/user, proximity_flag)
- if(proximity_flag)
- if(is_type_in_typecache(target, strong_against))
- new /obj/effect/decal/cleanable/deadcockroach(get_turf(target))
- to_chat(user, "You easily splat the [target].")
- if(istype(target, /mob/living/))
- var/mob/living/bug = target
- bug.death(1)
- else
- qdel(target)
-
-/obj/item/circlegame
- name = "circled hand"
- desc = "If somebody looks at this while it's below your waist, you get to bop them."
- icon_state = "madeyoulook"
- force = 0
- throwforce = 0
- flags_1 = DROPDEL_1 | ABSTRACT_1
- attack_verb = list("bopped")
-
-/obj/item/proc/can_trigger_gun(mob/living/user)
- if(!user.can_use_guns(src))
- return FALSE
+ playsound(loc, 'sound/effects/adminhelp.ogg', 15) //keep it at 15% volume so people don't jump out of their skin too much
+
+/obj/item/sord
+ name = "\improper SORD"
+ desc = "This thing is so unspeakably shitty you are having a hard time even holding it."
+ icon_state = "sord"
+ item_state = "sord"
+ lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
+ slot_flags = SLOT_BELT
+ force = 2
+ throwforce = 1
+ w_class = WEIGHT_CLASS_NORMAL
+ hitsound = 'sound/weapons/bladeslice.ogg'
+ attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
+
+/obj/item/sord/suicide_act(mob/user)
+ user.visible_message("[user] is trying to impale [user.p_them()]self with [src]! It might be a suicide attempt if it weren't so shitty.", \
+ "You try to impale yourself with [src], but it's USELESS...")
+ return SHAME
+
+/obj/item/claymore
+ name = "claymore"
+ desc = "What are you standing around staring at this for? Get to killing!"
+ icon_state = "claymore"
+ item_state = "claymore"
+ lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
+ hitsound = 'sound/weapons/bladeslice.ogg'
+ flags_1 = CONDUCT_1
+ slot_flags = SLOT_BELT | SLOT_BACK
+ force = 40
+ throwforce = 10
+ w_class = WEIGHT_CLASS_NORMAL
+ attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
+ block_chance = 50
+ sharpness = IS_SHARP
+ max_integrity = 200
+ armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 50)
+ resistance_flags = FIRE_PROOF
+
+/obj/item/claymore/suicide_act(mob/user)
+ user.visible_message("[user] is falling on [src]! It looks like [user.p_theyre()] trying to commit suicide!")
+ return(BRUTELOSS)
+
+/obj/item/claymore/highlander //ALL COMMENTS MADE REGARDING THIS SWORD MUST BE MADE IN ALL CAPS
+ desc = "THERE CAN BE ONLY ONE, AND IT WILL BE YOU!!!\nActivate it in your hand to point to the nearest victim."
+ flags_1 = CONDUCT_1 | NODROP_1 | DROPDEL_1
+ slot_flags = null
+ block_chance = 0 //RNG WON'T HELP YOU NOW, PANSY
+ luminosity = 3
+ attack_verb = list("brutalized", "eviscerated", "disemboweled", "hacked", "carved", "cleaved") //ONLY THE MOST VISCERAL ATTACK VERBS
+ var/notches = 0 //HOW MANY PEOPLE HAVE BEEN SLAIN WITH THIS BLADE
+ var/obj/item/disk/nuclear/nuke_disk //OUR STORED NUKE DISK
+
+/obj/item/claymore/highlander/Initialize()
+ . = ..()
+ START_PROCESSING(SSobj, src)
+
+/obj/item/claymore/highlander/Destroy()
+ if(nuke_disk)
+ nuke_disk.forceMove(get_turf(src))
+ nuke_disk.visible_message("The nuke disk is vulnerable!")
+ nuke_disk = null
+ STOP_PROCESSING(SSobj, src)
+ return ..()
+
+/obj/item/claymore/highlander/process()
+ if(ishuman(loc))
+ var/mob/living/carbon/human/H = loc
+ loc.layer = LARGE_MOB_LAYER //NO HIDING BEHIND PLANTS FOR YOU, DICKWEED (HA GET IT, BECAUSE WEEDS ARE PLANTS)
+ H.bleedsuppress = TRUE //AND WE WON'T BLEED OUT LIKE COWARDS
+ else
+ if(!admin_spawned)
+ qdel(src)
+
+
+/obj/item/claymore/highlander/pickup(mob/living/user)
+ to_chat(user, "The power of Scotland protects you! You are shielded from all stuns and knockdowns.")
+ user.add_stun_absorption("highlander", INFINITY, 1, " is protected by the power of Scotland!", "The power of Scotland absorbs the stun!", " is protected by the power of Scotland!")
+ user.status_flags += IGNORESLOWDOWN
+
+/obj/item/claymore/highlander/dropped(mob/living/user)
+ user.status_flags -= IGNORESLOWDOWN
+ qdel(src) //If this ever happens, it's because you lost an arm
+
+/obj/item/claymore/highlander/examine(mob/user)
+ ..()
+ to_chat(user, "It has [!notches ? "nothing" : "[notches] notches"] scratched into the blade.")
+ if(nuke_disk)
+ to_chat(user, "It's holding the nuke disk!")
+
+/obj/item/claymore/highlander/attack(mob/living/target, mob/living/user)
+ . = ..()
+ if(!QDELETED(target) && iscarbon(target) && target.stat == DEAD && target.mind && target.mind.special_role == "highlander")
+ user.fully_heal() //STEAL THE LIFE OF OUR FALLEN FOES
+ add_notch(user)
+ target.visible_message("[target] crumbles to dust beneath [user]'s blows!", "As you fall, your body crumbles to dust!")
+ target.dust()
+
+/obj/item/claymore/highlander/attack_self(mob/living/user)
+ var/closest_victim
+ var/closest_distance = 255
+ for(var/mob/living/carbon/human/H in GLOB.player_list - user)
+ if(H.client && H.mind.special_role == "highlander" && (!closest_victim || get_dist(user, closest_victim) < closest_distance))
+ closest_victim = H
+ if(!closest_victim)
+ to_chat(user, "[src] thrums for a moment and falls dark. Perhaps there's nobody nearby.")
+ return
+ to_chat(user, "[src] thrums and points to the [dir2text(get_dir(user, closest_victim))].")
+
+/obj/item/claymore/highlander/IsReflect()
+ return 1 //YOU THINK YOUR PUNY LASERS CAN STOP ME?
+
+/obj/item/claymore/highlander/proc/add_notch(mob/living/user) //DYNAMIC CLAYMORE PROGRESSION SYSTEM - THIS IS THE FUTURE
+ notches++
+ force++
+ var/new_name = name
+ switch(notches)
+ if(1)
+ to_chat(user, "Your first kill - hopefully one of many. You scratch a notch into [src]'s blade.")
+ to_chat(user, "You feel your fallen foe's soul entering your blade, restoring your wounds!")
+ new_name = "notched claymore"
+ if(2)
+ to_chat(user, "Another falls before you. Another soul fuses with your own. Another notch in the blade.")
+ new_name = "double-notched claymore"
+ add_atom_colour(rgb(255, 235, 235), ADMIN_COLOUR_PRIORITY)
+ if(3)
+ to_chat(user, "You're beginning to relish the thrill of battle.")
+ new_name = "triple-notched claymore"
+ add_atom_colour(rgb(255, 215, 215), ADMIN_COLOUR_PRIORITY)
+ if(4)
+ to_chat(user, "You've lost count of how many you've killed.")
+ new_name = "many-notched claymore"
+ add_atom_colour(rgb(255, 195, 195), ADMIN_COLOUR_PRIORITY)
+ if(5)
+ to_chat(user, "Five voices now echo in your mind, cheering the slaughter.")
+ new_name = "battle-tested claymore"
+ add_atom_colour(rgb(255, 175, 175), ADMIN_COLOUR_PRIORITY)
+ if(6)
+ to_chat(user, "Is this what the vikings felt like? Visions of glory fill your head as you slay your sixth foe.")
+ new_name = "battle-scarred claymore"
+ add_atom_colour(rgb(255, 155, 155), ADMIN_COLOUR_PRIORITY)
+ if(7)
+ to_chat(user, "Kill. Butcher. Conquer.")
+ new_name = "vicious claymore"
+ add_atom_colour(rgb(255, 135, 135), ADMIN_COLOUR_PRIORITY)
+ if(8)
+ to_chat(user, "IT NEVER GETS OLD. THE SCREAMING. THE BLOOD AS IT SPRAYS ACROSS YOUR FACE.")
+ new_name = "bloodthirsty claymore"
+ add_atom_colour(rgb(255, 115, 115), ADMIN_COLOUR_PRIORITY)
+ if(9)
+ to_chat(user, "ANOTHER ONE FALLS TO YOUR BLOWS. ANOTHER WEAKLING UNFIT TO LIVE.")
+ new_name = "gore-stained claymore"
+ add_atom_colour(rgb(255, 95, 95), ADMIN_COLOUR_PRIORITY)
+ if(10)
+ user.visible_message("[user]'s eyes light up with a vengeful fire!", \
+ "YOU FEEL THE POWER OF VALHALLA FLOWING THROUGH YOU! THERE CAN BE ONLY ONE!!!")
+ user.update_icons()
+ new_name = "GORE-DRENCHED CLAYMORE OF [pick("THE WHIMSICAL SLAUGHTER", "A THOUSAND SLAUGHTERED CATTLE", "GLORY AND VALHALLA", "ANNIHILATION", "OBLITERATION")]"
+ icon_state = "claymore_valhalla"
+ item_state = "cultblade"
+ remove_atom_colour(ADMIN_COLOUR_PRIORITY)
+
+ name = new_name
+ playsound(user, 'sound/items/screwdriver2.ogg', 50, 1)
+
+/obj/item/katana
+ name = "katana"
+ desc = "Woefully underpowered in D20"
+ icon_state = "katana"
+ item_state = "katana"
+ lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
+ flags_1 = CONDUCT_1
+ slot_flags = SLOT_BELT | SLOT_BACK
+ force = 40
+ throwforce = 10
+ w_class = WEIGHT_CLASS_NORMAL
+ hitsound = 'sound/weapons/bladeslice.ogg'
+ attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
+ block_chance = 50
+ sharpness = IS_SHARP
+ max_integrity = 200
+ armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 50)
+ resistance_flags = FIRE_PROOF
+
+/obj/item/katana/cursed
+ slot_flags = null
+
+/obj/item/katana/suicide_act(mob/user)
+ user.visible_message("[user] is slitting [user.p_their()] stomach open with [src]! It looks like [user.p_theyre()] trying to commit seppuku!")
+ return(BRUTELOSS)
+
+/obj/item/wirerod
+ name = "wired rod"
+ desc = "A rod with some wire wrapped around the top. It'd be easy to attach something to the top bit."
+ icon_state = "wiredrod"
+ item_state = "rods"
+ flags_1 = CONDUCT_1
+ force = 9
+ throwforce = 10
+ w_class = WEIGHT_CLASS_NORMAL
+ materials = list(MAT_METAL=1150, MAT_GLASS=75)
+ attack_verb = list("hit", "bludgeoned", "whacked", "bonked")
+
+/obj/item/wirerod/attackby(obj/item/I, mob/user, params)
+ if(istype(I, /obj/item/shard))
+ var/obj/item/twohanded/spear/S = new /obj/item/twohanded/spear
+
+ remove_item_from_storage(user)
+ qdel(I)
+ qdel(src)
+
+ user.put_in_hands(S)
+ to_chat(user, "You fasten the glass shard to the top of the rod with the cable.")
+
+ else if(istype(I, /obj/item/device/assembly/igniter) && !(I.flags_1 & NODROP_1))
+ var/obj/item/melee/baton/cattleprod/P = new /obj/item/melee/baton/cattleprod
+
+ remove_item_from_storage(user)
+
+ to_chat(user, "You fasten [I] to the top of the rod with the cable.")
+
+ qdel(I)
+ qdel(src)
+
+ user.put_in_hands(P)
+ else
+ return ..()
+
+
+/obj/item/throwing_star
+ name = "throwing star"
+ desc = "An ancient weapon still used to this day due to it's ease of lodging itself into victim's body parts"
+ icon_state = "throwingstar"
+ item_state = "eshield0"
+ lefthand_file = 'icons/mob/inhands/equipment/shields_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/equipment/shields_righthand.dmi'
+ force = 2
+ throwforce = 20 //This is never used on mobs since this has a 100% embed chance.
+ throw_speed = 4
+ embedded_pain_multiplier = 4
+ w_class = WEIGHT_CLASS_SMALL
+ embed_chance = 100
+ embedded_fall_chance = 0 //Hahaha!
+ sharpness = IS_SHARP
+ materials = list(MAT_METAL=500, MAT_GLASS=500)
+ resistance_flags = FIRE_PROOF
+
+
+/obj/item/switchblade
+ name = "switchblade"
+ icon_state = "switchblade"
+ lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
+ desc = "A sharp, concealable, spring-loaded knife."
+ flags_1 = CONDUCT_1
+ force = 3
+ w_class = WEIGHT_CLASS_SMALL
+ throwforce = 5
+ throw_speed = 3
+ throw_range = 6
+ materials = list(MAT_METAL=12000)
+ origin_tech = "engineering=3;combat=2"
+ hitsound = 'sound/weapons/genhit.ogg'
+ attack_verb = list("stubbed", "poked")
+ resistance_flags = FIRE_PROOF
+ var/extended = 0
+
+/obj/item/switchblade/attack_self(mob/user)
+ extended = !extended
+ playsound(src.loc, 'sound/weapons/batonextend.ogg', 50, 1)
+ if(extended)
+ force = 20
+ w_class = WEIGHT_CLASS_NORMAL
+ throwforce = 23
+ icon_state = "switchblade_ext"
+ attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
+ hitsound = 'sound/weapons/bladeslice.ogg'
+ sharpness = IS_SHARP
+ else
+ force = 3
+ w_class = WEIGHT_CLASS_SMALL
+ throwforce = 5
+ icon_state = "switchblade"
+ attack_verb = list("stubbed", "poked")
+ hitsound = 'sound/weapons/genhit.ogg'
+ sharpness = IS_BLUNT
+
+/obj/item/switchblade/suicide_act(mob/user)
+ user.visible_message("[user] is slitting [user.p_their()] own throat with [src]! It looks like [user.p_theyre()] trying to commit suicide!")
+ return (BRUTELOSS)
+
+/obj/item/phone
+ name = "red phone"
+ desc = "Should anything ever go wrong..."
+ icon = 'icons/obj/items_and_weapons.dmi'
+ icon_state = "red_phone"
+ force = 3
+ throwforce = 2
+ throw_speed = 3
+ throw_range = 4
+ w_class = WEIGHT_CLASS_SMALL
+ attack_verb = list("called", "rang")
+ hitsound = 'sound/weapons/ring.ogg'
+
+/obj/item/phone/suicide_act(mob/user)
+ if(locate(/obj/structure/chair/stool) in user.loc)
+ user.visible_message("[user] begins to tie a noose with [src]'s cord! It looks like [user.p_theyre()] trying to commit suicide!")
+ else
+ user.visible_message("[user] is strangling [user.p_them()]self with [src]'s cord! It looks like [user.p_theyre()] trying to commit suicide!")
+ return(OXYLOSS)
+
+/obj/item/cane
+ name = "cane"
+ desc = "A cane used by a true gentleman. Or a clown."
+ icon = 'icons/obj/items_and_weapons.dmi'
+ icon_state = "cane"
+ item_state = "stick"
+ lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi'
+ force = 5
+ throwforce = 5
+ w_class = WEIGHT_CLASS_SMALL
+ materials = list(MAT_METAL=50)
+ attack_verb = list("bludgeoned", "whacked", "disciplined", "thrashed")
+
+/obj/item/staff
+ name = "wizard staff"
+ desc = "Apparently a staff used by the wizard."
+ icon = 'icons/obj/wizard.dmi'
+ icon_state = "staff"
+ lefthand_file = 'icons/mob/inhands/weapons/staves_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/weapons/staves_righthand.dmi'
+ force = 3
+ throwforce = 5
+ throw_speed = 2
+ throw_range = 5
+ w_class = WEIGHT_CLASS_SMALL
+ armour_penetration = 100
+ attack_verb = list("bludgeoned", "whacked", "disciplined")
+ resistance_flags = FLAMMABLE
+
+/obj/item/staff/broom
+ name = "broom"
+ desc = "Used for sweeping, and flying into the night while cackling. Black cat not included."
+ icon = 'icons/obj/wizard.dmi'
+ icon_state = "broom"
+ resistance_flags = FLAMMABLE
+
+/obj/item/staff/stick
+ name = "stick"
+ desc = "A great tool to drag someone else's drinks across the bar."
+ icon = 'icons/obj/items_and_weapons.dmi'
+ icon_state = "stick"
+ item_state = "stick"
+ lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi'
+ force = 3
+ throwforce = 5
+ throw_speed = 2
+ throw_range = 5
+ w_class = WEIGHT_CLASS_SMALL
+
+/obj/item/ectoplasm
+ name = "ectoplasm"
+ desc = "spooky"
+ gender = PLURAL
+ icon = 'icons/obj/wizard.dmi'
+ icon_state = "ectoplasm"
+
+/obj/item/ectoplasm/suicide_act(mob/user)
+ user.visible_message("[user] is inhaling [src]! It looks like [user.p_theyre()] trying to visit the astral plane.")
+ return (OXYLOSS)
+
+/obj/item/mounted_chainsaw
+ name = "mounted chainsaw"
+ desc = "A chainsaw that has replaced your arm."
+ icon_state = "chainsaw_on"
+ item_state = "mounted_chainsaw"
+ lefthand_file = 'icons/mob/inhands/weapons/chainsaw_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/weapons/chainsaw_righthand.dmi'
+ flags_1 = NODROP_1 | ABSTRACT_1 | DROPDEL_1
+ w_class = WEIGHT_CLASS_HUGE
+ force = 21
+ throwforce = 0
+ throw_range = 0
+ throw_speed = 0
+ sharpness = IS_SHARP
+ attack_verb = list("sawed", "torn", "cut", "chopped", "diced")
+ hitsound = 'sound/weapons/chainsawhit.ogg'
+
+/obj/item/mounted_chainsaw/Destroy()
+ var/obj/item/bodypart/part
+ new /obj/item/twohanded/required/chainsaw(get_turf(src))
+ if(iscarbon(loc))
+ var/mob/living/carbon/holder = loc
+ var/index = holder.get_held_index_of_item(src)
+ if(index)
+ part = holder.hand_bodyparts[index]
+ . = ..()
+ if(part)
+ part.drop_limb()
+
+/obj/item/statuebust
+ name = "bust"
+ desc = "A priceless ancient marble bust, the kind that belongs in a museum." //or you can hit people with it
+ icon = 'icons/obj/statue.dmi'
+ icon_state = "bust"
+ force = 15
+ throwforce = 10
+ throw_speed = 5
+ throw_range = 2
+ attack_verb = list("busted")
+
+/obj/item/tailclub
+ name = "tail club"
+ desc = "For the beating to death of lizards with their own tails."
+ icon_state = "tailclub"
+ force = 14
+ throwforce = 1 // why are you throwing a club do you even weapon
+ throw_speed = 1
+ throw_range = 1
+ attack_verb = list("clubbed", "bludgeoned")
+
+/obj/item/melee/chainofcommand/tailwhip
+ name = "liz o' nine tails"
+ desc = "A whip fashioned from the severed tails of lizards."
+ icon_state = "tailwhip"
+ origin_tech = "engineering=3;combat=3;biotech=3"
+ needs_permit = 0
+
+/obj/item/melee/chainofcommand/tailwhip/kitty
+ name = "cat o' nine tails"
+ desc = "A whip fashioned from the severed tails of cats."
+ icon_state = "catwhip"
+
+/obj/item/melee/skateboard
+ name = "skateboard"
+ desc = "A skateboard. It can be placed on its wheels and ridden, or used as a strong weapon."
+ icon_state = "skateboard"
+ item_state = "skateboard"
+ force = 12
+ throwforce = 4
+ w_class = WEIGHT_CLASS_HUGE
+ attack_verb = list("smacked", "whacked", "slammed", "smashed")
+
+/obj/item/melee/skateboard/attack_self(mob/user)
+ new /obj/vehicle/scooter/skateboard(get_turf(user))
+ qdel(src)
+
+/obj/item/melee/baseball_bat
+ name = "baseball bat"
+ desc = "There ain't a skull in the league that can withstand a swatter."
+ icon = 'icons/obj/items_and_weapons.dmi'
+ icon_state = "baseball_bat"
+ item_state = "baseball_bat"
+ lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi'
+ force = 10
+ throwforce = 12
+ attack_verb = list("beat", "smacked")
+ w_class = WEIGHT_CLASS_HUGE
+ var/homerun_ready = 0
+ var/homerun_able = 0
+
+/obj/item/melee/baseball_bat/homerun
+ name = "home run bat"
+ desc = "This thing looks dangerous... Dangerously good at baseball, that is."
+ homerun_able = 1
+
+/obj/item/melee/baseball_bat/attack_self(mob/user)
+ if(!homerun_able)
+ ..()
+ return
+ if(homerun_ready)
+ to_chat(user, "You're already ready to do a home run!")
+ ..()
+ return
+ to_chat(user, "You begin gathering strength...")
+ playsound(get_turf(src), 'sound/magic/lightning_chargeup.ogg', 65, 1)
+ if(do_after(user, 90, target = src))
+ to_chat(user, "You gather power! Time for a home run!")
+ homerun_ready = 1
+ ..()
+
+/obj/item/melee/baseball_bat/attack(mob/living/target, mob/living/user)
+ . = ..()
+ var/atom/throw_target = get_edge_target_turf(target, user.dir)
+ if(homerun_ready)
+ user.visible_message("It's a home run!")
+ target.throw_at(throw_target, rand(8,10), 14, user)
+ target.ex_act(EXPLODE_HEAVY)
+ playsound(get_turf(src), 'sound/weapons/homerun.ogg', 100, 1)
+ homerun_ready = 0
+ return
+ else if(!target.anchored)
+ target.throw_at(throw_target, rand(1,2), 7, user)
+
+/obj/item/melee/baseball_bat/ablative
+ name = "metal baseball bat"
+ desc = "This bat is made of highly reflective, highly armored material."
+ icon_state = "baseball_bat_metal"
+ item_state = "baseball_bat_metal"
+ force = 12
+ throwforce = 15
+
+/obj/item/melee/baseball_bat/ablative/IsReflect()//some day this will reflect thrown items instead of lasers
+ var/picksound = rand(1,2)
+ var/turf = get_turf(src)
+ if(picksound == 1)
+ playsound(turf, 'sound/weapons/effects/batreflect1.ogg', 50, 1)
+ if(picksound == 2)
+ playsound(turf, 'sound/weapons/effects/batreflect2.ogg', 50, 1)
+ return 1
+
+/obj/item/melee/flyswatter
+ name = "flyswatter"
+ desc = "Useful for killing insects of all sizes."
+ icon = 'icons/obj/items_and_weapons.dmi'
+ icon_state = "flyswatter"
+ item_state = "flyswatter"
+ lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi'
+ force = 1
+ throwforce = 1
+ attack_verb = list("swatted", "smacked")
+ hitsound = 'sound/effects/snap.ogg'
+ w_class = WEIGHT_CLASS_SMALL
+ //Things in this list will be instantly splatted. Flyman weakness is handled in the flyman species weakness proc.
+ var/list/strong_against
+
+/obj/item/melee/flyswatter/Initialize()
+ . = ..()
+ strong_against = typecacheof(list(
+ /mob/living/simple_animal/hostile/poison/bees/,
+ /mob/living/simple_animal/butterfly,
+ /mob/living/simple_animal/cockroach,
+ /obj/item/queen_bee
+ ))
+
+
+/obj/item/melee/flyswatter/afterattack(atom/target, mob/user, proximity_flag)
+ if(proximity_flag)
+ if(is_type_in_typecache(target, strong_against))
+ new /obj/effect/decal/cleanable/deadcockroach(get_turf(target))
+ to_chat(user, "You easily splat the [target].")
+ if(istype(target, /mob/living/))
+ var/mob/living/bug = target
+ bug.death(1)
+ else
+ qdel(target)
+
+/obj/item/circlegame
+ name = "circled hand"
+ desc = "If somebody looks at this while it's below your waist, you get to bop them."
+ icon_state = "madeyoulook"
+ force = 0
+ throwforce = 0
+ flags_1 = DROPDEL_1 | ABSTRACT_1
+ attack_verb = list("bopped")
+
+/obj/item/proc/can_trigger_gun(mob/living/user)
+ if(!user.can_use_guns(src))
+ return FALSE
return TRUE