Files

566 lines
22 KiB
Plaintext

// Deprecated, you do not need to use this type for melee weapons.
/obj/item/melee
abstract_type = /obj/item/melee
item_flags = NEEDS_PERMIT
/obj/item/melee/synthetic_arm_blade
name = "synthetic arm blade"
desc = "A grotesque blade that on closer inspection seems to be made out of synthetic flesh, it still feels like it would hurt very badly as a weapon."
icon = 'icons/obj/weapons/changeling_items.dmi'
icon_state = "arm_blade"
inhand_icon_state = "arm_blade"
icon_angle = 180
lefthand_file = 'icons/mob/inhands/antag/changeling_lefthand.dmi'
righthand_file = 'icons/mob/inhands/antag/changeling_righthand.dmi'
w_class = WEIGHT_CLASS_HUGE
force = 20
throwforce = 10
hitsound = 'sound/items/weapons/bladeslice.ogg'
attack_verb_continuous = list("attacks", "slashes", "slices", "tears", "lacerates", "rips", "dices", "cuts")
attack_verb_simple = list("attack", "slash", "slice", "tear", "lacerate", "rip", "dice", "cut")
sharpness = SHARP_EDGED
var/list/alt_continuous = list("stabs", "pierces", "impales")
var/list/alt_simple = list("stab", "pierce", "impale")
/obj/item/melee/synthetic_arm_blade/Initialize(mapload)
. = ..()
alt_continuous = string_list(alt_continuous)
alt_simple = string_list(alt_simple)
AddComponent(/datum/component/alternative_sharpness, SHARP_POINTY, alt_continuous, alt_simple, -5)
AddComponent(/datum/component/butchering, \
speed = 6 SECONDS, \
effectiveness = 80, \
)
//very imprecise
/obj/item/melee/beesword
name = "The Stinger"
desc = "Taken from a giant bee and folded over one thousand times in pure honey. Can sting through anything."
icon = 'icons/obj/weapons/sword.dmi'
icon_state = "beesword"
inhand_icon_state = "stinger"
worn_icon_state = "stinger"
icon_angle = -45
lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi'
righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi'
slot_flags = ITEM_SLOT_BELT
force = 5
w_class = WEIGHT_CLASS_BULKY
sharpness = SHARP_EDGED
throwforce = 10
attack_speed = CLICK_CD_RAPID
block_chance = 20
armour_penetration = 65
attack_verb_continuous = list("slashes", "stings", "prickles", "pokes")
attack_verb_simple = list("slash", "sting", "prickle", "poke")
hitsound = 'sound/items/weapons/rapierhit.ogg'
block_sound = 'sound/items/weapons/parry.ogg'
/obj/item/melee/beesword/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK, damage_type = BRUTE)
if(attack_type == PROJECTILE_ATTACK || attack_type == LEAP_ATTACK || attack_type == OVERWHELMING_ATTACK)
final_block_chance = 0 //Don't bring a sword to a gunfight, and also you aren't going to really block someone full body tackling you with a sword. Or a road roller, if one happened to hit you.
return ..()
/obj/item/melee/beesword/afterattack(atom/target, mob/user, list/modifiers, list/attack_modifiers)
if(iscarbon(target) && !QDELETED(target))
var/mob/living/carbon/carbon_target = target
carbon_target.reagents.add_reagent(/datum/reagent/toxin, 4)
/obj/item/melee/beesword/suicide_act(mob/living/user)
user.visible_message(span_suicide("[user] is stabbing [user.p_them()]self in the throat with [src]! It looks like [user.p_theyre()] trying to commit suicide!"))
playsound(get_turf(src), hitsound, 75, TRUE, -1)
return TOXLOSS
/obj/item/melee/curator_whip
name = "curator's whip"
desc = "Somewhat eccentric and outdated, it still stings like hell to be hit by."
icon = 'icons/obj/weapons/whip.dmi'
icon_state = "whip"
inhand_icon_state = "chain"
icon_angle = -90
lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi'
righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi'
worn_icon_state = "whip"
slot_flags = ITEM_SLOT_BELT
force = 15
demolition_mod = 0.25
w_class = WEIGHT_CLASS_NORMAL
attack_verb_continuous = list("flogs", "whips", "lashes", "disciplines")
attack_verb_simple = list("flog", "whip", "lash", "discipline")
hitsound = 'sound/items/weapons/whip.ogg'
/obj/item/melee/curator_whip/afterattack(atom/target, mob/user, list/modifiers, list/attack_modifiers)
if(ishuman(target))
var/mob/living/carbon/human/human_target = target
human_target.drop_all_held_items()
human_target.visible_message(span_danger("[user] disarms [human_target]!"), span_userdanger("[user] disarmed you!"))
/obj/item/melee/roastingstick
name = "advanced roasting stick"
desc = "A telescopic roasting stick with a miniature shield generator designed to ensure entry into various high-tech shielded cooking ovens and firepits."
icon = 'icons/obj/service/kitchen.dmi'
icon_state = "roastingstick"
inhand_icon_state = null
worn_icon_state = "tele_baton"
icon_angle = -45
slot_flags = ITEM_SLOT_BELT
w_class = WEIGHT_CLASS_SMALL
item_flags = NONE
force = 0
attack_verb_continuous = list("hits", "pokes")
attack_verb_simple = list("hit", "poke")
/// The sausage attatched to our stick.
var/obj/item/food/sausage/held_sausage
/// Static list of things our roasting stick can interact with.
var/static/list/ovens
/// The beam that links to the oven we use
var/datum/beam/beam
/obj/item/melee/roastingstick/Initialize(mapload)
. = ..()
if (!ovens)
ovens = typecacheof(list(/obj/singularity, /obj/energy_ball, /obj/machinery/power/supermatter_crystal, /obj/structure/bonfire))
AddComponent( \
/datum/component/transforming, \
hitsound_on = hitsound, \
clumsy_check = FALSE, \
inhand_icon_change = FALSE, \
)
RegisterSignal(src, COMSIG_TRANSFORMING_PRE_TRANSFORM, PROC_REF(attempt_transform))
RegisterSignal(src, COMSIG_TRANSFORMING_ON_TRANSFORM, PROC_REF(on_transform))
/*
* Signal proc for [COMSIG_TRANSFORMING_PRE_TRANSFORM].
*
* If there is a sausage attached, returns COMPONENT_BLOCK_TRANSFORM.
*/
/obj/item/melee/roastingstick/proc/attempt_transform(obj/item/source, mob/user, active)
SIGNAL_HANDLER
if(held_sausage)
to_chat(user, span_warning("You can't retract [src] while [held_sausage] is attached!"))
return COMPONENT_BLOCK_TRANSFORM
/*
* Signal proc for [COMSIG_TRANSFORMING_ON_TRANSFORM].
*
* Gives feedback on stick extension.
*/
/obj/item/melee/roastingstick/proc/on_transform(obj/item/source, mob/user, active)
SIGNAL_HANDLER
inhand_icon_state = active ? "nullrod" : null
if(user)
balloon_alert(user, "[active ? "extended" : "collapsed"] [src]")
playsound(src, 'sound/items/weapons/batonextend.ogg', 50, TRUE)
return COMPONENT_NO_DEFAULT_MESSAGE
/obj/item/melee/roastingstick/attackby(atom/target, mob/user)
..()
if (istype(target, /obj/item/food/sausage))
if (!HAS_TRAIT(src, TRAIT_TRANSFORM_ACTIVE))
to_chat(user, span_warning("You must extend [src] to attach anything to it!"))
return
if (held_sausage)
to_chat(user, span_warning("[held_sausage] is already attached to [src]!"))
return
if (user.transferItemToLoc(target, src))
held_sausage = target
else
to_chat(user, span_warning("[target] doesn't seem to want to get on [src]!"))
update_appearance()
/obj/item/melee/roastingstick/attack_hand(mob/user, list/modifiers)
..()
if (held_sausage)
user.put_in_hands(held_sausage)
/obj/item/melee/roastingstick/update_overlays()
. = ..()
if(held_sausage)
. += mutable_appearance(icon, "roastingstick_sausage")
/obj/item/melee/roastingstick/Exited(atom/movable/gone, direction)
. = ..()
if (gone == held_sausage)
held_sausage = null
update_appearance()
/obj/item/melee/roastingstick/ranged_interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers)
if (!HAS_TRAIT(src, TRAIT_TRANSFORM_ACTIVE))
return NONE
if (!is_type_in_typecache(interacting_with, ovens))
return NONE
if (istype(interacting_with, /obj/singularity) || istype(interacting_with, /obj/energy_ball) && get_dist(user, interacting_with) < 10)
to_chat(user, span_notice("You send [held_sausage] towards [interacting_with]."))
playsound(src, 'sound/items/tools/rped.ogg', 50, TRUE)
beam = user.Beam(interacting_with, icon_state = "rped_upgrade", time = 10 SECONDS)
finish_roasting(user, interacting_with)
return ITEM_INTERACT_SUCCESS
return NONE
/obj/item/melee/roastingstick/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers)
if (!HAS_TRAIT(src, TRAIT_TRANSFORM_ACTIVE))
return NONE
if (!is_type_in_typecache(interacting_with, ovens))
return NONE
to_chat(user, span_notice("You extend [src] towards [interacting_with]."))
playsound(src, 'sound/items/weapons/batonextend.ogg', 50, TRUE)
finish_roasting(user, interacting_with)
return ITEM_INTERACT_SUCCESS
/obj/item/melee/roastingstick/proc/finish_roasting(user, atom/target)
if(do_after(user, 10 SECONDS, target = user))
to_chat(user, span_notice("You finish roasting [held_sausage]."))
playsound(src, 'sound/items/tools/welder2.ogg', 50, TRUE)
held_sausage.add_atom_colour(rgb(103, 63, 24), FIXED_COLOUR_PRIORITY)
held_sausage.name = "[target.name]-roasted [held_sausage.name]"
held_sausage.desc = "[held_sausage.desc] It has been cooked to perfection on \a [target]."
update_appearance()
else
QDEL_NULL(beam)
playsound(src, 'sound/items/weapons/batonextend.ogg', 50, TRUE)
to_chat(user, span_notice("You put [src] away."))
/obj/item/melee/cleric_mace
name = "cleric mace"
desc = "The grandson of the club, yet the grandfather of the baseball bat. Most notably used by holy orders in days past."
icon = 'icons/map_icons/items/_item.dmi'
icon_state = "/obj/item/melee/cleric_mace"
post_init_icon_state = "default"
inhand_icon_state = "default"
worn_icon_state = "default_worn"
icon_angle = -45
greyscale_config = /datum/greyscale_config/cleric_mace
greyscale_config_inhand_left = /datum/greyscale_config/cleric_mace_lefthand
greyscale_config_inhand_right = /datum/greyscale_config/cleric_mace_righthand
greyscale_config_worn = /datum/greyscale_config/cleric_mace
greyscale_colors = COLOR_WHITE + COLOR_BROWN
material_flags = MATERIAL_EFFECTS | MATERIAL_ADD_PREFIX | MATERIAL_GREYSCALE | MATERIAL_AFFECT_STATISTICS
// Defaults to an iron head, wooden handle mace
custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 4.5, /datum/material/wood = SHEET_MATERIAL_AMOUNT * 1.5)
material_slots = list(/datum/material_slot/weapon_head/mace = /datum/material/iron, /datum/material_slot/handle = /datum/material/wood)
slot_flags = ITEM_SLOT_BELT
force = 16
w_class = WEIGHT_CLASS_BULKY
throwforce = 8
block_chance = 10
block_sound = 'sound/items/weapons/genhit.ogg'
armour_penetration = 50
attack_verb_continuous = list("smacks", "strikes", "cracks", "beats")
attack_verb_simple = list("smack", "strike", "crack", "beat")
// It only inherits the name of the main material it's made of. The secondary is in the description.
/obj/item/melee/cleric_mace/get_material_prefixes(list/materials)
var/datum/material/material = get_material_from_slot(/datum/material_slot/weapon_head)
return material?.name
/obj/item/melee/cleric_mace/finalize_material_effects(list/materials)
. = ..()
var/datum/material/material = get_material_from_slot(/datum/material_slot/handle)
if (material)
desc = "[initial(desc)] Its handle is made of [material.name]."
/obj/item/melee/cleric_mace/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK, damage_type = BRUTE)
// Don't bring a...mace to a gunfight, and also you aren't going to really block someone full body tackling you with a mace.
// Or a road roller, if one happened to hit you.
if(attack_type == PROJECTILE_ATTACK || attack_type == LEAP_ATTACK || attack_type == OVERWHELMING_ATTACK)
final_block_chance = 0
return ..()
/datum/material_slot/weapon_head/mace
name = "mace head"
material_amount = 3
/obj/item/sord
name = "\improper SORD"
desc = "This thing is so unspeakably shitty you are having a hard time even holding it."
icon = 'icons/obj/weapons/sword.dmi'
icon_state = "sord"
inhand_icon_state = "sord"
icon_angle = -35
lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
slot_flags = ITEM_SLOT_BELT
force = 2
throwforce = 1
w_class = WEIGHT_CLASS_NORMAL
hitsound = 'sound/items/weapons/bladeslice.ogg'
attack_verb_continuous = list("attacks", "slashes", "stabs", "slices", "tears", "lacerates", "rips", "dices", "cuts")
attack_verb_simple = list("attack", "slash", "stab", "slice", "tear", "lacerate", "rip", "dice", "cut")
/obj/item/sord/suicide_act(mob/living/user)
user.visible_message(span_suicide("[user] is trying to impale [user.p_them()]self with [src]! It might be a suicide attempt if it weren't so shitty."), \
span_suicide("You try to impale yourself with [src], but it's USELESS..."))
return SHAME
/obj/item/carpenter_hammer
name = "carpenter hammer"
icon = 'icons/obj/weapons/hammer.dmi'
icon_state = "carpenter_hammer"
inhand_icon_state = "carpenter_hammer"
worn_icon_state = "clawhammer" //plaecholder
icon_angle = -45
lefthand_file = 'icons/mob/inhands/weapons/hammers_lefthand.dmi'
righthand_file = 'icons/mob/inhands/weapons/hammers_righthand.dmi'
desc = "Uncanny looking hammer."
force = 17
throwforce = 14
throw_range = 4
w_class = WEIGHT_CLASS_NORMAL
wound_bonus = 20
demolition_mod = 1.15
slot_flags = ITEM_SLOT_BELT
/obj/item/carpenter_hammer/Initialize(mapload)
. = ..()
AddElement(/datum/element/kneejerk)
AddComponent(/datum/component/item_killsound, \
allowed_mobs = list(/mob/living/carbon/human), \
killsound = 'sound/items/weapons/hammer_death_scream.ogg', \
replace_default_death_sound = TRUE, \
)
/obj/item/carpenter_hammer/examine(mob/user)
. = ..()
. += ""
. += "Real World Tip:"
. += pick(
"Every building, from hospitals to homes, has a room that serves as the heart of the building \
and carries blood and nutrients to its extremities. Try to find the heart of your home!",
"All the food you've tried is rotten. You've never eaten fresh food.",
"Viruses do not exist. Illness is simply your body punishing you for what you have done wrong.",
"Space stations must have at least 50 mammalian teeth embedded in the north walls for structural safety reasons.",
"Queen dragonfly sleeps and smiles.",
)
/obj/item/phone
name = "red phone"
desc = "Should anything ever go wrong..."
icon = 'icons/obj/devices/voice.dmi'
icon_state = "red_phone"
force = 3
throwforce = 2
throw_speed = 3
throw_range = 4
w_class = WEIGHT_CLASS_SMALL
attack_verb_continuous = list("calls", "rings")
attack_verb_simple = list("call", "ring")
hitsound = 'sound/items/weapons/ring.ogg'
/obj/item/phone/suicide_act(mob/living/user)
if(locate(/obj/structure/chair/stool) in user.loc)
user.visible_message(span_suicide("[user] begins to tie a noose with [src]'s cord! It looks like [user.p_theyre()] trying to commit suicide!"))
else
user.visible_message(span_suicide("[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/bambostaff
name = "bamboo staff"
desc = "A long bamboo-made staff with steel-capped ends. It is rumoured that initiates of Spider Clan train with such before getting to learn how to use a katana."
force = 10
block_chance = 45
block_sound = 'sound/items/weapons/genhit.ogg'
slot_flags = ITEM_SLOT_BACK
w_class = WEIGHT_CLASS_BULKY
hitsound = SFX_SWING_HIT
attack_verb_continuous = list("smashes", "slams", "whacks", "thwacks")
attack_verb_simple = list("smash", "slam", "whack", "thwack")
icon = 'icons/obj/weapons/staff.dmi'
icon_state = "bambostaff0"
base_icon_state = "bambostaff"
inhand_icon_state = "bambostaff0"
worn_icon_state = "bambostaff0"
icon_angle = -135
lefthand_file = 'icons/mob/inhands/weapons/staves_lefthand.dmi'
righthand_file = 'icons/mob/inhands/weapons/staves_righthand.dmi'
custom_materials = list(/datum/material/bamboo = SHEET_MATERIAL_AMOUNT * 4)
/obj/item/bambostaff/Initialize(mapload)
. = ..()
// there are too many puns to choose from. ('Bo' is the 'real' name for this kind of weapon.)
name = pick("bamboo staff", "bambo staff", "bam-Bo staff", "bam boo staff", "bam-boo staff", "bam Bo", "bambo", "bam-Bo", "bamboo-Bo")
AddComponent(/datum/component/two_handed, \
force_unwielded = 10, \
force_wielded = 14, \
)
/obj/item/bambostaff/update_icon_state()
icon_state = inhand_icon_state = "[base_icon_state][HAS_TRAIT(src, TRAIT_WIELDED)]"
return ..()
/obj/item/bambostaff/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK, damage_type = BRUTE)
if(attack_type == PROJECTILE_ATTACK || attack_type == LEAP_ATTACK || attack_type == OVERWHELMING_ATTACK)
final_block_chance = 0 //Don't bring a staff to a gunfight, and also you aren't going to really block someone full body tackling you with a staff. Or a road roller, if one happened to hit you.
return ..()
/obj/item/staff
name = "wizard staff"
desc = "Apparently a staff used by the wizard."
icon = 'icons/obj/weapons/guns/magic.dmi'
icon_state = "staff"
inhand_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_continuous = list("bludgeons", "whacks", "disciplines")
attack_verb_simple = list("bludgeon", "whack", "discipline")
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_state = "broom"
inhand_icon_state = "broom"
resistance_flags = FLAMMABLE
/obj/item/staff/tape
name = "tape staff"
desc = "A roll of tape snugly attached to a stick."
icon_state = "tapestaff"
inhand_icon_state = "tapestaff"
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/weapons/staff.dmi'
icon_state = "cane"
inhand_icon_state = "stick"
icon_angle = 135
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/tailclub
name = "tail club"
desc = "For the beating to death of lizards with their own tails."
icon = 'icons/obj/weapons/club.dmi'
icon_state = "tailclub"
icon_angle = -25
force = 14
throwforce = 1 // why are you throwing a club do you even weapon
throw_speed = 1
throw_range = 1
attack_verb_continuous = list("clubs", "bludgeons")
attack_verb_simple = list("club", "bludgeon")
custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT)
/obj/item/melee/flyswatter
name = "flyswatter"
desc = "Useful for killing pests of all sizes."
icon = 'icons/obj/service/hydroponics/equipment.dmi'
icon_state = "flyswatter"
inhand_icon_state = "flyswatter"
icon_angle = -45
lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi'
righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi'
force = 1
throwforce = 1
attack_verb_continuous = list("swats", "smacks")
attack_verb_simple = list("swat", "smack")
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/static/list/splattable
/obj/item/melee/flyswatter/Initialize(mapload)
. = ..()
if (isnull(splattable))
splattable = typecacheof(list(
/mob/living/basic/ant,
/mob/living/basic/butterfly,
/mob/living/basic/cockroach,
/mob/living/basic/cockroach/bloodroach,
/mob/living/basic/spider/growing/spiderling,
/mob/living/basic/bee,
/obj/effect/decal/cleanable/ants,
/obj/item/queen_bee,
))
AddComponent(/datum/component/bane, affected_biotypes = MOB_BUG, pre_bane_callback = CALLBACK(src, PROC_REF(bane_check)) )
// Different type of bug mobs get different amounts of damage multipliers
/obj/item/melee/flyswatter/proc/bane_check(mob/living/target, mob/living/attacker, list/attack_modifiers)
if(isanimal_or_basicmob(target))
MODIFY_ATTACK_FORCE(attack_modifiers, 24)
else if(isflyperson(target))
MODIFY_ATTACK_FORCE(attack_modifiers, 29)
else if(ismoth(target))
MODIFY_ATTACK_FORCE(attack_modifiers, 9)
else // ?? Whatever
MODIFY_ATTACK_FORCE(attack_modifiers, 14)
/obj/item/melee/flyswatter/afterattack(atom/target, mob/user, list/modifiers, list/attack_modifiers)
if(is_type_in_typecache(target, splattable))
to_chat(user, span_warning("You easily splat [target]."))
if(QDELETED(target))
return
if(isliving(target))
new /obj/effect/decal/cleanable/insectguts(target.drop_location())
var/mob/living/bug = target
bug.investigate_log("has been splatted by a flyswatter.", INVESTIGATE_DEATHS)
bug.gib(DROP_ALL_REMAINS)
else
qdel(target)
/obj/item/proc/can_trigger_gun(mob/living/user, akimbo_usage)
if(!user.can_use_guns(src))
return FALSE
return TRUE
/obj/item/gohei
name = "gohei"
desc = "A wooden stick with white streamers at the end. Originally used by shrine maidens to purify things. Now used by the station's valued weeaboos."
resistance_flags = FLAMMABLE
force = 5
throwforce = 5
hitsound = SFX_SWING_HIT
attack_verb_continuous = list("whacks", "thwacks", "wallops", "socks")
attack_verb_simple = list("whack", "thwack", "wallop", "sock")
icon = 'icons/obj/weapons/club.dmi'
icon_state = "gohei"
inhand_icon_state = "gohei"
icon_angle = -65
lefthand_file = 'icons/mob/inhands/weapons/staves_lefthand.dmi'
righthand_file = 'icons/mob/inhands/weapons/staves_righthand.dmi'
/obj/item/melee/moonlight_greatsword
name = "moonlight greatsword"
desc = "Don't tell anyone you put any points into dex, though."
icon = 'icons/obj/weapons/sword.dmi'
icon_state = "swordon"
inhand_icon_state = "swordon"
worn_icon_state = "swordon"
icon_angle = -45
lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
w_class = WEIGHT_CLASS_BULKY
slot_flags = ITEM_SLOT_BACK|ITEM_SLOT_BELT
block_chance = 20
block_sound = 'sound/items/weapons/parry.ogg'
sharpness = SHARP_EDGED
force = 14
throwforce = 12
hitsound = 'sound/items/weapons/bladeslice.ogg'
attack_verb_continuous = list("attacks", "slashes", "slices", "tears", "lacerates", "rips", "dices", "cuts")
attack_verb_simple = list("attack", "slash", "slice", "tear", "lacerate", "rip", "dice", "cut")
var/list/alt_continuous = list("stabs", "pierces", "impales")
var/list/alt_simple = list("stab", "pierce", "impale")
/obj/item/melee/moonlight_greatsword/Initialize(mapload)
. = ..()
alt_continuous = string_list(alt_continuous)
alt_simple = string_list(alt_simple)
AddComponent(/datum/component/alternative_sharpness, SHARP_POINTY, alt_continuous, alt_simple)