//This file contains stuff that is still *mostly* my code. /* /atom/verb/textureTest() set src in view() src.setTexture("damaged", BLEND_MULTIPLY, "damaged") src.setTexture("shiny", BLEND_ADD, "shiny") */ // /datum/admins/proc/pixelexplosion() set category = "Debug" set name = "Pixel animation mode" set desc="Enter pixel animation mode" alert("Due to me being a lazy fuck you have to close & reopen your client to exit this mode. ITS A DEBUG THING OKAY") pixelmagic() /datum/targetable/pixelpicker target_anything = 1 targeted = 1 max_range = 3000 castcheck(var/mob/M) if (M.client && M.client.holder) return 1 handleCast(var/atom/selected) dothepixelthing(selected) var/mob/M = usr var/datum/targetable/pixelpicker/R = new() M.targeting_spell = R M.update_cursor() return 1 /proc/pixelmagic() var/mob/M = usr var/datum/targetable/pixelpicker/R = new() M.targeting_spell = R M.update_cursor() /proc/dothepixelthing(var/atom/A) //var/list/pixels = list() var/icon/I = icon(A.icon, A.icon_state, A.dir) var/atom/movable/AT = A.loc playsound(AT, 'sound/effects/splat.ogg', 75, 1) for(var/y = 1, y <= 32, y++) for(var/x = 1, x <= 32, x++) var/color = I.GetPixel(x, y) if(color != null) var/actX = A.pixel_x + x - 1 var/actY = A.pixel_y + y - 1 var/obj/apixel/P = new/obj/apixel(A.loc) P.pixel_x = actX P.pixel_y = actY P.color = color P.layer = 15 //pixels.Add(P) animate_melt_pixel(P) qdel(A) //playsound(AT, 'sound/effects/pixelexplosion.ogg', 75, 1) //for(var/obj/apixel/P in pixels) // spawn(rand(1,2)) // animate_explode_pixel(P) // spawn(10) qdel(P) return /obj/apixel name = "" desc = "this is a single pixel. wow." icon = 'icons/effects/1x1.dmi' icon_state = "pixel" anchored = 1 density = 0 opacity = 0 /obj/item/craftedmelee/spear name = "spear" desc = "it's an improvised spear." icon = null rebuild() ..() name = "[core.name]-[head.name] spear" desc = "It's an improvised spear. The handle is made from \a [core.name] and the head is \a [head.name]." //literally turning the used items into the parts of the spear. Im not sure what i will use this for. core.icon = icon('icons/obj/crafting.dmi',"spearbody") head.icon = icon('icons/obj/crafting.dmi',"spearhead") core.pixel_x = 0 core.pixel_y = 0 head.pixel_x = 0 head.pixel_y = 0 src.overlays.Cut() src.overlays.Add(image(icon = core,loc = src, layer = HUD_LAYER+2)) //This will cause the item to draw above the ui even when its on the ground. That's crap src.overlays.Add(image(icon = head,loc = src, layer = HUD_LAYER+2)) //But if i don't set it the item disappears under the inventory slots because it's purely overlays. :gonk: src.material = head.material return attack(mob/M as mob, mob/user as mob) //TBI return ..(M,user) /obj/item/craftedmelee name = "melee weapon" desc = "this appears to be an improvised melee weapon." var/obj/item/core = null var/obj/item/head = null proc/rebuild() //will rebuild the icon and properties of the weapon based on its materials. return /obj/item/craftedcrap name = "???" desc = "this appears to be a taped-together mess of random crap." var/obj/item/item1 = null var/obj/item/item2 = null proc/rebuild() //will rebuild the icon and properties of the weapon based on its materials. var/icon/crapicon = icon(item1.icon, item1.icon_state) crapicon.Blend(icon(item2.icon, item2.icon_state), ICON_OVERLAY) icon = crapicon setTexture(pick("tape1", "tape2"), ICON_OVERLAY , "tape") var/part1 = copytext(item1.name, 1, round(length(item1.name) / 2)) var/part2 = copytext(item2.name, round(length(item2.name) / 2), 0) name = "[part1][part2]" desc = "Someone taped together \a [item1.name] and \a [item2.name]. Great." return attack(mob/M as mob, mob/user as mob) if(!item1 || !item2) del(src) return if(prob(50)) return item1.attack(M, user) else return item2.attack(M, user) /proc/makeshittyweapon() var/path1 var/path2 var/sel1 = alert("Select item 1 type",,"Random","Enter Path") switch(sel1) if("Random") path1 = pick(typesof(/obj/item)) else path1 = text2path(input(usr,"Enter Path:","path","/obj/item") as text) var/sel2 = alert("Select item 2 type",,"Random","Enter Path") switch(sel2) if("Random") path2 = pick(typesof(/obj/item)) else path2 = text2path(input(usr,"Enter Path:","path","/obj/item") as text) if(!ispath(path1) || !ispath(path2)) return var/obj/item/item1 = new path1(usr.loc) var/obj/item/item2 = new path2(usr.loc) var/obj/item/craftedcrap/tube = new/obj/item/craftedcrap(usr.loc) tube.item1 = item1 tube.item2 = item2 item1.set_loc(tube) item2.set_loc(tube) tube.rebuild() return tube /obj/item/ghostboard name = "Ouija board" desc = "A wooden board that allows for communication with spirits and such things. Or that's what the company that makes them claims, at least." icon = 'icons/obj/items.dmi' icon_state = "lboard" item_state = "clipboard" w_class = 3.0 var/ready = 1 var/list/users = list() var/use_delay = 30 Click(location,control,params) if(istype(usr, /mob/dead) || istype(usr, /mob/wraith)) if(!users.Find(usr)) users[usr] = 0 if((world.time - users[usr]) >= use_delay) var/list/words = list() for(var/i=0, iThe board spells out a message ... \"[selected]\"", 1) else usr.show_text("Please wait a moment before using the board again.", "red") else return ..(location,control,params) /proc/fartes() for(var/imageToLoad in flist("images/")) usr << browse_rsc(file("images/[imageToLoad]")) boutput(world, "[imageToLoad] - [file("images/[imageToLoad]")]") return /obj/largetest name = "test" desc = "" anchored = 1 density = 1 opacity = 0 icon = 'icons/misc/512x512.dmi' icon_state = "0,0" /obj/peninscription name = "mysterious inscription" desc = "It's some form of inscription. It reads 'nij ud-bi-ta la-ba-jal-la: ki-sikil tur ur dam-ma-na-ka ce nu-ub-dur-re'. There is a small pictogram below it." anchored = 1 density = 0 opacity = 0 icon = 'icons/obj/decals.dmi' icon_state = "pen" attackby(obj/item/W as obj, mob/user as mob) if(istype(W,/obj/item/device/key)) boutput(user, "[W] disappears suddenly as you bring it close to the inscription ... huh") del(W) if(istype(W,/obj/item/pen)) boutput(user, "A terrible noise fills the air as the inscription seemingly rejects [W].") playsound(src.loc, "hellhorn_12.ogg", 100, 1) return /obj/burning_barrel name = "burning barrel" desc = "cozy." icon = 'icons/obj/stationobjs.dmi' icon_state = "barrel1" density = 1 anchored = 1 opacity = 0 var/datum/particleSystem/barrelSmoke/particles var/datum/light/light New() particles = particleMaster.SpawnSystem(new /datum/particleSystem/barrelSmoke(src)) light = new /datum/light/point light.attach(src) light.set_brightness(1) light.set_color(0.5, 0.3, 0) light.enable() ..() Del() particleMaster.RemoveSystem(/datum/particleSystem/barrelSmoke, src) ..() /obj/hh_portal_exit icon = 'icons/misc/exploration.dmi' icon_state = "riftexit" name = "???" desc = "" anchored = 1 density = 1 opacity = 0 Bumped(atom/movable/AM) if(!ismob(AM)) return var/mob/M = AM if(M.adventure_variables.hh_energy < 3) boutput(M, "You can't seem to pass through the energy ... ") return var/mob/dead/hhghost/H = new(AM.loc) H.client = M.client H.original = M M.set_loc(H) AM = H var/area/srcar = AM.loc.loc srcar.Exited(AM) var/obj/target = locate(/obj/landmark/hh_exit) if (!istype(target)) return var/turf/trg_turf = target.loc var/area/trgar = trg_turf.loc trgar.Entered(AM, AM.loc) AM.set_loc(trg_turf) /obj/hh_portal_entry icon = 'icons/misc/exploration.dmi' icon_state = "atear" name = "???" desc = "" anchored = 1 density = 1 opacity = 0 Bumped(atom/movable/AM) if(!AM.reagents) return if(!ismob(AM)) return if(AM.reagents.has_reagent("anima") && !AM.reagents.has_reagent("anima", 10)) boutput(AM, "The portal briefly glows as you get near but quickly dulls again. It seems like you have done SOMETHING correctly but it isn't quite enough.") return if(!AM.reagents.has_reagent("anima")) boutput(AM, "The strange energy in front of you becomes solid as you approach ...") return AM.reagents.del_reagent("anima") var/area/srcar = AM.loc.loc srcar.Exited(AM) var/obj/target = locate(/obj/landmark/hh_entry) if (!istype(target)) return var/turf/trg_turf = target.loc var/area/trgar = trg_turf.loc trgar.Entered(AM, AM.loc) AM.set_loc(trg_turf) return /obj/landmark/hh_exit name = "hh_exit" //tag = "hh_exit" /obj/landmark/hh_entry name = "hh_entry" //tag = "hh_entry" /obj/hh_sfrag name = "soul fragment" desc = "a small portion of someones life energies ..." icon = 'icons/misc/exploration.dmi' icon_state = "empty" anchored = 1 density = 0 opacity = 0 invisibility = 100 var/image/oimage = null New() oimage = image('icons/misc/exploration.dmi',src,"sfrag") orbicons.Add(oimage) return ..() Del() orbicons.Remove(oimage) del(oimage) ..() HasEntered(atom/A) if(!istype(A,/mob/dead/hhghost)) return var/mob/dead/hhghost/M = A M.adventure_variables.hh_soul += 1 particleMaster.SpawnSystem(new /datum/particleSystem/elecburst(M)) if(M.adventure_variables.hh_soul > 15) M.original.set_loc(src.loc) M.original.client = M.client del(M) del(src) return /obj/hh_energyorb name = "scintilating energy" desc = "..." icon = 'icons/misc/exploration.dmi' icon_state = "eorb" anchored = 1 density = 0 opacity = 0 HasEntered(atom/A) if(!ismob(A) || !istype(A,/mob/living)) return qdel(src) var/mob/living/M = A M.adventure_variables.hh_energy += 1 particleMaster.SpawnSystem(new /datum/particleSystem/energysp(M)) return /obj/decal/nothing name = "nothing" icon = 'icons/obj/decals.dmi' icon_state = "blank" anchored = 1 density = 0 opacity = 0 /obj/decal/nothingplug name = "nothing" icon = 'icons/obj/decals.dmi' icon_state = "blank-plug" anchored = 1 density = 0 opacity = 0 /obj/decal/hfireplug name = "fire" icon = 'icons/obj/decals.dmi' icon_state = "hfireplug" anchored = 1 density = 0 opacity = 0 /obj/decal/hfire name = "fire" icon = 'icons/obj/decals.dmi' icon_state = "hfire" anchored = 1 density = 0 opacity = 0 /obj/decal/tileswish name = "nothing" icon = 'icons/obj/decals.dmi' icon_state = "tileswish" anchored = 1 density = 0 opacity = 0 /obj/decal/swirlthing name = "vortex" desc = "a swirling blue vortex" icon = 'icons/effects/effects.dmi' icon_state = "swirlthing" anchored = 1 density = 0 opacity = 0 /obj/item/teslacannon desc = "An experimental piece of syndicate technology." name = "Tesla cannon" icon = 'icons/obj/gun.dmi' icon_state = "teslacannon" item_state = "gun" flags = FPRINT | EXTRADELAY | TABLEPASS | CONDUCT w_class = 1.0 var/firing = 0 afterattack(atom/target as mob|obj|turf|area, mob/user as mob) shoot(target, user) return proc/shoot(var/atom/target, var/mob/user) if(firing) return firing = 1 user.canmove = 0 var/turf/current = get_turf(user) var/turf/trg_loc = get_turf(target) var/list/sounds = list('sound/effects/elec_bigzap.ogg','sound/effects/elec_bzzz.ogg','sound/effects/electric_shock.ogg') while(current != trg_loc) playsound(get_turf(user), pick(sounds), 15, 1) current = get_step(current, get_dir(current, trg_loc)) user.dir = get_dir(user, current) var/obj/beam_dummy/B = showLine(get_turf(user), current, "lght", 5) var/list/affected = B.affected for(var/turf/T in affected) animate_flash_color_fill(T,"#aaddff",1,5) for(var/mob/M in T) M.weakened += 2 random_burn_damage(M, 10) if(istype(T, /turf/simulated/floor)) if(!T:broken) if(T:burnt) T:break_tile() else T:burn_tile() spawn(6) qdel(B) sleep(3) sleep(1) user.canmove = 1 firing = 0 return //Fix portal creation for areas and such. //Test with explosion proc /obj/proctrigger //Oh boy. This thing calls a proc of or on an object when an object enter it's tile. It's a bit difficult to explain, best not touch this. name = "ProcTrigger" desc = "If you see this and you're not an admin then that's sorta bad." density = 0 anchored = 1 opacity = 0 invisibility = 100 icon = 'icons/effects/ULIcons.dmi' icon_state = "7-3-0" var procName = null //Name of the proc being called. procTarget = null //Owner of the proc being called. list/turf/procArgs = list() procCooldown = 0 canTrigger = 1 proc/copy_to(var/turf/T) if(!T) return var/obj/proctrigger/P = new/obj/proctrigger(T) P.procName = src.procName P.procTarget = src.procTarget P.procArgs = src.procArgs.Copy() P.procCooldown = src.procCooldown return MouseDrop(over_object,src_location,over_location,src_control,over_control,params) var/turf/trgTurf = get_turf(over_object) if(istype(trgTurf)) switch(alert("Do you want to create a copy of the trigger on this tile?",,"Yes","No")) if("Yes") copy_to(trgTurf) boutput(usr, "*** All done ***") if("No") return return Crossed(atom/movable/O) if(!canTrigger) return canTrigger = 0 spawn(procCooldown) canTrigger = 1 if(length(procName)) var/list/modList = list() for(var/x in procArgs) if(x == "***trigger***") modList += O else modList += x if (procTarget) if(procTarget == "***trigger***") if(hascall(O, procName)) call(O,procName)(arglist(modList)) else if(hascall(procTarget, procName)) call(procTarget,procName)(arglist(modList)) else call(procName)(arglist(modList)) return Click() if(!usr.client.holder) return //basic admin check var/target = null switch(alert("Proc owned by obj?",,"Yes","No")) if("Yes") switch(alert("Proc owned by triggering object?",,"Yes","No")) if("Yes") target = "***trigger***" if("No") target = input("Select target:","Target",null) as obj|mob|area|turf in world if("No") target = null var/procname = input("Procpath","path:", null) as text var/argnum = input("Number of arguments:","Number", 0) as num var/list/listargs = list() for(var/i=0, i*** All done ***") return ex_act() return /obj/objspawner //Thing that continously spawns objects. For event's or something. I wouldn't use this on the actual map. It's not very efficient. name = "ObjSpawner" desc = "If you see this and you're not an admin then that's sorta bad." icon = 'icons/misc/mark.dmi' icon_state = "rup" density = 0 anchored = 1 opacity = 0 invisibility = 100 var/spawn_rate = 100 //Time before a new object spaws after the previous is gone. var/spawn_check_rate = 10 //How often we check if we need to spawn something. var/spawn_type = null //Type to spawn proc/runIt() if(istext(spawn_type)) spawn_type = text2path(spawn_type) if(ispath(spawn_type)) if(!(locate(spawn_type) in src.loc)) sleep(spawn_rate) new spawn_type(src.loc) spawn(spawn_check_rate) runIt() return Click() if(!usr.client.holder) return //basic admin check var/nSpawn = input(usr, "Select spawn type") in typesof(/obj) var/nCheck = input(usr, "Spawn check delay") as num var/nRate = input(usr, "Spawn check delay") as num if(nSpawn && nCheck && nRate) spawn_rate = nRate spawn_check_rate = nCheck spawn_type = nSpawn boutput(usr, "*** All done ***") return New() spawn(0) runIt() return ..() ex_act() return /proc/gobuzz() if(buzztile) usr.loc = buzztile return /obj/item/beamtest desc = "beamtest thingamobob" name = "beamtest thingamobob" icon = 'icons/effects/alch.dmi' icon_state = "pstone" item_state = "injector" flags = FPRINT | EXTRADELAY | TABLEPASS | CONDUCT w_class = 1.0 afterattack(atom/target as mob|obj|turf|area, mob/user as mob) var/obj/beam_dummy/B = showLine(get_turf(src), get_turf(target), "beam", 10) sleep(30) qdel(B) return /obj/beam_dummy name = "beam" desc = "" icon = 'icons/effects/lines.dmi' icon_state = "lght" density = 0 anchored = 1 opacity = 0 layer = NOLIGHT_EFFECTS_LAYER_BASE pixel_y = -16 var/list/affected = list() //List of crossed tiles. var/origin_angle = -1 var/atom/origin = null var/atom/target = null /obj/fireworksbox name = "Box of Fireworks" desc = "The Label simply reads : \"Firwerks fun is having total family. Made in Spacechina\"" density = 0 anchored = 0 opacity = 0 icon = 'icons/obj/objects.dmi' icon_state = "fireworksbox" var/fireworking = 0 attack_hand(mob/user as mob) if(fireworking) return fireworking = 1 boutput(user, "The fireworks go off as soon as you touch the box. This is some high quality stuff.") anchored = 1 spawn(0) for(var/i=0, iThe box of fireworks magically disappears.", 1) qdel(src) return /obj/candle_light_2spoopy icon = 'icons/effects/alch.dmi' icon_state = "candle" name = "spooky candle" desc = "It's a big candle. It's also floating." density = 0 anchored = 1 opacity = 0 var/datum/light/light New() ..() light = new /datum/light/point light.set_brightness(0.7) light.set_color(0.5, 0.3, 0) light.attach(src) light.enable() var/spoopydegrees = rand(5, 20) spawn(rand(1,10)) animate(src, pixel_y = 32, transform = matrix(spoopydegrees, MATRIX_ROTATE), time = 20, loop = -1, easing = SINE_EASING) animate(pixel_y = 0, transform = matrix(-1 * spoopydegrees, MATRIX_ROTATE), time = 20, loop = -1, easing = SINE_EASING) //Really sorry about the shitty code below. I couldn't be arsed to do it properly. /obj/candle_light icon = 'icons/effects/alch.dmi' icon_state = "candle" name = "candle" desc = "It's a big candle" density = 0 anchored = 1 opacity = 0 var/datum/light/point/light New() ..() light = new light.set_brightness(0.7) light.set_color(1, 0.6, 0) light.set_height(0.75) light.attach(src) light.enable() /obj/item/alchemy/stone desc = "A blood red stone. It pulses ever so slightly when you hold it." name = "philosopher's stone" icon = 'icons/effects/alch.dmi' icon_state = "pstone" item_state = "injector" flags = FPRINT | EXTRADELAY | TABLEPASS | CONDUCT w_class = 1.0 var/datum/light/light afterattack(atom/target as mob|obj|turf|area, mob/user as mob) if(get_dist(target,user) > 1) return return attack() return New() ..() src.visible_message("[src] appears out of thin air!") new /obj/effects/shockwave {name = "mystical energy";} (src.loc) light = new /datum/light/point light.attach(src) light.set_color(1,0.5,0.5) light.set_height(0.2) light.set_brightness(0.4) light.enable() /obj/item/alchemy/powder desc = "A little purple pouch filled with a white powder." name = "purple pouch" icon = 'icons/effects/alch.dmi' icon_state = "powder" item_state = "injector" flags = FPRINT | EXTRADELAY | TABLEPASS | CONDUCT w_class = 1.0 afterattack(atom/target as mob|obj|turf|area, mob/user as mob) if(get_dist(target,user) > 1 && !istype(target, /obj/alchemy/circle)) return if(target == loc) return boutput(user, "Your sprinkle some powder on \the [target].") if(istype(target, /obj/alchemy/circle)) target:activate() return attack() return /obj/item/paper/alchemy name = "notebook page 1" desc = "a page torn from a notebook" info = "... blood is the catalyst ... the arcane powder the key..." /obj/item/paper/alchemy/north name = "notebook page 2" New() spawn(100) info = "... [alchemy_symbols["north"]] stands above all else ..." /obj/item/paper/alchemy/southeast name = "notebook page 3" New() spawn(100) info = "... in the place the sun rises, [alchemy_symbols["southeast"]] is required ..." /obj/item/paper/alchemy/southwest name = "notebook page 4" New() spawn(100) info = "... [alchemy_symbols["southwest"]] where light fades ..." /obj/item/alchemy/symbol name = "Symbol" desc = "Some sort of alchemical Symbol on a Scroll." icon = 'icons/effects/alch.dmi' var/info = "" /var/list/alchemy_symbols = new/list() /obj/item/alchemy/symbol/water icon_state = "alch_water" info = "Water" /obj/item/alchemy/symbol/fire icon_state = "alch_fire" info = "Fire" /obj/item/alchemy/symbol/air icon_state = "alch_air" info = "Air" /obj/item/alchemy/symbol/earth icon_state = "alch_earth" info = "Earth" /obj/item/alchemy/symbol/connect icon_state = "alch_con" info = "Connection" /obj/item/alchemy/symbol/distill icon_state = "alch_distill" info = "Distillation" /obj/item/alchemy/symbol/incin icon_state = "alch_incin" info = "Incineration" /obj/item/alchemy/symbol/life icon_state = "alch_life" info = "Life" /obj/item/alchemy/symbol/proj icon_state = "alch_proj" info = "Projection" /obj/item/alchemy/symbol/salt icon_state = "alch_salt" info = "Salt" /obj/alchemy/empty name = "Empty Circle" desc = "An Empty Circle, waiting to be filled" anchored = 1 density = 0 opacity= 0 icon = 'icons/effects/alch.dmi' icon_state = "alch_empty" var/obj/item/alchemy/symbol = null var/requiredType = null attack_hand(mob/user as mob) if(symbol != null) symbol.loc = src.loc symbol = null overlays.Cut() boutput(usr, "You remove the Symbol.") return attackby(obj/item/W as obj, mob/user as mob) if(istype(W,/obj/item/alchemy/symbol) && symbol == null) user.drop_item() symbol = W symbol.loc = src overlays += symbol boutput(usr, "You put the Symbol in the Circle.") return /obj/alchemy/circle name = "Alchemy Circle" desc = "A bizzare looking mass of lines and circles is drawn onto the floor here." anchored = 1 density = 0 opacity= 0 layer = FLOOR_EQUIP_LAYER1 icon = 'icons/effects/160x160.dmi' icon_state = "alchcircle" var/activated = 0 var/obj/alchemy/empty/north = null var/obj/alchemy/empty/southwest = null var/obj/alchemy/empty/southeast = null var/target_id = "alchemy" proc/activate() if(activated) return if((north.symbol && istype(north.symbol,north.requiredType)) && (southwest.symbol && istype(southwest.symbol,southwest.requiredType)) && (southeast.symbol && istype(southeast.symbol,southeast.requiredType))) var/turf/middle = locate(src.x + 2, src.y + 2, src.z) var/blood = 0 for(var/atom/A in range(2, middle)) if(istype(A, /obj/decal/cleanable/blood)) blood = 1 break if(blood == 1) activated = 1 boutput(usr, "The Circle begins to vibrate and glow.") playsound(src.loc, "sound/effects/chanting.ogg", 50, 1) sleep(10) shake_camera(usr, 15, 1, 0.2) sleep(10) for(var/turf/T in range(2,middle)) new/obj/decal/cleanable/greenglow(T) sleep(10) world << sound('sound/effects/mag_pandroar.ogg', volume=60) // heh shake_camera(usr, 15, 1, 0.5) new/obj/item/alchemy/stone(middle) sleep(2) var/obj/graveyard/loose_rock/R = locate("loose_rock_[target_id]") if(istype(R)) spawn(1) R.crumble() var/area/the_catacombs = get_area(src) for (var/mob/living/M in the_catacombs) if (M.stat == 2) continue M.unlock_medal("Illuminated", 1) else boutput(usr, "The Circle glows faintly before returning to normal. Maybe something is missing.") return else boutput(usr, "The Circle remains silent ...") attackby(obj/item/W as obj, mob/user as mob) if(activated) return New(var/location) var/list/types = new/list() var/obj/item/alchemy/symbol/S = null for(var/A in typesof(/obj/item/alchemy/symbol) - /obj/item/alchemy/symbol) types += A loc = location north = new(locate(src.loc.x + 2, src.loc.y + 3, src.loc.z)) var/ntype = pick(types) S = new ntype() alchemy_symbols["north"] = S.info types -= ntype north.requiredType = ntype southwest = new(locate(src.loc.x + 1, src.loc.y + 1, src.loc.z)) southwest.pixel_y = 16 var/swtype = pick(types) S = new swtype() alchemy_symbols["southwest"] = S.info types -= swtype southwest.requiredType = swtype southeast = new(locate(src.loc.x + 3, src.loc.y + 1, src.loc.z)) southeast.pixel_y = 16 var/setype = pick(types) S = new setype() alchemy_symbols["southeast"] = S.info types -= setype southeast.requiredType = setype return /obj/line_obj/elec name = "electricity" desc = "" anchored = 1 density = 0 opacity = 0 /obj/elec_trg_dummy name = "" desc = "" anchored = 1 density = 0 opacity = 0 invisibility = 99 /* /obj/item/rpg_rocket_shuttle name = "MPRT rocket" desc = "A rocket-propelled grenade with a HEAT warhead." icon = 'icons/obj/projectiles.dmi' icon_state = "rpg_rocket" item_state = "chips" w_class = 3.0 throw_speed = 2 throw_range = 10 force = 5.0 flags = FPRINT | TABLEPASS | CONDUCT var/state = 0 var/yo = null var/xo = null var/current = null New() ..() proc explode() var/turf/T = get_turf(src.loc) if(T) //explosion(src, turf/epicenter, devastation_range, heavy_impact_range, light_impact_range, flash_range, var/lagreducer = 0) explosion(src, T, -1, -1, 1, 2) qdel(src) process() if ((!( src.current ) || src.loc == src.current)) src.current = locate(min(max(src.x + src.xo, 1), world.maxx), min(max(src.y + src.yo, 1), world.maxy), src.z) if ((src.x == 1 || src.x == world.maxx || src.y == 1 || src.y == world.maxy)) //SN src = null qdel(src) return step_towards(src, src.current) spawn( 1 ) process() return return Bump(atom/movable/AM as mob|obj) if(!state) ..() return explode() /obj/shuttle_cannon name = "Shuttle Cannon" desc = "Pew Pew" icon = 'icons/obj/weapons.dmi' icon_state = "shuttlecannonthing" anchored = 1 density = 1 var/ready = 1 verb/enter() set src in view(1) set name = "Enter" if(src.contents.len) boutput(usr, "Someone is already using this.") return usr.client.view = 11 usr.see_in_dark = 11 usr.set_loc(src) verb/exit() set src in view(1) set name = "Exit" if(!(usr in src.contents)) boutput(usr, "You are not using this.") return usr.client.view = world.view usr.see_in_dark = initial(usr.see_in_dark) usr.set_loc(src.loc) relaymove(mob/user, direction) if(!ready) return ready = 0 if(direction == turn(src.dir, 180)) ready = 1 return var/turf/fire_target_tile = get_step(get_step(get_step(get_step(src, src.dir), src.dir), direction), direction) spawn(1) playsound(src, "sound/weapons/rocket.ogg", 50, 1) var/obj/item/rpg_rocket/R = new R.set_loc(get_step(src, src.dir)) R.density = 1 R.state = 1 R.current = fire_target_tile R.yo = fire_target_tile.y - src.y R.xo = fire_target_tile.x - src.x R.process() spawn(25) ready = 1 */ /obj/movable_area_controler name = "controler" desc = "Don't move this thing or you're gonna have a bad time." icon = 'icons/obj/objects.dmi' icon_state = "stool" anchored = 1 density = 0 var/areasize = "" var/moving = 0 var/usable = 0 verb/setup_area() set src in view(1) set name = "Setup" src.verbs -= /obj/movable_area_controler/verb/setup_area var/width = input(usr,"Width:","Setup",7) as num var/height = input(usr,"Height:","Setup",5) as num areasize = "[width]x[height]" for(var/turf/T in range(areasize, src)) if(!isturf(T)) continue new/turf/unsimulated/floor(T) usable = 1 verb/enter() set src in view(1) set name = "Enter" if(src.contents.len) boutput(usr, "Someone is already using this.") return usr.client.view = 12 usr.see_in_dark = 12 src.overlays += usr usr.set_loc(src) verb/exit() set src in view(1) set name = "Exit" if(!(usr in src.contents)) boutput(usr, "You are not using this.") return usr.client.view = world.view usr.see_in_dark = initial(usr.see_in_dark) src.overlays.Cut() usr.set_loc(src.loc) relaymove(mob/user, direction) if(moving || !usable) return moving = 1 var/turf/new_loc = get_step(src, direction) var/list/oldareaturfs = new/list() var/list/newareaturfs = new/list() var/list/objects_to_move = new/list() for(var/turf/T in range(areasize, src)) if(!isturf(T)) continue oldareaturfs += T for(var/atom/movable/A in T) objects_to_move += A for(var/turf/T in range(areasize, new_loc)) if(!isturf(T)) continue newareaturfs += T if(newareaturfs.len < oldareaturfs.len) //Out of bounds. Fucking byond. moving = 0 return //Oh man. Dont ask what im doing here. It's Craaaazy var/list/commonturfs = oldareaturfs & newareaturfs var/list/newturfs = newareaturfs ^ commonturfs var/list/discardedturfs = oldareaturfs ^ commonturfs for(var/turf/T in newturfs) if(!movable_area_check(T)) moving = 0 return for(var/turf/T in newturfs) T.movable_area_prev_type = T.type for(var/atom/movable/A in T) A.set_loc(get_step(A.loc, direction)) for(var/turf/T in newareaturfs) if(!isturf(T)) continue var/turf/prev_turf = get_step(T, turn(direction, 180)) T.movable_area_next_type = prev_turf.type for(var/turf/T in newareaturfs) if(!isturf(T)) continue var/oldtype = T.movable_area_prev_type var/turf/tnew = new T.movable_area_next_type (T) tnew.movable_area_prev_type = oldtype for(var/turf/T in discardedturfs) if(!isturf(T)) continue if(T.movable_area_prev_type != null) new T.movable_area_prev_type (T) else new/turf/space(T) for(var/atom/movable/A in objects_to_move) A.animate_movement = 0 A.set_loc(get_step(A.loc, direction)) moving = 0 /proc/infestation_custom() var/turf/T = get_turf(usr) var/typepathstr = input(usr, "Typepath:") var/num_spread = input(usr, "Max spreads (-1 for infinite):") as num var/num_delay = input(usr, "Delay between spread in sec:") as num var/num_gens = input(usr, "Max Generations per spawn (-1 for infinite):") as num var/typepath = text2path(typepathstr) if(!ispath(typepath)) return var/atom/A = new typepath (T) var/list/active_spread = new/list() active_spread += A active_spread[A] = num_gens spawn(0) while(num_spread > 0 || num_spread == -1) for(var/atom/curr in active_spread) var/can_spread = null for(var/dir in cardinal) var/atom/next = get_turf(get_step(curr,dir)) if(is_free(next) && !istype(next, typepath) && !locate(typepath) in next) can_spread = next if(can_spread == null) if(active_spread[curr] > 0 || active_spread[curr] == -1) if(active_spread[curr] > 0) active_spread[curr]-- else active_spread -= curr else var/atom/newspawn = new typepath (can_spread) active_spread += newspawn active_spread[newspawn] = num_gens sleep(10 * num_delay) if(num_spread > 0) num_spread-- LAGCHECK(75) /proc/is_free(var/atom/A) if(!A) return if(A.density) return 0 for(var/atom/curr in A) if(curr.density) return 0 if(istype(A, /turf/space)) return 0 return 1 /obj/dfissure_to name = "dimensional fissure" desc = "a rip in time and space" opacity = 0 density = 1 anchored = 1 icon = 'icons/effects/3dimension.dmi' icon_state = "fissure" Bumped(atom/movable/AM) var/area/srcar = AM.loc.loc srcar.Exited(AM) var/obj/source = locate(/obj/dfissure_from) if (!istype(source)) qdel(src) return var/turf/trg = source.loc var/area/trgar = trg.loc trgar.Entered(AM, AM.loc) AM.set_loc(trg) /obj/dfissure_from name = "dimensional fissure" desc = "a rip in time and space" opacity = 0 density = 1 anchored = 1 icon = 'icons/effects/3dimension.dmi' icon_state = "fissure" Bumped(atom/movable/AM) var/area/srcar = AM.loc.loc srcar.Exited(AM) var/obj/source = locate(/obj/dfissure_to) if (!istype(source)) qdel(src) return var/turf/trg = source.loc var/area/trgar = trg.loc trgar.Entered(AM, AM.loc) AM.set_loc(trg) /turf/unsimulated/wall/void name = "dense void" icon = 'icons/turf/floors.dmi' icon_state = "darkvoid" desc = "It seems solid..." opacity = 1 density = 1 /turf/unsimulated/floor/void name = "void" icon = 'icons/turf/floors.dmi' icon_state = "void" desc = "A strange shifting void ..." /turf/simulated/wall/void name = "dense void" icon = 'icons/turf/floors.dmi' icon_state = "darkvoid" desc = "It seems solid..." opacity = 1 density = 1 ex_act() return ex_act(severity) return blob_act(var/power) return attack_hand(mob/user as mob) return attackby(obj/item/W as obj, mob/user as mob) return /turf/simulated/floor/void name = "void" icon = 'icons/turf/floors.dmi' icon_state = "void" desc = "A strange shifting void ..." ex_act() return ex_act(severity) return blob_act(var/power) return attack_hand(mob/user as mob) return attackby(obj/item/W as obj, mob/user as mob) return /area/otherdimesion requires_power = 0 luminosity = 1 RL_Lighting = 0 name = "Somewhere" icon_state = "shuttle2" /area/crunch var/sound/mysound = null New() ..() var/sound/S = new/sound() mysound = S S.file = 'sound/ambience/voidambi.ogg' S.repeat = 1 S.wait = 0 S.channel = 123 S.volume = 60 S.priority = 255 S.status = SOUND_UPDATE spawn(10) process() Entered(atom/movable/Obj,atom/OldLoc) ..() if(ismob(Obj)) if(Obj:client) mysound.status = SOUND_UPDATE Obj << mysound return Exited(atom/movable/Obj) ..() if(ismob(Obj)) if(Obj:client) mysound.status = SOUND_PAUSED | SOUND_UPDATE Obj << mysound proc/process() var/sound/S = null var/sound_delay = 0 while(ticker && ticker.current_state < GAME_STATE_FINISHED) sleep(60) if (ticker.current_state == GAME_STATE_PLAYING) if(prob(10)) S = sound(file=pick('sound/ambience/voidfx1.ogg','sound/ambience/voidfx2.ogg','sound/ambience/voidfx3.ogg','sound/ambience/voidfx4.ogg'), volume=100) sound_delay = rand(0, 50) else S = null continue for(var/mob/living/carbon/human/H in src) if(H.client) mysound.status = SOUND_UPDATE H << mysound if(S) spawn(sound_delay) H << S /proc/zombies() var/list/eligible = new/list() for(var/mob/living/carbon/human/H in mobs) if(H.z == 1 && H.stat != 2 && H.client) eligible.Add(H) var/mob/living/carbon/human/picked1 if(eligible.len > 0) picked1 = pick(eligible) eligible -= picked1 var/mob/living/carbon/human/picked2 if(eligible.len > 0) picked2 = pick(eligible) if(picked1) picked1.zombify() if(picked2) picked2.zombify() for(var/turf/T in wormholeturfs) if(prob(3)) new/obj/item/plank(T) new/obj/item/plank(T) else if(prob(1) && prob(40)) new/obj/item/gun/kinetic/spacker(T) new/obj/item/ammo/bullets/a12(T) new/obj/item/ammo/bullets/a12(T) else if(prob(1) && prob(40)) new/obj/item/gun/kinetic/flaregun(T) new/obj/item/ammo/bullets/flare(T) new/obj/item/ammo/bullets/flare(T) /mob/living/carbon/human/proc/zombify() var/datum/ailment_data/disease/ZOM = contract_disease(/datum/ailment/disease/necrotic_degeneration, null, null, 1) if (!istype(ZOM,/datum/ailment/disease/)) return ZOM.stage = 5 boutput(src, "########################################") boutput(src, "You have turned into a zombie.") boutput(src, "To infect other players, you must knock") boutput(src, "them down and then attack them with your") boutput(src, "bare hands and the harm intent.") boutput(src, "########################################") /obj/item/boomerang name = "Boomerang" desc = "A Boomerang." inhand_image_icon = 'icons/mob/inhand/hand_weapons.dmi' item_state = "boomerang" density = 0 opacity = 0 anchored = 1 icon = 'icons/obj/weapons.dmi' icon_state = "boomerang" item_state = "boomerang" //throwforce = 10 throw_range = 10 throw_speed = 1 throw_return = 1 var/prob_clonk = 0 throw_begin(atom/target) icon_state = "boomerang1" playsound(src.loc, "rustle", 50, 1) return ..(target) throw_impact(atom/hit_atom) icon_state = "boomerang" if(hit_atom == usr) if(prob(prob_clonk)) var/mob/living/carbon/human/user = usr user.visible_message("[user] fumbles the catch and is clonked on the head!") playsound(user.loc, 'sound/effects/fleshbr1.ogg', 50, 1) user.stunned += 5 user.weakened += 3 user.paralysis += 2 else src.attack_hand(usr) return else if(ishuman(hit_atom)) var/mob/living/carbon/human/user = usr var/safari = (istype(user.w_uniform, /obj/item/clothing/under/gimmick/safari) && istype(user.head, /obj/item/clothing/head/safari)) if(safari) var/mob/living/carbon/human/H = hit_atom H.stunned+=4 H.weakened+=2 //H.paralysis++ playsound(H.loc, "swing_hit", 50, 1) prob_clonk = min(prob_clonk + 5, 40) spawn(20) prob_clonk = max(prob_clonk - 5, 0) return ..(hit_atom) /proc/mod_color(var/atom/A) set category = null set name = "Modify Icon" set popup_menu = 0 var/list/options = list("Tint", "Invert Colors", "Change Alpha") var/input = input(usr,"Select mode:","Mode") in options switch(input) if("Tint") var/r = input(usr,"Enter Value:","RED") as num if (!r) return var/g = input(usr,"Enter Value:","GREEN") as num if (!g) return var/b = input(usr,"Enter Value:","BLUE") as num if (!b) return A.color = rgb(r,g,b) if("Invert Colors") var/icon/newicon = icon(A.icon) newicon.MapColors(-1,0,0, 0,-1,0, 0,0,-1, 1,1,1) A.icon = newicon if( "Change Alpha") var/a = input(usr,"Enter Value:","ALPHA (multiplicative 0-255)") as num if (a) A.alpha = a /verb/create_portal(var/turf/T as turf in world) set category = null set name = "Create Portal Here" var/obj/perm_portal/P = null switch(alert("Target selection type:",,"By reference","To turf")) if("By reference") var/input = input(usr,"Select Target:","Target") in world if(!input) return P = new/obj/perm_portal(T) P.target = input if("To turf") alert("Please move to the target location and then press OK.") var/atom/trg = get_turf(usr) if(trg) P = new/obj/perm_portal(T) P.target = trg /obj/perm_portal icon = 'icons/misc/old_or_unused.dmi' icon_state = "portal1" anchored = 1 density = 1 opacity = 0 var/atom/target = null var/target_tag = null var/datum/light/light New() ..() light = new /datum/light/point light.set_color(0.3, 0.6, 0.8) light.set_brightness(0.5) light.attach(src) light.enable() spawn(6) if (target_tag) target = locate(target_tag) Bumped(atom/movable/AM) if(target && istype(target)) AM.set_loc(get_turf(target)) //////////////////////////////////////////////////////////////////////////////////////// /* var/list/raisinlist = new/list() /proc/for_no_raisin(var/mob/M, text) if(findtext(text,"for no raisin")) if(M.client) if(!(M.client in raisinlist) && istype(M,/mob/living)) boutput(M, "A raisin mysteriously materializes right next to your feet...") new/obj/item/reagent_containers/food/snacks/raisin(get_turf(M)) raisinlist += M.client return /obj/item/reagent_containers/food/snacks/raisin name = "raisin" desc = "A single raisin..." icon_state = "raisin" amount = 1 heal_amt = 5 attack(mob/M as mob, mob/user as mob, def_zone) if(istype(M, /mob/living/carbon/human)) if(M == user) M.nutrition += src.heal_amt * 10 M.poo += 1 src.heal(M) playsound(M.loc,"sound/items/eatfood.ogg", rand(10,50), 1) boutput(user, "You eat the raisin and shed a single tear as you realise that you now have no raisin.") qdel(src) return 1 else for(var/mob/O in viewers(world.view, user)) O.show_message("[user] attempts to feed [M] [src].", 1) if(!do_mob(user, M)) return for(var/mob/O in viewers(world.view, user)) O.show_message("[user] feeds [M] [src].", 1) src.amount-- M.nutrition += src.heal_amt * 10 M.poo += 1 src.heal(M) playsound(M.loc, "sound/items/eatfood.ogg", rand(10,50), 1) boutput(user, "[M] eats the raisin.") qdel(src) return 1 return 0 */ /obj/fire_foam name = "Fire fighting foam" desc = "It's foam." opacity = 0 density = 0 anchored = 1 icon = 'icons/effects/fire.dmi' icon_state = "foam" animate_movement = SLIDE_STEPS mouse_opacity = 0 var/my_dir=1 Move(NewLoc,Dir=0) ..(NewLoc,Dir) src.dir = my_dir unpooled(var/poolname) ..() spawn(1) var/atom/myloc = loc if(myloc && !istype(myloc,/turf/space)) my_dir = pick(alldirs) src.dir = my_dir /obj/shifting_wall name = "r wall" desc = "" opacity = 1 density = 1 anchored = 1 icon = 'icons/turf/walls.dmi' icon_state = "r_wall" New() update() proc/update() var/list/possible = new/list() for(var/A in cardinal) var/turf/current = get_step(src,A) if(current.density) continue if(is_blocked_turf(current)) continue possible += current if(!possible.len) spawn(30) update() return var/turf/picked = pick(possible) if(src.loc.invisibility) src.loc.invisibility = 0 src.set_loc(picked) spawn(5) picked.invisibility = 100 spawn(rand(50,80)) update() /obj/shifting_wall/sneaky var/sightrange = 8 pixel_step_size = 7 proc/find_suitable_tiles() var/list/possible = new/list() for(var/A in cardinal) var/turf/current = get_step(src,A) if(current.density) continue if(is_blocked_turf(current)) continue if(someone_can_see(current)) continue possible += current return possible proc/someone_can_see(var/atom/A) for(var/mob/living/L in view(sightrange,A)) if(!L.sight_check(1)) continue if(A in view(sightrange,L)) return 1 return 0 proc/someone_can_see_me() for(var/mob/living/L in view(sightrange,src)) if(L.sight_check(1)) continue if(src in view(sightrange,L)) return 1 return 0 update() if(someone_can_see_me()) //Award for the most readable code GOES TO THIS LINE. spawn(rand(50,80)) update() return var/list/possible = find_suitable_tiles() if(!possible.len) spawn(30) update() return var/turf/picked = pick(possible) if(src.loc.invisibility) src.loc.invisibility = 0 if(src.loc.opacity) src.loc.opacity = 0 src.set_loc(picked) spawn(5) picked.invisibility = 100 picked.opacity = 1 spawn(rand(50,80)) update() /obj/pool name = "pool" density = 1 anchored = 1 icon = 'icons/obj/stationobjs.dmi' icon_state = "pool" /obj/pool_springboard name = "springboard" density = 0 anchored = 1 layer = EFFECTS_LAYER_UNDER_2 pixel_x = -16 icon = 'icons/obj/stationobjs.dmi' icon_state = "springboard" var/in_use = 0 var/suiciding = 0 var/deadly = 0 attackby(obj/item/W as obj, mob/user as mob) return attack_hand(user) attack_hand(mob/user as mob) if(in_use) boutput(user, "Its already in use - wait a bit.") return else in_use = 1 user.transforming = 1 var/range = pick(25;1,2,3) var/turf/target = src.loc for(var/i = 0, iYou slip...") user.layer = MOB_LAYER user.throw_at(target, 5, 1) user:weakened += 2 if(suiciding || deadly) src.visible_message("[user.name] dives headfirst at the [target.name]!") spawn(3) //give them time to land user.TakeDamage("head", 200, 0) user.updatehealth() playsound(src.loc, "sound/effects/snap.ogg", 50, 1) user.pixel_y = 0 user.pixel_x = 0 playsound(user, "sound/effects/splash.ogg", 60, 1) in_use = 0 suiciding = 0 user.transforming = 0 suicide(var/mob/user as mob) if(in_use) return 0 suiciding = 1 //reset in attack_hand() at the same time as in_use attack_hand(user) spawn(100) if (src) src.suiciding = 0 return 1 //1.5 would be 50% slower, 2.0 would be 100% slower etc. var/const/lag_average_size = 20 //Number of samples the average is based on. var/lag_string = "Yes"//"none" var/average_tenth = 1 var/list/lag_list = new/list() /proc/add_and_average(var/value) lag_list.Insert(1,value) if(lag_list.len > lag_average_size) lag_list.Cut(lag_average_size+1,0) var/tempnum = 0 for(var/a in lag_list) tempnum += a if(lag_list.len >= lag_average_size) average_tenth = (tempnum / lag_list.len) switch( ((average_tenth * world.cpu) / 100) ) if(0 to 0.100) lag_string = "Minimal" if(0.101 to 0.180) lag_string = "Normal" if(0.181 to 0.350) lag_string = "High" if(0.351 to 0.500) lag_string = "Very High" if(0.501 to INFINITY) lag_string = "Oh Sh*t" /proc/lag_loop() var/before = world.timeofday sleep(1) add_and_average( (world.timeofday - before) ) spawn(5) lag_loop() /proc/get_lag_average() boutput(usr, "[average_tenth] at [lag_list.len] samples.") /obj/mirror //Expect those to be laggy as fuck. name = "Mirror" desc = "Its a mirror." density = 0 anchored = 1 pixel_y = 32 var/icon/base var/broken = 0 var/health = 3 var/list/spooky = new/list() var/spooked = 0 var/spooking = 0 proc/hear_once(var/mob/M) if(broken) return if(!M in spooky) spooky += M spooky[M] = 1 else spooky[M]++ if(spooky[M] >= 3) do_it(M) proc/do_it(var/mob/M) if(spooking || broken) return spooking = 1 break_it() playsound(src, "sound/effects/Glassbr3.ogg", 75, 0) M:transforming = 1 sleep(30) var/obj/screen/creepy = new /obj/screen() creepy.name = "GARHLGHARLHGARHGL" creepy.icon = icon('icons/creepy.png') creepy.screen_loc = "SOUTH,WEST" creepy.mouse_opacity = 0 if(!M) return var/client/the_client = M.client creepy.add_to_client(the_client) playsound(src, "sound/effects/ghost2.ogg", 100, 0) sleep(5) if(!M) the_client.screen -= creepy return M:gib() sleep(5) the_client.screen -= creepy sleep(30) New() build_base() update() HasEntered(atom/A) if(ismob(A)) rebuild_icon() return attackby(obj/item/W as obj, mob/user as mob) ..() if(W.force <= 1 || broken) playsound(src, "sound/weapons/Genhit.ogg", 25, 0) return health-- if(health <= 0) break_it() boutput(user, "You break the mirror ...") playsound(src, "sound/effects/Glassbr3.ogg", 75, 0) else playsound(src, "sound/effects/Glasshit.ogg", 75, 0) ex_act() playsound(src, "sound/effects/Glassbr3.ogg", 75, 0) break_it() hitby(atom/movable/AM as mob|obj) playsound(src, "sound/effects/Glassbr3.ogg", 75, 0) break_it() proc break_it() if(broken) return broken = 1 build_base() rebuild_icon() new /obj/item/raw_material/shard/glass( src.loc ) new /obj/item/raw_material/shard/plasmacrystal( src.loc ) build_base() var/turf/T = src.loc var/icon/composite = icon(T.icon, T.icon_state, T.dir) composite.Flip(NORTH) composite.Blend(icon('icons/misc/old_or_unused.dmi', "mirror"), ICON_OVERLAY) if(broken) composite.Blend(icon('icons/misc/old_or_unused.dmi', "mirror_broken"), ICON_OVERLAY) composite.Crop(7,8,26,31) composite.Crop(1,1,32,32) composite.Shift(NORTH,7) composite.Shift(EAST,6) base = composite rebuild_icon() src.icon = base pixel_y = 0 var/turf/T = src.loc var/icon/composite = icon(T.icon, T.icon_state, T.dir) composite.Flip(NORTH) var/the_dir for(var/atom/C in T) var/icon/curr if(hasvar(C, "body_standing")) if(!C:lying) if(C.dir == NORTH || C.dir == SOUTH) the_dir = turn(C.dir,180) curr = icon(C:body_standing, dir=turn(C.dir,180)) else the_dir = C.dir curr = icon(C:body_standing, dir=C.dir) else continue else if(C.dir == NORTH || C.dir == SOUTH) the_dir = turn(C.dir,180) curr = icon(C.icon, C.icon_state, turn(C.dir,180)) else the_dir = C.dir curr = icon(C.icon, C.icon_state, C.dir) if(!curr || C.invisibility) continue composite.Blend(curr, ICON_OVERLAY) for(var/O in C.overlays) var/image/I = O var/icon/II = icon(I.icon, I.icon_state, the_dir) composite.Blend(II, ICON_OVERLAY) composite.Blend(icon('icons/misc/old_or_unused.dmi', "mirror"), ICON_OVERLAY) if(broken) composite.Blend(icon('icons/misc/old_or_unused.dmi', "mirror_broken"), ICON_OVERLAY) composite.Crop(7,8,26,31) composite.Crop(1,1,32,32) //UNCROP - http://www.youtube.com/watch?v=KUFkb0d1kbU composite.Shift(NORTH,7) composite.Shift(EAST,6) src.icon = composite pixel_y = 32 update() rebuild_icon() spawn(5) update() /obj/spook var/active = 0 invisibility = 100 anchored = 1 density = 0 icon = 'icons/misc/hstation.dmi' icon_state = "null" desc = "What ... what is this?" name = "apparition" var/turf/startloc New() startloc = get_turf(src) loop() return ..() proc/loop() if(active) spawn(30) loop() return for(var/mob/living/L in hearers(world.view, src)) if(prob(20)) spook(L) break spawn(20) loop() proc/spook(var/mob/living/L) if (narrator_mode) playsound(L, 'sound/vox/ghost.ogg', 75, 0) else playsound(L, 'sound/effects/ghost.ogg', 75, 0) sleep(3) active = 1 walk_towards(src,L,3) src.invisibility = 0 flick("apparition",src) sleep(15) src.invisibility = 100 src.set_loc(startloc) walk(src,0) spawn(100) active = 0 /datum/engibox_mode var/name = "" var/desc = "" var/requires_input = 0 var/saved_var = null proc/used(atom/user, atom/target) return /datum/engibox_mode/spawmmetal name = "Spawn 100 Metal" desc = "Spawns 100 Metal sheets." used(atom/user, atom/target) var/obj/item/sheet/steel/M = new/obj/item/sheet/steel(get_turf(target)) M.amount = 100 return /datum/engibox_mode/spawmglass name = "Spawn 100 Glass" desc = "Spawns 100 Metal sheets." used(atom/user, atom/target) var/obj/item/sheet/glass/M = new/obj/item/sheet/glass(get_turf(target)) M.amount = 100 return /datum/engibox_mode/spawmtool name = "Spawn Toolbox" desc = "Spawns a Toolbox." used(atom/user, atom/target) new/obj/item/storage/toolbox/mechanical(get_turf(target)) return /datum/engibox_mode/construct name = "Construct" desc = "Construct walls and floor." used(atom/user, atom/target) if(istype(target, /turf/space)) target:ReplaceWithFloor() return if(istype(target, /turf/simulated/floor)) target:ReplaceWithWall() return if(istype(target, /turf/simulated/wall)) target:ReplaceWithRWall() return return /datum/engibox_mode/deconstruct name = "Deconstruct" desc = "Deconstruct walls and floor." used(atom/user, atom/target) if(istype(target, /turf/simulated/floor)) target:ReplaceWithSpace() return if(istype(target, /turf/simulated/wall)) target:ReplaceWithFloor() return return /datum/engibox_mode/remove name = "Remove Objects" desc = "Removes Objects you placed." used(atom/user, atom/target) if(isobj(target)) qdel(target) return /datum/engibox_mode/setid name = "Link Objects" desc = "Allows you to link buttons & machines by setting their group-id. Objects need to be in the same group to affect each other (i.e. a door and a button)." requires_input = 1 used(atom/user, atom/target) if(hasvar(target,"id")) target:id = saved_var boutput(usr, "Done.") else boutput(usr, "Not a linkabled object.") return /datum/engibox_mode/reqacc name = "Set Required Access" desc = "Allows you to set the required Access-level of most objects." used(atom/user, atom/target) if(istype(target, /obj/machinery/door)) if(hasvar(target, "req_access")) target:req_access = get_access(input(usr) in get_all_jobs() + "Club member") boutput(usr, "Done.") else boutput(usr, "Invalid object.") return /datum/engibox_mode/spawnid name = "Spawn ID card" desc = "Allows you to spawn an id card with a certain access level." used(atom/user, atom/target) var/obj/item/card/id/blank_deluxe/D = new/obj/item/card/id/blank_deluxe(get_turf(target)) D.access = get_access(input(usr) in get_all_jobs() + "Club member") return /datum/engibox_mode/fwall name = "Construct False Wall" desc = "Construct a False Wall." used(atom/user, atom/target) var/turf/targ = get_turf(target) new/turf/simulated/wall/false_wall(targ) return /datum/engibox_mode/airlock name = "Place Airlock" desc = "Places an Airlock." used(atom/user, atom/target) new/obj/machinery/door/airlock(get_turf(target)) return /datum/engibox_mode/airlockglass name = "Place glass Airlock" desc = "Places a glass Airlock." used(atom/user, atom/target) new/obj/machinery/door/airlock/glass(get_turf(target)) return /datum/engibox_mode/light name = "Place Light" desc = "Places a Light - facing the direction you are facing." used(atom/user, atom/target) var/obj/machinery/light/small/L = new/obj/machinery/light/small(get_turf(target)) L.dir = user:dir L.on = 1 L.update() return /datum/engibox_mode/buttonpod name = "Place Button" desc = "Places a Button that can control mass-drivers & pod-doors." used(atom/user, atom/target) var/obj/machinery/driver_button/L = new/obj/machinery/driver_button(get_turf(target)) L.dir = user:dir return /datum/engibox_mode/buttonconvey name = "Place Conveyor switch" desc = "Places a Conveyor switch that can control a conveyor belt." used(atom/user, atom/target) var/obj/machinery/conveyor_switch/L = new/obj/machinery/conveyor_switch(get_turf(target)) L.dir = user:dir return /datum/engibox_mode/conveyor name = "Place Conveyor belt" desc = "Places a Conveyor belt - facing the direction you are facing." used(atom/user, atom/target) var/obj/machinery/conveyor/L = new/obj/machinery/conveyor(get_turf(target)) L.dir = user:dir L.basedir = L.dir return /datum/engibox_mode/poddoor name = "Place Pod-Door" desc = "Places a Pod-Door." used(atom/user, atom/target) var/obj/machinery/door/poddoor/L = new/obj/machinery/door/poddoor(get_turf(target)) L.dir = user:dir return /datum/engibox_mode/driver name = "Place Mass-Driver" desc = "Places a Mass-Driver - facing the direction you are facing." used(atom/user, atom/target) var/obj/machinery/mass_driver/L = new/obj/machinery/mass_driver(get_turf(target)) L.dir = user:dir return /datum/engibox_mode/cam name = "Place Security Camera" desc = "Places a Security Camera - using your direction." used(atom/user, atom/target) var/obj/machinery/camera/L = new/obj/machinery/camera(get_turf(target)) L.dir = user:dir return /datum/engibox_mode/window name = "Place Window" desc = "Places a reinforced window." used(atom/user, atom/target) if (map_setting && map_setting == "COG2") new /obj/window/auto/reinforced(get_turf(target)) else new /obj/window/reinforced(get_turf(target)) return /datum/engibox_mode/grille name = "Place Grille" desc = "Places a Grille." used(atom/user, atom/target) var/obj/grille/L = new/obj/grille(get_turf(target)) L.dir = user:dir return /datum/engibox_mode/table name = "Place Reinforced Table" desc = "Places a Reinforced Table." used(atom/user, atom/target) var/obj/table/reinforced/L = new/obj/table/reinforced(get_turf(target)) L.dir = user:dir return /datum/engibox_mode/paint name = "Spawn paint can" desc = "Spawn a paint can." used(atom/user, atom/target) var/paint_color = null var/col_new = F_Color_Selector.Get_Color(user, paint_color) if(col_new) var/obj/item/paint_can/P = new/obj/item/paint_can(get_turf(target)) P.paint_color = col_new paint_color = col_new P.generate_icon() P.uses = 9999 return /datum/engibox_mode/replicate name = "Replicate Object" desc = "Allows you to replicate objects. First use selects Object to clone, further clicks place copies. Un- or Re-select mode to clear set object." var/obj_path = null used(atom/user, atom/target) if(obj_path) var/atom/A = new obj_path(get_turf(target)) boutput(usr, "Placed: [A.name]") else obj_path = target.type boutput(usr, "Now replicating: [target.name]s") return /datum/engibox_mode/transmute name = "Change material" desc = "Changes the material of the targeted object." var/mat_id = "gold" used(atom/user, atom/target) target.setMaterial(getCachedMaterial(mat_id)) return /datum/engibox_mode/density name = "Toggle density" desc = "Toggles the density of an object." used(atom/user, atom/target) target.density = !target.density boutput(usr, "Target density now: [target.density]") return /datum/engibox_mode/opacity name = "Toggle opacity" desc = "Toggles the opacity of an object." used(atom/user, atom/target) target.opacity = !target.opacity boutput(usr, "Target opacity now: [target.opacity]") return /obj/item/engibox name = "Engineer-in-a-box" desc = "The concentrated power of a whole team of engineers. In a box." icon = 'icons/obj/storage.dmi' icon_state = "engi" var/list/modes = new/list() var/datum/engibox_mode/active_mode = null var/ckey_lock = null flags = FPRINT | EXTRADELAY | TABLEPASS | CONDUCT w_class = 1.0 afterattack(atom/target as mob|obj|turf|area, mob/user as mob) if(ckey_lock && usr.ckey != ckey_lock) boutput(user, "You are not authorized to use this item.") return if(get_dist(target,user) > 1) boutput(user, "You are too far away.") return if(target == loc) return if(active_mode) active_mode.used(user, target) return attack() return attack_self(mob/user as mob) if(ckey_lock && usr.ckey != ckey_lock) boutput(user, "You are not authorized to use this item.") return var/dat = "Engie-box modes:

