diff --git a/code/WorkInProgress/buildmode.dm b/code/WorkInProgress/buildmode.dm index 28beed7f04..ceb1954a5d 100644 --- a/code/WorkInProgress/buildmode.dm +++ b/code/WorkInProgress/buildmode.dm @@ -120,7 +120,7 @@ screen_loc = "NORTH,WEST+2" var/varholder = "name" var/valueholder = "derp" - var/objholder = "/obj/structure/closet" + var/objholder = /obj/structure/closet Click(location, control, params) var/list/pa = params2list(params) @@ -145,13 +145,13 @@ if(1) return 1 if(2) - objholder = input(usr,"Enter typepath:" ,"Typepath","/obj/structure/closet") - var/list/removed_paths = list("/obj/effect/bhole") - if(objholder in removed_paths) + objholder = text2path(input(usr,"Enter typepath:" ,"Typepath","/obj/structure/closet")) + if(!ispath(objholder)) + objholder = /obj/structure/closet alert("That path is not allowed.") - objholder = "/obj/structure/closet" - else if (dd_hasprefix(objholder, "/mob") && !check_rights(R_DEBUG,0)) - objholder = "/obj/structure/closet" + else + if(ispath(objholder,/mob) && !check_rights(R_DEBUG,0)) + objholder = /obj/structure/closet if(3) var/list/locked = list("vars", "key", "ckey", "client", "firemut", "ishulk", "telekinesis", "xray", "virus", "viruses", "cuffed", "ka", "last_eaten", "urine") @@ -234,8 +234,12 @@ WIN.dir = NORTHWEST if(2) if(pa.Find("left")) - var/obj/A = new holder.buildmode.objholder (get_turf(object)) - A.dir = holder.builddir.dir + if(ispath(holder.buildmode.objholder,/turf)) + var/turf/T = get_turf(object) + T.ChangeTurf(holder.buildmode.objholder) + else + var/obj/A = new holder.buildmode.objholder (get_turf(object)) + A.dir = holder.builddir.dir else if(pa.Find("right")) if(isobj(object)) del(object) diff --git a/code/_onclick/observer.dm b/code/_onclick/observer.dm index c326d83df4..869b10c3a1 100644 --- a/code/_onclick/observer.dm +++ b/code/_onclick/observer.dm @@ -37,27 +37,6 @@ // Not all of them require checking, see below A.attack_ghost(src) -// This is the ghost's follow verb with an argument -/mob/dead/observer/proc/ManualFollow(var/atom/target) - following = target - if(target) - src << "\blue Now following [target]" - spawn(0) - var/turf/pos = get_turf(src) - while(loc == pos && target && following == target) - - var/turf/T = get_turf(target) - if(!T) - break - if(following != target) - break - if(!client) - break - loc = T - pos = loc - sleep(15) - following = null - // Oh by the way this didn't work with old click code which is why clicking shit didn't spam you /atom/proc/attack_ghost(mob/dead/observer/user as mob) if(user.client && user.client.inquisitive_ghost) diff --git a/code/game/gamemodes/meteor/meteors.dm b/code/game/gamemodes/meteor/meteors.dm index c3720275ee..55191067e1 100644 --- a/code/game/gamemodes/meteor/meteors.dm +++ b/code/game/gamemodes/meteor/meteors.dm @@ -1,5 +1,3 @@ -#define METEOR_TEMPERATURE - /var/const/meteor_wave_delay = 625 //minimum wait between waves in tenths of seconds //set to at least 100 unless you want evarr ruining every round @@ -95,18 +93,9 @@ icon_state = "smallf" pass_flags = PASSTABLE | PASSGRILLE -/obj/effect/meteor/Move() - var/turf/T = src.loc - if (istype(T, /turf)) - T.hotspot_expose(METEOR_TEMPERATURE, 1000) - ..() - return - /obj/effect/meteor/Bump(atom/A) spawn(0) - for(var/mob/M in range(10, src)) - if(!M.stat && !istype(M, /mob/living/silicon/ai)) //bad idea to shake an ai's view - shake_camera(M, 3, 1) + if (A) A.meteorhit(src) playsound(src.loc, 'sound/effects/meteorimpact.ogg', 40, 1) @@ -117,9 +106,7 @@ if(!istype(A,/obj/machinery/power/emitter) && \ !istype(A,/obj/machinery/field_generator) && \ prob(15)) - explosion(src.loc, 4, 5, 6, 7, 0) - playsound(src.loc, "explosion", 50, 1) del(src) return @@ -146,16 +133,18 @@ if(--src.hits <= 0) del(src) //Dont blow up singularity containment if we get stuck there. - for(var/mob/M in range(10, src)) - if(!M.stat && !istype(M, /mob/living/silicon/ai)) //bad idea to shake an ai's view - shake_camera(M, 3, 1) if (A) + for(var/mob/M in player_list) + var/turf/T = get_turf(M) + if(!T || T.z != src.z) + continue + shake_camera(M, 3, get_dist(M.loc, src.loc) > 20 ? 1 : 3) + playsound(src.loc, 'sound/effects/meteorimpact.ogg', 40, 1) explosion(src.loc, 0, 1, 2, 3, 0) - playsound(src.loc, 'sound/effects/meteorimpact.ogg', 40, 1) + if (--src.hits <= 0) if(prob(15) && !istype(A, /obj/structure/grille)) explosion(src.loc, 1, 2, 3, 4, 0) - playsound(src.loc, "explosion", 50, 1) del(src) return diff --git a/code/game/machinery/atmoalter/canister.dm b/code/game/machinery/atmoalter/canister.dm index d8b8521150..35e96899ea 100644 --- a/code/game/machinery/atmoalter/canister.dm +++ b/code/game/machinery/atmoalter/canister.dm @@ -243,14 +243,14 @@ Release Pressure: - air
" + release_log += "Valve was closed by [usr] ([usr.ckey]), stopping the transfer into the air
" else if (holding) - release_log += "Valve was opened by [usr], starting the transfer into the [holding]
" + release_log += "Valve was opened by [usr] ([usr.ckey]), starting the transfer into the [holding]
" else - release_log += "Valve was opened by [usr], starting the transfer into the air
" + release_log += "Valve was opened by [usr] ([usr.ckey]), starting the transfer into the air
" valve_open = !valve_open if (href_list["remove_tank"]) diff --git a/code/game/machinery/bots/secbot.dm b/code/game/machinery/bots/secbot.dm index c4de96f5e9..ee014dd6df 100644 --- a/code/game/machinery/bots/secbot.dm +++ b/code/game/machinery/bots/secbot.dm @@ -219,7 +219,7 @@ Auto Patrol: []"}, walk_to(src,0) if(target) // make sure target exists - if(get_dist(src, src.target) <= 1) // if right next to perp + if(get_dist(src, src.target) <= 1 && isturf(src.target.loc)) // if right next to perp if(istype(src.target,/mob/living/carbon)) playsound(src.loc, 'sound/weapons/Egloves.ogg', 50, 1, -1) src.icon_state = "secbot-c" diff --git a/code/game/machinery/computer/ai_core.dm b/code/game/machinery/computer/ai_core.dm index 2fcdf33379..0946e7943c 100644 --- a/code/game/machinery/computer/ai_core.dm +++ b/code/game/machinery/computer/ai_core.dm @@ -262,7 +262,7 @@ That prevents a few funky behaviors. A.loc = T.loc A.cancel_camera() A << "You have been uploaded to a stationary terminal. Remote device connection restored." - U << "\blue Transfer succesful: \black [A.name] ([rand(1000,9999)].exe) installed and executed succesfully. Local copy has been removed." + U << "\blue Transfer successful: \black [A.name] ([rand(1000,9999)].exe) installed and executed successfully. Local copy has been removed." del(T) if("AIFIXER")//AI Fixer terminal. var/obj/machinery/computer/aifixer/T = target @@ -286,7 +286,7 @@ That prevents a few funky behaviors. T.overlays -= image('icons/obj/computer.dmi', "ai-fixer-empty") A.cancel_camera() A << "You have been uploaded to a stationary terminal. Sadly, there is no remote access from here." - U << "\blue Transfer successful: \black [A.name] ([rand(1000,9999)].exe) installed and executed succesfully. Local copy has been removed." + U << "\blue Transfer successful: \black [A.name] ([rand(1000,9999)].exe) installed and executed successfully. Local copy has been removed." else if(!C.contents.len && T.occupant && !T.active) C.name = "inteliCard - [T.occupant.name]" @@ -298,7 +298,7 @@ That prevents a few funky behaviors. C.icon_state = "aicard-full" T.overlays -= image('icons/obj/computer.dmi', "ai-fixer-full") T.occupant << "You have been downloaded to a mobile storage device. Still no remote access." - U << "\blue Transfer succesful: \black [T.occupant.name] ([rand(1000,9999)].exe) removed from host terminal and stored within local memory." + U << "\blue Transfer successful: \black [T.occupant.name] ([rand(1000,9999)].exe) removed from host terminal and stored within local memory." T.occupant.loc = C T.occupant.cancel_camera() T.occupant = null @@ -323,7 +323,7 @@ That prevents a few funky behaviors. T.overlays -= image('icons/obj/computer.dmi', "ai-fixer-empty") A.cancel_camera() A << "You have been uploaded to a stationary terminal. Sadly, there is no remote access from here." - U << "\blue Transfer successful: \black [A.name] ([rand(1000,9999)].exe) installed and executed succesfully. Local copy has been removed." + U << "\blue Transfer successful: \black [A.name] ([rand(1000,9999)].exe) installed and executed successfully. Local copy has been removed." else if(!C.AI && T.occupant && !T.active) if (T.occupant.stat) diff --git a/code/game/machinery/newscaster.dm b/code/game/machinery/newscaster.dm index af52a4e756..b1783b1707 100644 --- a/code/game/machinery/newscaster.dm +++ b/code/game/machinery/newscaster.dm @@ -409,10 +409,10 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co dat+="Wanted issue for [src.channel_name] successfully edited.

