/obj/item/weapon/banhammer desc = "A banhammer" name = "banhammer" icon = 'icons/obj/items.dmi' icon_state = "toyhammer" flags = FPRINT | TABLEPASS slot_flags = SLOT_BELT throwforce = 0 w_class = 2.0 throw_speed = 7 throw_range = 15 attack_verb = list("banned") suicide_act(mob/user) viewers(user) << "\red [user] is hitting \himself with the [src.name]! It looks like \he's trying to ban \himself from life." return (BRUTELOSS|FIRELOSS|TOXLOSS|OXYLOSS) /obj/item/weapon/nullrod name = "null rod" desc = "A rod of pure obsidian, its very presence disrupts and dampens the powers of paranormal phenomenae." icon_state = "nullrod" item_state = "nullrod" flags = FPRINT | TABLEPASS slot_flags = SLOT_BELT force = 15 throw_speed = 1 throw_range = 4 throwforce = 10 w_class = 2 suicide_act(mob/user) viewers(user) << "\red [user] is impaling \himself with the [src.name]! It looks like \he's trying to commit suicide." return (BRUTELOSS|FIRELOSS) /obj/item/weapon/nullrod/attack(mob/M as mob, mob/living/user as mob) //Paste from old-code to decult with a null rod. M.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 [M.name] ([M.ckey])") msg_admin_attack("[user.name] ([user.ckey]) attacked [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)]) (JMP)") if (!(istype(user, /mob/living/carbon/human) || ticker) && ticker.mode.name != "monkey") user << "\red You don't have the dexterity to do this!" return if ((CLUMSY in user.mutations) && prob(50)) user << "\red The rod slips out of your hand and hits your head." user.take_organ_damage(10) user.Paralyse(20) return if (M.stat !=2) if((M.mind in ticker.mode.cult) && prob(33)) M << "\red The power of [src] clears your mind of the cult's influence!" user << "\red You wave [src] over [M]'s head and see their eyes become clear, their mind returning to normal." ticker.mode.remove_cultist(M.mind) for(var/mob/O in viewers(M, null)) O.show_message(text("\red [] waves [] over []'s head.", user, src, M), 1) else if(prob(10)) user << "\red The rod slips in your hand." ..() else user << "\red The rod appears to do nothing." for(var/mob/O in viewers(M, null)) O.show_message(text("\red [] waves [] over []'s head.", user, src, M), 1) return /obj/item/weapon/nullrod/afterattack(atom/A, mob/user as mob, proximity) if(!proximity) return if (istype(A, /turf/simulated/floor)) user << "\blue You hit the floor with the [src]." call(/obj/effect/rune/proc/revealrunes)(src) /obj/item/weapon/sord name = "\improper SORD" desc = "This thing is so unspeakably shitty you are having a hard time even holding it." icon_state = "sord" item_state = "sord" flags = FPRINT | TABLEPASS slot_flags = SLOT_BELT force = 2 throwforce = 1 sharp = 1 edge = 1 w_class = 3 attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") suicide_act(mob/user) viewers(user) << "\red [user] is impaling \himself with the [src.name]! It looks like \he's trying to commit suicide." return(BRUTELOSS) /obj/item/weapon/sord/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob) playsound(loc, 'sound/weapons/bladeslice.ogg', 50, 1, -1) return ..() /obj/item/weapon/claymore name = "claymore" desc = "What are you standing around staring at this for? Get to killing!" icon_state = "claymore" item_state = "claymore" flags = FPRINT | TABLEPASS | CONDUCT slot_flags = SLOT_BELT force = 40 throwforce = 10 sharp = 1 edge = 1 w_class = 3 attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") IsShield() return 1 suicide_act(mob/user) viewers(user) << "\red [user] is falling on the [src.name]! It looks like \he's trying to commit suicide." return(BRUTELOSS) /obj/item/weapon/claymore/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob) playsound(loc, 'sound/weapons/bladeslice.ogg', 50, 1, -1) return ..() /obj/item/weapon/katana name = "katana" desc = "Woefully underpowered in D20" icon_state = "katana" item_state = "katana" flags = FPRINT | TABLEPASS | CONDUCT slot_flags = SLOT_BELT | SLOT_BACK force = 40 throwforce = 10 sharp = 1 edge = 1 w_class = 3 attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") suicide_act(mob/user) viewers(user) << "\red [user] is slitting \his stomach open with the [src.name]! It looks like \he's trying to commit seppuku." return(BRUTELOSS) /obj/item/weapon/katana/IsShield() return 1 /obj/item/weapon/katana/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob) playsound(loc, 'sound/weapons/bladeslice.ogg', 50, 1, -1) return ..() /obj/item/weapon/harpoon name = "harpoon" sharp = 1 edge = 0 desc = "Tharr she blows!" icon_state = "harpoon" item_state = "harpoon" force = 20 throwforce = 15 w_class = 3 attack_verb = list("jabbed","stabbed","ripped") /obj/item/weapon/baseballbat name = "wooden bat" desc = "HOME RUN!" icon_state = "woodbat" item_state = "woodbat" sharp = 0 edge = 0 w_class = 3 force = 15 throw_speed = 3 throw_range = 7 throwforce = 7 attack_verb = list("smashed", "beaten", "slammed", "smacked", "striked", "battered", "bonked") hitsound = 'sound/weapons/genhit3.ogg' /obj/item/weapon/baseballbat/metal name = "metal bat" desc = "A shiny metal bat." icon_state = "metalbat" item_state = "metalbat" force = 18 w_class = 3.0 /obj/item/weapon/butterfly name = "butterfly knife" desc = "A basic metal blade concealed in a lightweight plasteel grip. Small enough when folded to fit in a pocket." icon_state = "butterflyknife" item_state = null hitsound = null var/active = 0 w_class = 2 force = 2 sharp = 0 edge = 0 throw_speed = 3 throw_range = 4 throwforce = 7 attack_verb = list("patted", "tapped") /obj/item/butterflyconstruction name = "unfinished concealed knife" desc = "An unfinished concealed knife, it looks like the screws need to be tightened." icon = 'icons/obj/buildingobject.dmi' icon_state = "butterflystep1" /obj/item/butterflyconstruction/attackby(obj/item/W as obj, mob/user as mob) if(istype(W,/obj/item/weapon/screwdriver)) user << "You finish the concealed blade weapon." new /obj/item/weapon/butterfly(user.loc) del(src) return /obj/item/butterflyblade name = "knife blade" desc = "A knife blade. Unusable as a weapon without a grip." icon = 'icons/obj/buildingobject.dmi' icon_state = "butterfly2" matter = list("metal" = 5000) /obj/item/butterflyhandle name = "concealed knife grip" desc = "A plasteel grip with screw fittings for a blade." icon = 'icons/obj/buildingobject.dmi' icon_state = "butterfly1" matter = list("metal" = 4000) /obj/item/butterflyhandle/attackby(obj/item/W as obj, mob/user as mob) if(istype(W,/obj/item/butterflyblade)) user << "You attach the two concealed blade parts." new /obj/item/butterflyconstruction(user.loc) del(W) del(src) return update_icon(user) /obj/item/weapon/butterfly/switchblade name = "switchblade" desc = "A classic switchblade with gold engraving. Just holding it makes you feel like a gangster." icon_state = "switchblade" /obj/item/weapon/butterfly/attack_self(mob/user) active = !active if(active) user << "You flip out your [src]." playsound(user, 'sound/weapons/flipblade.ogg', 15, 1) force = 15 //bay adjustments throwforce = 12 edge = 1 sharp = 1 hitsound = 'sound/weapons/bladeslice.ogg' icon_state += "_open" w_class = 3 attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") else user << "The butterfly knife can now be concealed." force = initial(force) edge = 0 sharp = 0 hitsound = initial(hitsound) icon_state = initial(icon_state) w_class = initial(w_class) attack_verb = initial(attack_verb) add_fingerprint(user) 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 = 8 throwforce = 10 w_class = 3 attack_verb = list("hit", "bludgeoned", "whacked", "bonked") obj/item/weapon/wirerod/attackby(var/obj/item/I, mob/user as mob) ..() if(istype(I, /obj/item/weapon/shard)) var/obj/item/weapon/twohanded/spear/S = new /obj/item/weapon/twohanded/spear user.put_in_hands(S) user << "You fasten the glass shard to the top of the rod with the cable." del(I) del(src) update_icon(user) else if(istype(I, /obj/item/weapon/wirecutters)) var/obj/item/weapon/melee/baton/cattleprod/P = new /obj/item/weapon/melee/baton/cattleprod user.put_in_hands(P) user << "You fasten the wirecutters to the top of the rod with the cable, prongs outward." del(I) del(src) update_icon(user) update_icon(user) /obj/item/weapon/star name = "shuriken" desc = "A sharp, perfectly weighted piece of metal." icon_state = "star" force = 5 throw_speed = 10 throwforce = 15 throw_range = 15 sharp = 1 edge = 1 matter = list("metal" = 500) var/poisoned = 0 /obj/item/weapon/star/New() ..() src.pixel_x = rand(-12, 12) src.pixel_y = rand(-12, 12) //TODO: consider making this something done with reagents. /obj/item/weapon/star/throw_impact(atom/hit_atom) ..() if(poisoned && istype(hit_atom,/mob/living)) var/mob/living/M = hit_atom M.adjustToxLoss(rand(20,40)) poisoned = 0 color = null /obj/item/weapon/star/ninja color = "#007700" poisoned = 1 /obj/item/weapon/energy_net name = "energy net" desc = "It's a net made of green energy." icon = 'icons/effects/effects.dmi' icon_state = "energynet" throwforce = 0 force = 0 var/net_type = /obj/effect/energy_net /obj/item/weapon/energy_net/dropped() spawn(10) if(src) del(src) /obj/item/weapon/energy_net/throw_impact(atom/hit_atom) ..() var/mob/living/M = hit_atom if(!istype(M) || locate(/obj/effect/energy_net) in M.loc) del(src) return 0 var/turf/T = get_turf(M) if(T) var/obj/effect/energy_net/net = new net_type(T) net.layer = M.layer+1 M.captured = 1 net.affecting = M T.visible_message("[M] was caught in an energy net!") del(src) // If we miss or hit an obstacle, we still want to delete the net. spawn(10) if(src) del(src) /obj/effect/energy_net name = "energy net" desc = "It's a net made of green energy." icon = 'icons/effects/effects.dmi' icon_state = "energynet" density = 1 opacity = 0 mouse_opacity = 1 anchored = 1 var/health = 25 var/mob/living/affecting = null //Who it is currently affecting, if anyone. var/mob/living/master = null //Who shot web. Will let this person know if the net was successful. var/countdown = -1 /obj/effect/energy_net/teleport countdown = 60 /obj/effect/energy_net/New() ..() processing_objects |= src /obj/effect/energy_net/Del() if(affecting) var/mob/living/carbon/M = affecting M.anchored = initial(affecting.anchored) M.captured = 0 M << "You are free of the net!" processing_objects -= src ..() /obj/effect/energy_net/proc/healthcheck() if(health <=0) density = 0 src.visible_message("The energy net is torn apart!") del(src) return /obj/effect/energy_net/process() if(isnull(affecting) || affecting.loc != loc) del(src) return // Countdown begin set to -1 will stop the teleporter from firing. // Clientless mobs can be netted but they will not teleport or decrement the timer. var/mob/living/M = affecting if(countdown == -1 || (istype(M) && !M.client)) return if(countdown > 0) countdown-- return // TODO: consider removing or altering this; energy nets are useful on their own // merits and the teleportation was never properly implemented; it's halfassed. density = 0 invisibility = 101 //Make the net invisible so all the animations can play out. health = INFINITY //Make the net invincible so that an explosion/something else won't kill it during anims. playsound(affecting.loc, 'sound/effects/sparks4.ogg', 50, 1) anim(affecting.loc,affecting,'icons/mob/mob.dmi',,"phaseout",,affecting.dir) affecting.visible_message("[affecting] vanishes in a flare of light!") if(holdingfacility.len) affecting.loc = pick(holdingfacility) affecting << "You appear in a strange place!" playsound(affecting.loc, 'sound/effects/phasein.ogg', 25, 1) playsound(affecting.loc, 'sound/effects/sparks2.ogg', 50, 1) anim(affecting.loc,affecting,'icons/mob/mob.dmi',,"phasein",,affecting.dir) del(src) /obj/effect/energy_net/bullet_act(var/obj/item/projectile/Proj) health -= Proj.damage healthcheck() return 0 /obj/effect/energy_net/ex_act() health = 0 healthcheck() /obj/effect/energy_net/blob_act() health = 0 healthcheck() /obj/effect/energy_net/meteorhit() health = 0 healthcheck() /obj/effect/energy_net/attack_hand(var/mob/user) var/mob/living/carbon/human/H = user if(istype(H)) if(H.species.can_shred(H)) playsound(src.loc, 'sound/weapons/slash.ogg', 80, 1) health -= rand(10, 20) else health -= rand(1,3) else if (HULK in user.mutations) health = 0 else health -= rand(5,8) H << "You claw at the energy net." healthcheck() return /obj/effect/energy_net/attackby(obj/item/weapon/W as obj, mob/user as mob) health -= W.force healthcheck() ..()