diff --git a/code/datums/uplink/stealthy_weapons.dm b/code/datums/uplink/stealthy_weapons.dm
index 2f4cab5ff72..570b8c33413 100644
--- a/code/datums/uplink/stealthy_weapons.dm
+++ b/code/datums/uplink/stealthy_weapons.dm
@@ -11,7 +11,7 @@
/datum/uplink_item/item/stealthy_weapons/concealed_cane
name = "Concealed Cane Sword"
- item_cost = 10
+ item_cost = 40
path = /obj/item/weapon/cane/concealed
/datum/uplink_item/item/stealthy_weapons/detomatix
diff --git a/code/game/objects/items/weapons/canes.dm b/code/game/objects/items/weapons/canes.dm
index ff76a1cc4b0..63d2222834f 100644
--- a/code/game/objects/items/weapons/canes.dm
+++ b/code/game/objects/items/weapons/canes.dm
@@ -24,10 +24,9 @@
/obj/item/weapon/cane/concealed/Initialize()
. = ..()
- var/obj/item/weapon/material/butterfly/switchblade/temp_blade = new(src)
+ var/obj/item/weapon/material/sword/katana/caneblade/temp_blade = new(src)
concealed_blade = temp_blade
- temp_blade.active = TRUE
- temp_blade.update_force()
+ temp_blade.attack_self()
/obj/item/weapon/cane/concealed/attack_self(var/mob/user)
var/datum/gender/T = gender_datums[user.get_visible_gender()]
@@ -41,10 +40,11 @@
user.update_inv_l_hand(0)
user.update_inv_r_hand()
concealed_blade = null
+ update_icon()
else
..()
-/obj/item/weapon/cane/concealed/attackby(var/obj/item/weapon/material/butterfly/W, var/mob/user)
+/obj/item/weapon/cane/concealed/attackby(var/obj/item/weapon/material/sword/katana/caneblade/W, var/mob/user)
if(!src.concealed_blade && istype(W))
var/datum/gender/T = gender_datums[user.get_visible_gender()]
user.visible_message("[user] has sheathed \a [W] into [T.his] [src]!", "You sheathe \the [W] into \the [src].")
@@ -63,7 +63,7 @@
item_state = initial(icon_state)
else
name = "cane shaft"
- icon_state = "nullrod"
+ icon_state = "caneshaft"
item_state = "foldcane"
/obj/item/weapon/cane/white
@@ -122,4 +122,4 @@
playsound(src, 'sound/weapons/empty.ogg', 50, 1)
add_fingerprint(user)
- return TRUE
\ No newline at end of file
+ return TRUE
diff --git a/code/game/objects/items/weapons/material/swords.dm b/code/game/objects/items/weapons/material/swords.dm
index efc1615bdfe..e0a75ca8bd7 100644
--- a/code/game/objects/items/weapons/material/swords.dm
+++ b/code/game/objects/items/weapons/material/swords.dm
@@ -23,4 +23,64 @@
name = "katana"
desc = "Woefully underpowered in D20. This one looks pretty sharp."
icon_state = "katana"
- slot_flags = SLOT_BELT | SLOT_BACK
\ No newline at end of file
+ slot_flags = SLOT_BELT | SLOT_BACK
+
+/obj/item/weapon/material/sword/katana/caneblade
+ name = "cane blade"
+ desc = "Used for making people fall over instead of helping them stand up."
+ icon_state = "caneblade"
+ item_state = "caneblade"
+
+/obj/item/weapon/material/sword/rapier
+ name = "rapier"
+ desc = "A slender, fancy and sharply pointed sword."
+ icon_state = "rapier"
+ item_state = "rapier"
+ slot_flags = SLOT_BELT
+ applies_material_colour = 0
+ attack_verb = list("attacked", "stabbed", "prodded", "poked", "lunged")
+ edge = 0 //rapiers are pointy, but not cutty like other swords
+
+/obj/item/weapon/material/sword/longsword
+ name = "longsword"
+ desc = "A double-edged large blade."
+ icon_state = "longsword"
+ item_state = "longsword"
+ applies_material_colour = 0
+ slot_flags = SLOT_BELT | SLOT_BACK
+ can_cleave = TRUE
+
+/obj/item/weapon/material/sword/sabre
+ name = "sabre"
+ desc = "A sharp curved sword, a favored weapon of pirates far in the past."
+ icon_state = "sabre"
+ item_state = "sabre"
+ applies_material_colour = 0 //messes up the hilt color otherwise
+ slot_flags = SLOT_BELT
+
+/obj/item/weapon/material/sword/battleaxe
+ name = "battleaxe"
+ desc = "A one handed battle axe, still a deadly weapon."
+ icon_state = "axe"
+ item_state = "axe"
+ slot_flags = SLOT_BACK
+ attack_verb = list("attacked", "chopped", "cleaved", "torn", "cut")
+ applies_material_colour = 0
+ drop_sound = 'sound/items/drop/axe.ogg'
+ pickup_sound = 'sound/items/pickup/axe.ogg'
+ can_cleave = TRUE
+
+/obj/item/weapon/material/sword/battleaxe/handle_shield(mob/user, var/damage, atom/damage_source = null, mob/attacker = null, var/def_zone = null, var/attack_text = "the attack")
+ if(unique_parry_check(user, attacker, damage_source) && prob(10))
+ user.visible_message("\The [user] parries [attack_text] with \the [src]!")
+ playsound(src, 'sound/weapons/punchmiss.ogg', 50, 1)
+ return 1
+ return 0
+
+/obj/item/weapon/material/sword/gladius
+ name = "gladius"
+ desc = "An ancient short sword, designed to stab and cut."
+ icon_state = "gladius"
+ item_state = "gladius"
+ applies_material_colour = 0
+ slot_flags = SLOT_BELT
diff --git a/icons/obj/weapons.dmi b/icons/obj/weapons.dmi
index 89e51f6bf36..cb504aa5512 100644
Binary files a/icons/obj/weapons.dmi and b/icons/obj/weapons.dmi differ