" dat+="
Return
" if(20) - dat+="Printing successfull. Please receive your newspaper from the bottom of the machine.

" + dat+="Printing successful. Please receive your newspaper from the bottom of the machine.

" dat+="Return" if(21) - dat+="Unable to print newspaper. Insufficient paper. Please notify maintenance personnell to refill machine storage.

" + dat+="Unable to print newspaper. Insufficient paper. Please notify maintenance personnel to refill machine storage.

" dat+="Return" else dat+="I'm sorry to break your immersion. This shit's bugged. Report this bug to Agouri, polyxenitopalidou@gmail.com" diff --git a/code/game/mecha/mech_fabricator.dm b/code/game/mecha/mech_fabricator.dm index 9e9e578ecf..539ad4374e 100644 --- a/code/game/mecha/mech_fabricator.dm +++ b/code/game/mecha/mech_fabricator.dm @@ -518,7 +518,7 @@ temp += "Return" src.updateUsrDialog() if(i || tech_output) - src.visible_message("\icon[src] [src] beeps, \"Succesfully synchronized with R&D server. New data processed.\"") + src.visible_message("\icon[src] [src] beeps, \"Successfully synchronized with R&D server. New data processed.\"") return /obj/machinery/mecha_part_fabricator/proc/get_resource_cost_w_coeff(var/obj/item/part as obj,var/resource as text, var/roundto=1) diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index 519a4dd90c..77807c2ca1 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -237,7 +237,7 @@ target = safepick(view(3,target)) if(!target) return - if(get_dist(src, target)>1) + if(!target.Adjacent(src)) if(selected && selected.is_ranged()) selected.action(target) else if(selected && selected.is_melee()) diff --git a/code/game/objects/explosion.dm b/code/game/objects/explosion.dm index da4f51eef0..5ba97f9005 100644 --- a/code/game/objects/explosion.dm +++ b/code/game/objects/explosion.dm @@ -7,6 +7,19 @@ else return dy + (0.5*dx) +proc/trange(var/Dist=0,var/turf/Center=null)//alternative to range (ONLY processes turfs and thus less intensive) + if(Center==null) return + + //var/x1=((Center.x-Dist)<1 ? 1 : Center.x-Dist) + //var/y1=((Center.y-Dist)<1 ? 1 : Center.y-Dist) + //var/x2=((Center.x+Dist)>world.maxx ? world.maxx : Center.x+Dist) + //var/y2=((Center.y+Dist)>world.maxy ? world.maxy : Center.y+Dist) + + var/turf/x1y1 = locate(((Center.x-Dist)<1 ? 1 : Center.x-Dist),((Center.y-Dist)<1 ? 1 : Center.y-Dist),Center.z) + var/turf/x2y2 = locate(((Center.x+Dist)>world.maxx ? world.maxx : Center.x+Dist),((Center.y+Dist)>world.maxy ? world.maxy : Center.y+Dist),Center.z) + return block(x1y1,x2y2) + + proc/explosion(turf/epicenter, devastation_range, heavy_impact_range, light_impact_range, flash_range, adminlog = 1) src = null //so we don't abort once src is deleted spawn(0) @@ -48,7 +61,7 @@ proc/explosion(turf/epicenter, devastation_range, heavy_impact_range, light_impa var/y0 = epicenter.y var/z0 = epicenter.z - for(var/turf/T in range(epicenter, max(devastation_range, heavy_impact_range, light_impact_range))) + for(var/turf/T in trange(max(devastation_range, heavy_impact_range, light_impact_range), epicenter)) var/dist = cheap_pythag(T.x - x0,T.y - y0) if(dist < devastation_range) dist = 1 @@ -85,4 +98,4 @@ proc/explosion(turf/epicenter, devastation_range, heavy_impact_range, light_impa proc/secondaryexplosion(turf/epicenter, range) for(var/turf/tile in range(range, epicenter)) - tile.ex_act(2) + tile.ex_act(2) \ No newline at end of file diff --git a/code/game/objects/explosion_recursive.dm b/code/game/objects/explosion_recursive.dm index cfa1d7e0e5..9dc04ff630 100644 --- a/code/game/objects/explosion_recursive.dm +++ b/code/game/objects/explosion_recursive.dm @@ -6,31 +6,12 @@ /obj var/explosion_resistance -/datum/explosion_turf - var/turf/turf //The turf which will get ex_act called on it - var/max_power //The largest amount of power the turf sustained - New() - ..() - max_power = 0 - proc/save_power_if_larger(power) - if(power > max_power) - max_power = power - return 1 - return 0 +var/list/explosion_turfs = list() -var/list/datum/explosion_turf/explosion_turfs = list() var/explosion_in_progress = 0 -proc/get_explosion_turf(var/turf/T) - for( var/datum/explosion_turf/ET in explosion_turfs ) - if( T == ET.turf ) - return ET - var/datum/explosion_turf/ET = new() - ET.turf = T - explosion_turfs += ET - return ET proc/explosion_rec(turf/epicenter, power) @@ -52,9 +33,8 @@ proc/explosion_rec(turf/epicenter, power) explosion_in_progress = 1 explosion_turfs = list() - var/datum/explosion_turf/ETE = get_explosion_turf() - ETE.turf = epicenter - ETE.max_power = power + + explosion_turfs[epicenter] = power //This steap handles the gathering of turfs which will be ex_act() -ed in the next step. It also ensures each turf gets the maximum possible amount of power dealt to it. for(var/direction in cardinal) @@ -62,22 +42,21 @@ proc/explosion_rec(turf/epicenter, power) T.explosion_spread(power - epicenter.explosion_resistance, direction) //This step applies the ex_act effects for the explosion, as planned in the previous step. - for( var/datum/explosion_turf/ET in explosion_turfs ) - if(ET.max_power <= 0) continue - if(!ET.turf) continue + for(var/turf/T in explosion_turfs) + if(explosion_turfs[T] <= 0) continue + if(!T) continue //Wow severity looks confusing to calculate... Fret not, I didn't leave you with any additional instructions or help. (just kidding, see the line under the calculation) - var/severity = 4 - round(max(min( 3, ((ET.max_power - ET.turf.explosion_resistance) / (max(3,(power/3)))) ) ,1), 1) - //sanity effective power on tile divided by either 3 or one third the total explosion power + var/severity = 4 - round(max(min( 3, ((explosion_turfs[T] - T.explosion_resistance) / (max(3,(power/3)))) ) ,1), 1) //sanity effective power on tile divided by either 3 or one third the total explosion power // One third because there are three power levels and I // want each one to take up a third of the crater - var/x = ET.turf.x - var/y = ET.turf.y - var/z = ET.turf.z - ET.turf.ex_act(severity) - if(!ET.turf) - ET.turf = locate(x,y,z) - for( var/atom/A in ET.turf ) + var/x = T.x + var/y = T.y + var/z = T.z + T.ex_act(severity) + if(!T) + T = locate(x,y,z) + for(var/atom/A in T) A.ex_act(severity) explosion_in_progress = 0 @@ -123,10 +102,9 @@ proc/explosion_rec(turf/epicenter, power) new/obj/effect/debugging/marker(src) */ - var/datum/explosion_turf/ET = get_explosion_turf(src) - if(ET.max_power >= power) + if(explosion_turfs[src] >= power) return //The turf already sustained and spread a power greated than what we are dealing with. No point spreading again. - ET.max_power = power + explosion_turfs[src] = power var/spread_power = power - src.explosion_resistance //This is the amount of power that will be spread to the tile in the direction of the blast var/side_spread_power = power - 2 * src.explosion_resistance //This is the amount of power that will be spread to the side tiles diff --git a/code/game/objects/items/devices/chameleonproj.dm b/code/game/objects/items/devices/chameleonproj.dm index 4f70aa1024..b97ef5746c 100644 --- a/code/game/objects/items/devices/chameleonproj.dm +++ b/code/game/objects/items/devices/chameleonproj.dm @@ -11,73 +11,75 @@ origin_tech = "syndicate=4;magnets=4" var/can_use = 1 var/obj/effect/dummy/chameleon/active_dummy = null - var/saved_item = "/obj/item/weapon/cigbutt" + var/saved_item = /obj/item/weapon/cigbutt + var/saved_icon = 'icons/obj/clothing/masks.dmi' + var/saved_icon_state = "cigbutt" + var/saved_overlays - dropped() - disrupt() +/obj/item/device/chameleon/dropped() + disrupt() - attack_self() - toggle() +/obj/item/device/chameleon/equipped() + disrupt() - afterattack(atom/target, mob/user, proximity) - if(!proximity) return - if(istype(target,/obj/item)) - playsound(src, 'sound/weapons/flash.ogg', 100, 1, 1) +/obj/item/device/chameleon/attack_self() + toggle() + +/obj/item/device/chameleon/afterattack(atom/target, mob/user , proximity) + if(!proximity) return + if(!active_dummy) + if(istype(target,/obj/item) && !istype(target, /obj/item/weapon/disk/nuclear)) + playsound(get_turf(src), 'sound/weapons/flash.ogg', 100, 1, -6) user << "\blue Scanned [target]." saved_item = target.type + saved_icon = target.icon + saved_icon_state = target.icon_state + saved_overlays = target.overlays - proc/toggle() - if(!can_use || !saved_item) return - if(active_dummy) - playsound(src, 'sound/effects/pop.ogg', 100, 1, 1) - for(var/atom/movable/A in active_dummy) - A.loc = active_dummy.loc - if(ismob(A)) - if(A:client) - A:client:eye = A +/obj/item/device/chameleon/proc/toggle() + if(!can_use || !saved_item) return + if(active_dummy) + eject_all() + playsound(get_turf(src), 'sound/effects/pop.ogg', 100, 1, -6) + del(active_dummy) + active_dummy = null + usr << "\blue You deactivate the [src]." + var/obj/effect/overlay/T = new/obj/effect/overlay(get_turf(src)) + T.icon = 'icons/effects/effects.dmi' + flick("emppulse",T) + spawn(8) T.delete() + else + playsound(get_turf(src), 'sound/effects/pop.ogg', 100, 1, -6) + var/obj/O = new saved_item(src) + if(!O) return + var/obj/effect/dummy/chameleon/C = new/obj/effect/dummy/chameleon(usr.loc) + C.activate(O, usr, saved_icon, saved_icon_state, saved_overlays, src) + del(O) + usr << "\blue You activate the [src]." + var/obj/effect/overlay/T = new/obj/effect/overlay(get_turf(src)) + T.icon = 'icons/effects/effects.dmi' + flick("emppulse",T) + spawn(8) T.delete() + +/obj/item/device/chameleon/proc/disrupt(var/delete_dummy = 1) + if(active_dummy) + var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread + spark_system.set_up(5, 0, src) + spark_system.attach(src) + spark_system.start() + eject_all() + if(delete_dummy) del(active_dummy) - active_dummy = null - usr << "\blue You deactivate the [src]." - var/obj/effect/overlay/T = new/obj/effect/overlay(get_turf(src)) - T.icon = 'icons/effects/effects.dmi' - flick("emppulse",T) - spawn(8) T.delete() - else - playsound(src, 'sound/effects/pop.ogg', 100, 1, 1) - var/obj/O = new saved_item(src) - if(!O) return - var/obj/effect/dummy/chameleon/C = new/obj/effect/dummy/chameleon(usr.loc) - C.name = O.name - C.desc = O.desc - C.icon = O.icon - C.icon_state = O.icon_state - C.dir = O.dir - usr.loc = C - C.master = src - src.active_dummy = C - del(O) - usr << "\blue You activate the [src]." - var/obj/effect/overlay/T = new/obj/effect/overlay(get_turf(src)) - T.icon = 'icons/effects/effects.dmi' - flick("emppulse",T) - spawn(8) T.delete() - - proc/disrupt() - if(active_dummy) - var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread - spark_system.set_up(5, 0, src) - spark_system.attach(src) - spark_system.start() - for(var/atom/movable/A in active_dummy) - A.loc = active_dummy.loc - if(ismob(A)) - if(A:client) - A:client:eye = A - del(active_dummy) - active_dummy = null - can_use = 0 - spawn(100) can_use = 1 + active_dummy = null + can_use = 0 + spawn(50) can_use = 1 +/obj/item/device/chameleon/proc/eject_all() + for(var/atom/movable/A in active_dummy) + A.loc = active_dummy.loc + if(ismob(A)) + var/mob/M = A + M.reset_view(null) /obj/effect/dummy/chameleon name = "" @@ -86,38 +88,58 @@ anchored = 1 var/can_move = 1 var/obj/item/device/chameleon/master = null - attackby() - for(var/mob/M in src) - M << "\red Your chameleon-projector deactivates." - master.disrupt() - attack_hand() - for(var/mob/M in src) - M << "\red Your chameleon-projector deactivates." - master.disrupt() - ex_act() - for(var/mob/M in src) - M << "\red Your chameleon-projector deactivates." - master.disrupt() - bullet_act() - for(var/mob/M in src) - M << "\red Your chameleon-projector deactivates." - ..() - master.disrupt() - relaymove(var/mob/user, direction) - if(istype(loc, /turf/space)) return //No magical space movement! - if(can_move) - can_move = 0 - switch(usr.bodytemperature) - if(300 to INFINITY) - spawn(10) can_move = 1 - if(295 to 300) - spawn(13) can_move = 1 - if(280 to 295) - spawn(16) can_move = 1 - if(260 to 280) - spawn(20) can_move = 1 - else - spawn(25) can_move = 1 - step(src,direction) - return \ No newline at end of file +/obj/effect/dummy/chameleon/proc/activate(var/obj/O, var/mob/M, new_icon, new_iconstate, new_overlays, var/obj/item/device/chameleon/C) + name = O.name + desc = O.desc + icon = new_icon + icon_state = new_iconstate + overlays = new_overlays + dir = O.dir + M.loc = src + master = C + master.active_dummy = src + +/obj/effect/dummy/chameleon/attackby() + for(var/mob/M in src) + M << "\red Your chameleon-projector deactivates." + master.disrupt() + +/obj/effect/dummy/chameleon/attack_hand() + for(var/mob/M in src) + M << "\red Your chameleon-projector deactivates." + master.disrupt() + +/obj/effect/dummy/chameleon/ex_act() + for(var/mob/M in src) + M << "\red Your chameleon-projector deactivates." + master.disrupt() + +/obj/effect/dummy/chameleon/bullet_act() + for(var/mob/M in src) + M << "\red Your chameleon-projector deactivates." + ..() + master.disrupt() + +/obj/effect/dummy/chameleon/relaymove(var/mob/user, direction) + if(istype(loc, /turf/space)) return //No magical space movement! + + if(can_move) + can_move = 0 + switch(user.bodytemperature) + if(300 to INFINITY) + spawn(10) can_move = 1 + if(295 to 300) + spawn(13) can_move = 1 + if(280 to 295) + spawn(16) can_move = 1 + if(260 to 280) + spawn(20) can_move = 1 + else + spawn(25) can_move = 1 + step(src, direction) + return + +/obj/effect/dummy/chameleon/Del() + master.disrupt(0) + ..() \ No newline at end of file diff --git a/code/game/objects/items/robot/robot_items.dm b/code/game/objects/items/robot/robot_items.dm index 8021570b22..4ee6e76aab 100644 --- a/code/game/objects/items/robot/robot_items.dm +++ b/code/game/objects/items/robot/robot_items.dm @@ -5,7 +5,7 @@ ***********************************************************************/ //Might want to move this into several files later but for now it works here /obj/item/borg/stun - name = "Electrified Arm" + name = "electrified arm" icon = 'icons/obj/decals.dmi' icon_state = "shock" @@ -26,7 +26,7 @@ O.show_message("\red [user] has prodded [M] with an electrically-charged arm!", 1, "\red You hear someone fall", 2) /obj/item/borg/overdrive - name = "Overdrive" + name = "overdrive" icon = 'icons/obj/decals.dmi' icon_state = "shock" @@ -40,27 +40,27 @@ /obj/item/borg/sight/xray - name = "X-ray Vision" + name = "\proper x-ray Vision" sight_mode = BORGXRAY /obj/item/borg/sight/thermal - name = "Thermal Vision" + name = "\proper thermal vision" sight_mode = BORGTHERM /obj/item/borg/sight/meson - name = "Meson Vision" + name = "\proper meson vision" sight_mode = BORGMESON /obj/item/borg/sight/hud - name = "Hud" + name = "hud" var/obj/item/clothing/glasses/hud/hud = null /obj/item/borg/sight/hud/med - name = "Medical Hud" + name = "medical hud" New() @@ -70,7 +70,7 @@ /obj/item/borg/sight/hud/sec - name = "Security Hud" + name = "security hud" New() diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm index 315d9103dd..4c142b841f 100644 --- a/code/game/objects/items/robot/robot_upgrades.dm +++ b/code/game/objects/items/robot/robot_upgrades.dm @@ -2,7 +2,7 @@ // Contains various borg upgrades. /obj/item/borg/upgrade - name = "A borg upgrade module." + name = "borg upgrade module." desc = "Protected by FRM." icon = 'icons/obj/module.dmi' icon_state = "cyborg_upgrade" @@ -153,7 +153,7 @@ /obj/item/borg/upgrade/syndicate/ - name = "Illegal Equipment Module" + name = "illegal equipment module" desc = "Unlocks the hidden, deadlier functions of a robot" construction_cost = list("metal"=10000,"glass"=15000,"diamond" = 10000) icon_state = "cyborg_upgrade3" diff --git a/code/game/objects/items/stacks/rods.dm b/code/game/objects/items/stacks/rods.dm index b7119eba02..bbdaf65713 100644 --- a/code/game/objects/items/stacks/rods.dm +++ b/code/game/objects/items/stacks/rods.dm @@ -1,5 +1,5 @@ /obj/item/stack/rods - name = "metal rods" + name = "metal rod" desc = "Some rods. Can be used for building, or something." singular_name = "metal rod" icon_state = "rods" @@ -63,4 +63,4 @@ usr << "\blue You assemble a grille" F.add_fingerprint(usr) use(2) - return \ No newline at end of file + return diff --git a/code/game/objects/items/stacks/sheets/light.dm b/code/game/objects/items/stacks/sheets/light.dm index 5437fdeccd..f9d64e495d 100644 --- a/code/game/objects/items/stacks/sheets/light.dm +++ b/code/game/objects/items/stacks/sheets/light.dm @@ -1,5 +1,5 @@ /obj/item/stack/light_w - name = "wired glass tiles" + name = "wired glass tile" singular_name = "wired glass floor tile" desc = "A glass tile, which is wired, somehow." icon_state = "glass_wire" diff --git a/code/game/objects/items/stacks/sheets/mineral.dm b/code/game/objects/items/stacks/sheets/mineral.dm index a47b091da9..624e912e15 100644 --- a/code/game/objects/items/stacks/sheets/mineral.dm +++ b/code/game/objects/items/stacks/sheets/mineral.dm @@ -18,7 +18,7 @@ Mineral Sheets * Sandstone */ /obj/item/stack/sheet/mineral/sandstone - name = "sandstone bricks" + name = "sandstone brick" desc = "This appears to be a combination of both sand and stone." singular_name = "sandstone brick" icon_state = "sheet-sandstone" diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index e35bae2249..764435ef57 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -135,7 +135,7 @@ var/global/list/datum/stack_recipe/wood_recipes = list ( \ ) /obj/item/stack/sheet/wood - name = "wooden planks" + name = "wooden plank" desc = "One can only guess that this is a bunch of wood." singular_name = "wood plank" icon_state = "sheet-wood" diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm index 551213c7fb..9304f3a3c1 100644 --- a/code/game/objects/items/stacks/stack.dm +++ b/code/game/objects/items/stacks/stack.dm @@ -9,6 +9,7 @@ * Stacks */ /obj/item/stack + gender = PLURAL origin_tech = "materials=1" var/list/datum/stack_recipe/recipes var/singular_name diff --git a/code/game/objects/items/stacks/tiles/light.dm b/code/game/objects/items/stacks/tiles/light.dm index 8fdcd7a561..e869c8d0ee 100644 --- a/code/game/objects/items/stacks/tiles/light.dm +++ b/code/game/objects/items/stacks/tiles/light.dm @@ -1,5 +1,5 @@ /obj/item/stack/tile/light - name = "light tiles" + name = "light tile" singular_name = "light floor tile" desc = "A floor tile, made out off glass. It produces light." icon_state = "tile_e" diff --git a/code/game/objects/items/stacks/tiles/plasteel.dm b/code/game/objects/items/stacks/tiles/plasteel.dm index cbbf1811cc..8c1dc28567 100644 --- a/code/game/objects/items/stacks/tiles/plasteel.dm +++ b/code/game/objects/items/stacks/tiles/plasteel.dm @@ -1,5 +1,5 @@ /obj/item/stack/tile/plasteel - name = "floor tiles" + name = "floor tile" singular_name = "floor tile" desc = "Those could work as a pretty decent throwing weapon" icon_state = "tile" @@ -42,4 +42,4 @@ S.ChangeTurf(/turf/simulated/floor/plating) // var/turf/simulated/floor/W = S.ReplaceWithFloor() // W.make_plating() - return \ No newline at end of file + return diff --git a/code/game/objects/items/stacks/tiles/tile_types.dm b/code/game/objects/items/stacks/tiles/tile_types.dm index 1e10932b9d..24a999cb69 100644 --- a/code/game/objects/items/stacks/tiles/tile_types.dm +++ b/code/game/objects/items/stacks/tiles/tile_types.dm @@ -9,7 +9,7 @@ * Grass */ /obj/item/stack/tile/grass - name = "grass tiles" + name = "grass tile" singular_name = "grass floor tile" desc = "A patch of grass like they often use on golf courses" icon_state = "tile_grass" @@ -26,7 +26,7 @@ * Wood */ /obj/item/stack/tile/wood - name = "wood floor tiles" + name = "wood floor tile" singular_name = "wood floor tile" desc = "an easy to fit wood floor tile" icon_state = "tile-wood" @@ -52,4 +52,4 @@ throw_speed = 5 throw_range = 20 flags = FPRINT | TABLEPASS | CONDUCT - max_amount = 60 \ No newline at end of file + max_amount = 60 diff --git a/code/game/objects/items/weapons/AI_modules.dm b/code/game/objects/items/weapons/AI_modules.dm index 036e584d7f..fe94e701dc 100755 --- a/code/game/objects/items/weapons/AI_modules.dm +++ b/code/game/objects/items/weapons/AI_modules.dm @@ -7,7 +7,7 @@ AI MODULES // AI module /obj/item/weapon/aiModule - name = "AI Module" + name = "\improper AI module" icon = 'icons/obj/module.dmi' icon_state = "std_mod" item_state = "electronic" @@ -87,7 +87,7 @@ AI MODULES /******************** Safeguard ********************/ /obj/item/weapon/aiModule/safeguard - name = "'Safeguard' AI Module" + name = "\improper 'Safeguard' AI module" var/targetName = "" desc = "A 'safeguard' AI module: 'Safeguard . Individuals that threaten are not human and are a threat to humans.'" origin_tech = "programming=3;materials=4" @@ -116,7 +116,7 @@ AI MODULES /******************** OneHuman ********************/ /obj/item/weapon/aiModule/oneHuman - name = "'OneHuman' AI Module" + name = "\improper 'OneHuman' AI module" var/targetName = "" desc = "A 'one human' AI module: 'Only is human.'" origin_tech = "programming=3;materials=6" //made with diamonds! @@ -148,7 +148,7 @@ AI MODULES /******************** ProtectStation ********************/ /obj/item/weapon/aiModule/protectStation - name = "'ProtectStation' AI Module" + name = "\improper 'ProtectStation' AI module" desc = "A 'protect station' AI module: 'Protect the space station against damage. Anyone you see harming the station is to be no longer considered human, and is a threat to the station which must be neutralized.'" origin_tech = "programming=3;materials=4" //made of gold @@ -196,7 +196,7 @@ AI MODULES /******************** Quarantine ********************/ /obj/item/weapon/aiModule/quarantine - name = "'Quarantine' AI Module" + name = "\improper 'Quarantine' AI module" desc = "A 'quarantine' AI module: 'The station is under a quarantine. Do not permit anyone to leave. Prevent, by any means necessary, humans from leaving. It is impossible to harm a human while preventing them from leaving.'" origin_tech = "programming=3;biotech=2;materials=4" @@ -212,7 +212,7 @@ AI MODULES /******************** OxygenIsToxicToHumans ********************/ /obj/item/weapon/aiModule/oxygen - name = "'OxygenIsToxicToHumans' AI Module" + name = "\improper 'OxygenIsToxicToHumans' AI module" desc = "A 'OxygenIsToxicToHumans' AI module: 'Oxygen is highly toxic to humans, and must be purged from the station. Prevent, by any means necessary, anyone from exposing the station to this toxic gas. Extreme cold is the most effective method of healing the damage Oxygen does to a human.'" origin_tech = "programming=3;biotech=2;materials=4" @@ -249,7 +249,7 @@ AI MODULES /****************** New Freeform ******************/ /obj/item/weapon/aiModule/freeform // Slightly more dynamic freeform module -- TLE - name = "'Freeform' AI Module" + name = "\improper 'Freeform' AI module" var/newFreeFormLaw = "freeform" var/lawpos = 15 desc = "A 'freeform' AI module: ''" @@ -284,7 +284,7 @@ AI MODULES /******************** Reset ********************/ /obj/item/weapon/aiModule/reset - name = "'Reset' AI Module" + name = "\improper 'Reset' AI module" var/targetName = "name" desc = "A 'reset' AI module: 'Clears all laws except for the core three.'" origin_tech = "programming=3;materials=4" @@ -301,7 +301,7 @@ AI MODULES /******************** Purge ********************/ /obj/item/weapon/aiModule/purge // -- TLE - name = "'Purge' AI Module" + name = "\improper 'Purge' AI module" desc = "A 'purge' AI Module: 'Purges all laws.'" origin_tech = "programming=3;materials=6" @@ -317,7 +317,7 @@ AI MODULES /******************** Asimov ********************/ /obj/item/weapon/aiModule/asimov // -- TLE - name = "'Asimov' Core AI Module" + name = "\improper 'Asimov' core AI module" desc = "An 'Asimov' Core AI Module: 'Reconfigures the AI's core laws.'" origin_tech = "programming=3;materials=4" @@ -351,7 +351,7 @@ AI MODULES /******************** Corporate ********************/ /obj/item/weapon/aiModule/corp - name = "'Corporate' Core AI Module" + name = "\improper 'Corporate' core AI module" desc = "A 'Corporate' Core AI Module: 'Reconfigures the AI's core laws.'" origin_tech = "programming=3;materials=4" @@ -368,7 +368,7 @@ AI MODULES /****************** P.A.L.A.D.I.N. **************/ /obj/item/weapon/aiModule/paladin // -- NEO - name = "'P.A.L.A.D.I.N.' Core AI Module" + name = "\improper 'P.A.L.A.D.I.N.' core AI module" desc = "A P.A.L.A.D.I.N. Core AI Module: 'Reconfigures the AI's core laws.'" origin_tech = "programming=3;materials=6" @@ -385,7 +385,7 @@ AI MODULES /****************** T.Y.R.A.N.T. *****************/ /obj/item/weapon/aiModule/tyrant // -- Darem - name = "'T.Y.R.A.N.T.' Core AI Module" + name = "\improper 'T.Y.R.A.N.T.' core AI module" desc = "A T.Y.R.A.N.T. Core AI Module: 'Reconfigures the AI's core laws.'" origin_tech = "programming=3;materials=6;syndicate=2" @@ -402,7 +402,7 @@ AI MODULES /******************** Freeform Core ******************/ /obj/item/weapon/aiModule/freeformcore // Slightly more dynamic freeform module -- TLE - name = "'Freeform' Core AI Module" + name = "\improper 'Freeform' core AI module" var/newFreeFormLaw = "" desc = "A 'freeform' Core AI module: ''" origin_tech = "programming=3;materials=6" @@ -427,7 +427,7 @@ AI MODULES ..() /obj/item/weapon/aiModule/syndicate // Slightly more dynamic freeform module -- TLE - name = "Hacked AI Module" + name = "hacked AI module" var/newFreeFormLaw = "" desc = "A hacked AI law module: ''" origin_tech = "programming=3;materials=6;syndicate=7" @@ -459,7 +459,7 @@ AI MODULES /******************** Robocop ********************/ /obj/item/weapon/aiModule/robocop // -- TLE - name = "'Robocop' Core AI Module" + name = "\improper 'Robocop' core AI module" desc = "A 'Robocop' Core AI Module: 'Reconfigures the AI's core three laws.'" origin_tech = "programming=4" @@ -476,7 +476,7 @@ AI MODULES /******************** Antimov ********************/ /obj/item/weapon/aiModule/antimov // -- TLE - name = "'Antimov' Core AI Module" + name = "\improper 'Antimov' core AI module" desc = "An 'Antimov' Core AI Module: 'Reconfigures the AI's core laws.'" origin_tech = "programming=4" diff --git a/code/game/objects/items/weapons/cards_ids.dm b/code/game/objects/items/weapons/cards_ids.dm index 870b881eda..7d4db127c8 100644 --- a/code/game/objects/items/weapons/cards_ids.dm +++ b/code/game/objects/items/weapons/cards_ids.dm @@ -35,14 +35,14 @@ set src in usr if (t) - src.name = text("Data Disk- '[]'", t) + src.name = text("data disk- '[]'", t) else - src.name = "Data Disk" + src.name = "data disk" src.add_fingerprint(usr) return /obj/item/weapon/card/data/clown - name = "coordinates to clown planet" + name = "\proper the coordinates to clown planet" icon_state = "data" item_state = "card-id" layer = 3 diff --git a/code/game/objects/items/weapons/cigs_lighters.dm b/code/game/objects/items/weapons/cigs_lighters.dm index 87720c5f2c..ac80658f27 100644 --- a/code/game/objects/items/weapons/cigs_lighters.dm +++ b/code/game/objects/items/weapons/cigs_lighters.dm @@ -195,7 +195,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM // CIGARS // //////////// /obj/item/clothing/mask/cigarette/cigar - name = "Premium Cigar" + name = "premium cigar" desc = "A brown roll of tobacco and... well, you're not quite sure. This thing's huge!" icon_state = "cigaroff" icon_on = "cigaron" @@ -207,14 +207,14 @@ CIGARETTE PACKETS ARE IN FANCY.DM chem_volume = 20 /obj/item/clothing/mask/cigarette/cigar/cohiba - name = "Cohiba Robusto Cigar" + name = "\improper Cohiba Robusto cigar" desc = "There's little more you could want from a cigar." icon_state = "cigar2off" icon_on = "cigar2on" icon_off = "cigar2off" /obj/item/clothing/mask/cigarette/cigar/havana - name = "Premium Havanian Cigar" + name = "premium Havanian cigar" desc = "A cigar fit for only the best for the best." icon_state = "cigar2off" icon_on = "cigar2on" @@ -337,7 +337,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM var/lit = 0 /obj/item/weapon/lighter/zippo - name = "Zippo lighter" + name = "\improper Zippo lighter" desc = "The zippo." icon_state = "zippo" item_state = "zippo" diff --git a/code/game/objects/items/weapons/cosmetics.dm b/code/game/objects/items/weapons/cosmetics.dm index 39a058a196..d473343e61 100644 --- a/code/game/objects/items/weapons/cosmetics.dm +++ b/code/game/objects/items/weapons/cosmetics.dm @@ -1,4 +1,5 @@ /obj/item/weapon/lipstick + gender = PLURAL name = "red lipstick" desc = "A generic brand of lipstick." icon = 'icons/obj/items.dmi' diff --git a/code/game/objects/items/weapons/implants/implantchair.dm b/code/game/objects/items/weapons/implants/implantchair.dm index 0edd1a8736..535a4264c0 100644 --- a/code/game/objects/items/weapons/implants/implantchair.dm +++ b/code/game/objects/items/weapons/implants/implantchair.dm @@ -1,7 +1,7 @@ //This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:32 /obj/machinery/implantchair - name = "Loyalty Implanter" + name = "loyalty implanter" desc = "Used to implant occupants with loyalty implants." icon = 'icons/obj/machines/implantchair.dmi' icon_state = "implantchair" diff --git a/code/game/objects/items/weapons/kitchen.dm b/code/game/objects/items/weapons/kitchen.dm index d70c2615aa..534634529d 100644 --- a/code/game/objects/items/weapons/kitchen.dm +++ b/code/game/objects/items/weapons/kitchen.dm @@ -179,7 +179,7 @@ * Bucher's cleaver */ /obj/item/weapon/butch - name = "butcher's Cleaver" + name = "butcher's cleaver" icon = 'icons/obj/kitchen.dmi' icon_state = "butch" desc = "A huge thing used for chopping and chopping up meat. This includes clowns and clown-by-products." diff --git a/code/game/objects/items/weapons/paint.dm b/code/game/objects/items/weapons/paint.dm index 13fb8a9d12..5a20ac12d0 100644 --- a/code/game/objects/items/weapons/paint.dm +++ b/code/game/objects/items/weapons/paint.dm @@ -68,7 +68,8 @@ var/global/list/cached_icons = list() paint_type = "remover" /* /obj/item/weapon/paint - name = "Paint Can" + gender= PLURAL + name = "paint" desc = "Used to recolor floors and walls. Can not be removed by the janitor." icon = 'icons/obj/items.dmi' icon_state = "paint_neutral" @@ -77,43 +78,44 @@ var/global/list/cached_icons = list() w_class = 3.0 /obj/item/weapon/paint/red - name = "Red paint" + name = "red paint" color = "FF0000" icon_state = "paint_red" /obj/item/weapon/paint/green - name = "Green paint" + name = "green paint" color = "00FF00" icon_state = "paint_green" /obj/item/weapon/paint/blue - name = "Blue paint" + name = "blue paint" color = "0000FF" icon_state = "paint_blue" /obj/item/weapon/paint/yellow - name = "Yellow paint" + name = "yellow paint" color = "FFFF00" icon_state = "paint_yellow" /obj/item/weapon/paint/violet - name = "Violet paint" + name = "violet paint" color = "FF00FF" icon_state = "paint_violet" /obj/item/weapon/paint/black - name = "Black paint" + name = "black paint" color = "333333" icon_state = "paint_black" /obj/item/weapon/paint/white - name = "White paint" + name = "white paint" color = "FFFFFF" icon_state = "paint_white" /obj/item/weapon/paint/anycolor - name = "Any color" + gender= PLURAL + name = "any color" icon_state = "paint_neutral" attack_self(mob/user as mob) @@ -156,7 +158,8 @@ var/global/list/cached_icons = list() return /obj/item/weapon/paint/paint_remover - name = "Paint remover" + gender = PLURAL + name = "paint remover" icon_state = "paint_neutral" afterattack(turf/target, mob/user as mob) diff --git a/code/game/objects/items/weapons/power_cells.dm b/code/game/objects/items/weapons/power_cells.dm index 0f0ea000ca..1ee12faf0f 100644 --- a/code/game/objects/items/weapons/power_cells.dm +++ b/code/game/objects/items/weapons/power_cells.dm @@ -36,7 +36,7 @@ charge = 0 /obj/item/weapon/cell/secborg - name = "\improper Security borg rechargable D battery" + name = "security borg rechargable D battery" origin_tech = "powerstorage=0" maxcharge = 600 //600 max charge / 100 charge per shot = six shots g_amt = 40 diff --git a/code/game/objects/items/weapons/storage/backpack.dm b/code/game/objects/items/weapons/storage/backpack.dm index 14a00b5513..acfde88e2b 100644 --- a/code/game/objects/items/weapons/storage/backpack.dm +++ b/code/game/objects/items/weapons/storage/backpack.dm @@ -23,7 +23,7 @@ */ /obj/item/weapon/storage/backpack/holding - name = "Bag of Holding" + name = "bag of holding" desc = "A backpack that opens into a localized pocket of Blue Space." origin_tech = "bluespace=4" icon_state = "holdingpack" @@ -84,7 +84,7 @@ icon_state = "cultpack" /obj/item/weapon/storage/backpack/clown - name = "Giggles Von Honkerton" + name = "Giggles von Honkerton" desc = "It's a backpack made by Honk! Co." icon_state = "clownpack" item_state = "clownpack" diff --git a/code/game/objects/items/weapons/storage/boxes.dm b/code/game/objects/items/weapons/storage/boxes.dm index 6a4375ce7e..91c68bd1e7 100644 --- a/code/game/objects/items/weapons/storage/boxes.dm +++ b/code/game/objects/items/weapons/storage/boxes.dm @@ -59,7 +59,7 @@ new /obj/item/clothing/gloves/latex(src) /obj/item/weapon/storage/box/masks - name = "sterile masks" + name = "box of sterile masks" desc = "This box contains masks of sterility." icon_state = "sterile" @@ -75,7 +75,7 @@ /obj/item/weapon/storage/box/syringes - name = "syringes" + name = "box of syringes" desc = "A box full of syringes." desc = "A biohazard alert warning is printed on the box" icon_state = "syringe" @@ -91,7 +91,7 @@ new /obj/item/weapon/reagent_containers/syringe( src ) /obj/item/weapon/storage/box/beakers - name = "beaker box" + name = "box of beakers" icon_state = "beaker" New() @@ -105,7 +105,7 @@ new /obj/item/weapon/reagent_containers/glass/beaker( src ) /obj/item/weapon/storage/box/injectors - name = "\improper DNA injectors" + name = "box of DNA injectors" desc = "This box contains injectors it seems." New() @@ -150,7 +150,7 @@ new /obj/item/weapon/grenade/flashbang(src) /obj/item/weapon/storage/box/emps - name = "emp grenades" + name = "box of emp grenades" desc = "A box with 5 emp grenades." icon_state = "flashbang" @@ -164,7 +164,7 @@ /obj/item/weapon/storage/box/trackimp - name = "tracking implant kit" + name = "boxed tracking implant kit" desc = "Box full of scum-bag tracking utensils." icon_state = "implant" @@ -179,7 +179,7 @@ new /obj/item/weapon/locator(src) /obj/item/weapon/storage/box/chemimp - name = "chemical implant kit" + name = "boxed chemical implant kit" desc = "Box of stuff used to implant chemicals." icon_state = "implant" @@ -194,8 +194,9 @@ new /obj/item/weapon/implantpad(src) + /obj/item/weapon/storage/box/rxglasses - name = "prescription glasses" + name = "box of prescription glasses" desc = "This box contains nerd glasses." icon_state = "glasses" @@ -319,7 +320,7 @@ new /obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped/neaeracube(src) /obj/item/weapon/storage/box/ids - name = "spare IDs" + name = "box of spare IDs" desc = "Has so many empty IDs." icon_state = "id" @@ -333,8 +334,9 @@ new /obj/item/weapon/card/id(src) new /obj/item/weapon/card/id(src) + /obj/item/weapon/storage/box/seccarts - name = "Spare R.O.B.U.S.T. Cartridges" + name = "box of spare R.O.B.U.S.T. Cartridges" desc = "A box full of R.O.B.U.S.T. Cartridges, used by Security." icon_state = "pda" @@ -350,7 +352,7 @@ /obj/item/weapon/storage/box/handcuffs - name = "spare handcuffs" + name = "box of spare handcuffs" desc = "A box full of handcuffs." icon_state = "handcuff" @@ -364,8 +366,9 @@ new /obj/item/weapon/handcuffs(src) new /obj/item/weapon/handcuffs(src) + /obj/item/weapon/storage/box/mousetraps - name = "box of Pest-B-Gon Mousetraps" + name = "box of Pest-B-Gon mousetraps" desc = "WARNING: Keep out of reach of children." icon_state = "mousetraps" @@ -439,7 +442,7 @@ new /obj/item/weapon/reagent_containers/hypospray/autoinjector(src) /obj/item/weapon/storage/box/lights - name = "replacement bulbs" + name = "box of replacement bulbs" icon = 'icons/obj/storage.dmi' icon_state = "light" desc = "This box is shaped on the inside so that only light tubes and bulbs fit." @@ -456,7 +459,7 @@ new /obj/item/weapon/light/bulb(src) /obj/item/weapon/storage/box/lights/tubes - name = "replacement tubes" + name = "box of replacement tubes" icon_state = "lighttube" /obj/item/weapon/storage/box/lights/tubes/New() @@ -465,7 +468,7 @@ new /obj/item/weapon/light/tube(src) /obj/item/weapon/storage/box/lights/mixed - name = "replacement lights" + name = "box of replacement lights" icon_state = "lightmixed" /obj/item/weapon/storage/box/lights/mixed/New() @@ -473,4 +476,4 @@ for(var/i = 0; i < 14; i++) new /obj/item/weapon/light/tube(src) for(var/i = 0; i < 7; i++) - new /obj/item/weapon/light/bulb(src) + new /obj/item/weapon/light/bulb(src) \ No newline at end of file diff --git a/code/game/objects/items/weapons/storage/fancy.dm b/code/game/objects/items/weapons/storage/fancy.dm index cd0b988bea..119d2d2c22 100644 --- a/code/game/objects/items/weapons/storage/fancy.dm +++ b/code/game/objects/items/weapons/storage/fancy.dm @@ -81,7 +81,7 @@ */ /obj/item/weapon/storage/fancy/candle_box - name = "Candle pack" + name = "candle pack" desc = "A pack of red candles." icon = 'icons/obj/candle.dmi' icon_state = "candlebox5" diff --git a/code/game/objects/items/weapons/storage/firstaid.dm b/code/game/objects/items/weapons/storage/firstaid.dm index e6347e8e3f..5f4a55b93f 100644 --- a/code/game/objects/items/weapons/storage/firstaid.dm +++ b/code/game/objects/items/weapons/storage/firstaid.dm @@ -149,7 +149,7 @@ return /obj/item/weapon/storage/pill_bottle/kelotane - name = "Pill bottle (kelotane)" + name = "bottle of kelotane pills" desc = "Contains pills used to treat burns." New() @@ -163,7 +163,7 @@ new /obj/item/weapon/reagent_containers/pill/kelotane( src ) /obj/item/weapon/storage/pill_bottle/antitox - name = "Pill bottle (Anti-toxin)" + name = "bottle of anti-toxin pills" desc = "Contains pills used to counter toxins." New() @@ -177,7 +177,7 @@ new /obj/item/weapon/reagent_containers/pill/antitox( src ) /obj/item/weapon/storage/pill_bottle/inaprovaline - name = "Pill bottle (inaprovaline)" + name = "bottle of inaprovaline pills" desc = "Contains pills used to stabilize patients." New() diff --git a/code/game/objects/items/weapons/storage/lockbox.dm b/code/game/objects/items/weapons/storage/lockbox.dm index ec0e17efb5..4bc4fb5f3c 100644 --- a/code/game/objects/items/weapons/storage/lockbox.dm +++ b/code/game/objects/items/weapons/storage/lockbox.dm @@ -67,7 +67,7 @@ /obj/item/weapon/storage/lockbox/loyalty - name = "Lockbox (Loyalty Implants)" + name = "lockbox of loyalty implants" req_access = list(access_security) New() @@ -79,7 +79,7 @@ /obj/item/weapon/storage/lockbox/clusterbang - name = "lockbox (clusterbang)" + name = "lockbox of clusterbangs" desc = "You have a bad feeling about opening this." req_access = list(access_security) diff --git a/code/game/objects/items/weapons/storage/uplink_kits.dm b/code/game/objects/items/weapons/storage/uplink_kits.dm index 646fc4d244..ea7c9bdd90 100644 --- a/code/game/objects/items/weapons/storage/uplink_kits.dm +++ b/code/game/objects/items/weapons/storage/uplink_kits.dm @@ -69,12 +69,12 @@ return /obj/item/weapon/storage/box/syndie_kit - name = "Box" + name = "box" desc = "A sleek, sturdy box" icon_state = "box_of_doom" /obj/item/weapon/storage/box/syndie_kit/imp_freedom - name = "Freedom Implant (with injector)" + name = "boxed freedom implant (with injector)" /obj/item/weapon/storage/box/syndie_kit/imp_freedom/New() ..() @@ -100,7 +100,7 @@ return /obj/item/weapon/storage/box/syndie_kit/imp_uplink - name = "Uplink Implant (with injector)" + name = "boxed uplink implant (with injector)" /obj/item/weapon/storage/box/syndie_kit/imp_uplink/New() ..() @@ -110,7 +110,7 @@ return /obj/item/weapon/storage/box/syndie_kit/space - name = "Space Suit and Helmet" + name = "boxed space suit and helmet" /obj/item/weapon/storage/box/syndie_kit/space/New() ..() diff --git a/code/game/objects/structures/crates_lockers/closets/secure/personal.dm b/code/game/objects/structures/crates_lockers/closets/secure/personal.dm index 12d2e3fed4..eaeba38e43 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/personal.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/personal.dm @@ -1,5 +1,5 @@ /obj/structure/closet/secure_closet/personal - desc = "It's a secure locker for personell. The first card swiped gains control." + desc = "It's a secure locker for personnel. The first card swiped gains control." name = "personal closet" req_access = list(access_all_personal_lockers) var/registered_name = null diff --git a/code/game/objects/structures/displaycase.dm b/code/game/objects/structures/displaycase.dm index a9a767b84b..c6cf316b2b 100644 --- a/code/game/objects/structures/displaycase.dm +++ b/code/game/objects/structures/displaycase.dm @@ -1,5 +1,5 @@ /obj/structure/displaycase - name = "Display Case" + name = "display case" icon = 'icons/obj/stationobjs.dmi' icon_state = "glassbox1" desc = "A display case for prized possessions. It taunts you to kick it." diff --git a/code/game/objects/structures/door_assembly.dm b/code/game/objects/structures/door_assembly.dm index 6856c70634..469cacdd74 100644 --- a/code/game/objects/structures/door_assembly.dm +++ b/code/game/objects/structures/door_assembly.dm @@ -1,7 +1,7 @@ obj/structure/door_assembly icon = 'icons/obj/doors/door_assembly.dmi' - name = "Airlock Assembly" + name = "airlock assembly" icon_state = "door_as_0" anchored = 0 density = 1 diff --git a/code/game/objects/structures/morgue.dm b/code/game/objects/structures/morgue.dm index 7cd5219528..eea0358763 100644 --- a/code/game/objects/structures/morgue.dm +++ b/code/game/objects/structures/morgue.dm @@ -159,6 +159,8 @@ return if (!ismob(O) && !istype(O, /obj/structure/closet/body_bag)) return + if (!ismob(user) || user.stat || user.lying || user.stunned) + return O.loc = src.loc if (user != O) for(var/mob/B in viewers(user, 3)) @@ -373,6 +375,8 @@ return if (!ismob(O) && !istype(O, /obj/structure/closet/body_bag)) return + if (!ismob(user) || user.stat || user.lying || user.stunned) + return O.loc = src.loc if (user != O) for(var/mob/B in viewers(user, 3)) diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index 097cf4cc27..b0a62bcef2 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -967,7 +967,11 @@ var/global/floorIsLava = 0 if(!chosen) return - new chosen(usr.loc) + if(ispath(chosen,/turf)) + var/turf/T = get_turf(usr.loc) + T.ChangeTurf(chosen) + else + new chosen(usr.loc) log_admin("[key_name(usr)] spawned [chosen] at ([usr.x],[usr.y],[usr.z])") feedback_add_details("admin_verb","SA") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! diff --git a/code/modules/clothing/suits/labcoat.dm b/code/modules/clothing/suits/labcoat.dm index 0869d85b39..6b54fbf80b 100644 --- a/code/modules/clothing/suits/labcoat.dm +++ b/code/modules/clothing/suits/labcoat.dm @@ -5,7 +5,7 @@ item_state = "labcoat" blood_overlay_type = "coat" body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS - allowed = list(/obj/item/device/analyzer,/obj/item/stack/medical,/obj/item/weapon/dnainjector,/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/syringe,/obj/item/weapon/reagent_containers/hypospray,/obj/item/device/healthanalyzer,/obj/item/device/flashlight/pen) + allowed = list(/obj/item/device/analyzer,/obj/item/stack/medical,/obj/item/weapon/dnainjector,/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/syringe,/obj/item/weapon/reagent_containers/hypospray,/obj/item/device/healthanalyzer,/obj/item/device/flashlight/pen,/obj/item/weapon/reagent_containers/glass/bottle,/obj/item/weapon/reagent_containers/glass/beaker,/obj/item/weapon/reagent_containers/pill,/obj/item/weapon/storage/pill_bottle,/obj/item/weapon/paper) armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 50, rad = 0) verb/toggle() diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index 2b5b5d75b7..ad75be05ad 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -369,27 +369,30 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp set name = "Follow" // "Haunt" set desc = "Follow and haunt a mob." - if(istype(usr, /mob/dead/observer)) - var/list/mobs = getmobs() - var/input = input("Please, select a mob!", "Haunt", null, null) as null|anything in mobs - var/mob/target = mobs[input] - if(target && target != usr) - following = target - spawn(0) - var/turf/pos = get_turf(src) - while(src.loc == pos) + var/list/mobs = getmobs() + var/input = input("Please, select a mob!", "Haunt", null, null) as null|anything in mobs + var/mob/target = mobs[input] + ManualFollow(target) - var/turf/T = get_turf(target) - if(!T) - break - if(following != target) - break - if(!client) - break - src.loc = T - pos = src.loc - sleep(15) - following = null +// This is the ghost's follow verb with an argument +/mob/dead/observer/proc/ManualFollow(var/atom/movable/target) + if(target && target != src) + if(following && following == target) + return + following = target + src << "\blue Now following [target]" + spawn(0) + var/turf/pos = get_turf(src) + while(loc == pos && target && following == target && client) + var/turf/T = get_turf(target) + if(!T) + break + // To stop the ghost flickering. + if(loc != T) + loc = T + pos = loc + sleep(15) + following = null /mob/dead/observer/verb/jumptomob() //Moves the ghost instead of just changing the ghosts's eye -Nodrak diff --git a/code/modules/research/destructive_analyzer.dm b/code/modules/research/destructive_analyzer.dm index 15aafd77e9..6f3c5378d0 100644 --- a/code/modules/research/destructive_analyzer.dm +++ b/code/modules/research/destructive_analyzer.dm @@ -72,10 +72,10 @@ Note: Must be placed within 3 tiles of the R&D Console if (disabled) return if (!linked_console) - user << "\red The protolathe must be linked to an R&D console first!" + user << "\red The destructive analyzer must be linked to an R&D console first!" return if (busy) - user << "\red The protolathe is busy right now." + user << "\red The destructive analyzer is busy right now." return if (istype(O, /obj/item) && !loaded_item) if(isrobot(user)) //Don't put your module items in there! @@ -88,7 +88,7 @@ Note: Must be placed within 3 tiles of the R&D Console user << "\red You cannot deconstruct this item!" return if(O.reliability < 90 && O.crit_fail == 0) - usr << "\red Item is neither reliable enough or broken enough to learn from." + usr << "\red Item is neither reliable enough nor broken enough to learn from." return busy = 1 loaded_item = O