diff --git a/code/game/objects/items/weapons/melee/energy.dm b/code/game/objects/items/weapons/melee/energy.dm index dae4a19d15..72fe26da36 100644 --- a/code/game/objects/items/weapons/melee/energy.dm +++ b/code/game/objects/items/weapons/melee/energy.dm @@ -134,7 +134,7 @@ /obj/item/weapon/melee/energy/sword/New() if(random_color) - blade_color = pick("red","blue","green","purple") + blade_color = pick("red","blue","green","purple","white") lcolor = blade_color /obj/item/weapon/melee/energy/sword/green/New() @@ -153,6 +153,10 @@ blade_color = "purple" lcolor = "#800080" +/obj/item/weapon/melee/energy/sword/white/New() + blade_color = "white" + lcolor = "#FFFFFF" + /obj/item/weapon/melee/energy/sword/activate(mob/living/user) if(!active) to_chat(user, "\The [src] is now energised.") @@ -161,7 +165,6 @@ attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") icon_state = "[active_state][blade_color]" - /obj/item/weapon/melee/energy/sword/deactivate(mob/living/user) if(active) to_chat(user, "\The [src] deactivates!") @@ -237,6 +240,80 @@ target.taunt(user) target.adjustFireLoss(force * 6) // 30 Burn, for 50 total. +/* + * Charge blade. Uses a cell, and costs energy per strike. + */ + +/obj/item/weapon/melee/energy/sword/charge + name = "charge sword" + desc = "A small, handheld device which emits a high-energy 'blade'." + origin_tech = list(TECH_COMBAT = 5, TECH_MAGNET = 3, TECH_ILLEGAL = 4) + active_force = 25 + armor_penetration = 25 + + var/hitcost = 75 + var/obj/item/weapon/cell/bcell = null + var/cell_type = /obj/item/weapon/cell/device + +/obj/item/weapon/melee/energy/sword/charge/proc/use_charge(var/cost) + if(active) + if(bcell) + if(bcell.checked_use(cost)) + return 1 + else + return 0 + return null + +/obj/item/weapon/melee/energy/sword/charge/examine(mob/user) + if(!..(user, 1)) + return + + if(bcell) + to_chat(user, "The blade is [round(bcell.percent())]% charged.") + if(!bcell) + to_chat(user, "The blade does not have a power source installed.") + +/obj/item/weapon/melee/energy/sword/charge/attack_self(mob/user as mob) + if((!bcell || bcell.charge < hitcost) && !active) + to_chat(user, "\The [src] does not seem to have power.") + return + ..() + +/obj/item/weapon/melee/energy/sword/charge/attack(mob/M, mob/user) + if(active) + if(!use_charge(hitcost)) + deactivate(user) + visible_message("\The [src]'s blade flickers, before retracting.") + return ..() + +/obj/item/weapon/melee/energy/sword/charge/attackby(obj/item/weapon/W, mob/user) + if(istype(W, cell_type)) + if(!bcell) + user.drop_item() + W.loc = src + bcell = W + to_chat(user, "You install a cell in [src].") + update_icon() + else + to_chat(user, "[src] already has a cell.") + else if(W.is_screwdriver() && bcell) + bcell.update_icon() + bcell.forceMove(get_turf(loc)) + bcell = null + to_chat(user, "You remove the cell from \the [src].") + deactivate() + update_icon() + return + else + ..() + +/obj/item/weapon/melee/energy/sword/charge/get_cell() + return bcell + +/obj/item/weapon/melee/energy/sword/charge/loaded/New() + ..() + bcell = new/obj/item/weapon/cell/device/weapon(src) + /* *Energy Blade */ diff --git a/code/modules/research/designs/illegal.dm b/code/modules/research/designs/illegal.dm index 1542e929b6..c195b5764b 100644 --- a/code/modules/research/designs/illegal.dm +++ b/code/modules/research/designs/illegal.dm @@ -16,4 +16,11 @@ req_tech = list(TECH_ILLEGAL = 2) materials = list(DEFAULT_WALL_MATERIAL = 500) build_path = /obj/item/weapon/storage/box/syndie_kit/chameleon - sort_string = "VASBA" \ No newline at end of file + sort_string = "VASBA" + +/datum/design/item/weapon/esword + id = "chargesword" + req_tech = list(TECH_COMBAT = 6, TECH_MAGNET = 4, TECH_ENGINEERING = 5, TECH_ILLEGAL = 4, TECH_ANOMALY = 1) + materials = list(MAT_PLASTEEL = 3500, "glass" = 1000, MAT_LEAD = 2250, MAT_METALHYDROGEN = 500) + build_path = /obj/item/weapon/melee/energy/sword/charge + sort_string = "VASCA" diff --git a/icons/mob/items/lefthand_melee.dmi b/icons/mob/items/lefthand_melee.dmi index 790d93eca6..dbef5acf99 100644 Binary files a/icons/mob/items/lefthand_melee.dmi and b/icons/mob/items/lefthand_melee.dmi differ diff --git a/icons/mob/items/righthand_melee.dmi b/icons/mob/items/righthand_melee.dmi index 8c1068a033..5cfed3c119 100644 Binary files a/icons/mob/items/righthand_melee.dmi and b/icons/mob/items/righthand_melee.dmi differ diff --git a/icons/obj/weapons.dmi b/icons/obj/weapons.dmi index 8adc02e3b5..3abf08997f 100644 Binary files a/icons/obj/weapons.dmi and b/icons/obj/weapons.dmi differ