From 05decbebcd8429a10d8363bbd9de6b9e1da8b456 Mon Sep 17 00:00:00 2001 From: skull132 Date: Wed, 17 Dec 2014 00:42:03 +0200 Subject: [PATCH] Stunbaton Cells Upgrades the stunbaton code to have cells. --- code/game/gamemodes/factions.dm | 2 +- code/game/gamemodes/game_mode.dm | 2 +- code/game/machinery/recharger.dm | 17 +- code/game/objects/items/devices/uplinks.dm | 8 +- code/game/objects/items/weapons/stunbaton.dm | 280 +++++++----------- .../crates_lockers/closets/secure/security.dm | 6 +- code/game/objects/structures/watercloset.dm | 31 +- code/modules/customitems/item_defines.dm | 3 +- icons/obj/weapons.dmi | Bin 33860 -> 34060 bytes 9 files changed, 139 insertions(+), 210 deletions(-) diff --git a/code/game/gamemodes/factions.dm b/code/game/gamemodes/factions.dm index 363d43d5..dd1f3ba7 100644 --- a/code/game/gamemodes/factions.dm +++ b/code/game/gamemodes/factions.dm @@ -125,7 +125,7 @@ /obj/item/weapon/melee/energy/sword:4:Energy Sword; /obj/item/weapon/storage/box/syndicate:10:Syndicate Bundle; /obj/item/weapon/storage/box/emps:3:5 EMP Grenades; -/obj/item/weapon/melee/baton/stunrod:4:Stunrod; +/obj/item/weapon/melee/baton/stunrod/loaded:4:Stunrod; Whitespace:Seperator; Stealthy and Inconspicuous Weapons; /obj/item/weapon/pen/paralysis:3:Paralysis Pen; diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm index acb858c8..16bb208e 100644 --- a/code/game/gamemodes/game_mode.dm +++ b/code/game/gamemodes/game_mode.dm @@ -37,7 +37,7 @@ /obj/item/weapon/melee/energy/sword:4:Energy Sword; /obj/item/weapon/storage/box/syndicate:10:Syndicate Bundle; /obj/item/weapon/storage/box/emps:3:5 EMP Grenades; -/obj/item/weapon/melee/baton/stunrod:4:Stunrod; +/obj/item/weapon/melee/baton/stunrod/loaded:4:Stunrod; Whitespace:Seperator; Stealthy and Inconspicuous Weapons; /obj/item/weapon/storage/box/walkingcane:5:Disguised Sword; diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm index 1e22bebb..5f757d72 100644 --- a/code/game/machinery/recharger.dm +++ b/code/game/machinery/recharger.dm @@ -91,15 +91,7 @@ obj/machinery/recharger/process() if(istype(charging, /obj/item/weapon/melee/baton)) var/obj/item/weapon/melee/baton/B = charging -//Should really update the baton to use cells - if(B.charges < initial(B.charges)) - B.charges++ - icon_state = "recharger1" - use_power(150) - else - icon_state = "recharger2" - -/* if(B.bcell) + if(B.bcell) if(!B.bcell.fully_charged()) icon_state = icon_state_charging B.bcell.give(active_power_usage*CELLRATE) @@ -110,7 +102,6 @@ obj/machinery/recharger/process() else icon_state = icon_state_idle update_use_power(1) -*/ return /* if(istype(charging, /obj/item/device/laptop)) @@ -147,12 +138,8 @@ obj/machinery/recharger/emp_act(severity) else if(istype(charging, /obj/item/weapon/melee/baton)) var/obj/item/weapon/melee/baton/B = charging - //same here - if(B.charges) - B.charges = 0 -/* if(B.bcell) + if(B.bcell) B.bcell.charge = 0 -*/ ..(severity) obj/machinery/recharger/update_icon() //we have an update_icon() in addition to the stuff in process to make it feel a tiny bit snappier. diff --git a/code/game/objects/items/devices/uplinks.dm b/code/game/objects/items/devices/uplinks.dm index 9870f88b..f052f111 100644 --- a/code/game/objects/items/devices/uplinks.dm +++ b/code/game/objects/items/devices/uplinks.dm @@ -30,7 +30,7 @@ A list of items and costs is stored under the datum of every game mode, alongsid for(var/D in ItemList) var/list/O = text2list(D, ":") if(O.len>0) - valid_items += O[1] + valid_items += O[1] @@ -147,7 +147,7 @@ A list of items and costs is stored under the datum of every game mode, alongsid randomItems.Add("/obj/item/weapon/melee/energy/sword") //Energy Sword randomItems.Add("/obj/item/clothing/mask/gas/voice") //Voice Changer randomItems.Add("/obj/item/device/chameleon") //Chameleon Projector - randomItems.Add("/obj/item/weapon/melee/baton/stunrod") //Stunrod + randomItems.Add("/obj/item/weapon/melee/baton/stunrod/loaded") //Stunrod if(uses > 2) randomItems.Add("/obj/item/weapon/storage/box/emps") //EMP Grenades @@ -198,7 +198,7 @@ A list of items and costs is stored under the datum of every game mode, alongsid uses -= 6 if("/obj/item/weapon/gun/energy/crossbow" , "/obj/item/device/powersink" , "/obj/item/weapon/storage/box/walkingcane") uses -= 5 - if("/obj/item/weapon/melee/energy/sword" , "/obj/item/clothing/mask/gas/voice" , "/obj/item/device/chameleon" , "/obj/item/weapon/melee/baton/stunrod") + if("/obj/item/weapon/melee/energy/sword" , "/obj/item/clothing/mask/gas/voice" , "/obj/item/device/chameleon" , "/obj/item/weapon/melee/baton/stunrod/loaded") uses -= 4 if("/obj/item/weapon/storage/box/emps" , "/obj/item/weapon/pen/paralysis" , "/obj/item/weapon/cartridge/syndicate" , "/obj/item/clothing/under/chameleon" , \ "/obj/item/weapon/card/emag" , "/obj/item/weapon/storage/box/syndie_kit/space" , "/obj/item/device/encryptionkey/binary" , \ @@ -276,7 +276,7 @@ A list of items and costs is stored under the datum of every game mode, alongsid feedback_add_details("traitor_uplink_items_bought","GM") if("/obj/item/weapon/storage/box/syndie_kit/masks") feedback_add_details("traitor_uplink_items_bought","MM") - if("/obj/item/weapon/melee/baton/stunrod") + if("/obj/item/weapon/melee/baton/stunrod/loaded") feedback_add_details("traitor_uplink_items_bought","SR") diff --git a/code/game/objects/items/weapons/stunbaton.dm b/code/game/objects/items/weapons/stunbaton.dm index bddfda17..4d8d97d5 100644 --- a/code/game/objects/items/weapons/stunbaton.dm +++ b/code/game/objects/items/weapons/stunbaton.dm @@ -1,56 +1,105 @@ /obj/item/weapon/melee/baton - name = "stun baton" + name = "stunbaton" desc = "A stun baton for incapacitating people with." icon_state = "stunbaton" item_state = "baton" flags = FPRINT | TABLEPASS slot_flags = SLOT_BELT - force = 10 + force = 15 + sharp = 0 + edge = 0 throwforce = 7 w_class = 3 - var/charges = 10 - var/status = 0 - var/mob/foundmob = "" //Used in throwing proc. - origin_tech = "combat=2" + attack_verb = list("beaten") + var/status = 0 //whether the thing is on or not + var/obj/item/weapon/cell/bcell = null + var/hitcost = 1000 //oh god why do power cells carry so much charge? We probably need to make a distinction between "industrial" sized power cells for APCs and power cells for everything else. + var/mob/foundmob = "" //Throwing! And proc. - suicide_act(mob/user) - viewers(user) << "\red [user] is putting the live [src.name] in \his mouth! It looks like \he's trying to commit suicide." - return (FIRELOSS) +/obj/item/weapon/melee/baton/suicide_act(mob/user) + user.visible_message("[user] is putting the live [name] in \his mouth! It looks like \he's trying to commit suicide.") + return (FIRELOSS) + +/obj/item/weapon/melee/baton/New() + ..() + update_icon() + return + +/obj/item/weapon/melee/baton/loaded/New() //this one starts with a cell pre-installed. + ..() + bcell = new/obj/item/weapon/cell/high(src) + update_icon() + return + +/obj/item/weapon/melee/baton/proc/deductcharge(var/chrgdeductamt) + if(bcell) + if(bcell.use(chrgdeductamt)) + return 1 + else + status = 0 + update_icon() + return 0 /obj/item/weapon/melee/baton/update_icon() if(status) - icon_state = "stunbaton_active" + icon_state = "[initial(name)]_active" + else if(!bcell) + icon_state = "[initial(name)]_nocell" else - icon_state = "stunbaton" + icon_state = "[initial(name)]" -/obj/item/weapon/melee/baton/attack_self(mob/user as mob) - if(status && (CLUMSY in user.mutations) && prob(50)) - user << "\red You grab the [src] on the wrong side." - user.Weaken(30) - charges-- - if(charges < 1) +/obj/item/weapon/melee/baton/examine() + set src in view(1) + ..() + if(bcell) + usr <<"The baton is [round(bcell.percent())]% charged." + if(!bcell) + usr <<"The baton does not have a power source installed." + +/obj/item/weapon/melee/baton/attackby(obj/item/weapon/W, mob/user) + if(istype(W, /obj/item/weapon/cell)) + if(!bcell) + user.drop_item() + W.loc = src + bcell = W + user << "You install a cell in [src]." + update_icon() + else + user << "[src] already has a cell." + + else if(istype(W, /obj/item/weapon/screwdriver)) + if(bcell) + bcell.updateicon() + bcell.loc = get_turf(src.loc) + bcell = null + user << "You remove the cell from the [src]." status = 0 update_icon() - return - if(charges > 0) + return + ..() + return + +/obj/item/weapon/melee/baton/attack_self(mob/user) + if(bcell && bcell.charge > hitcost) status = !status - user << "\The [src] is now [status ? "on" : "off"]." - playsound(src.loc, "sparks", 75, 1, -1) + user << "[src] is now [status ? "on" : "off"]." + playsound(loc, "sparks", 75, 1, -1) update_icon() else status = 0 - user << "\The [src] is out of charge." + if(!bcell) + user << "[src] does not have a power source!" + else + user << "[src] is out of charge." add_fingerprint(user) -/obj/item/weapon/melee/baton/attack(mob/M as mob, mob/user as mob) + +/obj/item/weapon/melee/baton/attack(mob/M, mob/user) if(status && (CLUMSY in user.mutations) && prob(50)) user << "You accidentally hit yourself with the [src]!" user.Weaken(30) - charges-- - if(charges < 1) - status = 0 - update_icon() + deductcharge(hitcost) return var/mob/living/carbon/human/H = M @@ -61,15 +110,15 @@ if(user.a_intent == "hurt") if(!..()) return //H.apply_effect(5, WEAKEN, 0) - H.visible_message("[M] has been beaten with the [src] by [user]!") + M.visible_message("[M] has been beaten with the [src] by [user]!") - user.attack_log += "\[[time_stamp()]\] Beat [H.name] ([H.ckey]) with [src.name]" - H.attack_log += "\[[time_stamp()]\] Beaten by [user.name] ([user.ckey]) with [src.name]" - msg_admin_attack("[user.name] ([user.ckey]) beat [H.name] ([H.ckey]) with [src.name] (JMP)") + user.attack_log += "\[[time_stamp()]\] Beat [M.name] ([M.ckey]) with [src.name]" + M.attack_log += "\[[time_stamp()]\] Beaten by [user.name] ([user.ckey]) with [src.name]" + msg_admin_attack("[user.name] ([user.ckey]) beat [M.name] ([M.ckey]) with [src.name] (JMP)") - playsound(src.loc, "swing_hit", 50, 1, -1) + playsound(loc, "swing_hit", 50, 1, -1) else if(!status) - H.visible_message("[M] has been prodded with the [src] by [user]. Luckily it was off.") + M.visible_message("[M] has been prodded with the [src] by [user]. Luckily it was off.") return if(status) @@ -77,21 +126,21 @@ H.apply_effect(10, WEAKEN, 0) H.apply_effect(10, STUTTER, 0) user.lastattacked = M - H.lastattacker = user + M.lastattacker = user if(isrobot(src.loc)) var/mob/living/silicon/robot/R = src.loc if(R && R.cell) R.cell.use(50) else - charges-- - H.visible_message("[M] has been stunned with the [src] by [user]!") + deductcharge(hitcost) + M.visible_message("[M] has been stunned with the [src] by [user]!") - user.attack_log += "\[[time_stamp()]\] Stunned [H.name] ([H.ckey]) with [src.name]" - H.attack_log += "\[[time_stamp()]\] Stunned by [user.name] ([user.ckey]) with [src.name]" - msg_admin_attack("[key_name(user)] stunned [key_name(H)] with [src.name] - JMP") + user.attack_log += "\[[time_stamp()]\] Stunned [M.name] ([M.ckey]) with [src.name]" + M.attack_log += "\[[time_stamp()]\] Stunned by [user.name] ([user.ckey]) with [src.name]" + msg_admin_attack("[key_name(user)] stunned [key_name(M)] with [src.name] - JMP") playsound(src.loc, 'sound/weapons/Egloves.ogg', 50, 1, -1) - if(charges < 1) + if(bcell && bcell.charge < hitcost) status = 0 update_icon() @@ -106,7 +155,7 @@ H.apply_effect(10, STUN, 0) H.apply_effect(10, WEAKEN, 0) H.apply_effect(10, STUTTER, 0) - charges-- + deductcharge(hitcost) for(var/mob/M in player_list) if(M.key == src.fingerprintslast) foundmob = M @@ -118,15 +167,20 @@ msg_admin_attack("Flying [src.name], last touched by ([src.fingerprintslast]) stunned [key_name(H)] - JMP" ) /obj/item/weapon/melee/baton/emp_act(severity) - switch(severity) - if(1) - charges = 0 - if(2) - charges = max(0, charges - 5) - if(charges < 1) - status = 0 - update_icon() + if(bcell) + bcell.emp_act(severity) //let's not duplicate code everywhere if we don't have to please. + ..() +//secborg stun baton module +/obj/item/weapon/melee/baton/robot/attack_self(mob/user) + //try to find our power cell + var/mob/living/silicon/robot/R = loc + if (istype(R)) + bcell = R.cell + return ..() + +/obj/item/weapon/melee/baton/robot/attackby(obj/item/weapon/W, mob/user) + return /* * @@ -137,133 +191,19 @@ */ /obj/item/weapon/melee/baton/stunrod - name = "stun rod" + name = "stunrod" desc = "A more-than-lethal weapon used to deal with high threat situations." icon_state = "stunrod" item_state = "stunrod" flags = FPRINT | TABLEPASS slot_flags = SLOT_BELT - force = 12 + force = 15 throwforce = 8 w_class = 3 - origin_tech = "combat=4,illegal=2" - suicide_act(mob/user) - viewers(user) << "\red [user] is putting the live [src.name] in \his mouth! It looks like \he's trying to commit suicide." - return (FIRELOSS) - -/obj/item/weapon/melee/baton/stunrod/update_icon() - if(status) - icon_state = "stunrod_active" - item_state = "stunrod_active" - else - icon_state = "stunrod" - item_state = "stunrod" - -/obj/item/weapon/melee/baton/stunrod/attack_self(mob/user as mob) - if(status && (CLUMSY in user.mutations) && prob(50)) - user << "\red You grab the [src] on the wrong side and burn yourself." - user.Weaken(40) - charges-- - if(charges < 1) - status = 0 - update_icon() - return - if(charges > 0) - status = !status - user << "\The [src] is now [status ? "on" : "off"]." - playsound(src.loc, "sparks", 75, 1, -1) - update_icon() - else - status = 0 - user << "\The [src] is out of charge." - add_fingerprint(user) - -/obj/item/weapon/melee/baton/stunrod/attack(mob/M as mob, mob/user as mob) - if(status && (CLUMSY in user.mutations) && prob(50)) - user << "You accidentally hit yourself with the [src]!" - user.Weaken(20) -// user.apply_damage(10,BURN) - charges-- - if(charges < 1) - status = 0 - update_icon() - return - - var/mob/living/carbon/human/H = M - if(isrobot(M)) - ..() - return - - if(user.a_intent == "hurt") - if(!..()) return - H.apply_effect(5, WEAKEN, 0) - H.apply_damage(15, BURN) - H.visible_message("[M] has been beaten with the [src] by [user]!") - - user.attack_log += "\[[time_stamp()]\] Beat [H.name] ([H.ckey]) with [src.name]" - H.attack_log += "\[[time_stamp()]\] Beaten by [user.name] ([user.ckey]) with [src.name]" - msg_admin_attack("[user.name] ([user.ckey]) beat [H.name] ([H.ckey]) with [src.name] (JMP)") - - playsound(src.loc, "swing_hit", 50, 1, -1) - else if(!status) - H.visible_message("[M] has been prodded with the [src] by [user]. Luckily it was off.") - return - - if(status) - H.apply_effect(5, STUN, 0) - H.apply_effect(5, WEAKEN, 0) - H.apply_effect(5, STUTTER, 0) - H.apply_damage(15, BURN) - user.lastattacked = M - H.lastattacker = user - if(isrobot(src.loc)) - var/mob/living/silicon/robot/R = src.loc - if(R && R.cell) - R.cell.use(75) - else - charges-- - H.visible_message("[M] has been stunned with the [src] by [user]!") - - user.attack_log += "\[[time_stamp()]\] Stunned [H.name] ([H.ckey]) with [src.name]" - H.attack_log += "\[[time_stamp()]\] Stunned by [user.name] ([user.ckey]) with [src.name]" - msg_admin_attack("[key_name(user)] stunned [key_name(H)] with [src.name] - JMP") - - playsound(src.loc, 'sound/weapons/Egloves.ogg', 50, 1, -1) - if(charges < 1) - status = 0 - update_icon() - - add_fingerprint(user) - -/obj/item/weapon/melee/baton/stunrod/throw_impact(atom/hit_atom) - . = ..() - if (prob(50)) - if(istype(hit_atom, /mob/living)) - var/mob/living/carbon/human/H = hit_atom - if(status) - H.apply_effect(5, STUN, 0) - H.apply_effect(5, WEAKEN, 0) - H.apply_effect(5, STUTTER, 0) - H.apply_damage(15, BURN) - charges-- - - for(var/mob/M in player_list) if(M.key == src.fingerprintslast) - foundmob = M - break - - H.visible_message("[src], thrown by [foundmob.name], strikes [H] and stuns them!") - - H.attack_log += "\[[time_stamp()]\] Stunned by thrown [src.name] last touched by ([src.fingerprintslast])" - msg_admin_attack("Flying [src.name], last touched by ([src.fingerprintslast]) stunned [key_name(H)] - JMP" ) - -/obj/item/weapon/melee/baton/stunrod/emp_act(severity) - switch(severity) - if(1) - charges = 0 - if(2) - charges = max(0, charges - 5) - if(charges < 1) - status = 0 - update_icon() \ No newline at end of file +/obj/item/weapon/melee/baton/stunrod/loaded/New() //this one starts with a cell pre-installed. + ..() + bcell = new/obj/item/weapon/cell/high(src) + update_icon() + return diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm index 58da2b2a..0104167a 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm @@ -119,7 +119,7 @@ new /obj/item/weapon/storage/box/flashbangs(src) new /obj/item/weapon/storage/belt/security(src) new /obj/item/device/flash(src) - new /obj/item/weapon/melee/baton(src) + new /obj/item/weapon/melee/baton/loaded(src) new /obj/item/weapon/gun/energy/gun/pistol(src) new /obj/item/clothing/tie/holster/waist(src) new /obj/item/weapon/melee/telebaton(src) @@ -157,7 +157,7 @@ new /obj/item/weapon/storage/box/flashbangs(src) new /obj/item/weapon/storage/belt/security(src) new /obj/item/weapon/reagent_containers/spray/pepper(src) - new /obj/item/weapon/melee/baton(src) + new /obj/item/weapon/melee/baton/loaded(src) new /obj/item/weapon/gun/energy/taser(src) new /obj/item/weapon/storage/box/holobadge(src) return @@ -189,7 +189,7 @@ new /obj/item/device/flash(src) new /obj/item/weapon/reagent_containers/spray/pepper(src) new /obj/item/weapon/grenade/flashbang(src) - new /obj/item/weapon/melee/baton(src) + new /obj/item/weapon/melee/baton/loaded(src) new /obj/item/weapon/gun/energy/taser(src) new /obj/item/clothing/glasses/sunglasses/sechud(src) new /obj/item/taperoll/police(src) diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm index adde9371..e106b08f 100644 --- a/code/game/objects/structures/watercloset.dm +++ b/code/game/objects/structures/watercloset.dm @@ -370,20 +370,21 @@ else if (istype(O, /obj/item/weapon/melee/baton)) var/obj/item/weapon/melee/baton/B = O - if (B.charges > 0 && B.status == 1) - flick("baton_active", src) - user.Stun(10) - user.stuttering = 10 - user.Weaken(10) - if(isrobot(user)) - var/mob/living/silicon/robot/R = user - R.cell.charge -= 20 - else - B.charges-- - user.visible_message( \ - "[user] was stunned by his wet [O].", \ - "\red You have wet \the [O], it shocks you!") - return + if(B.bcell) + if(B.bcell.charge > 0 && B.status == 1) + flick("baton_active", src) + user.Stun(10) + user.stuttering = 10 + user.Weaken(10) + if(isrobot(user)) + var/mob/living/silicon/robot/R = user + R.cell.charge -= 20 + else + B.deductcharge(B.hitcost) + user.visible_message( \ + "[user] was stunned by \his wet [O]!", \ + "[user] was stunned by \his wet [O]!") + return var/turf/location = user.loc if(!isturf(location)) return @@ -429,4 +430,4 @@ /obj/structure/sink/puddle/attackby(obj/item/O as obj, mob/user as mob) icon_state = "puddle-splash" ..() - icon_state = "puddle" \ No newline at end of file + icon_state = "puddle" diff --git a/code/modules/customitems/item_defines.dm b/code/modules/customitems/item_defines.dm index 2a50ed46..67842318 100644 --- a/code/modules/customitems/item_defines.dm +++ b/code/modules/customitems/item_defines.dm @@ -292,6 +292,7 @@ icon_state = "tool_flask" volume = 60 +/* /obj/item/weapon/melee/baton/fluff/omnivac_baton //Tiger Claw - Zander Moon - omnivac - DONE name = "Tiger Claw" desc = "A small energy dagger given to Golden Tigers meant to incapacitate people quickly." @@ -325,7 +326,7 @@ status = 0 user << "\The [src] is out of charge." add_fingerprint(user) - +*/ /* /obj/item/device/modkit/fluff/omnivac_modkit //Ornate box - Zander Moon - omnivac - SPRITE name = "ornate box" diff --git a/icons/obj/weapons.dmi b/icons/obj/weapons.dmi index 47dc4319d40bbda479e8ebad003ef3aca943b57a..22b852c22dffaf19df22ee771f78fda77dc7b118 100644 GIT binary patch delta 13617 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 delta 13466 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