" for(var/datum/engibox_mode/D in modes) dat += "[D.name] [active_mode == D ? "<<<" : ""]
" dat += "[D.desc]

" user << browse(dat, "window=engibox;can_minimize=0;can_resize=0;size=250x600") onclose(user, "window=engibox") return Topic(href, href_list) if(usr.stat || usr.restrained()) return if(!in_range(src, usr)) return usr.machine = src if (href_list["set_mode"]) active_mode = locate(href_list["set_mode"]) if(active_mode.requires_input) active_mode.saved_var = input(usr,"Enter ID","ID","MyId") as text if(!active_mode.saved_var || isnull(active_mode.saved_var)) active_mode = null if(istype(active_mode,/datum/engibox_mode/transmute)) //You only have yourself to blame for this. This shitty code is the fault of whoever changed this!!! active_mode:mat_id = input(usr,"Select material","material","gold") in list("gold", "steel", "mauxite", "pharosium","cobryl","bohrum","cerenkite","syreline","glass","molitz","claretine","erebite","plasmastone","plasmaglass","quartz","uqill","telecrystal","miraclium","starstone","flesh","char","koshmarite","viscerite","beeswax","latex","synthrubber","wendigohide","cotton","fibrilith") if(istype(active_mode,/datum/engibox_mode/replicate)) active_mode:obj_path = null src.attack_self(usr) return src.attack_self(usr) src.add_fingerprint(usr) return New() for(var/D in typesof(/datum/engibox_mode) - /datum/engibox_mode) modes += new D /obj/signpost icon = 'icons/misc/old_or_unused.dmi' icon_state = "signpost" anchored = 1 density = 1 attackby(obj/item/W as obj, mob/user as mob) return attack_hand(user) attack_hand(mob/user as mob) switch(alert("Travel back to ss13?",,"Yes","No")) if("Yes") user.loc.loc.Exited(user) user.set_loc(pick(latejoin)) if("No") return /area/beach name = "Keelin's private beach" icon_state = "null" luminosity = 1 RL_Lighting = 0 requires_power = 0 var/sound/mysound = null New() ..() var/sound/S = new/sound() mysound = S S.file = 'sound/ambience/shore.ogg' S.repeat = 1 S.wait = 0 S.channel = 123 S.volume = 100 S.priority = 255 S.status = SOUND_UPDATE spawn(10) process() Entered(atom/movable/Obj,atom/OldLoc) ..() if(ismob(Obj)) if(Obj:client) mysound.status = SOUND_UPDATE Obj << mysound return Exited(atom/movable/Obj) ..() if(ismob(Obj)) if(Obj:client) mysound.status = SOUND_PAUSED | SOUND_UPDATE Obj << mysound proc/process() var/sound/S = null var/sound_delay = 0 while(ticker && ticker.current_state < GAME_STATE_FINISHED) sleep(60) if (ticker.current_state == GAME_STATE_PLAYING) if(prob(10)) S = sound(file=pick('sound/ambience/seag1.ogg','sound/ambience/seag2.ogg','sound/ambience/seag3.ogg'), volume=100) sound_delay = rand(0, 50) else S = null continue for(var/mob/living/carbon/human/H in src) if(H.client) mysound.status = SOUND_UPDATE H << mysound if(S) spawn(sound_delay) H << S /obj/item/beach_ball icon = 'icons/misc/beach.dmi' icon_state = "ball" name = "beach ball" item_state = "clown" density = 0 anchored = 0 w_class = 1.0 force = 0.0 throwforce = 0.0 throw_speed = 1 throw_range = 20 flags = FPRINT | EXTRADELAY | TABLEPASS | CONDUCT afterattack(atom/target as mob|obj|turf|area, mob/user as mob) user.drop_item() src.throw_at(target, throw_range, throw_speed)