/obj/item/weapon/phone name = "red phone" desc = "Should anything ever go wrong..." icon = 'icons/obj/items.dmi' icon_state = "red_phone" flags = FPRINT | TABLEPASS | CONDUCT force = 3.0 throwforce = 2.0 throw_speed = 1 throw_range = 4 w_class = 2 attack_verb = list("called", "rang") hitsound = 'sound/weapons/ring.ogg' /obj/item/weapon/rsp name = "\improper Rapid-Seed-Producer (RSP)" desc = "A device used to rapidly deploy seeds." icon = 'icons/obj/items.dmi' icon_state = "rcd" opacity = 0 density = 0 anchored = 0.0 var/matter = 0 var/mode = 1 flags = TABLEPASS w_class = 3.0 /obj/item/weapon/bananapeel name = "banana peel" desc = "A peel from a banana." icon = 'icons/obj/items.dmi' icon_state = "banana_peel" item_state = "banana_peel" w_class = 1.0 throwforce = 0 throw_speed = 4 throw_range = 20 /obj/item/weapon/corncob name = "corn cob" desc = "A reminder of meals gone by." icon = 'icons/obj/harvest.dmi' icon_state = "corncob" item_state = "corncob" w_class = 1.0 throwforce = 0 throw_speed = 4 throw_range = 20 /obj/item/weapon/soap name = "soap" desc = "A cheap bar of soap. Doesn't smell." gender = PLURAL icon = 'icons/obj/items.dmi' icon_state = "soap" w_class = 1.0 throwforce = 0 throw_speed = 4 throw_range = 20 discrete = 1 var/cleanspeed = 50 //slower than mop /obj/item/weapon/soap/nanotrasen desc = "A Nanotrasen brand bar of soap. Smells of plasma." icon_state = "soapnt" /obj/item/weapon/soap/deluxe icon_state = "soapdeluxe" /obj/item/weapon/soap/deluxe/New() desc = "A deluxe Waffle Co. brand bar of soap. Smells of comdoms." cleanspeed = 40 //same speed as mop because deluxe -- captain gets one of these /obj/item/weapon/soap/syndie desc = "An untrustworthy bar of soap made of strong chemical agents that dissolve blood faster." icon_state = "soapsyndie" cleanspeed = 10 //much faster than mop so it is useful for traitors who want to clean crime scenes /obj/item/weapon/bikehorn name = "bike horn" desc = "A horn off of a bicycle." icon = 'icons/obj/items.dmi' icon_state = "bike_horn" item_state = "bike_horn" hitsound = 'sound/items/bikehorn.ogg' throwforce = 3 w_class = 1.0 throw_speed = 3 throw_range = 15 attack_verb = list("HONKED") var/spam_flag = 0 /obj/item/weapon/c_tube name = "cardboard tube" desc = "A tube... of cardboard." icon = 'icons/obj/items.dmi' icon_state = "c_tube" throwforce = 1 w_class = 1.0 throw_speed = 4 throw_range = 5 /obj/item/weapon/cane name = "cane" desc = "A cane used by a true gentlemen. Or a clown." icon = 'icons/obj/weapons.dmi' icon_state = "cane" item_state = "stick" flags = FPRINT | TABLEPASS| CONDUCT force = 5.0 throwforce = 7.0 w_class = 2.0 m_amt = 50 attack_verb = list("bludgeoned", "whacked", "disciplined", "thrashed") /obj/item/weapon/disk name = "disk" icon = 'icons/obj/items.dmi' /obj/item/weapon/disk/nuclear name = "nuclear authentication disk" desc = "Better keep this safe." icon_state = "nucleardisk" item_state = "card-id" w_class = 1.0 /* /obj/item/weapon/disk/nuclear/pickup(mob/living/user as mob) if(issyndicate(user)) set_security_level(3)*/ //Nuke Ops rework makes stealth approach significantly harder; this makes it damn near impossible; besides, it's horrendously meta. /* /obj/item/weapon/game_kit name = "Gaming Kit" icon = 'icons/obj/items.dmi' icon_state = "game_kit" var/selected = null var/board_stat = null var/data = "" var/base_url = "http://svn.slurm.us/public/spacestation13/misc/game_kit" item_state = "sheet-metal" w_class = 5.0 */ /obj/item/weapon/gift name = "gift" desc = "A wrapped item." icon = 'icons/obj/items.dmi' icon_state = "gift3" var/size = 3.0 var/obj/item/gift = null item_state = "gift" w_class = 4.0 /obj/item/weapon/legcuffs name = "legcuffs" desc = "Use this to keep prisoners in line." gender = PLURAL icon = 'icons/obj/items.dmi' icon_state = "handcuff" flags = FPRINT | TABLEPASS | CONDUCT throwforce = 0 w_class = 3.0 origin_tech = "materials=1" var/breakouttime = 300 //Deciseconds = 30s = 0.5 minute /obj/item/weapon/legcuffs/beartrap name = "bear trap" throw_speed = 1 throw_range = 1 icon_state = "beartrap0" desc = "A trap used to catch bears and other legged creatures." var/armed = 0 suicide_act(mob/user) viewers(user) << "[user] is putting the [src.name] on \his head! It looks like \he's trying to commit suicide." return (BRUTELOSS) /obj/item/weapon/legcuffs/beartrap/attack_self(mob/user as mob) ..() if(ishuman(user) && !user.stat && !user.restrained()) armed = !armed icon_state = "beartrap[armed]" user << "[src] is now [armed ? "armed" : "disarmed"]" /obj/item/weapon/legcuffs/beartrap/Crossed(AM as mob|obj) if(armed && isturf(src.loc)) if( (iscarbon(AM) || isanimal(AM)) && !istype(AM, /mob/living/simple_animal/parrot) && !istype(AM, /mob/living/simple_animal/construct) && !istype(AM, /mob/living/simple_animal/shade) && !istype(AM, /mob/living/simple_animal/hostile/viscerator)) var/mob/living/L = AM armed = 0 icon_state = "beartrap0" playsound(src.loc, 'sound/effects/snap.ogg', 50, 1) L.visible_message("[L] triggers \the [src].", \ "You trigger \the [src]!") if(ishuman(AM)) var/mob/living/carbon/H = AM if(H.lying) H.apply_damage(20,BRUTE,"chest") else H.apply_damage(20,BRUTE,(pick("l_leg", "r_leg"))) if(!H.legcuffed) //beartrap can't cuff you leg if there's already a beartrap or legcuffs. H.legcuffed = src src.loc = H H.update_inv_legcuffed(0) feedback_add_details("handcuffs","B") //Yes, I know they're legcuffs. Don't change this, no need for an extra variable. The "B" is used to tell them apart. else L.apply_damage(20,BRUTE) ..() /obj/item/weapon/holosign_creator name = "holographic sign projector" desc = "A handy-dandy hologaphic projector that displays a janitorial sign." icon = 'icons/obj/janitor.dmi' icon_state = "signmaker" item_state = "electronic" force = 5 w_class = 2 throwforce = 0 throw_speed = 3 throw_range = 7 origin_tech = "programming=3" var/list/signs = list() var/max_signs = 10 /obj/item/weapon/holosign_creator/afterattack(atom/target, mob/user, flag) if(flag) var/turf/T = get_turf(target) var/obj/effect/overlay/holograph/H = locate() in T if(H) user << "You use [src] to destroy [H]." signs -= H del(H) else if(signs.len < max_signs) H = new(get_turf(target)) signs += H user << "You create \a [H] with [src]." else user << "[src] is projecting at max capacity!" /obj/item/weapon/holosign_creator/attack(mob/living/carbon/human/M, mob/user) return /obj/item/weapon/holosign_creator/attack_self(mob/user) if(signs.len) var/list/L = signs.Copy() for(var/sign in L) del(sign) signs -= sign user << "You clear all active holograms." /obj/effect/overlay/holograph name = "wet floor sign" desc = "The words flicker as if they mean nothing." icon = 'icons/obj/janitor.dmi' icon_state = "holosign" anchored = 1 /obj/item/weapon/caution desc = "Caution! Wet Floor!" name = "wet floor sign" icon = 'icons/obj/janitor.dmi' icon_state = "caution" force = 1.0 throwforce = 3.0 throw_speed = 1 throw_range = 5 w_class = 2.0 flags = FPRINT | TABLEPASS attack_verb = list("warned", "cautioned", "smashed") proximity_sign var/timing = 0 var/armed = 0 var/timepassed = 0 attack_self(mob/user as mob) if(ishuman(user)) var/mob/living/carbon/human/H = user if(H.mind.assigned_role != "Janitor") return if(armed) armed = 0 user << "\blue You disarm \the [src]." return timing = !timing if(timing) processing_objects.Add(src) else armed = 0 timepassed = 0 H << "\blue You [timing ? "activate \the [src]'s timer, you have 15 seconds." : "de-activate \the [src]'s timer."]" process() if(!timing) processing_objects.Remove(src) timepassed++ if(timepassed >= 15 && !armed) armed = 1 timing = 0 HasProximity(atom/movable/AM as mob|obj) if(armed) if(istype(AM, /mob/living/carbon) && !istype(AM, /mob/living/carbon/brain)) var/mob/living/carbon/C = AM if(C.m_intent != "walk") src.visible_message("The [src.name] beeps, \"Running on wet floors is hazardous to your health.\"") explosion(src.loc,-1,2,0) if(ishuman(C)) dead_legs(C) if(src) del(src) proc/dead_legs(mob/living/carbon/human/H as mob) var/datum/organ/external/l = H.get_organ("l_leg") var/datum/organ/external/r = H.get_organ("r_leg") if(l && !(l.status & ORGAN_DESTROYED)) l.status |= ORGAN_DESTROYED if(r && !(r.status & ORGAN_DESTROYED)) r.status |= ORGAN_DESTROYED /obj/item/weapon/caution/cone desc = "This cone is trying to warn you of something!" name = "warning cone" icon_state = "cone" /obj/item/weapon/rack_parts name = "rack parts" desc = "Parts of a rack." icon = 'icons/obj/items.dmi' icon_state = "rack_parts" flags = FPRINT | TABLEPASS| CONDUCT m_amt = 3750 /*/obj/item/weapon/syndicate_uplink name = "station bounced radio" desc = "Remain silent about this..." icon = 'icons/obj/radio.dmi' icon_state = "radio" var/temp = null var/uses = 10.0 var/selfdestruct = 0.0 var/traitor_frequency = 0.0 var/mob/currentUser = null var/obj/item/device/radio/origradio = null flags = FPRINT | TABLEPASS | CONDUCT | ONBELT w_class = 2.0 item_state = "radio" throw_speed = 4 throw_range = 20 m_amt = 100 origin_tech = "magnets=2;syndicate=3"*/ /obj/item/weapon/SWF_uplink name = "station-bounced radio" desc = "used to comunicate it appears." icon = 'icons/obj/radio.dmi' icon_state = "radio" var/temp = null var/uses = 4.0 var/selfdestruct = 0.0 var/traitor_frequency = 0.0 var/obj/item/device/radio/origradio = null flags = FPRINT | TABLEPASS| CONDUCT slot_flags = SLOT_BELT item_state = "radio" throwforce = 5 w_class = 2.0 throw_speed = 4 throw_range = 20 m_amt = 100 origin_tech = "magnets=1" /obj/item/weapon/staff name = "wizards staff" desc = "Apparently a staff used by the wizard." icon = 'icons/obj/wizard.dmi' icon_state = "staff" force = 3.0 throwforce = 5.0 throw_speed = 1 throw_range = 5 w_class = 2.0 flags = FPRINT | TABLEPASS | NOSHIELD attack_verb = list("bludgeoned", "whacked", "disciplined") /obj/item/weapon/staff/broom name = "broom" desc = "Used for sweeping, and flying into the night while cackling. Black cat not included." icon = 'icons/obj/wizard.dmi' icon_state = "broom" /obj/item/weapon/staff/stick name = "stick" desc = "A great tool to drag someone else's drinks across the bar." icon = 'icons/obj/weapons.dmi' icon_state = "stick" item_state = "stick" force = 3.0 throwforce = 5.0 throw_speed = 1 throw_range = 5 w_class = 2.0 flags = FPRINT | TABLEPASS | NOSHIELD /obj/item/weapon/table_parts name = "table parts" desc = "Parts of a table. Poor table." gender = PLURAL icon = 'icons/obj/items.dmi' icon_state = "table_parts" m_amt = 3750 flags = FPRINT | TABLEPASS| CONDUCT attack_verb = list("slammed", "bashed", "battered", "bludgeoned", "thrashed", "whacked") /obj/item/weapon/table_parts/reinforced name = "reinforced table parts" desc = "Hard table parts. Well...harder..." icon = 'icons/obj/items.dmi' icon_state = "reinf_tableparts" m_amt = 7500 flags = FPRINT | TABLEPASS| CONDUCT /obj/item/weapon/table_parts/wood name = "wooden table parts" desc = "Keep away from fire." icon_state = "wood_tableparts" flags = null /obj/item/weapon/wire desc = "This is just a simple piece of regular insulated wire." name = "wire" icon = 'icons/obj/power.dmi' icon_state = "item_wire" var/amount = 1.0 var/laying = 0.0 var/old_lay = null m_amt = 40 attack_verb = list("whipped", "lashed", "disciplined", "tickled") suicide_act(mob/user) viewers(user) << "\red [user] is strangling \himself with the [src.name]! It looks like \he's trying to commit suicide." return (OXYLOSS) /obj/item/weapon/module icon = 'icons/obj/module.dmi' icon_state = "std_module" w_class = 2.0 item_state = "electronic" flags = FPRINT|TABLEPASS|CONDUCT var/mtype = 1 // 1=electronic 2=hardware /obj/item/weapon/module/card_reader name = "card reader module" icon_state = "card_mod" desc = "An electronic module for reading data and ID cards." /obj/item/weapon/module/power_control name = "power control module" icon_state = "power_mod" desc = "Heavy-duty switching circuits for power control." /obj/item/weapon/module/id_auth name = "\improper ID authentication module" icon_state = "id_mod" desc = "A module allowing secure authorization of ID cards." /obj/item/weapon/module/cell_power name = "power cell regulator module" icon_state = "power_mod" desc = "A converter and regulator allowing the use of power cells." /obj/item/weapon/module/cell_power name = "power cell charger module" icon_state = "power_mod" desc = "Charging circuits for power cells." /obj/item/device/camera_bug name = "camera bug" desc = "Tiny electronic device meant to bug cameras for viewing later." icon = 'icons/obj/device.dmi' icon_state = "implant_evil" w_class = 1.0 item_state = "" throw_speed = 4 throw_range = 20 /obj/item/weapon/camera_bug/attack_self(mob/usr as mob) var/list/cameras = new/list() for (var/obj/machinery/camera/C in cameranet.viewpoints) if (C.bugged && C.status) cameras.Add(C) if (length(cameras) == 0) usr << "\red No bugged functioning cameras found." return var/list/friendly_cameras = new/list() for (var/obj/machinery/camera/C in cameras) friendly_cameras.Add(C.c_tag) var/target = input("Select the camera to observe", null) as null|anything in friendly_cameras if (!target) return for (var/obj/machinery/camera/C in cameras) if (C.c_tag == target) target = C break if (usr.stat == 2) return usr.client.eye = target /obj/item/weapon/hatchet name = "hatchet" desc = "A very sharp axe blade upon a short fibremetal handle. It has a long history of chopping things, but now it is used for chopping wood." icon = 'icons/obj/weapons.dmi' icon_state = "hatchet" flags = FPRINT | TABLEPASS | CONDUCT force = 12.0 sharp = 1 edge = 1 w_class = 2.0 throwforce = 15.0 throw_speed = 4 throw_range = 4 m_amt = 15000 origin_tech = "materials=2;combat=1" attack_verb = list("chopped", "torn", "cut") hitsound = 'sound/weapons/bladeslice.ogg' /obj/item/weapon/hatchet/unathiknife name = "duelling knife" desc = "A length of leather-bound wood studded with razor-sharp teeth. How crude." icon = 'icons/obj/weapons.dmi' icon_state = "unathiknife" attack_verb = list("ripped", "torn", "cut") /obj/item/weapon/scythe icon_state = "scythe0" name = "scythe" desc = "A sharp and curved blade on a long fibremetal handle, this tool makes it easy to reap what you sow." force = 13.0 throwforce = 5.0 sharp = 1 edge = 1 throw_speed = 2 throw_range = 3 w_class = 4.0 flags = FPRINT | TABLEPASS | NOSHIELD slot_flags = SLOT_BACK origin_tech = "materials=2;combat=2" attack_verb = list("chopped", "sliced", "cut", "reaped") hitsound = 'sound/weapons/bladeslice.ogg' /obj/item/weapon/scythe/afterattack(atom/A, mob/user as mob, proximity) if(!proximity) return if(istype(A, /obj/effect/plantsegment)) for(var/obj/effect/plantsegment/B in orange(A,1)) if(prob(80)) del B del A /* /obj/item/weapon/cigarpacket name = "Pete's Cuban Cigars" desc = "The most robust cigars on the planet." icon = 'icons/obj/cigarettes.dmi' icon_state = "cigarpacket" item_state = "cigarpacket" w_class = 1 throwforce = 2 var/cigarcount = 6 flags = ONBELT | TABLEPASS */ /obj/item/weapon/pai_cable desc = "A flexible coated cable with a universal jack on one end." name = "data cable" icon = 'icons/obj/power.dmi' icon_state = "wire1" var/obj/machinery/machine ///////////////////////////////////////Stock Parts ///////////////////////////////// /obj/item/weapon/storage/part_replacer name = "Rapid Part Exchange Device" desc = "Special mechanical module made to store, sort, and apply standard machine parts." icon_state = "RPED" item_state = "RPED" icon_override = 'icons/mob/in-hand/tools.dmi' w_class = 5 can_hold = list("/obj/item/weapon/stock_parts","/obj/item/weapon/cell") storage_slots = 50 use_to_pickup = 1 allow_quick_gather = 1 allow_quick_empty = 1 collection_mode = 1 max_w_class = 3 max_combined_w_class = 100 /obj/item/weapon/storage/part_replacer/proc/play_rped_sound() //Plays the sound for RPED exchanging or installing parts. playsound(src, 'sound/items/rped.ogg', 40, 1) /obj/item/weapon/stock_parts name = "stock part" desc = "What?" gender = PLURAL icon = 'icons/obj/stock_parts.dmi' w_class = 2.0 var/rating = 1 New() src.pixel_x = rand(-5.0, 5) src.pixel_y = rand(-5.0, 5) //Rank 1 /obj/item/weapon/stock_parts/console_screen name = "console screen" desc = "Used in the construction of computers and other devices with a interactive console." icon_state = "screen" origin_tech = "materials=1" g_amt = 200 /obj/item/weapon/stock_parts/capacitor name = "capacitor" desc = "A basic capacitor used in the construction of a variety of devices." icon_state = "capacitor" origin_tech = "powerstorage=1" m_amt = 50 g_amt = 50 /obj/item/weapon/stock_parts/scanning_module name = "scanning module" desc = "A compact, high resolution scanning module used in the construction of certain devices." icon_state = "scan_module" origin_tech = "magnets=1" m_amt = 50 g_amt = 20 /obj/item/weapon/stock_parts/manipulator name = "micro-manipulator" desc = "A tiny little manipulator used in the construction of certain devices." icon_state = "micro_mani" origin_tech = "materials=1;programming=1" m_amt = 30 /obj/item/weapon/stock_parts/micro_laser name = "micro-laser" desc = "A tiny laser used in certain devices." icon_state = "micro_laser" origin_tech = "magnets=1" m_amt = 10 g_amt = 20 /obj/item/weapon/stock_parts/matter_bin name = "matter bin" desc = "A container for hold compressed matter awaiting re-construction." icon_state = "matter_bin" origin_tech = "materials=1" m_amt = 80 //Rank 2 /obj/item/weapon/stock_parts/capacitor/adv name = "advanced capacitor" desc = "An advanced capacitor used in the construction of a variety of devices." origin_tech = "powerstorage=3" rating = 2 m_amt = 50 g_amt = 50 /obj/item/weapon/stock_parts/scanning_module/adv name = "advanced scanning module" desc = "A compact, high resolution scanning module used in the construction of certain devices." icon_state = "scan_module" origin_tech = "magnets=3" rating = 2 m_amt = 50 g_amt = 20 /obj/item/weapon/stock_parts/manipulator/nano name = "nano-manipulator" desc = "A tiny little manipulator used in the construction of certain devices." icon_state = "nano_mani" origin_tech = "materials=3,programming=2" rating = 2 m_amt = 30 /obj/item/weapon/stock_parts/micro_laser/high name = "high-power micro-laser" desc = "A tiny laser used in certain devices." icon_state = "high_micro_laser" origin_tech = "magnets=3" rating = 2 m_amt = 10 g_amt = 20 /obj/item/weapon/stock_parts/matter_bin/adv name = "advanced matter bin" desc = "A container for hold compressed matter awaiting re-construction." icon_state = "advanced_matter_bin" origin_tech = "materials=3" rating = 2 m_amt = 80 //Rating 3 /obj/item/weapon/stock_parts/capacitor/super name = "super capacitor" desc = "A super-high capacity capacitor used in the construction of a variety of devices." origin_tech = "powerstorage=5;materials=4" rating = 3 m_amt = 50 g_amt = 50 /obj/item/weapon/stock_parts/scanning_module/phasic name = "phasic scanning module" desc = "A compact, high resolution phasic scanning module used in the construction of certain devices." origin_tech = "magnets=5" rating = 3 m_amt = 50 g_amt = 20 /obj/item/weapon/stock_parts/manipulator/pico name = "pico-manipulator" desc = "A tiny little manipulator used in the construction of certain devices." icon_state = "pico_mani" origin_tech = "materials=5,programming=2" rating = 3 m_amt = 30 /obj/item/weapon/stock_parts/micro_laser/ultra name = "ultra-high-power micro-laser" icon_state = "ultra_high_micro_laser" desc = "A tiny laser used in certain devices." origin_tech = "magnets=5" rating = 3 m_amt = 10 g_amt = 20 /obj/item/weapon/stock_parts/matter_bin/super name = "super matter bin" desc = "A container for hold compressed matter awaiting re-construction." icon_state = "super_matter_bin" origin_tech = "materials=5" rating = 3 m_amt = 80 // Subspace stock parts /obj/item/weapon/stock_parts/subspace/ansible name = "subspace ansible" icon_state = "subspace_ansible" desc = "A compact module capable of sensing extradimensional activity." origin_tech = "programming=2;magnets=3;materials=2;bluespace=1" m_amt = 30 g_amt = 10 /obj/item/weapon/stock_parts/subspace/filter name = "hyperwave filter" icon_state = "hyperwave_filter" desc = "A tiny device capable of filtering and converting super-intense radiowaves." origin_tech = "programming=2;magnets=1" m_amt = 30 g_amt = 10 /obj/item/weapon/stock_parts/subspace/amplifier name = "subspace amplifier" icon_state = "subspace_amplifier" desc = "A compact micro-machine capable of amplifying weak subspace transmissions." origin_tech = "programming=2;magnets=2;materials=1;bluespace=1" m_amt = 30 g_amt = 10 /obj/item/weapon/stock_parts/subspace/treatment name = "subspace treatment disk" icon_state = "treatment_disk" desc = "A compact micro-machine capable of stretching out hyper-compressed radio waves." origin_tech = "programming=2;magnets=1;materials=3;bluespace=1" m_amt = 30 g_amt = 10 /obj/item/weapon/stock_parts/subspace/analyzer name = "subspace wavelength analyzer" icon_state = "wavelength_analyzer" desc = "A sophisticated analyzer capable of analyzing cryptic subspace wavelengths." origin_tech = "programming=2;magnets=2;materials=2;bluespace=1" m_amt = 30 g_amt = 10 /obj/item/weapon/stock_parts/subspace/crystal name = "ansible crystal" icon_state = "ansible_crystal" desc = "A crystal made from pure glass used to transmit laser databursts to subspace." origin_tech = "magnets=2;materials=2;bluespace=1" g_amt = 50 /obj/item/weapon/stock_parts/subspace/transmitter name = "subspace transmitter" icon_state = "subspace_transmitter" desc = "A large piece of equipment used to open a window into the subspace dimension." origin_tech = "magnets=3;materials=3;bluespace=2" m_amt = 50 /obj/item/weapon/ectoplasm name = "ectoplasm" desc = "spooky" gender = PLURAL icon = 'icons/obj/wizard.dmi' icon_state = "ectoplasm" /obj/item/weapon/research//Makes testing much less of a pain -Sieve name = "research" icon = 'icons/obj/stock_parts.dmi' icon_state = "capacitor" desc = "A debug item for research." origin_tech = "materials=8;programming=8;magnets=8;powerstorage=8;bluespace=8;combat=8;biotech=8;syndicate=8" /////////Random shit//////// /obj/item/weapon/lightning name = "lightning" icon = 'icons/obj/lightning.dmi' icon_state = "lightning" desc = "test lightning" flags = USEDELAY New() icon = midicon icon_state = "1" afterattack(atom/A as mob|obj|turf|area, mob/living/user as mob|obj, flag, params) var/angle = get_angle(A, user) //world << angle angle = round(angle) + 45 if(angle > 180) angle -= 180 else angle += 180 if(!angle) angle = 1 //world << "adjusted [angle]" icon_state = "[angle]" //world << "[angle] [(get_dist(user, A) - 1)]" user.Beam(A, "lightning", 'icons/obj/zap.dmi', 50, 15) /*Testing proc/get_angle(atom/a, atom/b) return atan2(b.y - a.y, b.x - a.x) proc/atan2(x, y) if(!x && !y) return 0 return y >= 0 ? arccos(x / sqrt(x * x + y * y)) : -arccos(x / sqrt(x * x + y * y)) proc // creates an /icon object with 360 states of rotation rotate_icon(file, state, step = 1, aa = FALSE) var icon/base = icon(file, state) var w, h, w2, h2 if(aa) aa ++ w = base.Width() w2 = w * aa h = base.Height() h2 = h * aa var icon{result = icon(base); temp} for(var/angle in 0 to 360 step step) if(angle == 0 ) continue if(angle == 360) continue temp = icon(base) if(aa) temp.Scale(w2, h2) temp.Turn(angle) if(aa) temp.Scale(w, h) result.Insert(temp, "[angle]") return result*/ /obj/item/weapon/fan name = "desk fan" icon = 'icons/obj/decorations.dmi' icon_state = "fan" desc = "A smal desktop fan. Button seems to be stuck in the 'on' position." /obj/item/weapon/newton name = "newton cradle" icon = 'icons/obj/decorations.dmi' icon_state = "newton" desc = "A device bored paper pushers use to remind themselves that the time did not stop yet. Contains gravity." /obj/item/weapon/balltoy name = "ball toy" icon = 'icons/obj/decorations.dmi' icon_state = "rollball" desc = "A device bored paper pushers use to remind themselves that the time did not stop yet." /obj/item/weapon/kidanglobe name = "Kidan homeworld globe" icon = 'icons/obj/decorations.dmi' icon_state = "kidanglobe" desc = "A globe of the Kidan homeworld."