diff --git a/code/game/dna/genes/vg_powers.dm b/code/game/dna/genes/vg_powers.dm index f6bb7866351..0221d31c6f5 100644 --- a/code/game/dna/genes/vg_powers.dm +++ b/code/game/dna/genes/vg_powers.dm @@ -221,14 +221,20 @@ Obviously, requires DNA2. /obj/effect/proc_holder/spell/wizard/targeted/remotetalk/choose_targets(mob/user = usr) var/list/targets = new /list() - targets += input("Choose the target to talk to.", "Targeting") as mob in living_mob_list + var/list/validtargets = new /list() + for(var/mob/M in view(usr)) + validtargets += M + if(!validtargets.len || validtargets.len == 1) + usr << "There are no valid targets in range!" + start_recharge() + return + targets += input("Choose the target to talk to.", "Targeting") as mob in validtargets perform(targets) /obj/effect/proc_holder/spell/wizard/targeted/remotetalk/cast(list/targets) if(!ishuman(usr)) return - - var/say = input ("What do you wish to say") + var/say = input("What do you wish to say") for(var/mob/living/target in targets) if(M_REMOTE_TALK in target.mutations) @@ -267,8 +273,16 @@ Obviously, requires DNA2. icon_power_button = "genetic_view" /obj/effect/proc_holder/spell/wizard/targeted/remoteview/choose_targets(mob/user = usr) - var/list/targets = new /list() - targets += input("Choose the target to spy on.", "Targeting") as mob in living_mob_list + var/list/targets = living_mob_list + var/list/remoteviewers = new /list() + for(var/mob/M in targets) + if(M_REMOTE_VIEW in M.mutations) + remoteviewers += M + if(!remoteviewers.len || remoteviewers.len == 1) + usr << "No valid targets with remote view were found!" + start_recharge() + return + targets += input("Choose the target to spy on.", "Targeting") as mob in remoteviewers perform(targets) diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index d5ce9a990fe..06723250fa2 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -36,6 +36,7 @@ var/siemens_coefficient = 1 // for electrical admittance/conductance (electrocution checks and shit) var/slowdown = 0 // How much clothing is slowing you down. Negative values speeds you up var/canremove = 1 //Mostly for Ninja code at this point but basically will not allow the item to be removed if set to 0. /N + var/reflect_chance = 0 //This var dictates what % of a time an object will reflect an energy based weapon's shot var/armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) var/list/allowed = null //suit storage stuff. var/obj/item/device/uplink/hidden/hidden_uplink = null // All items can have an uplink hidden inside, just remember to add the triggers. @@ -557,6 +558,10 @@ /obj/item/proc/IsShield() return 0 +/obj/item/proc/IsReflect(var/def_zone) //This proc determines if and at what% an object will reflect energy projectiles if it's in l_hand,r_hand or wear_suit + if(prob(reflect_chance)) + return 1 + /obj/item/proc/get_loc_turf() var/atom/L = loc while(L && !istype(L, /turf/)) diff --git a/code/game/objects/items/weapons/melee/energy.dm b/code/game/objects/items/weapons/melee/energy.dm index ac63824ee10..1443ebdc671 100644 --- a/code/game/objects/items/weapons/melee/energy.dm +++ b/code/game/objects/items/weapons/melee/energy.dm @@ -30,10 +30,13 @@ return (BRUTELOSS|FIRELOSS) /obj/item/weapon/melee/energy/sword + var/hacked = 0 + var/blade_color color name = "energy sword" desc = "May the force be within you." icon_state = "sword0" + icon_override = 'icons/mob/in-hand/swords.dmi' force = 3.0 throwforce = 5.0 throw_speed = 1 diff --git a/code/game/objects/items/weapons/storage/fancy.dm b/code/game/objects/items/weapons/storage/fancy.dm index 8f4a66a96d0..e3ea4d5481f 100644 --- a/code/game/objects/items/weapons/storage/fancy.dm +++ b/code/game/objects/items/weapons/storage/fancy.dm @@ -203,6 +203,17 @@ item_state = "Dpacket" +/obj/item/weapon/storage/fancy/cigarettes/syndicate + name = "\improper Syndicate Cigarettes" + desc = "A packet of six evil-looking cigarettes, A label on the packaging reads, \"Donk Co\"" + icon_state = "robustpacket" + item_state = "robustpacket" + +/obj/item/weapon/storage/fancy/cigarettes/syndicate/New() + ..() + var/new_name = pick("evil", "suspicious", "ominous", "donk-flavored", "robust", "sneaky") + name = "[new_name] cigarette packet" + /* * Vial Box */ diff --git a/code/game/objects/items/weapons/swords_axes_etc.dm b/code/game/objects/items/weapons/swords_axes_etc.dm index 1a017d8a207..2a30c76ed4a 100644 --- a/code/game/objects/items/weapons/swords_axes_etc.dm +++ b/code/game/objects/items/weapons/swords_axes_etc.dm @@ -24,7 +24,7 @@ return 0 /obj/item/weapon/melee/energy/sword/New() - _color = pick("red","blue","green","purple") + blade_color = pick("red","blue","green","purple") /obj/item/weapon/melee/energy/sword/attack_self(mob/living/user as mob) if ((M_CLUMSY in user.mutations) && prob(50)) @@ -36,7 +36,7 @@ if(istype(src,/obj/item/weapon/melee/energy/sword/pirate)) icon_state = "cutlass1" else - icon_state = "sword[_color]" + icon_state = "sword[blade_color]" w_class = 4 playsound(user, 'sound/weapons/saberon.ogg', 50, 1) hitsound = 'sound/weapons/blade1.ogg' @@ -67,9 +67,29 @@ user.adjustBrainLoss(10) else user << "You attach the ends of the two energy swords, making a single double-bladed weapon! You're cool." - new /obj/item/weapon/twohanded/dualsaber(user.loc) + var/obj/item/weapon/twohanded/dualsaber/newSaber = new /obj/item/weapon/twohanded/dualsaber(user.loc) + if(src.hacked) // That's right, we'll only check the "original" esword. + newSaber.hacked = 1 + newSaber.blade_color = "rainbow" del(W) del(src) + + else if(istype(W, /obj/item/device/multitool)) + if(hacked == 0) + hacked = 1 + blade_color = "rainbow" + user << "RNBW_ENGAGE" + + if(active) + icon_state = "swordrainbow" + // Updating overlays, copied from welder code. + // I tried calling attack_self twice, which looked cool, except it somehow didn't update the overlays!! + if(user.r_hand == src) + user.update_inv_r_hand(0) + else if(user.l_hand == src) + user.update_inv_l_hand(0) + else + user << "It's already fabulous!" /* * Classic Baton */ @@ -139,31 +159,34 @@ slot_flags = SLOT_BELT w_class = 2 force = 3 - var/cooldown = 0 var/on = 0 + /obj/item/weapon/melee/telebaton/attack_self(mob/user as mob) on = !on if(on) - user << "You extend the baton." + user.visible_message("\red With a flick of their wrist, [user] extends their telescopic baton.",\ + "\red You extend the baton.",\ + "You hear an ominous click.") icon_state = "telebaton_1" - item_state = "nullrod" - w_class = 4 //doesnt fit in backpack when its on for balance - force = 10 //seclite damage - attack_verb = list("smacked", "struck", "cracked", "beaten") + item_state = "telebaton_1" + w_class = 3 + force = 15//quite robust + attack_verb = list("smacked", "struck", "slapped") else - user << "You collapse the baton." + user.visible_message("\blue [user] collapses their telescopic baton.",\ + "\blue You collapse the baton.",\ + "You hear a click.") icon_state = "telebaton_0" - item_state = "telebaton_0" //no sprite in other words - slot_flags = SLOT_BELT + item_state = "telebaton_0" w_class = 2 - force = 3 //not so robust now - attack_verb = list("hit", "poked") + force = 3//not so robust now + attack_verb = list("hit", "punched") if(istype(user,/mob/living/carbon/human)) var/mob/living/carbon/human/H = user H.update_inv_l_hand() H.update_inv_r_hand() - playsound(src.loc, 'sound/weapons/batonextend.ogg', 50, 1) + playsound(src.loc, 'sound/weapons/empty.ogg', 50, 1) add_fingerprint(user) if (!blood_DNA) return if(blood_overlay && (blood_DNA.len >= 1)) //updates blood overlay, if any @@ -180,9 +203,8 @@ /obj/item/weapon/melee/telebaton/attack(mob/target as mob, mob/living/user as mob) if(on) - add_fingerprint(user) - if((M_CLUMSY in user.mutations) && prob(50)) - user << "You club yourself over the head." + if ((M_CLUMSY in user.mutations) && prob(50)) + user << "\red You club yourself over the head." user.Weaken(3 * force) if(ishuman(user)) var/mob/living/carbon/human/H = user @@ -190,28 +212,23 @@ else user.take_organ_damage(2*force) return - if(isrobot(target)) - ..() - return - if(!isliving(target)) - return if (user.a_intent == "harm") if(!..()) return - if(!isrobot(target)) return + if(!isrobot(target)) + playsound(src.loc, "swing_hit", 50, 1, -1) + target.Weaken(4) else - if(cooldown <= 0) - playsound(get_turf(src), 'sound/effects/woodhit.ogg', 75, 1, -1) - target.Weaken(3) - add_logs(user, target, "stunned", object="telescopic baton") - src.add_fingerprint(user) - target.visible_message("[target] has been knocked down with \the [src] by [user]!") - if(!iscarbon(user)) - target.LAssailant = null - else - target.LAssailant = user - cooldown = 1 - spawn(40) - cooldown = 0 + playsound(src.loc, 'sound/weapons/Genhit.ogg', 50, 1, -1) + target.Weaken(2) + target.attack_log += text("\[[time_stamp()]\] Has been attacked with [src.name] by [user.name] ([user.ckey])") + user.attack_log += text("\[[time_stamp()]\] Used the [src.name] to attack [target.name] ([target.ckey])") + log_attack("[user.name] ([user.ckey]) attacked [target.name] ([target.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])") + src.add_fingerprint(user) + target.visible_message("\red [target] has been stunned with \the [src] by [user]!") + if(!iscarbon(user)) + target.LAssailant = null + else + target.LAssailant = user return else return ..() @@ -282,6 +299,7 @@ active = !active if (active) force = 10 + reflect_chance = 80 icon_state = "eshield[active]" w_class = 4 playsound(user, 'sound/weapons/saberon.ogg', 50, 1) @@ -290,6 +308,7 @@ force = 3 icon_state = "eshield[active]" w_class = 1 + reflect_chance = 0 playsound(user, 'sound/weapons/saberoff.ogg', 50, 1) user << "\blue [src] can now be concealed." if(istype(user,/mob/living/carbon/human)) diff --git a/code/game/objects/items/weapons/twohanded.dm b/code/game/objects/items/weapons/twohanded.dm index b070240b7af..c407144acba 100644 --- a/code/game/objects/items/weapons/twohanded.dm +++ b/code/game/objects/items/weapons/twohanded.dm @@ -191,6 +191,9 @@ obj/item/weapon/twohanded/ * Double-Bladed Energy Swords - Cheridan */ /obj/item/weapon/twohanded/dualsaber + var/hacked = 0 + var/blade_color + icon_override = 'icons/mob/in-hand/swords.dmi' icon_state = "dualsaber0" name = "double-bladed energy sword" desc = "Handle with care." @@ -210,20 +213,16 @@ obj/item/weapon/twohanded/ edge = 1 no_embed = 1 // Like with the single-handed esword, this shouldn't be embedding in people. -/* Here for when we can add items to left and right hands again, but currently this cannot be done due to the lack of in-hand icons for dual eswords aside from the green one. /obj/item/weapon/twohanded/dualsaber/New() - item_color = pick("red", "blue", "green", "purple") + blade_color = pick("red", "blue", "green", "purple") /obj/item/weapon/twohanded/dualsaber/update_icon() if(wielded) - icon_state = "dualsaber[item_color][wielded]" + icon_state = "dualsaber[blade_color][wielded]" + reflect_chance = 80 else icon_state = "dualsaber0" -*/ - -/obj/item/weapon/twohanded/dualsaber/update_icon() - icon_state = "dualsaber[wielded]" - return + reflect_chance = 0 /obj/item/weapon/twohanded/dualsaber/attack(target as mob, mob/living/user as mob) ..() @@ -245,11 +244,19 @@ obj/item/weapon/twohanded/ /obj/item/weapon/twohanded/dualsaber/green New() - color = "green" + blade_color = "green" /obj/item/weapon/twohanded/dualsaber/red New() - color = "red" + blade_color = "red" + +/obj/item/weapon/twohanded/dualsaber/purple + New() + blade_color = "purple" + +/obj/item/weapon/twohanded/dualsaber/blue + New() + blade_color = "blue" /obj/item/weapon/twohanded/dualsaber/unwield() ..() @@ -259,6 +266,18 @@ obj/item/weapon/twohanded/ ..() hitsound = 'sound/weapons/blade1.ogg' +/obj/item/weapon/twohanded/dualsaber/attackby(obj/item/weapon/W as obj, mob/user as mob) + ..() + if(istype(W, /obj/item/device/multitool)) + if(hacked == 0) + hacked = 1 + user << "2XRNBW_ENGAGE" + blade_color = "rainbow" + update_icon() + else + user << "It's starting to look like a triple rainbow - no, nevermind." + + //spears /obj/item/weapon/twohanded/spear icon_state = "spearglass0" @@ -284,4 +303,199 @@ obj/item/weapon/twohanded/ /obj/item/weapon/twohanded/spear/kidan icon_state = "kidanspear0" name = "Kidan spear" - desc = "A spear brought over from the Kidan homeworld." \ No newline at end of file + desc = "A spear brought over from the Kidan homeworld." + + +// SINGULOHAMMER + +/obj/item/weapon/twohanded/singularityhammer + name = "singularity hammer" + desc = "The pinnacle of close combat technology, the hammer harnesses the power of a miniaturized singularity to deal crushing blows." + + icon_override = 'icons/mob/in-hand/swords.dmi' + icon_state = "mjollnir0" + flags = CONDUCT + slot_flags = SLOT_BACK + no_embed = 1 + force = 5 + force_unwielded = 5 + force_wielded = 20 + throwforce = 15 + throw_range = 1 + w_class = 5 + var/charged = 5 + origin_tech = "combat=5;bluespace=4" + + + +/obj/item/weapon/twohanded/singularityhammer/New() + ..() + processing_objects.Add(src) + + +/obj/item/weapon/twohanded/singularityhammer/Destroy() + processing_objects.Remove(src) + ..() + + +/obj/item/weapon/twohanded/singularityhammer/process() + if(charged < 5) + charged++ + return + +/obj/item/weapon/twohanded/singularityhammer/update_icon() //Currently only here to fuck with the on-mob icons. + icon_state = "mjollnir[wielded]" + return + + +/obj/item/weapon/twohanded/singularityhammer/proc/vortex(var/turf/pull as turf, mob/wielder as mob) + for(var/atom/X in orange(5,pull)) + if(istype(X, /atom/movable)) + if(X == wielder) continue + if((X) &&(!X:anchored) && (!istype(X,/mob/living/carbon/human))) + step_towards(X,pull) + step_towards(X,pull) + step_towards(X,pull) + else if(istype(X,/mob/living/carbon/human)) + var/mob/living/carbon/human/H = X + if(istype(H.shoes,/obj/item/clothing/shoes/magboots)) + var/obj/item/clothing/shoes/magboots/M = H.shoes + if(M.magpulse) + continue + H.apply_effect(1, WEAKEN, 0) + step_towards(H,pull) + step_towards(H,pull) + step_towards(H,pull) + return + + + +/obj/item/weapon/twohanded/singularityhammer/afterattack(atom/A as mob|obj|turf|area, mob/user as mob, proximity) + if(!proximity) return + if(wielded) + if(charged == 5) + charged = 0 + if(istype(A, /mob/living/)) + var/mob/living/Z = A + Z.take_organ_damage(20,0) + playsound(user, 'sound/weapons/marauder.ogg', 50, 1) + var/turf/target = get_turf(A) + vortex(target,user) + + +/obj/item/weapon/twohanded/mjollnir + name = "Mjollnir" + desc = "A weapon worthy of a god, able to strike with the force of a lightning bolt. It crackles with barely contained energy." + icon_override = 'icons/mob/in-hand/swords.dmi' + icon_state = "mjollnir0" + flags = CONDUCT + slot_flags = SLOT_BACK + no_embed = 1 + force = 5 + force_unwielded = 5 + force_wielded = 20 + throwforce = 30 + throw_range = 7 + w_class = 5 + //var/charged = 5 + origin_tech = "combat=5;powerstorage=5" + +/obj/item/weapon/twohanded/mjollnir/proc/shock(mob/living/target as mob) + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread() + s.set_up(5, 1, target.loc) + s.start() + target.take_organ_damage(0,30) + target.visible_message("[target.name] was shocked by the [src.name]!", \ + "You feel a powerful shock course through your body sending you flying!", \ + "You hear a heavy electrical crack.") + var/atom/throw_target = get_edge_target_turf(target, get_dir(src, get_step_away(target, src))) + target.throw_at(throw_target, 200, 4) + return + + +/obj/item/weapon/twohanded/mjollnir/attack(mob/M as mob, mob/user as mob) + ..() + spawn(0) + if(wielded) + //if(charged == 5) + //charged = 0 + playsound(src.loc, "sparks", 50, 1) + if(istype(M, /mob/living)) + M.Stun(10) + shock(M) + + +/obj/item/weapon/twohanded/mjollnir/update_icon() //Currently only here to fuck with the on-mob icons. + icon_state = "mjollnir[wielded]" + return + + + +/obj/item/weapon/twohanded/knighthammer + name = "singuloth knight's hammer" + desc = "A hammer made of sturdy metal with a golden skull adorned with wings on either side of the head.
This weapon causes devastating damage to those it hits due to a power field sustained by a mini-singularity inside of the hammer." + + icon_override = 'icons/mob/in-hand/swords.dmi' + icon_state = "adrhammer0" + flags = CONDUCT + slot_flags = SLOT_BACK + no_embed = 1 + force = 5 + force_unwielded = 5 + force_wielded = 20 + throwforce = 15 + throw_range = 1 + w_class = 5 + var/charged = 5 + origin_tech = "combat=5;bluespace=4" + + + +/obj/item/weapon/twohanded/knighthammer/New() + ..() + processing_objects.Add(src) + + +/obj/item/weapon/twohanded/knighthammer/Destroy() + processing_objects.Remove(src) + ..() + + +/obj/item/weapon/twohanded/knighthammer/process() + if(charged < 5) + charged++ + return + +/obj/item/weapon/twohanded/knighthammer/update_icon() //Currently only here to fuck with the on-mob icons. + icon_state = "adrhammer[wielded]" + return + + +/obj/item/weapon/twohanded/knighthammer/afterattack(atom/A as mob|obj|turf|area, mob/user as mob, proximity) + if(!proximity) return + if(wielded) + if(charged == 5) + charged = 0 + if(istype(A, /mob/living/)) + var/mob/living/Z = A + if(Z.health < 1) + Z.visible_message("[Z.name] was blown to peices by the power of [src.name]!", \ + "You feel a powerful blow rip you apart!", \ + "You hear a heavy impact and the sound of ripping flesh!.") + Z.gib() + else + Z.take_organ_damage(0,30) + Z.visible_message("[Z.name] was sent flying by a blow from the [src.name]!", \ + "You feel a powerful blow connect with your body and send you flying!", \ + "You hear something heavy impact flesh!.") + var/atom/throw_target = get_edge_target_turf(Z, get_dir(src, get_step_away(Z, src))) + Z.throw_at(throw_target, 200, 4) + else if(istype(A, /turf/simulated/wall)) + var/turf/simulated/wall/Z = A + Z.ex_act(2) + charged = 3 + else if (istype(A, /obj/structure) || istype(A, /obj/mecha/)) + var/obj/Z = A + Z.ex_act(2) + charged = 3 + playsound(user, 'sound/weapons/marauder.ogg', 50, 1) diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm index c2fbc746027..2d58731f4f4 100644 --- a/code/modules/clothing/suits/armor.dm +++ b/code/modules/clothing/suits/armor.dm @@ -60,9 +60,17 @@ icon_state = "armor_reflec" item_state = "armor_reflec" blood_overlay_type = "armor" + reflect_chance = 40 armor = list(melee = 10, bullet = 10, laser = 80, energy = 50, bomb = 0, bio = 0, rad = 0) siemens_coefficient = 0 +/obj/item/clothing/suit/armor/laserproof/IsReflect(var/def_zone) + var/hit_reflect_chance = reflect_chance + if(!(def_zone in list("chest", "groin"))) //If not shot where ablative is covering you, you don't get the reflection bonus! + hit_reflect_chance = 0 + if (prob(hit_reflect_chance)) + return 1 + /obj/item/clothing/suit/armor/swat name = "swat suit" desc = "A heavily armored suit that protects against moderate damage. Used in special operations." diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index 73b840d96c4..616a0d2ba1d 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -12,35 +12,31 @@ emp_act var/datum/organ/external/organ = get_organ(check_zone(def_zone)) + if(istype(P, /obj/item/projectile/energy) || istype(P, /obj/item/projectile/beam)) + if(check_reflect(def_zone)) // Checks if you've passed a reflection% check + visible_message("The [P.name] gets reflected by [src]!", \ + "The [P.name] gets reflected by [src]!") + // Find a turf near or on the original location to bounce to + if(P.starting) + var/new_x = P.starting.x + pick(0, 0, 0, 0, 0, -1, 1, -2, 2) + var/new_y = P.starting.y + pick(0, 0, 0, 0, 0, -1, 1, -2, 2) + var/turf/curloc = get_turf(src) + + // redirect the projectile + P.original = locate(new_x, new_y, P.z) + P.starting = curloc + P.current = curloc + P.firer = src + P.yo = new_y - curloc.y + P.xo = new_x - curloc.x + + return -1 // complete projectile permutation + //Shields if(check_shields(P.damage, "the [P.name]")) P.on_hit(src, 2, def_zone) return 2 - //Laserproof armour - if(wear_suit && istype(wear_suit, /obj/item/clothing/suit/armor/laserproof)) - if(istype(P, /obj/item/projectile/energy) || istype(P, /obj/item/projectile/beam)) - var/reflectchance = 40 - round(P.damage/3) - if(!(def_zone in list("chest", "groin"))) - reflectchance /= 2 - if(prob(reflectchance)) - visible_message("\red The [P.name] gets reflected by [src]'s [wear_suit.name]!") - - // Find a turf near or on the original location to bounce to - if(P.starting) - var/new_x = P.starting.x + pick(0, 0, 0, 0, 0, -1, 1, -2, 2) - var/new_y = P.starting.y + pick(0, 0, 0, 0, 0, -1, 1, -2, 2) - var/turf/curloc = get_turf(src) - - // redirect the projectile - P.original = locate(new_x, new_y, P.z) - P.starting = curloc - P.current = curloc - P.firer = src - P.yo = new_y - curloc.y - P.xo = new_x - curloc.x - - return -1 // complete projectile permutation //Shrapnel if (P.damage_type == BRUTE) @@ -138,6 +134,20 @@ emp_act return 1 return 0 +/mob/living/carbon/human/proc/check_reflect(var/def_zone) //Reflection checks for anything in your l_hand, r_hand, or wear_suit based on reflect_chance var of the object + if(wear_suit && istype(wear_suit, /obj/item/)) + var/obj/item/I = wear_suit + if(I.IsReflect(def_zone) == 1) + return 1 + if(l_hand && istype(l_hand, /obj/item/)) + var/obj/item/I = l_hand + if(I.IsReflect(def_zone) == 1) + return 1 + if(r_hand && istype(r_hand, /obj/item/)) + var/obj/item/I = r_hand + if(I.IsReflect(def_zone) == 1) + return 1 + return 0 /mob/living/carbon/human/proc/check_shields(var/damage = 0, var/attack_text = "the attack") if(l_hand && istype(l_hand, /obj/item/weapon))//Current base is the prob(50-d/3) diff --git a/code/modules/projectiles/guns/projectile/automatic.dm b/code/modules/projectiles/guns/projectile/automatic.dm index 45461b7a69a..706ef2a2011 100644 --- a/code/modules/projectiles/guns/projectile/automatic.dm +++ b/code/modules/projectiles/guns/projectile/automatic.dm @@ -118,7 +118,8 @@ name = "\improper Bulldog shotgun" desc = "A compact, mag-fed semi-automatic shotgun for combat in narrow corridors. Compatible only with specialized magazines." icon_state = "bulldog" - item_state = "c20r" + item_state = "bulldog" + icon_override = 'icons/mob/in-hand/guns.dmi' w_class = 3.0 origin_tech = "combat=5;materials=4;syndicate=6" mag_type = "/obj/item/ammo_box/magazine/m12g" diff --git a/icons/mob/in-hand/guns.dmi b/icons/mob/in-hand/guns.dmi new file mode 100644 index 00000000000..8b4f0fa69cd Binary files /dev/null and b/icons/mob/in-hand/guns.dmi differ diff --git a/icons/mob/in-hand/swords.dmi b/icons/mob/in-hand/swords.dmi new file mode 100644 index 00000000000..7d5baa533f8 Binary files /dev/null and b/icons/mob/in-hand/swords.dmi differ diff --git a/icons/obj/cigarettes.dmi b/icons/obj/cigarettes.dmi index 4aa7f8777e4..a2b7d416055 100644 Binary files a/icons/obj/cigarettes.dmi and b/icons/obj/cigarettes.dmi differ diff --git a/icons/obj/vending.dmi b/icons/obj/vending.dmi index 9e6d161ed15..c8af6b5d248 100755 Binary files a/icons/obj/vending.dmi and b/icons/obj/vending.dmi differ diff --git a/icons/obj/weapons.dmi b/icons/obj/weapons.dmi index daccc94a722..79e7b8cb110 100644 Binary files a/icons/obj/weapons.dmi and b/icons/obj/weapons.dmi differ diff --git a/nano/debug.html b/nano/debug.html index 374e8deb2ae..66aeec384b7 100644 --- a/nano/debug.html +++ b/nano/debug.html @@ -1,31 +1,31 @@ - + - + - -
-
SMES Power Storage Unit
-
- - -
- -
+ +
+