From 7304f313256bbdcf7085bcf00471eb4b29b24d33 Mon Sep 17 00:00:00 2001 From: Leo Date: Fri, 27 May 2016 20:37:45 -0300 Subject: [PATCH] Revert "Removes some obselete attackby() code [Removes attackby crafting]" --- _maps/map_files/BirdStation/BirdStation.dmm | 2 +- .../map_files/DreamStation/dreamstation04.dmm | 4 +- _maps/map_files/TgStation/tgstation.2.1.3.dmm | 1 + .../objects/items/weapons/flamethrower.dm | 45 +++++++++++++++- code/game/objects/items/weapons/handcuffs.dm | 31 +++++++++++ .../objects/items/weapons/tanks/tank_types.dm | 2 +- code/game/objects/items/weapons/tools.dm | 49 ++++++++++++++++++ code/game/objects/items/weapons/weaponry.dm | 40 ++++++++++++++ code/modules/crafting/recipes.dm | 8 --- icons/obj/flamethrower.dmi | Bin 889 -> 859 bytes 10 files changed, 168 insertions(+), 14 deletions(-) diff --git a/_maps/map_files/BirdStation/BirdStation.dmm b/_maps/map_files/BirdStation/BirdStation.dmm index 70535e03ad0..c15747c8fc1 100644 --- a/_maps/map_files/BirdStation/BirdStation.dmm +++ b/_maps/map_files/BirdStation/BirdStation.dmm @@ -1410,7 +1410,7 @@ "aBf" = (/obj/machinery/light/small{dir = 8},/turf/open/floor/plasteel/white,/area/maintenance/asmaint2) "aBg" = (/obj/item/clothing/gloves/color/latex/nitrile,/turf/open/floor/plasteel/white,/area/maintenance/asmaint2) "aBh" = (/turf/open/floor/plasteel/white,/area/maintenance/asmaint2) -"aBi" = (/obj/structure/table,/obj/item/weapon/melee/baton/cattleprod,/obj/item/weapon/reagent_containers/syringe,/obj/item/weapon/restraints/handcuffs,/obj/item/clothing/tie/stethoscope,/turf/open/floor/plasteel/white,/area/space) +"aBi" = (/obj/structure/table,/obj/item/weapon/wirerod,/obj/item/weapon/reagent_containers/syringe,/obj/item/weapon/restraints/handcuffs,/obj/item/clothing/tie/stethoscope,/turf/open/floor/plasteel/white,/area/space) "aBj" = (/obj/machinery/light,/turf/open/floor/plasteel,/area/quartermaster/miningdock{name = "\improper Mining Office"}) "aBk" = (/obj/structure/cable/cyan{icon_state = "1-2"},/turf/open/floor/plating,/area/quartermaster/miningdock{name = "\improper Mining Office"}) "aBl" = (/obj/machinery/portable_atmospherics/canister/air,/turf/open/floor/plating,/area/quartermaster/miningdock{name = "\improper Mining Office"}) diff --git a/_maps/map_files/DreamStation/dreamstation04.dmm b/_maps/map_files/DreamStation/dreamstation04.dmm index c4454c5a061..a2c597f1c0a 100644 --- a/_maps/map_files/DreamStation/dreamstation04.dmm +++ b/_maps/map_files/DreamStation/dreamstation04.dmm @@ -12173,7 +12173,7 @@ "ayJ" = ( /obj/structure/rack, /obj/item/weapon/lipstick/jade, -/obj/item/weapon/melee/baton/cattleprod, +/obj/item/weapon/wirerod, /obj/effect/spawner/lootdrop/maintenance{ lootcount = 3; name = "3maintenance loot spawner" @@ -77150,7 +77150,7 @@ tag = "icon-1-2"; icon_state = "1-2" }, -/obj/item/weapon/melee/baton/cattleprod, +/obj/item/weapon/wirerod, /turf/open/floor/plating/airless, /area/engine/engineering) "cQP" = ( diff --git a/_maps/map_files/TgStation/tgstation.2.1.3.dmm b/_maps/map_files/TgStation/tgstation.2.1.3.dmm index 9fbf3d8fd00..df61d13b779 100644 --- a/_maps/map_files/TgStation/tgstation.2.1.3.dmm +++ b/_maps/map_files/TgStation/tgstation.2.1.3.dmm @@ -62391,6 +62391,7 @@ "cwy" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/table_frame, +/obj/item/weapon/wirerod, /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, /area/maintenance/asmaint2) diff --git a/code/game/objects/items/weapons/flamethrower.dm b/code/game/objects/items/weapons/flamethrower.dm index 3975886caea..218f2fba57c 100644 --- a/code/game/objects/items/weapons/flamethrower.dm +++ b/code/game/objects/items/weapons/flamethrower.dm @@ -12,6 +12,7 @@ w_class = 3 materials = list(MAT_METAL=500) origin_tech = "combat=1;plasmatech=1" + var/status = 0 var/throw_amount = 100 var/lit = 0 //on or off var/operating = 0//cooldown @@ -48,7 +49,7 @@ /obj/item/weapon/flamethrower/update_icon() overlays.Cut() if(igniter) - overlays += "+igniter1" + overlays += "+igniter[status]" if(ptank) overlays += "+ptank" if(lit) @@ -69,7 +70,41 @@ flame_turf(turflist) /obj/item/weapon/flamethrower/attackby(obj/item/W, mob/user, params) - if(istype(W,/obj/item/weapon/tank/internals/plasma)) + if(istype(W, /obj/item/weapon/wrench) && !status)//Taking this apart + var/turf/T = get_turf(src) + if(weldtool) + weldtool.loc = T + weldtool = null + if(igniter) + igniter.loc = T + igniter = null + if(ptank) + ptank.loc = T + ptank = null + new /obj/item/stack/rods(T) + qdel(src) + return + + else if(istype(W, /obj/item/weapon/screwdriver) && igniter && !lit) + status = !status + user << "[igniter] is now [status ? "secured" : "unsecured"]!" + update_icon() + return + + else if(isigniter(W)) + var/obj/item/device/assembly/igniter/I = W + if(I.secured) + return + if(igniter) + return + if(!user.unEquip(W)) + return + I.loc = src + igniter = I + update_icon() + return + + else if(istype(W,/obj/item/weapon/tank/internals/plasma)) if(ptank) user << "There appears to already be a plasma tank loaded in [src]!" return @@ -110,6 +145,8 @@ if(href_list["light"]) if(!ptank) return + if(!status) + return lit = !lit if(lit) SSobj.processing |= src @@ -137,7 +174,9 @@ ..() weldtool = locate(/obj/item/weapon/weldingtool) in contents igniter = locate(/obj/item/device/assembly/igniter) in contents + weldtool.status = 0 igniter.secured = 0 + status = 1 update_icon() //Called from turf.dm turf/dblclick @@ -179,9 +218,11 @@ ..() if(!weldtool) weldtool = new /obj/item/weapon/weldingtool(src) + weldtool.status = 0 if(!igniter) igniter = new /obj/item/device/assembly/igniter(src) igniter.secured = 0 + status = 1 update_icon() /obj/item/weapon/flamethrower/full/tank/New(var/loc) diff --git a/code/game/objects/items/weapons/handcuffs.dm b/code/game/objects/items/weapons/handcuffs.dm index c88ddc1843d..bd261f6a22c 100644 --- a/code/game/objects/items/weapons/handcuffs.dm +++ b/code/game/objects/items/weapons/handcuffs.dm @@ -151,6 +151,37 @@ desc = "Fake handcuffs meant for erotic roleplay." icon_state = "handcuffGag" +/obj/item/weapon/restraints/handcuffs/cable/attackby(obj/item/I, mob/user, params) + ..() + if(istype(I, /obj/item/stack/rods)) + var/obj/item/stack/rods/R = I + if (R.use(1)) + var/obj/item/weapon/wirerod/W = new /obj/item/weapon/wirerod + if(!remove_item_from_storage(user)) + user.unEquip(src) + user.put_in_hands(W) + user << "You wrap the cable restraint around the top of the rod." + qdel(src) + else + user << "You need one rod to make a wired rod!" + return + else if(istype(I, /obj/item/stack/sheet/metal)) + var/obj/item/stack/sheet/metal/M = I + if(M.amount < 6) + user << "You need at least six metal sheets to make good enough weights!" + return + user << "You begin to apply [I] to [src]..." + if(do_after(user, 35, target = src)) + var/obj/item/weapon/restraints/legcuffs/bola/S = new /obj/item/weapon/restraints/legcuffs/bola + M.use(6) + user.put_in_hands(S) + user << "You make some weights out of [I] and tie them to [src]." + if(!remove_item_from_storage(user)) + user.unEquip(src) + qdel(src) + else + return ..() + /obj/item/weapon/restraints/handcuffs/cable/zipties/cyborg/attack(mob/living/carbon/C, mob/user) if(isrobot(user)) if(!C.handcuffed) diff --git a/code/game/objects/items/weapons/tanks/tank_types.dm b/code/game/objects/items/weapons/tanks/tank_types.dm index 2177daf2c1d..54eb7d7910f 100644 --- a/code/game/objects/items/weapons/tanks/tank_types.dm +++ b/code/game/objects/items/weapons/tanks/tank_types.dm @@ -93,7 +93,7 @@ /obj/item/weapon/tank/internals/plasma/attackby(obj/item/weapon/W, mob/user, params) if(istype(W, /obj/item/weapon/flamethrower)) var/obj/item/weapon/flamethrower/F = W - if(F.ptank) + if ((!F.status)||(F.ptank)) return src.master = F F.ptank = src diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm index bd69eea0d60..9f7b37c2542 100644 --- a/code/game/objects/items/weapons/tools.dm +++ b/code/game/objects/items/weapons/tools.dm @@ -202,6 +202,7 @@ materials = list(MAT_METAL=70, MAT_GLASS=30) origin_tech = "engineering=1" var/welding = 0 //Whether or not the welding tool is off(0), on(1) or currently welding(2) + var/status = 1 //Whether the welder is secured or unsecured (able to attach rods to it to make a flamethrower) var/max_fuel = 20 //The max amount of fuel the welder can hold var/change_icons = 1 var/can_off_process = 0 @@ -243,6 +244,16 @@ user.visible_message("[user] welds \his every orifice closed! It looks like \he's trying to commit suicide..") return (FIRELOSS) + +/obj/item/weapon/weldingtool/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/weapon/screwdriver)) + flamethrower_screwdriver(I, user) + else if(istype(I, /obj/item/stack/rods)) + flamethrower_rods(I, user) + else + return ..() + + /obj/item/weapon/weldingtool/attack(mob/living/carbon/human/H, mob/user) if(!istype(H)) return ..() @@ -356,6 +367,9 @@ //Toggles the welder off and on /obj/item/weapon/weldingtool/proc/toggle(mob/user, message = 0) + if(!status) + user << "[src] can't be turned on while unsecured!" + return welding = !welding if(welding) if(get_fuel() >= 1) @@ -381,6 +395,33 @@ /obj/item/weapon/weldingtool/is_hot() return welding * heat +/obj/item/weapon/weldingtool/proc/flamethrower_screwdriver(obj/item/I, mob/user) + if(welding) + user << "Turn it off first!" + return + status = !status + if(status) + user << "You resecure [src]." + else + user << "[src] can now be attached and modified." + add_fingerprint(user) + +/obj/item/weapon/weldingtool/proc/flamethrower_rods(obj/item/I, mob/user) + if(!status) + var/obj/item/stack/rods/R = I + if (R.use(1)) + var/obj/item/weapon/flamethrower/F = new /obj/item/weapon/flamethrower(user.loc) + if(!remove_item_from_storage(F)) + user.unEquip(src) + loc = F + F.weldtool = src + add_fingerprint(user) + user << "You add a rod to a welder, starting to build a flamethrower." + user.put_in_hands(F) + else + user << "You need one rod to start building a flamethrower!" + return + /obj/item/weapon/weldingtool/largetank name = "industrial welding tool" desc = "A slightly larger welder with a larger tank." @@ -396,6 +437,10 @@ icon_state = "indwelder" toolspeed = 2 +/obj/item/weapon/weldingtool/largetank/flamethrower_screwdriver() + return + + /obj/item/weapon/weldingtool/mini name = "emergency welding tool" desc = "A miniature welder used during emergencies." @@ -405,6 +450,10 @@ materials = list(MAT_METAL=30, MAT_GLASS=10) change_icons = 0 +/obj/item/weapon/weldingtool/mini/flamethrower_screwdriver() + return + + /obj/item/weapon/weldingtool/hugetank name = "upgraded industrial welding tool" desc = "An upgraded welder based of the industrial welder." diff --git a/code/game/objects/items/weapons/weaponry.dm b/code/game/objects/items/weapons/weaponry.dm index 58696ae9573..c389b785427 100644 --- a/code/game/objects/items/weapons/weaponry.dm +++ b/code/game/objects/items/weapons/weaponry.dm @@ -78,6 +78,46 @@ user.visible_message("[user] is slitting \his stomach open with the [src.name]! It looks like \he's trying to commit seppuku.") return(BRUTELOSS) +/obj/item/weapon/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 = CONDUCT + force = 9 + throwforce = 10 + w_class = 3 + materials = list(MAT_METAL=1150, MAT_GLASS=75) + attack_verb = list("hit", "bludgeoned", "whacked", "bonked") + +/obj/item/weapon/wirerod/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/weapon/shard)) + var/obj/item/weapon/twohanded/spear/S = new /obj/item/weapon/twohanded/spear + + if(!remove_item_from_storage(user)) + user.unEquip(src) + user.unEquip(I) + + user.put_in_hands(S) + user << "You fasten the glass shard to the top of the rod with the cable." + qdel(I) + qdel(src) + + else if(istype(I, /obj/item/device/assembly/igniter) && !(I.flags & NODROP)) + var/obj/item/weapon/melee/baton/cattleprod/P = new /obj/item/weapon/melee/baton/cattleprod + + if(!remove_item_from_storage(user)) + user.unEquip(src) + user.unEquip(I) + + user.put_in_hands(P) + user << "You fasten [I] to the top of the rod with the cable." + qdel(I) + qdel(src) + else + return ..() + + /obj/item/weapon/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" diff --git a/code/modules/crafting/recipes.dm b/code/modules/crafting/recipes.dm index 9dc01f1c627..77cce99d702 100644 --- a/code/modules/crafting/recipes.dm +++ b/code/modules/crafting/recipes.dm @@ -9,14 +9,6 @@ var/chem_catalysts[] = list() //like tools but for reagents var/category = CAT_NONE //where it shows up in the crafting UI -/datum/crafting_recipe/spear - name = "Spear" - result = /obj/item/weapon/twohanded/spear - reqs = list(/obj/item/weapon/restraints/handcuffs/cable = 1, - /obj/item/weapon/shard = 1, - /obj/item/stack/rods = 1) - time = 40 - category = CAT_WEAPON /datum/crafting_recipe/pin_removal name = "Pin Removal" diff --git a/icons/obj/flamethrower.dmi b/icons/obj/flamethrower.dmi index 748737acff8c545fff521b99654818894235dec5..dd470c47809b8f5868164f18230986fc73645afb 100644 GIT binary patch delta 571 zcmV-B0>u6K2HOUZBmsDlC43brX}A*r0004WQchCCnO$6-sZ+ZD z$n$Xq^4ZxsJ#f0eAcPcu<6QNI&hyq8D9B=QMXtjbn76-wQY;lWx1kKQ_Z7=KwFNTZ z;ujdWS6fsA4{D2UU=`DVCZ++k4lIJLL@rjEi1iT!K@bFS!dT?`Wf|20D<65ugaTsr z9{HYeA-Je2SqYOTK1F?BzE73TO3q7FU&_j0UGwLc@dkS3dwmUm2%*jZHK||6m+zbJ z^=^eS!!lw_0ZQiUo!yBmUdcbfx^(`Z|QVv)Qs8~;JU?XM!vr5;K*Oyz# zcD;vBUw^BAf!+JW(+;RF@1VIAg%lF{AC*Q;C-T59` z@6PwBNB8|d(Bt@j&U~MF^1punKj!$9WJzbf_vQadbUWYcQPp?TLs z0jK=~(0Y^a&HezZe*ju<^1ay~VD=9{>&JX=zMh|l)SG<&Lw^9ce$4mo{s4IWn6I7v z0ReSqe*m;@rCV2j0JLroaP$X2>vq0(^anue{(KLuBgj7%=M&<`W|upH3L5|b002ov JPDHLkV1nm?6!ZW9 delta 601 zcmV-f0;c`j2Kfe%BmsMoC43mbz`!_Sy5Il+00DGTPE!Ct=GbNc005XUQWd&D17jQTM0KpVhV!oQKcmMza`$%IV$!}EdPCnhhex~|OmS~nIiZTvc1#WUTNoDi{^L#0L~vkx%oJ9*;BFY^M1eZ*Zv{A zK-;z+xxHU-?H__sTdk=-_CB}w3$Fb`c!7=9)Ny@o>%D9L5IkRRb-DA%BkdQ|wtIzl zpE!@RU+CW8FXBdP>7tlw2;J*TbAP9mm zB3!@c`ajq2x&F`fd!GN#fWIUEPw>y<0;Inu(C?`{LH>VeK>Is4_hIz7IRg1RH^&8lzjJdqANV^rhx38Ib8|eO_IGYRV7}Aexw$b<0n*>O`LF^Gf9K|d n3b_28n|m~1`n~wSAh7rbmJDUF5X{n>00000NkvXXu0mjf&DJy@