diff --git a/code/_onclick/hud/ability_screen_objects.dm b/code/_onclick/hud/ability_screen_objects.dm
index 64465f0429..c92da9293d 100644
--- a/code/_onclick/hud/ability_screen_objects.dm
+++ b/code/_onclick/hud/ability_screen_objects.dm
@@ -179,16 +179,10 @@
ability_master.toggle_open(1)
client.screen -= ability_master
-<<<<<<< HEAD
-/mob/New()
- ..()
- if(!ability_master) //VOREStation Edit: S H A D E K I N
- ability_master = new /obj/screen/movable/ability_master(src)
-=======
/mob/Initialize()
. = ..()
- ability_master = new /obj/screen/movable/ability_master(null, src)
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
+ if(!ability_master) //VOREStation Edit: S H A D E K I N
+ ability_master = new /obj/screen/movable/ability_master(null, src)
///////////ACTUAL ABILITIES////////////
//This is what you click to do things//
diff --git a/code/controllers/subsystems/atoms.dm b/code/controllers/subsystems/atoms.dm
index 75d097e611..335949fa12 100644
--- a/code/controllers/subsystems/atoms.dm
+++ b/code/controllers/subsystems/atoms.dm
@@ -34,15 +34,6 @@ SUBSYSTEM_DEF(atoms)
LAZYINITLIST(late_loaders)
var/list/mapload_arg = list(TRUE)
-<<<<<<< HEAD
- if(atoms)
- created_atoms = list()
- count = atoms.len
- for(var/atom/A as anything in atoms)
- if(!A.initialized)
- if(InitAtom(A, mapload_arg))
- atoms -= A
-=======
var/count = LAZYLEN(supplied_atoms)
if(count)
while(supplied_atoms.len)
@@ -50,7 +41,6 @@ SUBSYSTEM_DEF(atoms)
supplied_atoms.len--
if(!A.initialized)
InitAtom(A, GetArguments(A, mapload_arg))
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
CHECK_TICK
else if(!subsystem_initialized)
// If wondering why not just store all atoms in a list and use the block above: that turns out unbearably expensive.
@@ -68,17 +58,10 @@ SUBSYSTEM_DEF(atoms)
atom_init_stage = INITIALIZATION_INNEW_REGULAR
if(late_loaders.len)
-<<<<<<< HEAD
for(var/atom/A as anything in late_loaders)
A.LateInitialize()
CHECK_TICK
testing("Late initialized [late_loaders.len] atoms")
-=======
- for(var/I in late_loaders)
- var/atom/A = I
- A.LateInitialize(arglist(late_loaders[A]))
- report_progress("Late initialized [late_loaders.len] atom\s")
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
late_loaders.Cut()
/datum/controller/subsystem/atoms/proc/InitAtom(atom/A, list/arguments)
diff --git a/code/game/atoms.dm b/code/game/atoms.dm
index 01be8f93d4..df76c881e0 100644
--- a/code/game/atoms.dm
+++ b/code/game/atoms.dm
@@ -27,7 +27,7 @@
// Overlays
///Our local copy of (non-priority) overlays without byond magic. Use procs in SSoverlays to manipulate
- var/list/our_overlays
+ var/list/our_overlays
///Overlays that should remain on top and not normally removed when using cut_overlay functions, like c4.
var/list/priority_overlays
///vis overlays managed by SSvis_overlays to automaticaly turn them like other overlays
@@ -35,7 +35,7 @@
///Our local copy of filter data so we can add/remove it
var/list/filter_data
-
+
//Detective Work, used for the duplicate data points kept in the scanners
var/list/original_atom
// Track if we are already had initialize() called to prevent double-initialization.
@@ -52,32 +52,10 @@
var/global/list/pre_init_created_atoms // atom creation ordering means some stuff is trying to init before SSatoms exists, temp workaround
/atom/New(loc, ...)
-<<<<<<< HEAD
- // Don't call ..() unless /datum/New() ever exists
-
- // During dynamic mapload (reader.dm) this assigns the var overrides from the .dmm file
- // Native BYOND maploading sets those vars before invoking New(), by doing this FIRST we come as close to that behavior as we can.
+ //atom creation method that preloads variables at creation
if(GLOB.use_preloader && (src.type == GLOB._preloader.target_path))//in case the instanciated atom is creating other atoms in New()
GLOB._preloader.load(src)
- // Pass our arguments to InitAtom so they can be passed to initialize(), but replace 1st with if-we're-during-mapload.
- var/do_initialize = SSatoms.initialized
- if(do_initialize > INITIALIZATION_INSSATOMS)
- args[1] = (do_initialize == INITIALIZATION_INNEW_MAPLOAD)
- if(SSatoms.InitAtom(src, args))
- // We were deleted. No sense continuing
- return
-
- // Uncomment if anything ever uses the return value of SSatoms.InitializeAtoms ~Leshana
- // If a map is being loaded, it might want to know about newly created objects so they can be handled.
- // var/list/created = SSatoms.created_atoms
- // if(created)
- // created += src
-=======
- //atom creation method that preloads variables at creation
- if(global.use_preloader && (src.type == global._preloader.target_path))//in case the instanciated atom is creating other atoms in New()
- global._preloader.load(src)
-
var/do_initialize = SSatoms?.atom_init_stage
if(do_initialize > INITIALIZATION_INSSATOMS_LATE)
args[1] = do_initialize == INITIALIZATION_INNEW_MAPLOAD
@@ -88,7 +66,6 @@ var/global/list/pre_init_created_atoms // atom creation ordering means some stuf
argument_list = args.Copy(2)
if(length(argument_list))
LAZYSET(global.pre_init_created_atoms, src, argument_list)
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
// Note: I removed "auto_init" feature (letting types disable auto-init) since it shouldn't be needed anymore.
// You can replicate the same by checking the value of the first parameter to initialize() ~Leshana
@@ -696,7 +673,7 @@ var/global/list/pre_init_created_atoms // atom creation ordering means some stuf
if(!isnull(.))
datum_flags |= DF_VAR_EDITED
return
-
+
. = ..()
/atom/proc/atom_say(message)
diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm
index d16a6e74a6..79eff8435e 100644
--- a/code/game/atoms_movable.dm
+++ b/code/game/atoms_movable.dm
@@ -418,12 +418,6 @@
continue
src.throw_impact(A,speed)
-<<<<<<< HEAD
-/atom/movable/proc/throw_at(atom/target, range, speed, mob/thrower, spin = TRUE, datum/callback/callback) //If this returns FALSE then callback will not be called.
- . = TRUE
- if (!target || speed <= 0 || QDELETED(src) || (target.z != src.z))
- return FALSE
-=======
/atom/movable/proc/throw_at(atom/target, range, speed, thrower)
set waitfor = FALSE
if(!target || !src)
@@ -451,21 +445,65 @@
dx = EAST
else
dx = WEST
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
- if (pulledby)
- pulledby.stop_pulling()
+ var/dy
+ if (target.y > src.y)
+ dy = NORTH
+ else
+ dy = SOUTH
- var/datum/thrownthing/TT = new(src, target, range, speed, thrower, callback)
- throwing = TT
+ var/error
+ var/major_dir
+ var/major_dist
+ var/minor_dir
+ var/minor_dist
+ if(dist_x > dist_y)
+ error = dist_x/2 - dist_y
+ major_dir = dx
+ major_dist = dist_x
+ minor_dir = dy
+ minor_dist = dist_y
+ else
+ error = dist_y/2 - dist_x
+ major_dir = dy
+ major_dist = dist_y
+ minor_dir = dx
+ minor_dist = dist_x
- pixel_z = 0
- if(spin && does_spin)
- SpinAnimation(4,1)
+ range = min(dist_x + dist_y, range)
- SSthrowing.processing[src] = TT
- if (SSthrowing.state == SS_PAUSED && length(SSthrowing.currentrun))
- SSthrowing.currentrun[src] = TT
+ while(src && target && src.throwing && istype(src.loc, /turf) \
+ && ((abs(target.x - src.x)+abs(target.y - src.y) > 0 && dist_travelled < range) \
+ || (a && a.has_gravity == 0) \
+ || istype(src.loc, /turf/space)))
+ // only stop when we've gone the whole distance (or max throw range) and are on a non-space tile, or hit something, or hit the end of the map, or someone picks it up
+ var/atom/step
+ if(error >= 0)
+ step = get_step(src, major_dir)
+ error -= minor_dist
+ else
+ step = get_step(src, minor_dir)
+ error += major_dist
+ if(!step) // going off the edge of the map makes get_step return null, don't let things go off the edge
+ break
+ src.Move(step)
+ hit_check(speed)
+ dist_travelled++
+ dist_since_sleep++
+ if(dist_since_sleep >= speed)
+ dist_since_sleep = 0
+ sleep(1)
+ a = get_area(src.loc)
+ // and yet it moves
+ if(src.does_spin)
+ src.SpinAnimation(speed = 4, loops = 1)
+
+ //done throwing, either because it hit something or it finished moving
+ if(isobj(src)) src.throw_impact(get_turf(src),speed)
+ src.throwing = 0
+ src.thrower = null
+ src.throw_source = null
+ fall()
//Overlays
/atom/movable/overlay
diff --git a/code/game/gamemodes/endgame/supermatter_cascade/portal.dm b/code/game/gamemodes/endgame/supermatter_cascade/portal.dm
index 20152de4bb..8016ed42f2 100644
--- a/code/game/gamemodes/endgame/supermatter_cascade/portal.dm
+++ b/code/game/gamemodes/endgame/supermatter_cascade/portal.dm
@@ -14,13 +14,9 @@
consume_range = 6
-<<<<<<< HEAD
-/obj/singularity/narsie/large/exit/New()
- ..()
-=======
+
/obj/singularity/narsie/large/exit/Initialize()
. = ..()
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
START_PROCESSING(SSobj, src)
/obj/singularity/narsie/large/exit/update_icon()
diff --git a/code/game/machinery/CableLayer.dm b/code/game/machinery/CableLayer.dm
index 8556252788..3f9477431a 100644
--- a/code/game/machinery/CableLayer.dm
+++ b/code/game/machinery/CableLayer.dm
@@ -8,16 +8,10 @@
var/max_cable = 100
var/on = 0
-<<<<<<< HEAD
-/obj/machinery/cablelayer/New()
- cable = new(src, 100)
- ..()
-=======
/obj/machinery/cablelayer/Initialize()
cable = new(src)
cable.amount = 100
. = ..()
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
/obj/machinery/cablelayer/Moved(atom/old_loc, direction, forced = FALSE)
. = ..()
diff --git a/code/game/machinery/air_alarm.dm b/code/game/machinery/air_alarm.dm
index 8ac9ab86dc..55b0c0ea2f 100644
--- a/code/game/machinery/air_alarm.dm
+++ b/code/game/machinery/air_alarm.dm
@@ -155,17 +155,8 @@
TLV["pressure"] = list(ONE_ATMOSPHERE * 0.80, ONE_ATMOSPHERE * 0.90, ONE_ATMOSPHERE * 1.10, ONE_ATMOSPHERE * 1.20) /* kpa */
TLV["temperature"] = list(T0C - 26, T0C, T0C + 40, T0C + 66) // K
-<<<<<<< HEAD
update_icon()
-/obj/machinery/alarm/Initialize()
- . = ..()
- set_frequency(frequency)
- if(!master_is_operating())
- elect_master()
-
-=======
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
/obj/machinery/alarm/process()
if((stat & (NOPOWER|BROKEN)) || shorted)
return
diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm
index 1928818a9a..1f1059422e 100644
--- a/code/game/machinery/camera/camera.dm
+++ b/code/game/machinery/camera/camera.dm
@@ -61,16 +61,12 @@
error("[src.name] in [get_area(src)]has errored. [src.network?"Empty network list":"Null network list"]")
ASSERT(src.network)
ASSERT(src.network.len > 0)
-<<<<<<< HEAD
// VOREStation Edit Start - Make mapping with cameras easier
if(!c_tag)
var/area/A = get_area(src)
c_tag = "[A ? A.name : "Unknown"] #[rand(111,999)]"
- ..()
// VOREStation Edit End
-=======
. = ..()
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
/obj/machinery/camera/Destroy()
if(isMotion())
diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm
index 0a500bd127..28b25526bd 100644
--- a/code/game/machinery/computer/arcade.dm
+++ b/code/game/machinery/computer/arcade.dm
@@ -96,12 +96,6 @@
/obj/machinery/computer/arcade/battle/Initialize()
. = ..()
-<<<<<<< HEAD
- randomize_characters()
-
-/obj/machinery/computer/arcade/battle/proc/randomize_characters()
-=======
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
var/name_action
var/name_part1
var/name_part2
@@ -194,7 +188,6 @@
turtle = 0
if(emagged)
- randomize_characters()
emagged = 0
add_fingerprint(usr)
@@ -213,7 +206,6 @@
new /obj/item/clothing/head/collectable/petehat(src.loc)
message_admins("[key_name_admin(usr)] has outbombed Cuban Pete and been awarded a bomb.")
log_game("[key_name_admin(usr)] has outbombed Cuban Pete and been awarded a bomb.")
- randomize_characters()
emagged = 0
else if(!contents.len)
feedback_inc("arcade_win_normal")
diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm
index 8475dbb55b..6663a84da6 100644
--- a/code/game/machinery/cryopod.dm
+++ b/code/game/machinery/cryopod.dm
@@ -288,9 +288,6 @@
time_till_despawn = 60 //1 second, because gateway.
-<<<<<<< HEAD
-/obj/machinery/cryopod/New()
-=======
/obj/machinery/cryopod/robot/door/checkpoint
name = "automated checkpoint"
desc = "A reinforced, automated checkpoint tracking arrivals and departures from the outpost. Beyond this vault is a small airstrip, then nothing but untamed wilderness."
@@ -303,7 +300,6 @@
/obj/machinery/cryopod/Initialize()
. = ..()
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
announce = new /obj/item/device/radio/intercom(src)
find_control_computer()
diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm
index 24cf36bce5..7503ae6904 100644
--- a/code/game/machinery/doors/airlock.dm
+++ b/code/game/machinery/doors/airlock.dm
@@ -1,4 +1,3 @@
-<<<<<<< HEAD
//VOREStation Edit - Redone a lot of airlock things:
/*
- Specific department maintenance doors
@@ -1444,8 +1443,15 @@ About the new airlock wires panel:
return 0
return ..(M)
-/obj/machinery/door/airlock/New(var/newloc, var/obj/structure/door_assembly/assembly=null)
- ..()
+/obj/machinery/door/airlock/Initialize(var/ml, var/obj/structure/door_assembly/assembly=null)
+ if(src.closeOtherId != null)
+ for (var/obj/machinery/door/airlock/A in machines)
+ if(A.closeOtherId == src.closeOtherId && A != src)
+ src.closeOther = A
+ break
+ name = "\improper [name]"
+
+ . = ..()
//if assembly is given, create the new door from the assembly
if (assembly && istype(assembly))
@@ -1473,22 +1479,17 @@ About the new airlock wires panel:
set_dir(assembly.dir)
//wires
- var/turf/T = get_turf(newloc)
+ var/turf/T = get_turf(src)
if(T && (T.z in using_map.admin_levels))
secured_wires = 1
if (secured_wires)
wires = new/datum/wires/airlock/secure(src)
else
wires = new/datum/wires/airlock(src)
-
-/obj/machinery/door/airlock/Initialize()
- if(src.closeOtherId != null)
- for (var/obj/machinery/door/airlock/A in machines)
- if(A.closeOtherId == src.closeOtherId && A != src)
- src.closeOther = A
- break
- name = "\improper [name]"
- . = ..()
+
+ if(frequency)
+ set_frequency(frequency)
+ update_icon()
/obj/machinery/door/airlock/Destroy()
qdel(wires)
@@ -1553,1496 +1554,4 @@ About the new airlock wires panel:
to_chat(user, span("notice", "You deconstruct \the [src]."))
qdel(src)
return TRUE
- return FALSE
-=======
-/*
-- Specific department maintenance doors
-- Named doors properly according to type
-- Gave them default access levels with the access constants
-- Improper'd all of the names in the new()
-*/
-
-/obj/machinery/door/airlock
- name = "Airlock"
- icon = 'icons/obj/doors/Doorint.dmi'
- icon_state = "door_closed"
- power_channel = ENVIRON
-
- explosion_resistance = 10
- var/aiControlDisabled = 0 //If 1, AI control is disabled until the AI hacks back in and disables the lock. If 2, the AI has bypassed the lock. If -1, the control is enabled but the AI had bypassed it earlier, so if it is disabled again the AI would have no trouble getting back in.
- var/hackProof = 0 // if 1, this door can't be hacked by the AI
- var/electrified_until = 0 //World time when the door is no longer electrified. -1 if it is permanently electrified until someone fixes it.
- var/main_power_lost_until = 0 //World time when main power is restored.
- var/backup_power_lost_until = -1 //World time when backup power is restored.
- var/has_beeped = 0 //If 1, will not beep on failed closing attempt. Resets when door closes.
- var/spawnPowerRestoreRunning = 0
- var/welded = null
- var/locked = 0
- var/lights = 1 // bolt lights show by default
- var/aiDisabledIdScanner = 0
- var/aiHacking = 0
- var/obj/machinery/door/airlock/closeOther = null
- var/closeOtherId = null
- var/lockdownbyai = 0
- autoclose = 1
- var/assembly_type = /obj/structure/door_assembly
- var/mineral = null
- var/justzap = 0
- var/safe = 1
- normalspeed = 1
- var/obj/item/weapon/airlock_electronics/electronics = null
- var/hasShocked = 0 //Prevents multiple shocks from happening
- var/secured_wires = 0
- var/datum/wires/airlock/wires = null
-
- var/open_sound_powered = 'sound/machines/door/covert1o.ogg'
- var/open_sound_unpowered = 'sound/machines/door/airlockforced.ogg'
- var/close_sound_powered = 'sound/machines/door/covert1c.ogg'
- var/legacy_open_powered = 'sound/machines/door/old_airlock.ogg'
- var/legacy_close_powered = 'sound/machines/door/old_airlockclose.ogg'
- var/department_open_powered = null
- var/department_close_powered = null
- var/denied_sound = 'sound/machines/deniedbeep.ogg'
- var/bolt_up_sound = 'sound/machines/door/boltsup.ogg'
- var/bolt_down_sound = 'sound/machines/door/boltsdown.ogg'
-
-/obj/machinery/door/airlock/attack_generic(var/mob/living/user, var/damage)
- if(stat & (BROKEN|NOPOWER))
- if(damage >= STRUCTURE_MIN_DAMAGE_THRESHOLD)
- if(src.locked || src.welded)
- visible_message("\The [user] begins breaking into \the [src] internals!")
- user.set_AI_busy(TRUE) // If the mob doesn't have an AI attached, this won't do anything.
- if(do_after(user,10 SECONDS,src))
- src.locked = 0
- src.welded = 0
- update_icon()
- open(1)
- if(prob(25))
- src.shock(user, 100)
- user.set_AI_busy(FALSE)
- else if(src.density)
- visible_message("\The [user] forces \the [src] open!")
- open(1)
- else
- visible_message("\The [user] forces \the [src] closed!")
- close(1)
- else
- visible_message("\The [user] strains fruitlessly to force \the [src] [density ? "open" : "closed"].")
- return
- ..()
-
-/obj/machinery/door/airlock/attack_alien(var/mob/user) //Familiar, right? Doors. -Mechoid
- if(istype(user, /mob/living/carbon/human))
- var/mob/living/carbon/human/X = user
- if(istype(X.species, /datum/species/xenos))
- if(src.locked || src.welded)
- visible_message("\The [user] begins digging into \the [src] internals!")
- src.do_animate("deny")
- if(do_after(user,5 SECONDS,src))
- visible_message("\The [user] forces \the [src] open, sparks flying from its electronics!")
- src.do_animate("spark")
- playsound(src, 'sound/machines/door/airlock_creaking.ogg', 100, 1, volume_channel = VOLUME_CHANNEL_DOORS)
- src.locked = 0
- src.welded = 0
- update_icon()
- open(1)
- src.emag_act()
- else if(src.density)
- visible_message("\The [user] begins forcing \the [src] open!")
- if(do_after(user, 5 SECONDS,src))
- playsound(src, 'sound/machines/door/airlock_creaking.ogg', 100, 1, volume_channel = VOLUME_CHANNEL_DOORS)
- visible_message("\The [user] forces \the [src] open!")
- open(1)
- else
- visible_message("\The [user] forces \the [src] closed!")
- close(1)
- else
- src.do_animate("deny")
- visible_message("\The [user] strains fruitlessly to force \the [src] [density ? "open" : "closed"].")
- return
- ..()
-
-/obj/machinery/door/airlock/get_material()
- if(mineral)
- return get_material_by_name(mineral)
- return get_material_by_name(DEFAULT_WALL_MATERIAL)
-
-/obj/machinery/door/airlock/command
- name = "Command Airlock"
- icon = 'icons/obj/doors/Doorcom.dmi'
- req_one_access = list(access_heads)
- assembly_type = /obj/structure/door_assembly/door_assembly_com
- department_open_powered = 'sound/machines/door/cmd3o.ogg'
- department_close_powered = 'sound/machines/door/cmd3c.ogg'
-
-/obj/machinery/door/airlock/security
- name = "Security Airlock"
- icon = 'icons/obj/doors/Doorsec.dmi'
- req_one_access = list(access_security)
- assembly_type = /obj/structure/door_assembly/door_assembly_sec
- department_open_powered = 'sound/machines/door/sec1o.ogg'
- department_close_powered = 'sound/machines/door/sec1c.ogg'
-
-/obj/machinery/door/airlock/engineering
- name = "Engineering Airlock"
- icon = 'icons/obj/doors/Dooreng.dmi'
- req_one_access = list(access_engine)
- assembly_type = /obj/structure/door_assembly/door_assembly_eng
- department_open_powered = 'sound/machines/door/eng1o.ogg'
- department_close_powered = 'sound/machines/door/eng1c.ogg'
-
-/obj/machinery/door/airlock/engineeringatmos
- name = "Atmospherics Airlock"
- icon = 'icons/obj/doors/Doorengatmos.dmi'
- req_one_access = list(access_atmospherics)
- assembly_type = /obj/structure/door_assembly/door_assembly_eat
- department_open_powered = 'sound/machines/door/eng1o.ogg'
- department_close_powered = 'sound/machines/door/eng1c.ogg'
-
-/obj/machinery/door/airlock/medical
- name = "Medical Airlock"
- icon = 'icons/obj/doors/Doormed.dmi'
- req_one_access = list(access_medical)
- assembly_type = /obj/structure/door_assembly/door_assembly_med
- department_open_powered = 'sound/machines/door/med1o.ogg'
- department_close_powered = 'sound/machines/door/med1c.ogg'
-
-/obj/machinery/door/airlock/maintenance
- name = "Maintenance Access"
- icon = 'icons/obj/doors/Doormaint.dmi'
- assembly_type = /obj/structure/door_assembly/door_assembly_mai
- open_sound_powered = 'sound/machines/door/door2o.ogg'
- close_sound_powered = 'sound/machines/door/door2c.ogg'
-
-/obj/machinery/door/airlock/maintenance/cargo
- icon = 'icons/obj/doors/Doormaint_cargo.dmi'
- req_one_access = list(access_cargo)
- department_open_powered = 'sound/machines/door/door2o.ogg'
- department_close_powered = 'sound/machines/door/door2c.ogg'
-
-/obj/machinery/door/airlock/maintenance/command
- icon = 'icons/obj/doors/Doormaint_command.dmi'
- req_one_access = list(access_heads)
-
-/obj/machinery/door/airlock/maintenance/common
- icon = 'icons/obj/doors/Doormaint_common.dmi'
- open_sound_powered = 'sound/machines/door/hall3o.ogg'
- close_sound_powered = 'sound/machines/door/hall3c.ogg'
-
-/obj/machinery/door/airlock/maintenance/engi
- icon = 'icons/obj/doors/Doormaint_engi.dmi'
- req_one_access = list(access_engine)
-
-/obj/machinery/door/airlock/maintenance/int
- icon = 'icons/obj/doors/Doormaint_int.dmi'
-
-/obj/machinery/door/airlock/maintenance/medical
- icon = 'icons/obj/doors/Doormaint_med.dmi'
- req_one_access = list(access_medical)
-
-/obj/machinery/door/airlock/maintenance/rnd
- icon = 'icons/obj/doors/Doormaint_rnd.dmi'
- req_one_access = list(access_research)
-
-/obj/machinery/door/airlock/maintenance/sec
- icon = 'icons/obj/doors/Doormaint_sec.dmi'
- req_one_access = list(access_security)
-
-/obj/machinery/door/airlock/external
- name = "External Airlock"
- icon = 'icons/obj/doors/Doorext.dmi'
- assembly_type = /obj/structure/door_assembly/door_assembly_ext
- open_sound_powered = 'sound/machines/door/space1o.ogg'
- close_sound_powered = 'sound/machines/door/space1c.ogg'
-
-/obj/machinery/door/airlock/external/glass/bolted
- icon_state = "door_locked" // So it looks visibly bolted in map editor
- locked = 1
-
-// For convenience in making docking ports: one that is pre-bolted with frequency set!
-/obj/machinery/door/airlock/external/glass/bolted/cycling
- frequency = 1379
-
-/obj/machinery/door/airlock/glass_external
- name = "External Airlock"
- icon = 'icons/obj/doors/Doorextglass.dmi'
- assembly_type = /obj/structure/door_assembly/door_assembly_ext
- opacity = 0
- glass = 1
- req_one_access = list(access_external_airlocks)
- open_sound_powered = 'sound/machines/door/space1o.ogg'
- close_sound_powered = 'sound/machines/door/space1c.ogg'
-
-/obj/machinery/door/airlock/glass
- name = "Glass Airlock"
- icon = 'icons/obj/doors/Doorglass.dmi'
- hitsound = 'sound/effects/Glasshit.ogg'
- open_sound_powered = 'sound/machines/door/hall1o.ogg'
- close_sound_powered = 'sound/machines/door/hall1c.ogg'
- legacy_open_powered = 'sound/machines/door/windowdoor.ogg'
- maxhealth = 300
- explosion_resistance = 5
- opacity = 0
- glass = 1
-
-/obj/machinery/door/airlock/centcom
- name = "Centcom Airlock"
- icon = 'icons/obj/doors/Doorele.dmi'
- req_one_access = list(access_cent_general)
- opacity = 1
- open_sound_powered = 'sound/machines/door/cmd3o.ogg'
- close_sound_powered = 'sound/machines/door/cmd3c.ogg'
-
-/obj/machinery/door/airlock/glass_centcom
- name = "Airlock"
- icon = 'icons/obj/doors/Dooreleglass.dmi'
- opacity = 0
- glass = 1
- open_sound_powered = 'sound/machines/door/cmd3o.ogg'
- close_sound_powered = 'sound/machines/door/cmd3c.ogg'
-
-/obj/machinery/door/airlock/vault
- name = "Vault"
- icon = 'icons/obj/doors/vault.dmi'
- explosion_resistance = 20
- opacity = 1
- secured_wires = 1
- assembly_type = /obj/structure/door_assembly/door_assembly_highsecurity //Until somebody makes better sprites.
- req_one_access = list(access_heads_vault)
- open_sound_powered = 'sound/machines/door/vault1o.ogg'
- close_sound_powered = 'sound/machines/door/vault1c.ogg'
-
-/obj/machinery/door/airlock/vault/bolted
- icon_state = "door_locked"
- locked = 1
-
-/obj/machinery/door/airlock/freezer
- name = "Freezer Airlock"
- icon = 'icons/obj/doors/Doorfreezer.dmi'
- opacity = 1
- assembly_type = /obj/structure/door_assembly/door_assembly_fre
-
-/obj/machinery/door/airlock/hatch
- name = "Airtight Hatch"
- icon = 'icons/obj/doors/Doorhatchele.dmi'
- explosion_resistance = 20
- opacity = 1
- assembly_type = /obj/structure/door_assembly/door_assembly_hatch
- req_one_access = list(access_maint_tunnels)
- open_sound_powered = 'sound/machines/door/hatchopen.ogg'
- close_sound_powered = 'sound/machines/door/hatchclose.ogg'
- open_sound_unpowered = 'sound/machines/door/hatchforced.ogg'
-
-/obj/machinery/door/airlock/maintenance_hatch
- name = "Maintenance Hatch"
- icon = 'icons/obj/doors/Doorhatchmaint2.dmi'
- explosion_resistance = 20
- opacity = 1
- assembly_type = /obj/structure/door_assembly/door_assembly_mhatch
- req_one_access = list(access_maint_tunnels)
- open_sound_powered = 'sound/machines/door/hatchopen.ogg'
- close_sound_powered = 'sound/machines/door/hatchclose.ogg'
- open_sound_unpowered = 'sound/machines/door/hatchforced.ogg'
-
-/obj/machinery/door/airlock/glass_command
- name = "Command Airlock"
- icon = 'icons/obj/doors/Doorcomglass.dmi'
- hitsound = 'sound/effects/Glasshit.ogg'
- maxhealth = 300
- explosion_resistance = 5
- opacity = 0
- assembly_type = /obj/structure/door_assembly/door_assembly_com
- glass = 1
- req_one_access = list(access_heads)
- department_open_powered = 'sound/machines/door/cmd1o.ogg'
- department_close_powered = 'sound/machines/door/cmd1c.ogg'
-
-/obj/machinery/door/airlock/glass_engineering
- name = "Engineering Airlock"
- icon = 'icons/obj/doors/Doorengglass.dmi'
- hitsound = 'sound/effects/Glasshit.ogg'
- maxhealth = 300
- explosion_resistance = 5
- opacity = 0
- assembly_type = /obj/structure/door_assembly/door_assembly_eng
- glass = 1
- req_one_access = list(access_engine)
- department_open_powered = 'sound/machines/door/eng1o.ogg'
- department_close_powered = 'sound/machines/door/eng1c.ogg'
-
-/obj/machinery/door/airlock/glass_engineeringatmos
- name = "Atmospherics Airlock"
- icon = 'icons/obj/doors/Doorengatmoglass.dmi'
- hitsound = 'sound/effects/Glasshit.ogg'
- maxhealth = 300
- explosion_resistance = 5
- opacity = 0
- assembly_type = /obj/structure/door_assembly/door_assembly_eat
- glass = 1
- req_one_access = list(access_atmospherics)
- department_open_powered = 'sound/machines/door/eng1o.ogg'
- department_close_powered = 'sound/machines/door/eng1c.ogg'
-
-/obj/machinery/door/airlock/glass_security
- name = "Security Airlock"
- icon = 'icons/obj/doors/Doorsecglass.dmi'
- hitsound = 'sound/effects/Glasshit.ogg'
- maxhealth = 300
- explosion_resistance = 5
- opacity = 0
- assembly_type = /obj/structure/door_assembly/door_assembly_sec
- glass = 1
- req_one_access = list(access_security)
- department_open_powered = 'sound/machines/door/sec1o.ogg'
- department_close_powered = 'sound/machines/door/sec1c.ogg'
-
-/obj/machinery/door/airlock/glass_medical
- name = "Medical Airlock"
- icon = 'icons/obj/doors/Doormedglass.dmi'
- hitsound = 'sound/effects/Glasshit.ogg'
- maxhealth = 300
- explosion_resistance = 5
- opacity = 0
- assembly_type = /obj/structure/door_assembly/door_assembly_med
- glass = 1
- req_one_access = list(access_medical)
- department_open_powered = 'sound/machines/door/med1o.ogg'
- department_close_powered = 'sound/machines/door/med1c.ogg'
-
-/obj/machinery/door/airlock/mining
- name = "Mining Airlock"
- icon = 'icons/obj/doors/Doormining.dmi'
- assembly_type = /obj/structure/door_assembly/door_assembly_min
- req_one_access = list(access_mining)
- department_open_powered = 'sound/machines/door/cgo1o.ogg'
- department_close_powered = 'sound/machines/door/cgo1c.ogg'
-
-/obj/machinery/door/airlock/atmos
- name = "Atmospherics Airlock"
- icon = 'icons/obj/doors/Dooratmo.dmi'
- assembly_type = /obj/structure/door_assembly/door_assembly_atmo
- req_one_access = list(access_atmospherics)
- department_open_powered = 'sound/machines/door/eng1o.ogg'
- department_close_powered = 'sound/machines/door/eng1c.ogg'
-
-/obj/machinery/door/airlock/research
- name = "Research Airlock"
- icon = 'icons/obj/doors/Doorresearch.dmi'
- assembly_type = /obj/structure/door_assembly/door_assembly_research
- department_open_powered = 'sound/machines/door/sci1o.ogg'
- department_close_powered = 'sound/machines/door/sci1c.ogg'
-
-/obj/machinery/door/airlock/glass_research
- name = "Research Airlock"
- icon = 'icons/obj/doors/Doorresearchglass.dmi'
- hitsound = 'sound/effects/Glasshit.ogg'
- maxhealth = 300
- explosion_resistance = 5
- opacity = 0
- assembly_type = /obj/structure/door_assembly/door_assembly_research
- glass = 1
- req_one_access = list(access_research)
- department_open_powered = 'sound/machines/door/sci1o.ogg'
- department_close_powered = 'sound/machines/door/sci1c.ogg'
-
-/obj/machinery/door/airlock/glass_mining
- name = "Mining Airlock"
- icon = 'icons/obj/doors/Doorminingglass.dmi'
- hitsound = 'sound/effects/Glasshit.ogg'
- maxhealth = 300
- explosion_resistance = 5
- opacity = 0
- assembly_type = /obj/structure/door_assembly/door_assembly_min
- glass = 1
- req_one_access = list(access_mining)
- department_open_powered = 'sound/machines/door/cgo1o.ogg'
- department_close_powered = 'sound/machines/door/cgo1c.ogg'
-
-/obj/machinery/door/airlock/glass_atmos
- name = "Atmospherics Airlock"
- icon = 'icons/obj/doors/Dooratmoglass.dmi'
- hitsound = 'sound/effects/Glasshit.ogg'
- maxhealth = 300
- explosion_resistance = 5
- opacity = 0
- assembly_type = /obj/structure/door_assembly/door_assembly_atmo
- glass = 1
- req_one_access = list(access_atmospherics)
- department_open_powered = 'sound/machines/door/eng1o.ogg'
- department_close_powered = 'sound/machines/door/eng1c.ogg'
-
-/obj/machinery/door/airlock/gold
- name = "Gold Airlock"
- icon = 'icons/obj/doors/Doorgold.dmi'
- mineral = "gold"
-
-/obj/machinery/door/airlock/silver
- name = "Silver Airlock"
- icon = 'icons/obj/doors/Doorsilver.dmi'
- mineral = "silver"
-
-/obj/machinery/door/airlock/diamond
- name = "Diamond Airlock"
- icon = 'icons/obj/doors/Doordiamond.dmi'
- mineral = "diamond"
-
-/obj/machinery/door/airlock/uranium
- name = "Uranium Airlock"
- desc = "And they said I was crazy."
- icon = 'icons/obj/doors/Dooruranium.dmi'
- mineral = "uranium"
- var/last_event = 0
- var/rad_power = 7.5
-
-/obj/machinery/door/airlock/process()
- // Deliberate no call to parent.
- if(main_power_lost_until > 0 && world.time >= main_power_lost_until)
- regainMainPower()
-
- if(backup_power_lost_until > 0 && world.time >= backup_power_lost_until)
- regainBackupPower()
-
- else if(electrified_until > 0 && world.time >= electrified_until)
- electrify(0)
-
- if (..() == PROCESS_KILL && !(main_power_lost_until > 0 || backup_power_lost_until > 0 || electrified_until > 0))
- . = PROCESS_KILL
-
-/obj/machinery/door/airlock/uranium/process()
- if(world.time > last_event+20)
- if(prob(50))
- SSradiation.radiate(src, rad_power)
- last_event = world.time
- ..()
-
-/obj/machinery/door/airlock/phoron
- name = "Phoron Airlock"
- desc = "No way this can end badly."
- icon = 'icons/obj/doors/Doorphoron.dmi'
- mineral = "phoron"
-
-/obj/machinery/door/airlock/phoron/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
- if(exposed_temperature > 300)
- PhoronBurn(exposed_temperature)
-
-/obj/machinery/door/airlock/phoron/proc/ignite(exposed_temperature)
- if(exposed_temperature > 300)
- PhoronBurn(exposed_temperature)
-
-/obj/machinery/door/airlock/phoron/proc/PhoronBurn(temperature)
- for(var/turf/simulated/floor/target_tile in range(2,loc))
- target_tile.assume_gas("phoron", 35, 400+T0C)
- spawn (0) target_tile.hotspot_expose(temperature, 400)
- for(var/turf/simulated/wall/W in range(3,src))
- W.burn((temperature/4))//Added so that you can't set off a massive chain reaction with a small flame
- for(var/obj/machinery/door/airlock/phoron/D in range(3,src))
- D.ignite(temperature/4)
- new/obj/structure/door_assembly( src.loc )
- qdel(src)
-
-/obj/machinery/door/airlock/sandstone
- name = "Sandstone Airlock"
- icon = 'icons/obj/doors/Doorsand.dmi'
- mineral = "sandstone"
-
-/obj/machinery/door/airlock/science
- name = "Research Airlock"
- icon = 'icons/obj/doors/Doorsci.dmi'
- assembly_type = /obj/structure/door_assembly/door_assembly_science
- req_one_access = list(access_research)
- department_open_powered = 'sound/machines/door/sci1o.ogg'
- department_close_powered = 'sound/machines/door/sci1c.ogg'
-
-/obj/machinery/door/airlock/glass_science
- name = "Glass Airlocks"
- icon = 'icons/obj/doors/Doorsciglass.dmi'
- opacity = 0
- assembly_type = /obj/structure/door_assembly/door_assembly_science
- glass = 1
- req_one_access = list(access_research)
- department_open_powered = 'sound/machines/door/sci1o.ogg'
- department_close_powered = 'sound/machines/door/sci1c.ogg'
-
-/obj/machinery/door/airlock/highsecurity
- name = "Secure Airlock"
- icon = 'icons/obj/doors/hightechsecurity.dmi'
- explosion_resistance = 20
- secured_wires = 1
- assembly_type = /obj/structure/door_assembly/door_assembly_highsecurity
- req_one_access = list(access_heads_vault)
- open_sound_powered = 'sound/machines/door/secure1o.ogg'
- close_sound_powered = 'sound/machines/door/secure1c.ogg'
-
-/obj/machinery/door/airlock/voidcraft
- name = "voidcraft hatch"
- desc = "It's an extra resilient airlock intended for spacefaring vessels."
- icon = 'icons/obj/doors/shuttledoors.dmi'
- explosion_resistance = 20
- opacity = 0
- glass = 1
- assembly_type = /obj/structure/door_assembly/door_assembly_voidcraft
- open_sound_powered = 'sound/machines/door/shuttle1o.ogg'
- close_sound_powered = 'sound/machines/door/shuttle1c.ogg'
-
-// Airlock opens from top-bottom instead of left-right.
-/obj/machinery/door/airlock/voidcraft/vertical
- icon = 'icons/obj/doors/shuttledoors_vertical.dmi'
- assembly_type = /obj/structure/door_assembly/door_assembly_voidcraft/vertical
- open_sound_powered = 'sound/machines/door/shuttle1o.ogg'
- close_sound_powered = 'sound/machines/door/shuttle1c.ogg'
-
-
-/datum/category_item/catalogue/anomalous/precursor_a/alien_airlock
- name = "Precursor Alpha Object - Doors"
- desc = "This object appears to be used in order to restrict or allow access to \
- rooms based on its physical state. In other words, a door. \
- Despite being designed and created by unknown ancient alien hands, this door has \
- a large number of similarities to the conventional airlock, such as being driven by \
- electricity, opening and closing by physically moving, and being air tight. \
- It also operates by responding to signals through internal electrical conduits. \
- These characteristics make it possible for one with experience with a multitool \
- to manipulate the door.\
-
\
- The symbol on the door does not match any living species' patterns, giving further \
- implications that this door is very old, and yet it remains operational after \
- thousands of years. It is unknown if that is due to superb construction, or \
- unseen autonomous maintenance having been performed."
- value = CATALOGUER_REWARD_EASY
-
-/obj/machinery/door/airlock/alien
- name = "alien airlock"
- desc = "You're fairly sure this is a door."
- catalogue_data = list(/datum/category_item/catalogue/anomalous/precursor_a/alien_airlock)
- icon = 'icons/obj/doors/Dooralien.dmi'
- explosion_resistance = 20
- secured_wires = TRUE
- hackProof = TRUE
- assembly_type = /obj/structure/door_assembly/door_assembly_alien
- req_one_access = list(access_alien)
-
-/obj/machinery/door/airlock/alien/locked
- icon_state = "door_locked"
- locked = TRUE
-
-/obj/machinery/door/airlock/alien/public // Entry to UFO.
- req_one_access = list()
- normalspeed = FALSE // So it closes faster and hopefully keeps the warm air inside.
-
-/*
-About the new airlock wires panel:
-* An airlock wire dialog can be accessed by the normal way or by using wirecutters or a multitool on the door while the wire-panel is open. This would show the following wires, which you can either wirecut/mend or send a multitool pulse through. There are 9 wires.
-* one wire from the ID scanner. Sending a pulse through this flashes the red light on the door (if the door has power). If you cut this wire, the door will stop recognizing valid IDs. (If the door has 0000 access, it still opens and closes, though)
-* two wires for power. Sending a pulse through either one causes a breaker to trip, disabling the door for 10 seconds if backup power is connected, or 1 minute if not (or until backup power comes back on, whichever is shorter). Cutting either one disables the main door power, but unless backup power is also cut, the backup power re-powers the door in 10 seconds. While unpowered, the door may be open, but bolts-raising will not work. Cutting these wires may electrocute the user.
-* one wire for door bolts. Sending a pulse through this drops door bolts (whether the door is powered or not) or raises them (if it is). Cutting this wire also drops the door bolts, and mending it does not raise them. If the wire is cut, trying to raise the door bolts will not work.
-* two wires for backup power. Sending a pulse through either one causes a breaker to trip, but this does not disable it unless main power is down too (in which case it is disabled for 1 minute or however long it takes main power to come back, whichever is shorter). Cutting either one disables the backup door power (allowing it to be crowbarred open, but disabling bolts-raising), but may electocute the user.
-* one wire for opening the door. Sending a pulse through this while the door has power makes it open the door if no access is required.
-* one wire for AI control. Sending a pulse through this blocks AI control for a second or so (which is enough to see the AI control light on the panel dialog go off and back on again). Cutting this prevents the AI from controlling the door unless it has hacked the door through the power connection (which takes about a minute). If both main and backup power are cut, as well as this wire, then the AI cannot operate or hack the door at all.
-* one wire for electrifying the door. Sending a pulse through this electrifies the door for 30 seconds. Cutting this wire electrifies the door, so that the next person to touch the door without insulated gloves gets electrocuted. (Currently it is also STAYING electrified until someone mends the wire)
-* one wire for controling door safetys. When active, door does not close on someone. When cut, door will ruin someone's shit. When pulsed, door will immedately ruin someone's shit.
-* one wire for controlling door speed. When active, dor closes at normal rate. When cut, door does not close manually. When pulsed, door attempts to close every tick.
-*/
-
-
-
-/obj/machinery/door/airlock/bumpopen(mob/living/user as mob) //Airlocks now zap you when you 'bump' them open when they're electrified. --NeoFite
- if(!issilicon(usr))
- if(src.isElectrified())
- if(!src.justzap)
- if(src.shock(user, 100))
- src.justzap = 1
- spawn (10)
- src.justzap = 0
- return
- else /*if(src.justzap)*/
- return
- else if(user.hallucination > 50 && prob(10) && src.operating == 0)
- to_chat(user, "You feel a powerful shock course through your body!")
- user.halloss += 10
- user.stunned += 10
- return
- ..(user)
-
-/obj/machinery/door/airlock/proc/isElectrified()
- if(src.electrified_until != 0)
- return 1
- return 0
-
-/obj/machinery/door/airlock/proc/canAIControl()
- return ((src.aiControlDisabled!=1) && (!src.isAllPowerLoss()));
-
-/obj/machinery/door/airlock/proc/canAIHack()
- return ((src.aiControlDisabled==1) && (!hackProof) && (!src.isAllPowerLoss()));
-
-/obj/machinery/door/airlock/proc/arePowerSystemsOn()
- if (stat & (NOPOWER|BROKEN))
- return 0
- return (src.main_power_lost_until==0 || src.backup_power_lost_until==0)
-
-/obj/machinery/door/airlock/requiresID()
- return !(wires.is_cut(WIRE_IDSCAN) || aiDisabledIdScanner)
-
-/obj/machinery/door/airlock/proc/isAllPowerLoss()
- if(stat & (NOPOWER|BROKEN))
- return 1
- if(mainPowerCablesCut() && backupPowerCablesCut())
- return 1
- return 0
-
-/obj/machinery/door/airlock/proc/mainPowerCablesCut()
- return wires.is_cut(WIRE_MAIN_POWER1) || wires.is_cut(WIRE_MAIN_POWER2)
-
-/obj/machinery/door/airlock/proc/backupPowerCablesCut()
- return wires.is_cut(WIRE_BACKUP_POWER1) || wires.is_cut(WIRE_BACKUP_POWER2)
-
-/obj/machinery/door/airlock/proc/loseMainPower()
- main_power_lost_until = mainPowerCablesCut() ? -1 : world.time + SecondsToTicks(60)
-
- // If backup power is permanently disabled then activate in 10 seconds if possible, otherwise it's already enabled or a timer is already running
- if(backup_power_lost_until == -1 && !backupPowerCablesCut())
- backup_power_lost_until = world.time + SecondsToTicks(10)
-
- if(main_power_lost_until > 0 || backup_power_lost_until > 0)
- START_MACHINE_PROCESSING(src)
-
- // Disable electricity if required
- if(electrified_until && isAllPowerLoss())
- electrify(0)
-
- update_icon()
-
-/obj/machinery/door/airlock/proc/loseBackupPower()
- backup_power_lost_until = backupPowerCablesCut() ? -1 : world.time + SecondsToTicks(60)
-
- if(backup_power_lost_until > 0)
- START_MACHINE_PROCESSING(src)
-
- // Disable electricity if required
- if(electrified_until && isAllPowerLoss())
- electrify(0)
-
- update_icon()
-
-/obj/machinery/door/airlock/proc/regainMainPower()
- if(!mainPowerCablesCut())
- main_power_lost_until = 0
- // If backup power is currently active then disable, otherwise let it count down and disable itself later
- if(!backup_power_lost_until)
- backup_power_lost_until = -1
-
- update_icon()
-
-/obj/machinery/door/airlock/proc/regainBackupPower()
- if(!backupPowerCablesCut())
- // Restore backup power only if main power is offline, otherwise permanently disable
- backup_power_lost_until = main_power_lost_until == 0 ? -1 : 0
-
- update_icon()
-
-/obj/machinery/door/airlock/proc/electrify(var/duration, var/feedback = 0)
- var/message = ""
- if(wires.is_cut(WIRE_ELECTRIFY) && arePowerSystemsOn())
- message = text("The electrification wire is cut - Door permanently electrified.")
- src.electrified_until = -1
- else if(duration && !arePowerSystemsOn())
- message = text("The door is unpowered - Cannot electrify the door.")
- src.electrified_until = 0
- else if(!duration && electrified_until != 0)
- message = "The door is now un-electrified."
- src.electrified_until = 0
- else if(duration) //electrify door for the given duration seconds
- if(usr)
- shockedby += text("\[[time_stamp()]\] - [usr](ckey:[usr.ckey])")
- add_attack_logs(usr,name,"Electrified a door")
- else
- shockedby += text("\[[time_stamp()]\] - EMP)")
- message = "The door is now electrified [duration == -1 ? "permanently" : "for [duration] second\s"]."
- src.electrified_until = duration == -1 ? -1 : world.time + SecondsToTicks(duration)
-
- if(electrified_until > 0)
- START_MACHINE_PROCESSING(src)
-
- if(feedback && message)
- to_chat(usr,message)
-
-/obj/machinery/door/airlock/proc/set_idscan(var/activate, var/feedback = 0)
- var/message = ""
- if(wires.is_cut(WIRE_IDSCAN))
- message = "The IdScan wire is cut - IdScan feature permanently disabled."
- else if(activate && src.aiDisabledIdScanner)
- src.aiDisabledIdScanner = 0
- message = "IdScan feature has been enabled."
- else if(!activate && !src.aiDisabledIdScanner)
- src.aiDisabledIdScanner = 1
- message = "IdScan feature has been disabled."
-
- if(feedback && message)
- to_chat(usr,message)
-
-/obj/machinery/door/airlock/proc/set_safeties(var/activate, var/feedback = 0)
- var/message = ""
- // Safeties! We don't need no stinking safeties!
- if (wires.is_cut(WIRE_SAFETY))
- message = text("The safety wire is cut - Cannot enable safeties.")
- else if (!activate && src.safe)
- safe = 0
- else if (activate && !src.safe)
- safe = 1
-
- if(feedback && message)
- to_chat(usr,message)
-
-// shock user with probability prb (if all connections & power are working)
-// returns 1 if shocked, 0 otherwise
-// The preceding comment was borrowed from the grille's shock script
-/obj/machinery/door/airlock/shock(mob/user, prb)
- if(!arePowerSystemsOn())
- return 0
- if(hasShocked)
- return 0 //Already shocked someone recently?
- if(..())
- hasShocked = 1
- sleep(10)
- hasShocked = 0
- return 1
- else
- return 0
-
-
-/obj/machinery/door/airlock/update_icon()
- if(overlays) overlays.Cut()
- if(density)
- if(locked && lights && src.arePowerSystemsOn())
- icon_state = "door_locked"
- else
- icon_state = "door_closed"
- if(p_open || welded)
- overlays = list()
- if(p_open)
- overlays += image(icon, "panel_open")
- if (!(stat & NOPOWER))
- if(stat & BROKEN)
- overlays += image(icon, "sparks_broken")
- else if (health < maxhealth * 3/4)
- overlays += image(icon, "sparks_damaged")
- if(welded)
- overlays += image(icon, "welded")
- else if (health < maxhealth * 3/4 && !(stat & NOPOWER))
- overlays += image(icon, "sparks_damaged")
- else
- icon_state = "door_open"
- if((stat & BROKEN) && !(stat & NOPOWER))
- overlays += image(icon, "sparks_open")
- return
-
-/obj/machinery/door/airlock/do_animate(animation)
- switch(animation)
- if("opening")
- if(overlays) overlays.Cut()
- if(p_open)
- spawn(2) // The only work around that works. Downside is that the door will be gone for a millisecond.
- flick("o_door_opening", src) //can not use flick due to BYOND bug updating overlays right before flicking
- update_icon()
- else
- flick("door_opening", src)//[stat ? "_stat":]
- update_icon()
- if("closing")
- if(overlays) overlays.Cut()
- if(p_open)
- spawn(2)
- flick("o_door_closing", src)
- update_icon()
- else
- flick("door_closing", src)
- update_icon()
- if("spark")
- if(density)
- flick("door_spark", src)
- if("deny")
- if(density && src.arePowerSystemsOn())
- flick("door_deny", src)
- playsound(src, denied_sound, 50, 0, 3)
- return
-
-/obj/machinery/door/airlock/attack_ai(mob/user as mob)
- tgui_interact(user)
-
-/obj/machinery/door/airlock/attack_ghost(mob/user)
- tgui_interact(user)
-
-/obj/machinery/door/airlock/tgui_interact(mob/user, datum/tgui/ui)
- ui = SStgui.try_update_ui(user, src, ui)
- if(!ui)
- ui = new(user, src, "AiAirlock", name)
- ui.open()
- return TRUE
-
-/obj/machinery/door/airlock/tgui_data(mob/user)
- var/list/data = list()
-
- var/list/power = list()
- power["main"] = main_power_lost_until > 0 ? 0 : 2
- power["main_timeleft"] = round(main_power_lost_until > 0 ? max(main_power_lost_until - world.time, 0) / 10 : main_power_lost_until, 1)
- power["backup"] = backup_power_lost_until > 0 ? 0 : 2
- power["backup_timeleft"] = round(backup_power_lost_until > 0 ? max(backup_power_lost_until - world.time, 0) / 10 : backup_power_lost_until, 1)
- data["power"] = power
-
- data["shock"] = (electrified_until == 0) ? 2 : 0
- data["shock_timeleft"] = round(electrified_until > 0 ? max(electrified_until - world.time, 0) / 10 : electrified_until, 1)
- data["id_scanner"] = !aiDisabledIdScanner
- data["locked"] = locked // bolted
- data["lights"] = lights // bolt lights
- data["safe"] = safe // safeties
- data["speed"] = normalspeed // safe speed
- data["welded"] = welded // welded
- data["opened"] = !density // opened
-
- var/list/wire = list()
- wire["main_1"] = !wires.is_cut(WIRE_MAIN_POWER1)
- wire["main_2"] = !wires.is_cut(WIRE_MAIN_POWER2)
- wire["backup_1"] = !wires.is_cut(WIRE_BACKUP_POWER1)
- wire["backup_2"] = !wires.is_cut(WIRE_BACKUP_POWER2)
- wire["shock"] = !wires.is_cut(WIRE_ELECTRIFY)
- wire["id_scanner"] = !wires.is_cut(WIRE_IDSCAN)
- wire["bolts"] = !wires.is_cut(WIRE_DOOR_BOLTS)
- wire["lights"] = !wires.is_cut(WIRE_BOLT_LIGHT)
- wire["safe"] = !wires.is_cut(WIRE_SAFETY)
- wire["timing"] = !wires.is_cut(WIRE_SPEED)
-
- data["wires"] = wire
- return data
-
-/obj/machinery/door/airlock/proc/hack(mob/user as mob)
- if(src.aiHacking==0)
- src.aiHacking=1
- spawn(20)
- //TODO: Make this take a minute
- to_chat(user, "Airlock AI control has been blocked. Beginning fault-detection.")
- sleep(50)
- if(src.canAIControl())
- to_chat(user, "Alert cancelled. Airlock control has been restored without our assistance.")
- src.aiHacking=0
- return
- else if(!src.canAIHack(user))
- to_chat(user, "We've lost our connection! Unable to hack airlock.")
- src.aiHacking=0
- return
- to_chat(user, "Fault confirmed: airlock control wire disabled or cut.")
- sleep(20)
- to_chat(user, "Attempting to hack into airlock. This may take some time.")
- sleep(200)
- if(src.canAIControl())
- to_chat(user, "Alert cancelled. Airlock control has been restored without our assistance.")
- src.aiHacking=0
- return
- else if(!src.canAIHack(user))
- to_chat(user, "We've lost our connection! Unable to hack airlock.")
- src.aiHacking=0
- return
- to_chat(user, "Upload access confirmed. Loading control program into airlock software.")
- sleep(170)
- if(src.canAIControl())
- to_chat(user, "Alert cancelled. Airlock control has been restored without our assistance.")
- src.aiHacking=0
- return
- else if(!src.canAIHack(user))
- to_chat(user, "We've lost our connection! Unable to hack airlock.")
- src.aiHacking=0
- return
- to_chat(user, "Transfer complete. Forcing airlock to execute program.")
- sleep(50)
- //disable blocked control
- src.aiControlDisabled = 2
- to_chat(user, "Receiving control information from airlock.")
- sleep(10)
- //bring up airlock dialog
- src.aiHacking = 0
- if (user)
- src.attack_ai(user)
-
-/obj/machinery/door/airlock/CanPass(atom/movable/mover, turf/target)
- if (src.isElectrified())
- if (istype(mover, /obj/item))
- var/obj/item/i = mover
- if (i.matter && (DEFAULT_WALL_MATERIAL in i.matter) && i.matter[DEFAULT_WALL_MATERIAL] > 0)
- var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
- s.set_up(5, 1, src)
- s.start()
- return ..()
-
-/obj/machinery/door/airlock/attack_hand(mob/user as mob)
- if(!istype(usr, /mob/living/silicon))
- if(src.isElectrified())
- if(src.shock(user, 100))
- return
-
- if(istype(user, /mob/living/carbon/human))
- var/mob/living/carbon/human/X = user
- if(istype(X.species, /datum/species/xenos))
- src.attack_alien(user)
- return
-
- if(src.p_open)
- user.set_machine(src)
- wires.Interact(user)
- else
- ..(user)
- return
-
-/obj/machinery/door/airlock/tgui_act(action, params)
- if(..())
- return TRUE
- if(!user_allowed(usr))
- return TRUE
-
- switch(action)
- if("disrupt-main")
- if(!main_power_lost_until)
- loseMainPower()
- update_icon()
- else
- to_chat(usr, "Main power is already offline.")
- . = TRUE
- if("disrupt-backup")
- if(!backup_power_lost_until)
- loseBackupPower()
- update_icon()
- else
- to_chat(usr, "Backup power is already offline.")
- . = TRUE
- if("shock-restore")
- electrify(0, 1)
- . = TRUE
- if("shock-temp")
- electrify(30, 1)
- . = TRUE
- if("shock-perm")
- electrify(-1, 1)
- . = TRUE
- if("idscan-toggle")
- set_idscan(aiDisabledIdScanner, 1)
- . = TRUE
- // if("emergency-toggle")
- // toggle_emergency(usr)
- // . = TRUE
- if("bolt-toggle")
- toggle_bolt(usr)
- . = TRUE
- if("light-toggle")
- if(wires.is_cut(WIRE_BOLT_LIGHT))
- to_chat(usr, "The bolt lights wire is cut - The door bolt lights are permanently disabled.")
- return
- lights = !lights
- update_icon()
- . = TRUE
- if("safe-toggle")
- set_safeties(!safe, 1)
- . = TRUE
- if("speed-toggle")
- if(wires.is_cut(WIRE_SPEED))
- to_chat(usr, "The timing wire is cut - Cannot alter timing.")
- return
- normalspeed = !normalspeed
- . = TRUE
- if("open-close")
- user_toggle_open(usr)
- . = TRUE
-
- update_icon()
- return 1
-
-/obj/machinery/door/airlock/proc/user_allowed(mob/user)
- var/allowed = (issilicon(user) && canAIControl(user))
- if(!allowed && isobserver(user))
- var/mob/observer/dead/D = user
- if(D.can_admin_interact())
- allowed = TRUE
- return allowed
-
-/obj/machinery/door/airlock/proc/toggle_bolt(mob/user)
- if(!user_allowed(user))
- return
- if(wires.is_cut(WIRE_DOOR_BOLTS))
- to_chat(user, "The door bolt drop wire is cut - you can't toggle the door bolts.")
- return
- if(locked)
- if(!arePowerSystemsOn())
- to_chat(user, "The door has no power - you can't raise the door bolts.")
- else
- unlock()
- to_chat(user, "The door bolts have been raised.")
- // log_combat(user, src, "unbolted")
- else
- lock()
- to_chat(user, "The door bolts have been dropped.")
- // log_combat(user, src, "bolted")
-
-/obj/machinery/door/airlock/proc/user_toggle_open(mob/user)
- if(!user_allowed(user))
- return
- if(welded)
- to_chat(user, text("The airlock has been welded shut!"))
- else if(locked)
- to_chat(user, text("The door bolts are down!"))
- else if(!density)
- close()
- else
- open()
-
-/obj/machinery/door/airlock/proc/can_remove_electronics()
- return src.p_open && (operating < 0 || (!operating && welded && !src.arePowerSystemsOn() && density && (!src.locked || (stat & BROKEN))))
-
-/obj/machinery/door/airlock/attackby(obj/item/C, mob/user as mob)
- //to_world("airlock attackby src [src] obj [C] mob [user]")
- if(!istype(usr, /mob/living/silicon))
- if(src.isElectrified())
- if(src.shock(user, 75))
- return
- if(istype(C, /obj/item/taperoll))
- return
-
- src.add_fingerprint(user)
- if(istype(C, /mob/living))
- ..()
- return
- if(!repairing && istype(C, /obj/item/weapon/weldingtool) && !( src.operating > 0 ) && src.density)
- var/obj/item/weapon/weldingtool/W = C
- if(W.remove_fuel(0,user))
- if(!src.welded)
- src.welded = 1
- else
- src.welded = null
- playsound(src, C.usesound, 75, 1)
- src.update_icon()
- return
- else
- return
- else if(C.is_screwdriver())
- if (src.p_open)
- if (stat & BROKEN)
- to_chat(usr, "The panel is broken and cannot be closed.")
- else
- src.p_open = 0
- playsound(src, C.usesound, 50, 1)
- else
- src.p_open = 1
- playsound(src, C.usesound, 50, 1)
- src.update_icon()
- else if(C.is_wirecutter())
- return src.attack_hand(user)
- else if(istype(C, /obj/item/device/multitool))
- return src.attack_hand(user)
- else if(istype(C, /obj/item/device/assembly/signaler))
- return src.attack_hand(user)
- else if(istype(C, /obj/item/weapon/pai_cable)) // -- TLE
- var/obj/item/weapon/pai_cable/cable = C
- cable.plugin(src, user)
- else if(!repairing && C.is_crowbar())
- if(can_remove_electronics())
- playsound(src, C.usesound, 75, 1)
- user.visible_message("[user] removes the electronics from the airlock assembly.", "You start to remove electronics from the airlock assembly.")
- if(do_after(user,40 * C.toolspeed))
- to_chat(user, "You removed the airlock electronics!")
-
- var/obj/structure/door_assembly/da = new assembly_type(src.loc)
- if (istype(da, /obj/structure/door_assembly/multi_tile))
- da.set_dir(src.dir)
-
- da.anchored = 1
- if(mineral)
- da.glass = mineral
- //else if(glass)
- else if(glass && !da.glass)
- da.glass = 1
- da.state = 1
- da.created_name = src.name
- da.update_state()
-
- if(operating == -1 || (stat & BROKEN))
- new /obj/item/weapon/circuitboard/broken(src.loc)
- operating = 0
- else
- if (!electronics) create_electronics()
-
- electronics.loc = src.loc
- electronics = null
-
- qdel(src)
- return
- else if(arePowerSystemsOn())
- to_chat(user, "The airlock's motors resist your efforts to force it.")
- else if(locked)
- to_chat(user, "The airlock's bolts prevent it from being forced.")
- else
- if(density)
- spawn(0) open(1)
- else
- spawn(0) close(1)
-
- // Check if we're using a crowbar or armblade, and if the airlock's unpowered for whatever reason (off, broken, etc).
- else if(istype(C, /obj/item/weapon))
- var/obj/item/weapon/W = C
- if((W.pry == 1) && !arePowerSystemsOn())
- if(locked)
- to_chat(user, "The airlock's bolts prevent it from being forced.")
- else if( !welded && !operating )
- if(istype(C, /obj/item/weapon/material/twohanded/fireaxe)) // If this is a fireaxe, make sure it's held in two hands.
- var/obj/item/weapon/material/twohanded/fireaxe/F = C
- if(!F.wielded)
- to_chat(user, "You need to be wielding \the [F] to do that.")
- return
- // At this point, it's an armblade or a fireaxe that passed the wielded test, let's try to open it.
- if(density)
- spawn(0)
- open(1)
- else
- spawn(0)
- close(1)
- else
- ..()
- else
- ..()
- return
-
-/obj/machinery/door/airlock/phoron/attackby(C as obj, mob/user as mob)
- if(C)
- ignite(is_hot(C))
- ..()
-
-/obj/machinery/door/airlock/set_broken()
- src.p_open = 1
- stat |= BROKEN
- if (secured_wires)
- lock()
- for (var/mob/O in viewers(src, null))
- if ((O.client && !( O.blinded )))
- O.show_message("[src.name]'s control panel bursts open, sparks spewing out!")
-
- var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
- s.set_up(5, 1, src)
- s.start()
-
- update_icon()
- return
-
-/obj/machinery/door/airlock/open(var/forced=0)
- if(!can_open(forced))
- return 0
- use_power(360) //360 W seems much more appropriate for an actuator moving an industrial door capable of crushing people
-
- //if the door is unpowered then it doesn't make sense to hear the woosh of a pneumatic actuator
- for(var/P in player_list)
- var/mob/M = P
- if(!M || !M.client)
- continue
- var/old_sounds = M.client.is_preference_enabled(/datum/client_preference/old_door_sounds)
- var/department_door_sounds = M.client.is_preference_enabled(/datum/client_preference/department_door_sounds)
- var/sound
- var/volume
- if(old_sounds) // Do we have old sounds enabled? Play these even if we have department door sounds enabled.
- if(arePowerSystemsOn())
- sound = legacy_open_powered
- volume = 50
- else
- sound = open_sound_unpowered
- volume = 75
- else if(!old_sounds && department_door_sounds && src.department_open_powered) // Else, we have old sounds disabled, the door has per-department door sounds, and we have chosen to play department door sounds, use these.
- if(arePowerSystemsOn())
- sound = department_open_powered
- volume = 50
- else
- sound = open_sound_unpowered
- volume = 75
- else // Else, play these.
- if(arePowerSystemsOn())
- sound = open_sound_powered
- volume = 50
- else
- sound = open_sound_unpowered
- volume = 75
-
- var/turf/T = get_turf(M)
- var/distance = get_dist(T, get_turf(src))
- if(distance <= world.view * 2)
- if(T && T.z == get_z(src))
- M.playsound_local(get_turf(src), sound, volume, 1, null, 0, TRUE, sound(sound), volume_channel = VOLUME_CHANNEL_DOORS)
-
- if(src.closeOther != null && istype(src.closeOther, /obj/machinery/door/airlock/) && !src.closeOther.density)
- src.closeOther.close()
- return ..()
-
-/obj/machinery/door/airlock/can_open(var/forced=0)
- if(!forced)
- if(!arePowerSystemsOn() || wires.is_cut(WIRE_OPEN_DOOR))
- return 0
-
- if(locked || welded)
- return 0
- return ..()
-
-/obj/machinery/door/airlock/can_close(var/forced=0)
- if(locked || welded)
- return 0
-
- if(!forced)
- //despite the name, this wire is for general door control.
- if(!arePowerSystemsOn() || wires.is_cut(WIRE_OPEN_DOOR))
- return 0
-
- return ..()
-
-/atom/movable/proc/blocks_airlock()
- return density
-
-/obj/machinery/door/blocks_airlock()
- return 0
-
-/obj/machinery/mech_sensor/blocks_airlock()
- return 0
-
-/mob/living/blocks_airlock()
- return 1
-
-/atom/movable/proc/airlock_crush(var/crush_damage)
- return 0
-
-/obj/machinery/portable_atmospherics/canister/airlock_crush(var/crush_damage)
- . = ..()
- health -= crush_damage
- healthcheck()
-
-/obj/effect/energy_field/airlock_crush(var/crush_damage)
- adjust_strength(crush_damage)
-
-/obj/structure/closet/airlock_crush(var/crush_damage)
- ..()
- damage(crush_damage)
- for(var/atom/movable/AM in src)
- AM.airlock_crush()
- return 1
-
-/mob/living/airlock_crush(var/crush_damage)
- . = ..()
- adjustBruteLoss(crush_damage)
- SetStunned(5)
- SetWeakened(5)
- var/turf/T = get_turf(src)
- T.add_blood(src)
- return 1
-
-/mob/living/carbon/airlock_crush(var/crush_damage)
- . = ..()
- if(can_feel_pain())
- emote("scream")
-
-/mob/living/silicon/robot/airlock_crush(var/crush_damage)
- adjustBruteLoss(crush_damage)
- return 0
-
-/obj/machinery/door/airlock/close(var/forced=0)
- if(!can_close(forced))
- return 0
-
- if(safe)
- for(var/turf/turf in locs)
- for(var/atom/movable/AM in turf)
- if(AM.blocks_airlock())
- if(!has_beeped)
- playsound(src, 'sound/machines/buzz-two.ogg', 50, 0)
- has_beeped = 1
- close_door_at = world.time + 6
- return
-
- for(var/turf/turf in locs)
- for(var/atom/movable/AM in turf)
- if(AM.airlock_crush(DOOR_CRUSH_DAMAGE))
- take_damage(DOOR_CRUSH_DAMAGE)
-
- use_power(360) //360 W seems much more appropriate for an actuator moving an industrial door capable of crushing people
- has_beeped = 0
- for(var/P in player_list)
- var/mob/M = P
- if(!M || !M.client)
- continue
- var/old_sounds = M.client.is_preference_enabled(/datum/client_preference/old_door_sounds)
- var/department_door_sounds = M.client.is_preference_enabled(/datum/client_preference/department_door_sounds)
- var/sound
- var/volume
- if(old_sounds)
- if(arePowerSystemsOn())
- sound = legacy_close_powered
- volume = 50
- else
- sound = open_sound_unpowered
- volume = 75
- else if(!old_sounds && department_door_sounds && src.department_close_powered) // Else, we have old sounds disabled, the door has per-department door sounds, and we have chosen to play department door sounds, use these.
- if(arePowerSystemsOn())
- sound = department_close_powered
- volume = 50
- else
- sound = open_sound_unpowered
- volume = 75
- else
- if(arePowerSystemsOn())
- sound = close_sound_powered
- volume = 50
- else
- sound = open_sound_unpowered
- volume = 75
-
- var/turf/T = get_turf(M)
- var/distance = get_dist(T, get_turf(src))
- if(distance <= world.view * 2)
- if(T && T.z == get_z(src))
- M.playsound_local(get_turf(src), sound, volume, 1, null, 0, TRUE, sound(sound), volume_channel = VOLUME_CHANNEL_DOORS)
- for(var/turf/turf in locs)
- var/obj/structure/window/killthis = (locate(/obj/structure/window) in turf)
- if(killthis)
- killthis.ex_act(2)//Smashin windows
- return ..()
-
-/obj/machinery/door/airlock/proc/lock(var/forced=0)
- if(locked)
- return 0
-
- if (operating && !forced) return 0
-
- src.locked = 1
- playsound(src, bolt_down_sound, 30, 0, 3, volume_channel = VOLUME_CHANNEL_DOORS)
- for(var/mob/M in range(1,src))
- M.show_message("You hear a click from the bottom of the door.", 2)
- update_icon()
- return 1
-
-/obj/machinery/door/airlock/proc/unlock(var/forced=0)
- if(!src.locked)
- return
-
- if (!forced)
- if(operating || !src.arePowerSystemsOn() || wires.is_cut(WIRE_DOOR_BOLTS)) return
-
- src.locked = 0
- playsound(src, bolt_up_sound, 30, 0, 3, volume_channel = VOLUME_CHANNEL_DOORS)
- for(var/mob/M in range(1,src))
- M.show_message("You hear a click from the bottom of the door.", 2)
- update_icon()
- return 1
-
-/obj/machinery/door/airlock/allowed(mob/M)
- if(locked)
- return 0
- return ..(M)
-
-/obj/machinery/door/airlock/Initialize(var/ml, var/obj/structure/door_assembly/assembly=null)
-
- if(src.closeOtherId != null)
- for (var/obj/machinery/door/airlock/A in machines)
- if(A.closeOtherId == src.closeOtherId && A != src)
- src.closeOther = A
- break
- name = "\improper [name]"
-
- . = ..()
-
- //if assembly is given, create the new door from the assembly
- if (assembly && istype(assembly))
- assembly_type = assembly.type
-
- electronics = assembly.electronics
- electronics.loc = src
-
- //update the door's access to match the electronics'
- secured_wires = electronics.secure
- if(electronics.one_access)
- LAZYCLEARLIST(req_access)
- req_one_access = src.electronics.conf_access
- else
- LAZYCLEARLIST(req_one_access)
- req_access = src.electronics.conf_access
-
- //get the name from the assembly
- if(assembly.created_name)
- name = assembly.created_name
- else
- name = "[istext(assembly.glass) ? "[assembly.glass] airlock" : assembly.base_name]"
-
- //get the dir from the assembly
- set_dir(assembly.dir)
-
- //wires
- var/turf/T = get_turf(src)
- if(T && (T.z in using_map.admin_levels))
- secured_wires = 1
- if (secured_wires)
- wires = new/datum/wires/airlock/secure(src)
- else
- wires = new/datum/wires/airlock(src)
-
- if(frequency)
- set_frequency(frequency)
- update_icon()
-
-/obj/machinery/door/airlock/Destroy()
- qdel(wires)
- wires = null
- return ..()
-
-// Most doors will never be deconstructed over the course of a round,
-// so as an optimization defer the creation of electronics until
-// the airlock is deconstructed
-/obj/machinery/door/airlock/proc/create_electronics()
- //create new electronics
- if (secured_wires)
- src.electronics = new/obj/item/weapon/airlock_electronics/secure( src.loc )
- else
- src.electronics = new/obj/item/weapon/airlock_electronics( src.loc )
-
- //update the electronics to match the door's access
- if(LAZYLEN(req_access))
- electronics.conf_access = req_access
- else if (LAZYLEN(req_one_access))
- electronics.conf_access = req_one_access
- electronics.one_access = 1
-
-/obj/machinery/door/airlock/emp_act(var/severity)
- if(prob(40/severity))
- var/duration = world.time + SecondsToTicks(30 / severity)
- if(duration > electrified_until)
- electrify(duration)
- ..()
-
-/obj/machinery/door/airlock/power_change() //putting this is obj/machinery/door itself makes non-airlock doors turn invisible for some reason
- ..()
- if(stat & NOPOWER)
- // If we lost power, disable electrification
- // Keeping door lights on, runs on internal battery or something.
- electrified_until = 0
- update_icon()
-
-/obj/machinery/door/airlock/proc/prison_open()
- if(arePowerSystemsOn())
- src.unlock()
- src.open()
- src.lock()
- return
-
-
-/obj/machinery/door/airlock/rcd_values(mob/living/user, obj/item/weapon/rcd/the_rcd, passed_mode)
- switch(passed_mode)
- if(RCD_DECONSTRUCT)
- // Old RCD code made it cost 10 units to decon an airlock.
- // Now the new one costs ten "sheets".
- return list(
- RCD_VALUE_MODE = RCD_DECONSTRUCT,
- RCD_VALUE_DELAY = 5 SECONDS,
- RCD_VALUE_COST = RCD_SHEETS_PER_MATTER_UNIT * 10
- )
- return FALSE
-
-/obj/machinery/door/airlock/rcd_act(mob/living/user, obj/item/weapon/rcd/the_rcd, passed_mode)
- switch(passed_mode)
- if(RCD_DECONSTRUCT)
- to_chat(user, span("notice", "You deconstruct \the [src]."))
- qdel(src)
- return TRUE
- return FALSE
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
+ return FALSE
\ No newline at end of file
diff --git a/code/game/machinery/doors/multi_tile.dm b/code/game/machinery/doors/multi_tile.dm
index 3c01632191..464b854c40 100644
--- a/code/game/machinery/doors/multi_tile.dm
+++ b/code/game/machinery/doors/multi_tile.dm
@@ -7,22 +7,7 @@
open_sound_powered = 'sound/machines/door/WideOpen.ogg'
close_sound_powered = 'sound/machines/door/WideClose.ogg'
-<<<<<<< HEAD
/obj/machinery/door/airlock/multi_tile/Initialize(mapload)
-=======
-/obj/machinery/door/airlock/multi_tile/Initialize()
- . = ..()
- SetBounds()
- if(opacity)
- create_fillers()
-
-/obj/machinery/door/airlock/multi_tile/Destroy()
- QDEL_NULL(filler1)
- QDEL_NULL(filler2)
- return ..()
-
-/obj/machinery/door/airlock/multi_tile/Moved(atom/old_loc, direction, forced = FALSE)
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
. = ..()
SetBounds()
RegisterSignal(src, COMSIG_MOVABLE_MOVED, .proc/SetBounds)
@@ -63,4 +48,4 @@
/obj/machinery/door/airlock/multi_tile/metal/mait
icon = 'icons/obj/doors/Door2x1_Maint.dmi'
- //req_one_access = list(access_maint_tunnels) //VOREStaiton Edit - Maintenance is open access
+ //req_one_access = list(access_maint_tunnels) //VOREStaiton Edit - Maintenance is open access
\ No newline at end of file
diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm
index 8df3b6bfe2..0fe6c7315a 100644
--- a/code/game/machinery/machinery.dm
+++ b/code/game/machinery/machinery.dm
@@ -119,17 +119,11 @@ Class Procs:
var/speed_process = FALSE //If false, SSmachines. If true, SSfastprocess.
-<<<<<<< HEAD
blocks_emissive = EMISSIVE_BLOCK_GENERIC
-/obj/machinery/New(l, d=0)
- ..()
- if(isnum(d))
-=======
/obj/machinery/Initialize(var/ml, d=0)
. = ..()
if(d)
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
set_dir(d)
if(ispath(circuit))
circuit = new circuit(src)
diff --git a/code/game/machinery/requests_console.dm b/code/game/machinery/requests_console.dm
index f7f6a7b19c..860c67646c 100644
--- a/code/game/machinery/requests_console.dm
+++ b/code/game/machinery/requests_console.dm
@@ -59,8 +59,6 @@ var/list/obj/machinery/requests_console/allConsoles = list()
light_range = 0
var/datum/announcement/announcement = new
-<<<<<<< HEAD
-=======
/obj/machinery/requests_console/power_change()
..()
update_icon()
@@ -73,7 +71,6 @@ var/list/obj/machinery/requests_console/allConsoles = list()
if(icon_state == "req_comp_off")
icon_state = "req_comp[newmessagepriority]"
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
/obj/machinery/requests_console/Initialize()
. = ..()
diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm
index 190b0285ee..d5672c7888 100644
--- a/code/game/machinery/suit_storage_unit.dm
+++ b/code/game/machinery/suit_storage_unit.dm
@@ -29,7 +29,6 @@
//The units themselves/////////////////
/obj/machinery/suit_storage_unit/standard_unit
-<<<<<<< HEAD
suit_type = /obj/item/clothing/suit/space
helmet_type = /obj/item/clothing/head/helmet/space
mask_type = /obj/item/clothing/mask/breath
@@ -42,15 +41,6 @@
HELMET = new helmet_type(src)
if(mask_type)
MASK = new mask_type(src)
-=======
- SUIT_TYPE = /obj/item/clothing/suit/space
- HELMET_TYPE = /obj/item/clothing/head/helmet/space
- MASK_TYPE = /obj/item/clothing/mask/breath
-
-/obj/machinery/suit_storage_unit/Initialize()
- . = ..()
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
- update_icon()
/obj/machinery/suit_storage_unit/update_icon()
var/hashelmet = 0
@@ -548,8 +538,8 @@ GLOBAL_LIST_EMPTY(suit_cycler_typecache)
/obj/machinery/suit_cycler/Initialize()
. = ..()
-<<<<<<< HEAD
+ wires = new(src)
departments = load_departments()
species = load_species()
emagged_departments = load_emagged()
@@ -557,8 +547,6 @@ GLOBAL_LIST_EMPTY(suit_cycler_typecache)
target_department = departments["No Change"]
target_species = species["No Change"]
-=======
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
if(!target_department || !target_species)
stat |= BROKEN
diff --git a/code/game/machinery/teleporter.dm b/code/game/machinery/teleporter.dm
index 37d9eebff3..eb9942a28c 100644
--- a/code/game/machinery/teleporter.dm
+++ b/code/game/machinery/teleporter.dm
@@ -13,15 +13,6 @@
//Setting this to 1 will set locked to null after a player enters the portal and will not allow hand-teles to open portals to that location.
var/datum/tgui_module/teleport_control/teleport_control
-<<<<<<< HEAD
-/obj/machinery/computer/teleporter/New()
- id = "[rand(1000, 9999)]"
- ..()
- underlays.Cut()
- underlays += image('icons/obj/stationobjs_vr.dmi', icon_state = "telecomp-wires") //VOREStation Edit: different direction for wires to account for dirs
-
-=======
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
/obj/machinery/computer/teleporter/Initialize()
id = "[rand(1000, 9999)]"
. = ..()
diff --git a/code/game/mecha/equipment/tools/cable_layer.dm b/code/game/mecha/equipment/tools/cable_layer.dm
index 462d790eb2..6de991953e 100644
--- a/code/game/mecha/equipment/tools/cable_layer.dm
+++ b/code/game/mecha/equipment/tools/cable_layer.dm
@@ -7,16 +7,10 @@
var/max_cable = 1000
required_type = list(/obj/mecha/working)
-<<<<<<< HEAD
-/obj/item/mecha_parts/mecha_equipment/tool/cable_layer/New()
- cable = new(src, 0)
- ..()
-=======
/obj/item/mecha_parts/mecha_equipment/tool/cable_layer/Initialize()
cable = new(src)
cable.amount = 0
. = ..()
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
/obj/item/mecha_parts/mecha_equipment/tool/cable_layer/MoveAction()
layCable()
diff --git a/code/game/mecha/mech_prosthetics.dm b/code/game/mecha/mech_prosthetics.dm
index cb84d9ff31..3be1fdeec7 100644
--- a/code/game/mecha/mech_prosthetics.dm
+++ b/code/game/mecha/mech_prosthetics.dm
@@ -16,7 +16,6 @@
var/manufacturer = null
var/species_types = list("Human")
var/species = "Human"
-<<<<<<< HEAD
loading_icon_state = "prosfab_loading"
@@ -70,14 +69,6 @@
/obj/machinery/mecha_part_fabricator/pros/Initialize()
. = ..()
-=======
- var/sync_message = ""
-
-/obj/machinery/pros_fabricator/Initialize()
- . = ..()
- default_apply_parts()
- files = new /datum/research(src) //Setup the research data holder.
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
manufacturer = basic_robolimb.company
/obj/machinery/mecha_part_fabricator/pros/dispense_built_part(datum/design/D)
diff --git a/code/game/objects/effects/alien/aliens.dm b/code/game/objects/effects/alien/aliens.dm
index e5905f15ce..a5b208dcf9 100644
--- a/code/game/objects/effects/alien/aliens.dm
+++ b/code/game/objects/effects/alien/aliens.dm
@@ -14,8 +14,6 @@
icon = 'icons/mob/alien.dmi'
/*
-<<<<<<< HEAD
-=======
* Resin
*/
/obj/effect/alien/resin
@@ -149,7 +147,6 @@
/*
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
* Weeds
*/
#define NODERANGE 3
@@ -427,9 +424,6 @@
visible_message("[src.target] begins to crumble under the acid!")
spawn(rand(150, 200)) tick()
-<<<<<<< HEAD
-//Xenomorph Effect egg removed, replaced with Structure Egg.
-=======
/*
* Egg
*/
@@ -556,4 +550,3 @@
if(exposed_temperature > 500 + T0C)
health -= 5
healthcheck()
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
diff --git a/code/game/objects/effects/landmarks.dm b/code/game/objects/effects/landmarks.dm
index 1d9a1f727d..33cf8b6632 100644
--- a/code/game/objects/effects/landmarks.dm
+++ b/code/game/objects/effects/landmarks.dm
@@ -21,26 +21,16 @@
delete_me = 1
if("JoinLate") // Bit difference, since we need the spawn point to move.
latejoin += src
-<<<<<<< HEAD
- simulated = TRUE
- // delete_me = 1
- return
-=======
simulated = 1
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
if("JoinLateGateway")
latejoin_gateway += loc
delete_me = 1
if("JoinLateElevator")
latejoin_elevator += loc
delete_me = 1
-<<<<<<< HEAD
- return
-=======
if("JoinLateCheckpoint")
latejoin_checkpoint += loc
delete_me = 1
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
if("JoinLateCryo")
latejoin_cryo += loc
delete_me = 1
@@ -157,27 +147,17 @@
new /obj/item/clothing/head/helmet/gladiator(src.loc)
return INITIALIZE_HINT_QDEL
-<<<<<<< HEAD
-/obj/effect/landmark/costume/madscientist/New()
- new /obj/item/clothing/under/suit_jacket/green(src.loc)
-=======
/obj/effect/landmark/costume/madscientist/Initialize()
..()
- new /obj/item/clothing/under/gimmick/rank/captain/suit(src.loc)
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
+ new /obj/item/clothing/under/suit_jacket/green(src.loc)
new /obj/item/clothing/head/flatcap(src.loc)
new /obj/item/clothing/suit/storage/toggle/labcoat/mad(src.loc)
new /obj/item/clothing/glasses/gglasses(src.loc)
return INITIALIZE_HINT_QDEL
-<<<<<<< HEAD
-/obj/effect/landmark/costume/elpresidente/New()
- new /obj/item/clothing/under/suit_jacket/green(src.loc)
-=======
/obj/effect/landmark/costume/elpresidente/Initialize()
..()
- new /obj/item/clothing/under/gimmick/rank/captain/suit(src.loc)
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
+ new /obj/item/clothing/under/suit_jacket/green(src.loc)
new /obj/item/clothing/head/flatcap(src.loc)
new /obj/item/clothing/mask/smokable/cigarette/cigar/havana(src.loc)
new /obj/item/clothing/shoes/boots/jackboots(src.loc)
diff --git a/code/game/objects/effects/spiders.dm b/code/game/objects/effects/spiders.dm
index 38e9cb1e33..1272060735 100644
--- a/code/game/objects/effects/spiders.dm
+++ b/code/game/objects/effects/spiders.dm
@@ -159,7 +159,6 @@
/obj/effect/spider/spiderling/frost
grow_as = list(/mob/living/simple_mob/animal/giant_spider/frost)
-<<<<<<< HEAD
/obj/effect/spider/spiderling/varied
grow_as = list(/mob/living/simple_mob/animal/giant_spider, /mob/living/simple_mob/animal/giant_spider/nurse, /mob/living/simple_mob/animal/giant_spider/hunter,
/mob/living/simple_mob/animal/giant_spider/frost, /mob/living/simple_mob/animal/giant_spider/electric, /mob/living/simple_mob/animal/giant_spider/lurker,
@@ -167,10 +166,7 @@
/mob/living/simple_mob/animal/giant_spider/webslinger, /mob/living/simple_mob/animal/giant_spider/phorogenic, /mob/living/simple_mob/animal/giant_spider/carrier,
/mob/living/simple_mob/animal/giant_spider/ion)
-/obj/effect/spider/spiderling/New(var/location, var/atom/parent)
-=======
/obj/effect/spider/spiderling/Initialize(var/ml, var/atom/parent)
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
pixel_x = rand(6,-6)
pixel_y = rand(6,-6)
START_PROCESSING(SSobj, src)
diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm
index d76f69f864..f56a50c73d 100644
--- a/code/game/objects/items/devices/flashlight.dm
+++ b/code/game/objects/items/devices/flashlight.dm
@@ -504,15 +504,9 @@
on = 1 //Bio-luminesence has one setting, on.
power_use = 0
-<<<<<<< HEAD
-/obj/item/device/flashlight/slime/New()
- ..()
- set_light(light_range, light_power, light_color)
-=======
/obj/item/device/flashlight/slime/Initialize()
. = ..()
- set_light(brightness_on, flashlight_power, flashlight_colour)
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
+ set_light(light_range, light_power, light_color)
/obj/item/device/flashlight/slime/update_brightness()
return
diff --git a/code/game/objects/items/devices/paicard.dm b/code/game/objects/items/devices/paicard.dm
index b9d7a18c31..391b671591 100644
--- a/code/game/objects/items/devices/paicard.dm
+++ b/code/game/objects/items/devices/paicard.dm
@@ -22,15 +22,9 @@ GLOBAL_LIST_BOILERPLATE(all_pai_cards, /obj/item/device/paicard)
if(istype(rig))
rig.forced_move(direction, user)
-<<<<<<< HEAD
-/obj/item/device/paicard/New()
- ..()
- add_overlay("pai-off")
-=======
/obj/item/device/paicard/Initialize()
. = ..()
- overlays += "pai-off"
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
+ add_overlay("pai-off")
/obj/item/device/paicard/Destroy()
//Will stop people throwing friend pAIs into the singularity so they can respawn
diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm
index b9658bbb20..6fc7c0fe59 100644
--- a/code/game/objects/items/devices/radio/radio.dm
+++ b/code/game/objects/items/devices/radio/radio.dm
@@ -1,7 +1,6 @@
// Access check is of the type requires one. These have been carefully selected to avoid allowing the janitor to see channels he shouldn't
//VOREStation Edit Start - Updating this for Virgo
var/global/list/default_internal_channels = list(
-<<<<<<< HEAD
num2text(PUB_FREQ) = list(),
num2text(AI_FREQ) = list(access_synth),
num2text(ENT_FREQ) = list(),
@@ -22,27 +21,6 @@ var/global/list/default_medbay_channels = list(
num2text(PUB_FREQ) = list(),
num2text(MED_FREQ) = list(),
num2text(MED_I_FREQ) = list()
-=======
- num2text(PUB_FREQ) = list(),
- num2text(AI_FREQ) = list(access_synth),
- num2text(ENT_FREQ) = list(),
- num2text(ERT_FREQ) = list(access_cent_specops),
- num2text(COMM_FREQ) = list(access_heads),
- num2text(ENG_FREQ) = list(access_engine_equip, access_atmospherics),
- num2text(MED_FREQ) = list(access_medical_equip),
- num2text(MED_I_FREQ) = list(access_medical_equip),
- num2text(SEC_FREQ) = list(access_security),
- num2text(SEC_I_FREQ) = list(access_security),
- num2text(SCI_FREQ) = list(access_tox,access_robotics,access_xenobiology),
- num2text(SUP_FREQ) = list(access_cargo),
- num2text(SRV_FREQ) = list(access_janitor, access_hydroponics)
-)
-
-var/global/list/default_medbay_channels = list(
- num2text(PUB_FREQ) = list(),
- num2text(MED_FREQ) = list(access_medical_equip),
- num2text(MED_I_FREQ) = list(access_medical_equip)
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
)
//VOREStation Edit End
diff --git a/code/game/objects/items/weapons/tools/wirecutters.dm b/code/game/objects/items/weapons/tools/wirecutters.dm
index 55e4e5dbc8..8191e5b603 100644
--- a/code/game/objects/items/weapons/tools/wirecutters.dm
+++ b/code/game/objects/items/weapons/tools/wirecutters.dm
@@ -26,8 +26,7 @@
tool_qualities = list(TOOL_WIRECUTTER)
var/random_color = TRUE
-<<<<<<< HEAD
-/obj/item/weapon/tool/wirecutters/New()
+/obj/item/weapon/tool/wirecutters/Initialize()
if(random_color)
switch(pick("red","blue","yellow"))
if ("red")
@@ -42,14 +41,7 @@
if (prob(75))
src.pixel_y = rand(0, 16)
- ..()
-=======
-/obj/item/weapon/tool/wirecutters/Initialize()
- if(random_color && prob(50))
- icon_state = "cutters-y"
- item_state = "cutters_yellow"
. = ..()
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
/obj/item/weapon/tool/wirecutters/attack(mob/living/carbon/C as mob, mob/user as mob)
if(istype(C) && user.a_intent == I_HELP && (C.handcuffed) && (istype(C.handcuffed, /obj/item/weapon/handcuffs/cable)))
diff --git a/code/game/objects/structures/electricchair.dm b/code/game/objects/structures/electricchair.dm
index 8376fcb7b3..c934c3098f 100644
--- a/code/game/objects/structures/electricchair.dm
+++ b/code/game/objects/structures/electricchair.dm
@@ -8,11 +8,7 @@
/obj/structure/bed/chair/e_chair/Initialize()
. = ..()
-<<<<<<< HEAD
- add_overlay(image('icons/obj/objects.dmi', src, "echair_over", MOB_LAYER + 1, dir))
-=======
overlays += image('icons/obj/objects.dmi', src, "echair_over", MOB_LAYER + 1, dir)
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
return
/obj/structure/bed/chair/e_chair/attackby(obj/item/weapon/W as obj, mob/user as mob)
diff --git a/code/game/objects/structures/extinguisher.dm b/code/game/objects/structures/extinguisher.dm
index 1f344a8571..8aced5ee42 100644
--- a/code/game/objects/structures/extinguisher.dm
+++ b/code/game/objects/structures/extinguisher.dm
@@ -9,21 +9,13 @@
var/obj/item/weapon/extinguisher/has_extinguisher
var/opened = 0
-<<<<<<< HEAD
-/obj/structure/extinguisher_cabinet/Initialize(var/mapload, var/dir, var/building = 0)
- . = ..()
- if(building)
- pixel_x = (dir & 3)? 0 : (dir == 4 ? -27 : 27)
- pixel_y = (dir & 3)? (dir ==1 ? -27 : 27) : 0
-=======
/obj/structure/extinguisher_cabinet/Initialize(var/ml, var/dir, var/building = 0)
. = ..()
if(building)
pixel_x = (dir & 3)? 0 : (dir == 4 ? -27 : 27)
pixel_y = (dir & 3)? (dir ==1 ? -27 : 27) : 0
update_icon()
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
else
has_extinguisher = new/obj/item/weapon/extinguisher(src)
diff --git a/code/game/objects/structures/mirror.dm b/code/game/objects/structures/mirror.dm
index 9c895ba09a..12c3d828e5 100644
--- a/code/game/objects/structures/mirror.dm
+++ b/code/game/objects/structures/mirror.dm
@@ -11,12 +11,9 @@
var/glass = 1
var/datum/tgui_module/appearance_changer/mirror/M
-<<<<<<< HEAD
-/obj/structure/mirror/Initialize(mapload, var/dir, var/building = 0, mob/user as mob)
-=======
+
/obj/structure/mirror/Initialize(var/ml, var/dir, var/building = 0, mob/user as mob)
. = ..()
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
M = new(src, null)
if(building)
glass = 0
diff --git a/code/game/objects/structures/simple_doors.dm b/code/game/objects/structures/simple_doors.dm
index 85c9f489fa..a66117b87c 100644
--- a/code/game/objects/structures/simple_doors.dm
+++ b/code/game/objects/structures/simple_doors.dm
@@ -22,12 +22,15 @@
hardness -= material.combustion_effect(get_turf(src),temperature, 0.3)
CheckHardness()
-<<<<<<< HEAD
/obj/structure/simple_door/Initialize(mapload, var/material_name)
. = ..()
- set_material(material_name)
+ if(material_name && !material)
+ material = material_name
+ else if(!material)
+ material = DEFAULT_WALL_MATERIAL
if(!material)
return INITIALIZE_HINT_QDEL
+ material = get_material_by_name(material)
/obj/structure/simple_door/Destroy()
STOP_PROCESSING(SSobj, src)
@@ -40,17 +43,6 @@
material = get_material_by_name(material_name)
if(!material)
return
-=======
-/obj/structure/simple_door/Initialize(var/ml, var/material_name)
- . = ..()
- if(material_name && !material)
- material = material_name
- else if(!material)
- material = DEFAULT_WALL_MATERIAL
- if(!material)
- return INITIALIZE_HINT_QDEL
- material = get_material_by_name(material)
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
hardness = max(1,round(material.integrity/10))
icon_state = material.door_icon_base
name = "[material.display_name] door"
@@ -229,44 +221,15 @@
return
SSradiation.radiate(src, round(material.radioactivity/3))
-<<<<<<< HEAD
-/obj/structure/simple_door/iron/Initialize(mapload,var/material_name)
- ..(mapload, material_name || "iron")
-
-/obj/structure/simple_door/silver/Initialize(mapload,var/material_name)
- ..(mapload, material_name || "silver")
-
-/obj/structure/simple_door/gold/Initialize(mapload,var/material_name)
- ..(mapload, material_name || "gold")
-
-/obj/structure/simple_door/uranium/Initialize(mapload,var/material_name)
- ..(mapload, material_name || "uranium")
-
-/obj/structure/simple_door/sandstone/Initialize(mapload,var/material_name)
- ..(mapload, material_name || "sandstone")
-
-/obj/structure/simple_door/phoron/Initialize(mapload,var/material_name)
- ..(mapload, material_name || "phoron")
-
-/obj/structure/simple_door/diamond/Initialize(mapload,var/material_name)
- ..(mapload, material_name || "diamond")
-
-/obj/structure/simple_door/wood/Initialize(mapload,var/material_name)
- ..(mapload, material_name || MAT_WOOD)
+/obj/structure/simple_door/wood/Initialize(mapload)
knock_sound = 'sound/machines/door/knock_wood.wav'
-/obj/structure/simple_door/hardwood/Initialize(mapload,var/material_name)
- ..(mapload, material_name || MAT_HARDWOOD)
+/obj/structure/simple_door/hardwood/Initialize(mapload)
+ knock_sound = 'sound/machines/door/knock_wood.wav'
-/obj/structure/simple_door/sifwood/Initialize(mapload,var/material_name)
- ..(mapload, material_name || MAT_SIFWOOD)
+/obj/structure/simple_door/sifwood/Initialize(mapload)
+ knock_sound = 'sound/machines/door/knock_wood.wav'
-/obj/structure/simple_door/resin/Initialize(mapload,var/material_name)
- ..(mapload, material_name || "resin")
-
-/obj/structure/simple_door/cult/Initialize(mapload,var/material_name)
- ..(mapload, material_name || "cult")
-=======
/obj/structure/simple_door/iron
material = MAT_IRON
@@ -291,6 +254,9 @@
/obj/structure/simple_door/wood
material = MAT_WOOD
+/obj/structure/simple_door/hardwood
+ material = MAT_HARDWOOD
+
/obj/structure/simple_door/sifwood
material = MAT_SIFWOOD
@@ -299,7 +265,6 @@
/obj/structure/simple_door/cult
material = "cult"
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
/obj/structure/simple_door/cult/TryToSwitchState(atom/user)
if(isliving(user))
diff --git a/code/game/objects/structures/stool_bed_chair_nest/bed.dm b/code/game/objects/structures/stool_bed_chair_nest/bed.dm
index ef28b7ef20..d940635506 100644
--- a/code/game/objects/structures/stool_bed_chair_nest/bed.dm
+++ b/code/game/objects/structures/stool_bed_chair_nest/bed.dm
@@ -22,14 +22,8 @@
var/base_icon = "bed"
var/applies_material_colour = 1
-<<<<<<< HEAD
-/obj/structure/bed/New(var/newloc, var/new_material, var/new_padding_material)
- ..(newloc)
- color = null
-=======
/obj/structure/bed/Initialize(var/ml, var/new_material, var/new_padding_material)
. = ..(ml)
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
if(!new_material)
new_material = MAT_STEEL
material = get_material_by_name(new_material)
diff --git a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm
index daa453505e..d288041542 100644
--- a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm
+++ b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm
@@ -210,13 +210,8 @@
return
..()
-<<<<<<< HEAD
-/obj/structure/bed/chair/wood/New(var/newloc)
- ..(newloc, "wood")
-=======
/obj/structure/bed/chair/wood/Initialize(var/ml, var/newmaterial)
. = ..(ml, MAT_WOOD)
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
/obj/structure/bed/chair/wood/wings
icon_state = "wooden_chair_wings"
diff --git a/code/game/objects/structures/stool_bed_chair_nest/stools.dm b/code/game/objects/structures/stool_bed_chair_nest/stools.dm
index 2ad566a344..331b5222f4 100644
--- a/code/game/objects/structures/stool_bed_chair_nest/stools.dm
+++ b/code/game/objects/structures/stool_bed_chair_nest/stools.dm
@@ -149,8 +149,6 @@ var/global/list/stool_cache = list() //haha stool
remove_padding()
else
..()
-<<<<<<< HEAD
-=======
/obj/item/weapon/stool/barstool
name = "bar stool"
@@ -169,5 +167,4 @@ var/global/list/stool_cache = list() //haha stool
icon_state = "bar_stool_padded_preview" //set for the map
/obj/item/weapon/stool/barstool/padded/Initialize(var/ml, var/new_material)
- . = ..(ml, MAT_STEEL, "carpet")
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
+ . = ..(ml, MAT_STEEL, "carpet")
\ No newline at end of file
diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm
index e4c808d7b4..e7dfeb36d4 100644
--- a/code/game/objects/structures/window.dm
+++ b/code/game/objects/structures/window.dm
@@ -1,4 +1,3 @@
-<<<<<<< HEAD
/obj/structure/window
name = "window"
desc = "A window."
@@ -387,25 +386,28 @@
update_nearby_tiles(need_rebuild=1)
return
-/obj/structure/window/New(Loc, start_dir=null, constructed=0)
- ..()
-
- if (start_dir)
- set_dir(start_dir)
-
- //player-constructed windows
- if (constructed)
- anchored = FALSE
- state = 0
- update_verbs()
-
- health = maxhealth
-
- ini_dir = dir
-
- update_nearby_tiles(need_rebuild=1)
- update_nearby_icons()
-
+/obj/structure/window/Initialize(var/ml, start_dir=null, constructed=0)
+ . = ..()
+
+ if (start_dir)
+ set_dir(start_dir)
+
+ //player-constructed windows
+ if (constructed)
+ anchored = 0
+ state = 0
+ update_verbs()
+
+ health = maxhealth
+
+ ini_dir = dir
+
+ update_nearby_tiles(need_rebuild=1)
+ update_nearby_icons()
+
+ for(var/obj/structure/table/T in view(src, 1))
+ T.update_connections()
+ T.update_icon()
/obj/structure/window/Destroy()
density = FALSE
@@ -695,705 +697,4 @@
to_chat(user, span("notice", "You deconstruct \the [src]."))
qdel(src)
return TRUE
- return FALSE
-=======
-/obj/structure/window
- name = "window"
- desc = "A window."
- icon = 'icons/obj/structures.dmi'
- density = 1
- can_atmos_pass = ATMOS_PASS_PROC
- w_class = ITEMSIZE_NORMAL
-
- layer = WINDOW_LAYER
- pressure_resistance = 4*ONE_ATMOSPHERE
- anchored = 1.0
- flags = ON_BORDER
- var/maxhealth = 14.0
- var/maximal_heat = T0C + 100 // Maximal heat before this window begins taking damage from fire
- var/damage_per_fire_tick = 2.0 // Amount of damage per fire tick. Regular windows are not fireproof so they might as well break quickly.
- var/health
- var/force_threshold = 0
- var/ini_dir = null
- var/state = 2
- var/reinf = 0
- var/basestate
- var/shardtype = /obj/item/weapon/material/shard
- var/glasstype = null // Set this in subtypes. Null is assumed strange or otherwise impossible to dismantle, such as for shuttle glass.
- var/silicate = 0 // number of units of silicate
- var/fulltile = FALSE // Set to true on full-tile variants.
-
-/obj/structure/window/examine(mob/user)
- . = ..()
-
- if(health == maxhealth)
- . += "It looks fully intact."
- else
- var/perc = health / maxhealth
- if(perc > 0.75)
- . += "It has a few cracks."
- else if(perc > 0.5)
- . += "It looks slightly damaged."
- else if(perc > 0.25)
- . += "It looks moderately damaged."
- else
- . += "It looks heavily damaged."
- if(silicate)
- if (silicate < 30)
- . += "It has a thin layer of silicate."
- else if (silicate < 70)
- . += "It is covered in silicate."
- else
- . += "There is a thick layer of silicate covering it."
-
-/obj/structure/window/examine_icon()
- return icon(icon=initial(icon),icon_state=initial(icon_state))
-
-/obj/structure/window/take_damage(var/damage = 0, var/sound_effect = 1)
- var/initialhealth = health
-
- if(silicate)
- damage = damage * (1 - silicate / 200)
-
- health = max(0, health - damage)
-
- if(health <= 0)
- shatter()
- else
- if(sound_effect)
- playsound(src, 'sound/effects/Glasshit.ogg', 100, 1)
- if(health < maxhealth / 4 && initialhealth >= maxhealth / 4)
- visible_message("[src] looks like it's about to shatter!" )
- update_icon()
- else if(health < maxhealth / 2 && initialhealth >= maxhealth / 2)
- visible_message("[src] looks seriously damaged!" )
- update_icon()
- else if(health < maxhealth * 3/4 && initialhealth >= maxhealth * 3/4)
- visible_message("Cracks begin to appear in [src]!" )
- update_icon()
- return
-
-/obj/structure/window/proc/apply_silicate(var/amount)
- if(health < maxhealth) // Mend the damage
- health = min(health + amount * 3, maxhealth)
- if(health == maxhealth)
- visible_message("[src] looks fully repaired." )
- else // Reinforce
- silicate = min(silicate + amount, 100)
- updateSilicate()
-
-/obj/structure/window/proc/updateSilicate()
- if (overlays)
- overlays.Cut()
- update_icon()
-
- var/image/img = image(src)
- img.color = "#ffffff"
- img.alpha = silicate * 255 / 100
- overlays += img
-
-/obj/structure/window/proc/shatter(var/display_message = 1)
- playsound(src, "shatter", 70, 1)
- if(display_message)
- visible_message("[src] shatters!")
- new shardtype(loc)
- if(reinf)
- new /obj/item/stack/rods(loc)
- if(is_fulltile())
- new shardtype(loc) //todo pooling?
- if(reinf)
- new /obj/item/stack/rods(loc)
- qdel(src)
- return
-
-
-/obj/structure/window/bullet_act(var/obj/item/projectile/Proj)
-
- var/proj_damage = Proj.get_structure_damage()
- if(!proj_damage) return
-
- ..()
- take_damage(proj_damage)
- return
-
-
-/obj/structure/window/ex_act(severity)
- switch(severity)
- if(1.0)
- qdel(src)
- return
- if(2.0)
- shatter(0)
- return
- if(3.0)
- if(prob(50))
- shatter(0)
- return
-
-/obj/structure/window/blob_act()
- take_damage(50)
-
-/obj/structure/window/CanPass(atom/movable/mover, turf/target)
- if(istype(mover) && mover.checkpass(PASSGLASS))
- return TRUE
- if(is_fulltile())
- return FALSE //full tile window, you can't move into it!
- if((get_dir(loc, target) & dir) || (get_dir(mover, target) == turn(dir, 180)))
- return !density
- else
- return TRUE
-
-/obj/structure/window/CanZASPass(turf/T, is_zone)
- if(is_fulltile() || get_dir(T, loc) == turn(dir, 180)) // Make sure we're handling the border correctly.
- return !anchored // If it's anchored, it'll block air.
- return TRUE // Don't stop airflow from the other sides.
-
-/obj/structure/window/CheckExit(atom/movable/O as mob|obj, target as turf)
- if(istype(O) && O.checkpass(PASSGLASS))
- return 1
- if(get_dir(O.loc, target) == dir)
- return 0
- return 1
-
-/obj/structure/window/hitby(AM as mob|obj)
- ..()
- visible_message("[src] was hit by [AM].")
- var/tforce = 0
- if(ismob(AM))
- tforce = 40
- else if(isobj(AM))
- var/obj/item/I = AM
- tforce = I.throwforce
- if(reinf) tforce *= 0.25
- if(health - tforce <= 7 && !reinf)
- anchored = 0
- update_verbs()
- update_nearby_icons()
- step(src, get_dir(AM, src))
- take_damage(tforce)
-
-/obj/structure/window/attack_tk(mob/user as mob)
- user.visible_message("Something knocks on [src].")
- playsound(src, 'sound/effects/Glasshit.ogg', 50, 1)
-
-/obj/structure/window/attack_hand(mob/user as mob)
- user.setClickCooldown(user.get_attack_speed())
- if(HULK in user.mutations)
- user.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!"))
- user.visible_message("[user] smashes through [src]!")
- user.do_attack_animation(src)
- shatter()
-
- else if (usr.a_intent == I_HURT)
-
- if (istype(usr,/mob/living/carbon/human))
- var/mob/living/carbon/human/H = usr
- if(H.species.can_shred(H))
- attack_generic(H,25)
- return
-
- playsound(src, 'sound/effects/glassknock.ogg', 80, 1)
- user.do_attack_animation(src)
- usr.visible_message("\The [usr] bangs against \the [src]!",
- "You bang against \the [src]!",
- "You hear a banging sound.")
- else
- playsound(src, 'sound/effects/glassknock.ogg', 80, 1)
- usr.visible_message("[usr.name] knocks on the [src.name].",
- "You knock on the [src.name].",
- "You hear a knocking sound.")
- return
-
-/obj/structure/window/attack_generic(var/mob/user, var/damage)
- user.setClickCooldown(user.get_attack_speed())
- if(!damage)
- return
- if(damage >= STRUCTURE_MIN_DAMAGE_THRESHOLD)
- visible_message("[user] smashes into [src]!")
- if(reinf)
- damage = damage / 2
- take_damage(damage)
- else
- visible_message("\The [user] bonks \the [src] harmlessly.")
- user.do_attack_animation(src)
- return 1
-
-/obj/structure/window/attackby(obj/item/W as obj, mob/user as mob)
- if(!istype(W)) return//I really wish I did not need this
-
- // Fixing.
- if(istype(W, /obj/item/weapon/weldingtool) && user.a_intent == I_HELP)
- var/obj/item/weapon/weldingtool/WT = W
- if(health < maxhealth)
- if(WT.remove_fuel(1 ,user))
- to_chat(user, "You begin repairing [src]...")
- playsound(src, WT.usesound, 50, 1)
- if(do_after(user, 40 * WT.toolspeed, target = src))
- health = maxhealth
- // playsound(src, 'sound/items/Welder.ogg', 50, 1)
- update_icon()
- to_chat(user, "You repair [src].")
- else
- to_chat(user, "[src] is already in good condition!")
- return
-
- // Slamming.
- if (istype(W, /obj/item/weapon/grab) && get_dist(src,user)<2)
- var/obj/item/weapon/grab/G = W
- if(istype(G.affecting,/mob/living))
- var/mob/living/M = G.affecting
- var/state = G.state
- qdel(W) //gotta delete it here because if window breaks, it won't get deleted
- switch (state)
- if(1)
- M.visible_message("[user] slams [M] against \the [src]!")
- M.apply_damage(7)
- hit(10)
- if(2)
- M.visible_message("[user] bashes [M] against \the [src]!")
- if (prob(50))
- M.Weaken(1)
- M.apply_damage(10)
- hit(25)
- if(3)
- M.visible_message("[user] crushes [M] against \the [src]!")
- M.Weaken(5)
- M.apply_damage(20)
- hit(50)
- return
-
- if(W.flags & NOBLUDGEON) return
-
- if(W.is_screwdriver())
- if(reinf && state >= 1)
- state = 3 - state
- update_nearby_icons()
- playsound(src, W.usesound, 75, 1)
- to_chat(user, "You have [state == 1 ? "un" : ""]fastened the window [state ? "from" : "to"] the frame.")
- else if(reinf && state == 0)
- anchored = !anchored
- update_nearby_icons()
- update_verbs()
- playsound(src, W.usesound, 75, 1)
- to_chat(user, "You have [anchored ? "" : "un"]fastened the frame [anchored ? "to" : "from"] the floor.")
- else if(!reinf)
- anchored = !anchored
- update_nearby_icons()
- update_verbs()
- playsound(src, W.usesound, 75, 1)
- to_chat(user, "You have [anchored ? "" : "un"]fastened the window [anchored ? "to" : "from"] the floor.")
- else if(W.is_crowbar() && reinf && state <= 1)
- state = 1 - state
- playsound(src, W.usesound, 75, 1)
- to_chat(user, "You have pried the window [state ? "into" : "out of"] the frame.")
- else if(W.is_wrench() && !anchored && (!state || !reinf))
- if(!glasstype)
- to_chat(user, "You're not sure how to dismantle \the [src] properly.")
- else
- playsound(src, W.usesound, 75, 1)
- visible_message("[user] dismantles \the [src].")
- var/obj/item/stack/material/mats = new glasstype(loc)
- if(is_fulltile())
- mats.amount = 4
- qdel(src)
- else if(istype(W, /obj/item/stack/cable_coil) && reinf && state == 0 && !istype(src, /obj/structure/window/reinforced/polarized))
- var/obj/item/stack/cable_coil/C = W
- if (C.use(1))
- playsound(src, 'sound/effects/sparks1.ogg', 75, 1)
- user.visible_message( \
- "\The [user] begins to wire \the [src] for electrochromic tinting.", \
- "You begin to wire \the [src] for electrochromic tinting.", \
- "You hear sparks.")
- if(do_after(user, 20 * C.toolspeed, src) && state == 0)
- playsound(src, 'sound/items/Deconstruct.ogg', 50, 1)
- var/obj/structure/window/reinforced/polarized/P = new(loc, dir)
- if(is_fulltile())
- P.fulltile = TRUE
- P.icon_state = "fwindow"
- P.maxhealth = maxhealth
- P.health = health
- P.state = state
- P.anchored = anchored
- qdel(src)
- else if(istype(W,/obj/item/frame) && anchored)
- var/obj/item/frame/F = W
- F.try_build(src, user)
- else
- user.setClickCooldown(user.get_attack_speed(W))
- if(W.damtype == BRUTE || W.damtype == BURN)
- user.do_attack_animation(src)
- hit(W.force)
- if(health <= 7)
- anchored = 0
- update_nearby_icons()
- step(src, get_dir(user, src))
- else
- playsound(src, 'sound/effects/Glasshit.ogg', 75, 1)
- ..()
- return
-
-/obj/structure/window/proc/hit(var/damage, var/sound_effect = 1)
- if(damage < force_threshold || force_threshold < 0)
- return
- if(reinf) damage *= 0.5
- take_damage(damage)
- return
-
-
-/obj/structure/window/verb/rotate_counterclockwise()
- set name = "Rotate Window Counterclockwise"
- set category = "Object"
- set src in oview(1)
-
- if(usr.incapacitated())
- return 0
-
- if(is_fulltile())
- return 0
-
- if(anchored)
- to_chat(usr, "It is fastened to the floor therefore you can't rotate it!")
- return 0
-
- update_nearby_tiles(need_rebuild=1) //Compel updates before
- src.set_dir(turn(src.dir, 90))
- updateSilicate()
- update_nearby_tiles(need_rebuild=1)
- return
-
-
-/obj/structure/window/verb/rotate_clockwise()
- set name = "Rotate Window Clockwise"
- set category = "Object"
- set src in oview(1)
-
- if(usr.incapacitated())
- return 0
-
- if(is_fulltile())
- return 0
-
- if(anchored)
- to_chat(usr, "It is fastened to the floor therefore you can't rotate it!")
- return 0
-
- update_nearby_tiles(need_rebuild=1) //Compel updates before
- src.set_dir(turn(src.dir, 270))
- updateSilicate()
- update_nearby_tiles(need_rebuild=1)
- return
-
-/obj/structure/window/Initialize(var/ml, start_dir=null, constructed=0)
- . = ..()
-
- if (start_dir)
- set_dir(start_dir)
-
- //player-constructed windows
- if (constructed)
- anchored = 0
- state = 0
- update_verbs()
-
- health = maxhealth
-
- ini_dir = dir
-
- update_nearby_tiles(need_rebuild=1)
- update_nearby_icons()
-
- for(var/obj/structure/table/T in view(src, 1))
- T.update_connections()
- T.update_icon()
-
-/obj/structure/window/Destroy()
- density = 0
- update_nearby_tiles()
- var/turf/location = loc
- . = ..()
- for(var/obj/structure/window/W in orange(location, 1))
- W.update_icon()
- for(var/obj/structure/table/T in view(location, 1))
- T.update_connections()
- T.update_icon()
-
-/obj/structure/window/Move()
- var/ini_dir = dir
- update_nearby_tiles(need_rebuild=1)
- var/oldloc = loc
- . = ..()
- set_dir(ini_dir)
- update_nearby_tiles(need_rebuild=1)
- if(loc != oldloc)
- for(var/obj/structure/table/T in view(oldloc, 1) | view(loc, 1))
- T.update_connections()
- T.update_icon()
-
-//checks if this window is full-tile one
-/obj/structure/window/proc/is_fulltile()
- return fulltile
-
-/obj/structure/window/is_between_turfs(var/turf/origin, var/turf/target)
- if(fulltile)
- return TRUE
- return ..()
-
-//This proc is used to update the icons of nearby windows. It should not be confused with update_nearby_tiles(), which is an atmos proc!
-/obj/structure/window/proc/update_nearby_icons()
- update_icon()
- for(var/obj/structure/window/W in orange(src, 1))
- W.update_icon()
-
-//Updates the availabiliy of the rotation verbs
-/obj/structure/window/proc/update_verbs()
- if(anchored || is_fulltile())
- verbs -= /obj/structure/window/verb/rotate_counterclockwise
- verbs -= /obj/structure/window/verb/rotate_clockwise
- else if(!is_fulltile())
- verbs += /obj/structure/window/verb/rotate_counterclockwise
- verbs += /obj/structure/window/verb/rotate_clockwise
-
-//merges adjacent full-tile windows into one (blatant ripoff from game/smoothwall.dm)
-/obj/structure/window/update_icon()
- //A little cludge here, since I don't know how it will work with slim windows. Most likely VERY wrong.
- //this way it will only update full-tile ones
- overlays.Cut()
- if(!is_fulltile())
- // Rotate the sprite somewhat so non-fulltiled windows can be seen as needing repair.
- var/full_tilt_degrees = 15
- var/tilt_to_apply = abs((health / maxhealth) - 1)
- if(tilt_to_apply && prob(50))
- tilt_to_apply = -tilt_to_apply
- adjust_rotation(LERP(0, full_tilt_degrees, tilt_to_apply))
-
- icon_state = "[basestate]"
- return
- var/list/dirs = list()
- if(anchored)
- for(var/obj/structure/window/W in orange(src,1))
- if(W.anchored && W.density && W.glasstype == src.glasstype && W.is_fulltile()) //Only counts anchored, not-destroyed fill-tile windows.
- dirs += get_dir(src, W)
-
- var/list/connections = dirs_to_corner_states(dirs)
-
- icon_state = ""
- for(var/i = 1 to 4)
- var/image/I = image(icon, "[basestate][connections[i]]", dir = 1<<(i-1))
- overlays += I
-
- // Damage overlays.
- var/ratio = health / maxhealth
- ratio = CEILING(ratio * 4, 1) * 25
-
- if(ratio > 75)
- return
- var/image/I = image(icon, "damage[ratio]", layer = layer + 0.1)
- overlays += I
-
- return
-
-/obj/structure/window/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
- if(exposed_temperature > maximal_heat)
- hit(damage_per_fire_tick, 0)
- ..()
-
-
-
-/obj/structure/window/basic
- desc = "It looks thin and flimsy. A few knocks with... almost anything, really should shatter it."
- icon_state = "window"
- basestate = "window"
- glasstype = /obj/item/stack/material/glass
- maximal_heat = T0C + 100
- damage_per_fire_tick = 2.0
- maxhealth = 12.0
- force_threshold = 3
-
-/obj/structure/window/basic/full
- icon_state = "window-full"
- maxhealth = 24
- fulltile = TRUE
-
-/obj/structure/window/phoronbasic
- name = "phoron window"
- desc = "A borosilicate alloy window. It seems to be quite strong."
- basestate = "phoronwindow"
- icon_state = "phoronwindow"
- shardtype = /obj/item/weapon/material/shard/phoron
- glasstype = /obj/item/stack/material/glass/phoronglass
- maximal_heat = T0C + 2000
- damage_per_fire_tick = 1.0
- maxhealth = 40.0
- force_threshold = 5
-
-/obj/structure/window/phoronbasic/full
- icon_state = "phoronwindow-full"
- maxhealth = 80
- fulltile = TRUE
-
-/obj/structure/window/phoronreinforced
- name = "reinforced borosilicate window"
- desc = "A borosilicate alloy window, with rods supporting it. It seems to be very strong."
- basestate = "phoronrwindow"
- icon_state = "phoronrwindow"
- shardtype = /obj/item/weapon/material/shard/phoron
- glasstype = /obj/item/stack/material/glass/phoronrglass
- reinf = 1
- maximal_heat = T0C + 4000
- damage_per_fire_tick = 1.0 // This should last for 80 fire ticks if the window is not damaged at all. The idea is that borosilicate windows have something like ablative layer that protects them for a while.
- maxhealth = 80.0
- force_threshold = 10
-
-/obj/structure/window/phoronreinforced/full
- icon_state = "phoronrwindow-full"
- maxhealth = 160
- fulltile = TRUE
-
-/obj/structure/window/reinforced
- name = "reinforced window"
- desc = "It looks rather strong. Might take a few good hits to shatter it."
- icon_state = "rwindow"
- basestate = "rwindow"
- maxhealth = 40.0
- reinf = 1
- maximal_heat = T0C + 750
- damage_per_fire_tick = 2.0
- glasstype = /obj/item/stack/material/glass/reinforced
- force_threshold = 6
-
-/obj/structure/window/reinforced/full
- icon_state = "rwindow-full"
- maxhealth = 80
- fulltile = TRUE
-
-/obj/structure/window/reinforced/tinted
- name = "tinted window"
- desc = "It looks rather strong and opaque. Might take a few good hits to shatter it."
- icon_state = "twindow"
- basestate = "twindow"
- opacity = 1
-
-/obj/structure/window/reinforced/tinted/frosted
- name = "frosted window"
- desc = "It looks rather strong and frosted over. Looks like it might take a few less hits then a normal reinforced window."
- icon_state = "fwindow"
- basestate = "fwindow"
- maxhealth = 30
- force_threshold = 5
-
-/obj/structure/window/shuttle
- name = "shuttle window"
- desc = "It looks rather strong. Might take a few good hits to shatter it."
- icon = 'icons/obj/podwindows.dmi'
- icon_state = "window"
- basestate = "window"
- maxhealth = 40
- reinf = 1
- basestate = "w"
- dir = 5
- force_threshold = 7
-
-/obj/structure/window/reinforced/polarized
- name = "electrochromic window"
- desc = "Adjusts its tint with voltage. Might take a few good hits to shatter it."
- var/id
-
-/obj/structure/window/reinforced/polarized/full
- icon_state = "rwindow-full"
- maxhealth = 80
- fulltile = TRUE
-
-/obj/structure/window/reinforced/polarized/attackby(obj/item/W as obj, mob/user as mob)
- if(istype(W, /obj/item/device/multitool) && !anchored) // Only allow programming if unanchored!
- var/obj/item/device/multitool/MT = W
- // First check if they have a windowtint button buffered
- if(istype(MT.connectable, /obj/machinery/button/windowtint))
- var/obj/machinery/button/windowtint/buffered_button = MT.connectable
- src.id = buffered_button.id
- to_chat(user, "\The [src] is linked to \the [buffered_button].")
- return TRUE
- // Otherwise fall back to asking them
- var/t = sanitizeSafe(input(user, "Enter the ID for the window.", src.name, null), MAX_NAME_LEN)
- if (!t && user.get_active_hand() != W && in_range(src, user))
- src.id = t
- to_chat(user, "The new ID of \the [src] is [id]")
- return TRUE
- . = ..()
-
-/obj/structure/window/reinforced/polarized/proc/toggle()
- if(opacity)
- animate(src, color="#FFFFFF", time=5)
- set_opacity(0)
- else
- animate(src, color="#222222", time=5)
- set_opacity(1)
-
-
-
-/obj/machinery/button/windowtint
- name = "window tint control"
- icon = 'icons/obj/power.dmi'
- icon_state = "light0"
- desc = "A remote control switch for polarized windows."
- var/range = 7
-
-/obj/machinery/button/windowtint/attack_hand(mob/user as mob)
- if(..())
- return 1
-
- toggle_tint()
-
-/obj/machinery/button/windowtint/proc/toggle_tint()
- use_power(5)
-
- active = !active
- update_icon()
-
- for(var/obj/structure/window/reinforced/polarized/W in range(src,range))
- if (W.id == src.id || !W.id)
- spawn(0)
- W.toggle()
- return
-
-/obj/machinery/button/windowtint/power_change()
- ..()
- if(active && !powered(power_channel))
- toggle_tint()
-
-/obj/machinery/button/windowtint/update_icon()
- icon_state = "light[active]"
-
-/obj/machinery/button/windowtint/attackby(obj/item/W as obj, mob/user as mob)
- if(istype(W, /obj/item/device/multitool))
- var/obj/item/device/multitool/MT = W
- if(!id)
- // If no ID is set yet (newly built button?) let them select an ID for first-time use!
- var/t = sanitizeSafe(input(user, "Enter an ID for \the [src].", src.name, null), MAX_NAME_LEN)
- if (t && user.get_active_hand() != W && in_range(src, user))
- src.id = t
- to_chat(user, "The new ID of \the [src] is [id]")
- if(id)
- // It already has an ID (or they just set one), buffer it for copying to windows.
- to_chat(user, "You store \the [src] in \the [MT]'s buffer!")
- MT.connectable = src
- MT.update_icon()
- return TRUE
- . = ..()
-
-/obj/structure/window/rcd_values(mob/living/user, obj/item/weapon/rcd/the_rcd, passed_mode)
- switch(passed_mode)
- if(RCD_DECONSTRUCT)
- return list(
- RCD_VALUE_MODE = RCD_DECONSTRUCT,
- RCD_VALUE_DELAY = 5 SECONDS,
- RCD_VALUE_COST = RCD_SHEETS_PER_MATTER_UNIT * 5
- )
-
-/obj/structure/window/rcd_act(mob/living/user, obj/item/weapon/rcd/the_rcd, passed_mode)
- switch(passed_mode)
- if(RCD_DECONSTRUCT)
- to_chat(user, span("notice", "You deconstruct \the [src]."))
- qdel(src)
- return TRUE
- return FALSE
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
+ return FALSE
\ No newline at end of file
diff --git a/code/game/turfs/simulated/wall_icon.dm b/code/game/turfs/simulated/wall_icon.dm
index f62aa04c63..5c1e4ef5af 100644
--- a/code/game/turfs/simulated/wall_icon.dm
+++ b/code/game/turfs/simulated/wall_icon.dm
@@ -94,30 +94,23 @@
img.alpha = (i * alpha_inc) - 1
damage_overlays[i] = img
-
/turf/simulated/wall/proc/update_connections(propagate = 0)
if(!istype(material))
return
var/list/dirs = list()
-<<<<<<< HEAD
- var/inrange = orange(src, 1)
- for(var/turf/simulated/wall/W in inrange)
- if(!W.material)
-=======
for(var/turf/simulated/wall/W in orange(src, 1))
if(!istype(W.material))
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
continue
if(propagate)
W.update_connections()
W.update_icon()
if(can_join_with_wall(W))
dirs += get_dir(src, W)
- for(var/obj/structure/low_wall/WF in inrange)
+ for(var/obj/structure/low_wall/WF in orange(src, 1))
if(can_join_with_low_wall(WF))
dirs += get_dir(src, WF)
- special_wall_connections(dirs, inrange)
+ special_wall_connections(dirs, orange(src, 1))
wall_connections = dirs_to_corner_states(dirs)
/turf/simulated/wall/proc/special_wall_connections(list/dirs, list/inrange)
@@ -133,7 +126,6 @@
if ((additional_dirs & diag_dir) == diag_dir)
dirs += diag_dir
-<<<<<<< HEAD
/turf/simulated/wall/proc/can_join_with_wall(var/turf/simulated/wall/W)
//No blending if no material
if(!material || !W.material)
@@ -143,12 +135,11 @@
return 1
//Also blend if they have the same iconbase
if(material.icon_base == W.material.icon_base)
-=======
- wall_connections = dirs_to_corner_states(dirs)
+ return 1
+ return 0
/turf/simulated/wall/proc/can_join_with(var/turf/simulated/wall/W)
if(istype(material) && istype(W.material) && material.icon_base == W.material.icon_base)
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
return 1
return 0
diff --git a/code/game/turfs/simulated/wall_types.dm b/code/game/turfs/simulated/wall_types.dm
index a93d717c81..7eda07602a 100644
--- a/code/game/turfs/simulated/wall_types.dm
+++ b/code/game/turfs/simulated/wall_types.dm
@@ -1,42 +1,5 @@
/turf/simulated/wall/r_wall
icon_state = "rgeneric"
-<<<<<<< HEAD
-/turf/simulated/wall/r_wall/Initialize(mapload)
- . = ..(mapload, "plasteel","plasteel") //3strong
-
-/turf/simulated/wall/shull
- icon_state = "hull-steel"
-/turf/simulated/wall/shull/Initialize(mapload) //Spaaaace ship.
- . = ..(mapload, MAT_STEELHULL, null, MAT_STEELHULL)
-/turf/simulated/wall/rshull
- icon_state = "hull-r_steel"
-/turf/simulated/wall/rshull/Initialize(mapload)
- . = ..(mapload, MAT_STEELHULL, MAT_STEELHULL, MAT_STEELHULL)
-/turf/simulated/wall/pshull
- icon_state = "hull-plasteel"
-/turf/simulated/wall/pshull/Initialize(mapload) //Spaaaace-er ship.
- . = ..(mapload, MAT_PLASTEELHULL, null, MAT_PLASTEELHULL)
-/turf/simulated/wall/rpshull
- icon_state = "hull-r_plasteel"
-/turf/simulated/wall/rpshull/Initialize(mapload)
- . = ..(mapload, MAT_PLASTEELHULL, MAT_PLASTEELHULL, MAT_PLASTEELHULL)
-/turf/simulated/wall/dshull
- icon_state = "hull-durasteel"
-/turf/simulated/wall/dshull/Initialize(mapload) //Spaaaace-est ship.
- . = ..(mapload, MAT_DURASTEELHULL, null, MAT_DURASTEELHULL)
-/turf/simulated/wall/rdshull
- icon_state = "hull-r_durasteel"
-/turf/simulated/wall/rdshull/Initialize(mapload)
- . = ..(mapload, MAT_DURASTEELHULL, MAT_DURASTEELHULL, MAT_DURASTEELHULL)
-/turf/simulated/wall/thull
- icon_state = "hull-titanium"
-/turf/simulated/wall/thull/Initialize(mapload)
- . = ..(mapload, MAT_TITANIUMHULL, null, MAT_TITANIUMHULL)
-/turf/simulated/wall/rthull
- icon_state = "hull-r_titanium"
-/turf/simulated/wall/rthull/Initialize(mapload)
- . = ..(mapload, MAT_TITANIUMHULL, MAT_TITANIUMHULL, MAT_TITANIUMHULL)
-=======
material = MAT_PLASTEEL
reinf_material = MAT_PLASTEEL
@@ -75,7 +38,6 @@
material = MAT_TITANIUMHULL
reinf_material = MAT_TITANIUMHULL
girder_material = MAT_TITANIUMHULL
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
/turf/simulated/wall/cult
name = "cult wall"
@@ -154,16 +116,11 @@
/turf/simulated/wall/wood
material = MAT_WOOD
-<<<<<<< HEAD
-/turf/simulated/wall/hardwood/Initialize(mapload)
- . = ..(mapload, MAT_HARDWOOD)
+/turf/simulated/wall/hardwood
+ material = MAT_HARDWOOD
-/turf/simulated/wall/sifwood/Initialize(mapload)
- . = ..(mapload, MAT_SIFWOOD)
-=======
/turf/simulated/wall/sifwood
material = MAT_SIFWOOD
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
/turf/simulated/wall/log
material = MAT_LOG
@@ -171,6 +128,9 @@
/turf/simulated/wall/log_sif
material = MAT_SIFLOG
+/turf/simulated/wall/log_hard
+ material = MAT_HARDLOG
+
// Shuttle Walls
/turf/simulated/shuttle/wall
name = "autojoin wall"
@@ -342,10 +302,10 @@
/obj/structure/hull_corner
name = "hull corner"
plane = OBJ_PLANE - 1
-
+
icon = 'icons/turf/wall_masks.dmi'
icon_state = "hull_corner"
-
+
anchored = TRUE
density = TRUE
breakable = TRUE
@@ -363,19 +323,19 @@
/obj/structure/hull_corner/proc/update_look()
cut_overlays()
-
+
var/turf/simulated/wall/T
for(var/direction in get_dirs_to_test())
T = get_step(src, direction)
if(!istype(T) || T.material?.icon_base != "hull")
continue
-
+
name = T.name
desc = T.desc
-
+
var/datum/material/B = T.material
var/datum/material/R = T.reinf_material
-
+
if(B?.icon_colour)
color = B.icon_colour
if(R?.icon_colour)
@@ -383,7 +343,7 @@
I.color = R.icon_colour
add_overlay(I)
break
-
+
if(!T)
warning("Hull corner at [x],[y] not placed adjacent to a hull it can find.")
@@ -413,7 +373,7 @@
/turf/simulated/wall/eris/can_join_with_low_wall(var/obj/structure/low_wall/WF)
return istype(WF, /obj/structure/low_wall/eris)
-
+
/turf/simulated/wall/eris/special_wall_connections(list/dirs, list/inrange)
..()
for(var/direction in cardinal)
diff --git a/code/global.dm b/code/global.dm
index bba7c9df2f..cc05120cb6 100644
--- a/code/global.dm
+++ b/code/global.dm
@@ -64,6 +64,7 @@ var/list/latejoin_gateway = list()
var/list/latejoin_elevator = list()
var/list/latejoin_cryo = list()
var/list/latejoin_cyborg = list()
+var/list/latejoin_checkpoint = list()
var/list/prisonwarp = list() // Prisoners go to these
var/list/holdingfacility = list() // Captured people go here
diff --git a/code/modules/blob2/mobs/spore.dm b/code/modules/blob2/mobs/spore.dm
index f3d95ffad4..c6d57ae441 100644
--- a/code/modules/blob2/mobs/spore.dm
+++ b/code/modules/blob2/mobs/spore.dm
@@ -30,11 +30,7 @@
melee_damage_lower = 1
melee_damage_upper = 2
-<<<<<<< HEAD
-/mob/living/simple_mob/hostile/blob/spore/New(var/newloc, var/obj/structure/blob/factory/my_factory)
-=======
-/mob/living/simple_animal/hostile/blob/spore/Initialize(var/ml, var/obj/structure/blob/factory/my_factory)
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
+/mob/living/simple_mob/hostile/blob/spore/Initialize(var/ml, var/obj/structure/blob/factory/my_factory)
if(istype(my_factory))
factory = my_factory
factory.spores += src
diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm
index dd1668b65e..78117c61c1 100644
--- a/code/modules/clothing/clothing.dm
+++ b/code/modules/clothing/clothing.dm
@@ -1,4 +1,3 @@
-<<<<<<< HEAD
/obj/item/clothing
name = "clothing"
siemens_coefficient = 0.9
@@ -34,12 +33,12 @@
gunshot_residue = null
-/obj/item/clothing/New()
- ..()
- if(starting_accessories)
- for(var/T in starting_accessories)
- var/obj/item/clothing/accessory/tie = new T(src)
- src.attach_accessory(null, tie)
+/obj/item/clothing/Initialize()
+ . = ..()
+ if(starting_accessories)
+ for(var/T in starting_accessories)
+ var/obj/item/clothing/accessory/tie = new T(src)
+ src.attach_accessory(null, tie)
set_clothing_index()
//VOREStation edit start
@@ -1055,1053 +1054,4 @@
for(var/mob/living/M in contents)
M.forceMove(get_turf(src))
return ..()
-//Vorestation edit end
-=======
-/obj/item/clothing
- name = "clothing"
- siemens_coefficient = 0.9
- drop_sound = 'sound/items/drop/clothing.ogg'
- pickup_sound = 'sound/items/pickup/clothing.ogg'
- var/list/species_restricted = null //Only these species can wear this kit.
- var/gunshot_residue //Used by forensics.
-
- var/list/accessories
- var/list/valid_accessory_slots
- var/list/restricted_accessory_slots
- var/list/starting_accessories
-
- var/flash_protection = FLASH_PROTECTION_NONE
- var/tint = TINT_NONE
- var/list/enables_planes //Enables these planes in the wearing mob's plane_holder
- var/list/plane_slots //But only if it's equipped into this specific slot
-
- /*
- Sprites used when the clothing item is refit. This is done by setting icon_override.
- For best results, if this is set then sprite_sheets should be null and vice versa, but that is by no means necessary.
- Ideally, sprite_sheets_refit should be used for "hard" clothing items that can't change shape very well to fit the wearer (e.g. helmets, hardsuits),
- while sprite_sheets should be used for "flexible" clothing items that do not need to be refitted (e.g. aliens wearing jumpsuits).
- */
- var/list/sprite_sheets_refit = null
- var/ear_protection = 0
- var/blood_sprite_state
-
- var/index //null by default, if set, will change which dmi it uses
-
- var/update_icon_define = null // Only needed if you've got multiple files for the same type of clothing
-
-
-//Updates the icons of the mob wearing the clothing item, if any.
-/obj/item/clothing/proc/update_clothing_icon()
- return
-
-// Aurora forensics port.
-/obj/item/clothing/clean_blood()
- . = ..()
- gunshot_residue = null
-
-
-/obj/item/clothing/Initialize()
- . = ..()
- if(starting_accessories)
- for(var/T in starting_accessories)
- var/obj/item/clothing/accessory/tie = new T(src)
- src.attach_accessory(null, tie)
- set_clothing_index()
-
-/obj/item/clothing/update_icon()
- overlays.Cut() //This removes all the overlays on the sprite and then goes down a checklist adding them as required.
- if(blood_DNA)
- add_blood()
- . = ..()
-
-/obj/item/clothing/equipped(var/mob/user,var/slot)
- ..()
- if(enables_planes)
- user.recalculate_vis()
-
-/obj/item/clothing/dropped(var/mob/user)
- ..()
- if(enables_planes)
- user.recalculate_vis()
-
-//BS12: Species-restricted clothing check.
-/obj/item/clothing/mob_can_equip(M as mob, slot, disable_warning = FALSE)
-
- //if we can't equip the item anyway, don't bother with species_restricted (cuts down on spam)
- if (!..())
- return 0
-
- if(LAZYLEN(species_restricted) && istype(M,/mob/living/carbon/human))
- var/exclusive = null
- var/wearable = null
- var/mob/living/carbon/human/H = M
-
- if("exclude" in species_restricted)
- exclusive = 1
-
- if(H.species)
- if(exclusive)
- if(!(H.species.get_bodytype(H) in species_restricted))
- wearable = 1
- else
- if(H.species.get_bodytype(H) in species_restricted)
- wearable = 1
-
- if(!wearable && !(slot in list(slot_l_store, slot_r_store, slot_s_store)))
- to_chat(H, "Your species cannot wear [src].")
- return 0
- return 1
-
-/obj/item/clothing/handle_shield(mob/user, var/damage, atom/damage_source = null, mob/attacker = null, var/def_zone = null, var/attack_text = "the attack")
- . = ..()
- if((. == 0) && LAZYLEN(accessories))
- for(var/obj/item/I in accessories)
- var/check = I.handle_shield(user, damage, damage_source, attacker, def_zone, attack_text)
-
- if(check != 0) // Projectiles sometimes use negatives IIRC, 0 is only returned if something is not blocked.
- . = check
- break
-
-// For now, these two temp procs only return TRUE or FALSE if they can provide resistance to a given temperature.
-/obj/item/clothing/proc/handle_low_temperature(var/tempcheck = T20C)
- . = FALSE
- if(LAZYLEN(accessories))
- for(var/obj/item/clothing/C in accessories)
- if(C.handle_low_temperature(tempcheck))
- . = TRUE
-
- if(min_cold_protection_temperature && min_cold_protection_temperature <= tempcheck)
- . = TRUE
-
-/obj/item/clothing/proc/handle_high_temperature(var/tempcheck = T20C)
- . = FALSE
- if(LAZYLEN(accessories))
- for(var/obj/item/clothing/C in accessories)
- if(C.handle_high_temperature(tempcheck))
- . = TRUE
-
- if(max_heat_protection_temperature && max_heat_protection_temperature >= tempcheck)
- . = TRUE
-
-// Returns the relative flag-vars for covered protection.
-/obj/item/clothing/proc/get_cold_protection_flags()
- . = cold_protection
-
- if(LAZYLEN(accessories))
- for(var/obj/item/clothing/C in accessories)
- . |= C.get_cold_protection_flags()
-
-/obj/item/clothing/proc/get_heat_protection_flags()
- . = heat_protection
-
- if(LAZYLEN(accessories))
- for(var/obj/item/clothing/C in accessories)
- . |= C.get_heat_protection_flags()
-
-/obj/item/clothing/proc/refit_for_species(var/target_species)
- if(!species_restricted)
- return //this item doesn't use the species_restricted system
-
- //Set species_restricted list
- switch(target_species)
- if(SPECIES_HUMAN, SPECIES_SKRELL) //humanoid bodytypes
- species_restricted = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_PROMETHEAN) //skrell/humans can wear each other's suits
- else
- species_restricted = list(target_species)
-
- //Set icon
- if (sprite_sheets_refit && (target_species in sprite_sheets_refit))
- sprite_sheets[target_species] = sprite_sheets_refit[target_species]
-
- if (sprite_sheets_obj && (target_species in sprite_sheets_obj))
- icon = sprite_sheets_obj[target_species]
- else
- icon = initial(icon)
-
-/obj/item/clothing/head/helmet/refit_for_species(var/target_species)
- if(!species_restricted)
- return //this item doesn't use the species_restricted system
-
- //Set species_restricted list
- switch(target_species)
- if(SPECIES_SKRELL)
- species_restricted = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_PROMETHEAN) //skrell helmets fit humans too
-
- else
- species_restricted = list(target_species)
-
- //Set icon
- if (sprite_sheets_refit && (target_species in sprite_sheets_refit))
- sprite_sheets[target_species] = sprite_sheets_refit[target_species]
-
- if (sprite_sheets_obj && (target_species in sprite_sheets_obj))
- icon = sprite_sheets_obj[target_species]
- else
- icon = initial(icon)
-
-///////////////////////////////////////////////////////////////////////
-// Ears: headsets, earmuffs and tiny objects
-/obj/item/clothing/ears
- name = "ears"
- w_class = ITEMSIZE_TINY
- throwforce = 2
- slot_flags = SLOT_EARS
- sprite_sheets = list(
- SPECIES_TESHARI = 'icons/mob/species/teshari/ears.dmi')
-
-/obj/item/clothing/ears/attack_hand(mob/user as mob)
- if (!user) return
-
- if (src.loc != user || !istype(user,/mob/living/carbon/human))
- ..()
- return
-
- var/mob/living/carbon/human/H = user
- if(H.l_ear != src && H.r_ear != src)
- ..()
- return
-
- if(!canremove)
- return
-
- var/obj/item/clothing/ears/O
- if(slot_flags & SLOT_TWOEARS )
- O = (H.l_ear == src ? H.r_ear : H.l_ear)
- user.u_equip(O)
- if(!istype(src,/obj/item/clothing/ears/offear))
- qdel(O)
- O = src
- else
- O = src
-
- user.unEquip(src)
-
- if (O)
- user.put_in_hands(O)
- O.add_fingerprint(user)
-
- if(istype(src,/obj/item/clothing/ears/offear))
- qdel(src)
-
-/obj/item/clothing/ears/update_clothing_icon()
- if (ismob(src.loc))
- var/mob/M = src.loc
- M.update_inv_ears()
-
-/obj/item/clothing/ears/MouseDrop(var/obj/over_object)
- if(ishuman(usr))
- var/mob/living/carbon/human/H = usr
- // If this covers both ears, we want to return the result of unequipping the primary object, and kill the off-ear one
- if(slot_flags & SLOT_TWOEARS)
- var/obj/item/clothing/ears/O = (H.l_ear == src ? H.r_ear : H.l_ear)
- if(istype(src, /obj/item/clothing/ears/offear))
- . = O.MouseDrop(over_object)
- H.drop_from_inventory(src)
- qdel(src)
- else
- . = ..()
- H.drop_from_inventory(O)
- qdel(O)
- else
- . = ..()
-
-
-/obj/item/clothing/ears/offear
- name = "Other ear"
- w_class = ITEMSIZE_HUGE
- icon = 'icons/mob/screen1_Midnight.dmi'
- icon_state = "block"
- slot_flags = SLOT_EARS | SLOT_TWOEARS
-
-/obj/item/clothing/ears/offear/Initialize()
- . = ..()
- var/obj/O = loc
- if(!istype(O))
- return INITIALIZE_HINT_QDEL
- name = O.name
- desc = O.desc
- icon = O.icon
- icon_state = O.icon_state
- set_dir(O.dir)
-
-////////////////////////////////////////////////////////////////////////////////////////
-//Gloves
-/obj/item/clothing/gloves
- name = "gloves"
- item_icons = list(
- slot_l_hand_str = 'icons/mob/items/lefthand_gloves.dmi',
- slot_r_hand_str = 'icons/mob/items/righthand_gloves.dmi',
- )
- gender = PLURAL //Carn: for grammarically correct text-parsing
- w_class = ITEMSIZE_SMALL
- icon = 'icons/obj/clothing/gloves.dmi'
- siemens_coefficient = 0.9
- blood_sprite_state = "bloodyhands"
- var/wired = 0
- var/obj/item/weapon/cell/cell = 0
- var/fingerprint_chance = 0 //How likely the glove is to let fingerprints through
- var/obj/item/clothing/gloves/ring = null //Covered ring
- var/mob/living/carbon/human/wearer = null //Used for covered rings when dropping
- var/glove_level = 2 //What "layer" the glove is on
- var/overgloves = 0 //Used by gauntlets and arm_guards
- var/punch_force = 0 //How much damage do these gloves add to a punch?
- var/punch_damtype = BRUTE //What type of damage does this make fists be?
- body_parts_covered = HANDS
- slot_flags = SLOT_GLOVES
- attack_verb = list("challenged")
- sprite_sheets = list(
- SPECIES_TESHARI = 'icons/mob/species/teshari/gloves.dmi',
- SPECIES_VOX = 'icons/mob/species/vox/gloves.dmi'
- )
- drop_sound = 'sound/items/drop/gloves.ogg'
- pickup_sound = 'sound/items/pickup/gloves.ogg'
-
-/obj/item/clothing/proc/set_clothing_index()
- return
-
-/obj/item/clothing/gloves/update_clothing_icon()
- if (ismob(src.loc))
- var/mob/M = src.loc
- M.update_inv_gloves()
-
-/obj/item/clothing/gloves/emp_act(severity)
- if(cell)
- cell.emp_act(severity)
- if(ring)
- ring.emp_act(severity)
- ..()
-
-// Called just before an attack_hand(), in mob/UnarmedAttack()
-/obj/item/clothing/gloves/proc/Touch(var/atom/A, var/proximity)
- return 0 // return 1 to cancel attack_hand()
-
-/*/obj/item/clothing/gloves/attackby(obj/item/weapon/W, mob/user)
- if(W.is_wirecutter() || istype(W, /obj/item/weapon/scalpel))
- if (clipped)
- to_chat(user, "The [src] have already been clipped!")
- update_icon()
- return
-
- playsound(src, W.usesound, 50, 1)
- user.visible_message("[user] cuts the fingertips off of the [src].","You cut the fingertips off of the [src].")
-
- clipped = 1
- name = "modified [name]"
- desc = "[desc]
They have had the fingertips cut off of them."
- if("exclude" in species_restricted)
- species_restricted -= SPECIES_UNATHI
- species_restricted -= SPECIES_TAJ
- return
-*/
-
-/obj/item/clothing/gloves/clean_blood()
- . = ..()
- transfer_blood = 0
- update_icon()
-
-/obj/item/clothing/gloves/mob_can_equip(mob/user, slot, disable_warning = FALSE)
- var/mob/living/carbon/human/H = user
-
- if(slot && slot == slot_gloves)
- var/obj/item/clothing/gloves/G = H.gloves
- if(istype(G))
- ring = H.gloves
- if(ring.glove_level >= src.glove_level)
- to_chat(user, "You are unable to wear \the [src] as \the [H.gloves] are in the way.")
- ring = null
- return 0
- else
- H.drop_from_inventory(ring) //Remove the ring (or other under-glove item in the hand slot?) so you can put on the gloves.
- ring.forceMove(src)
- to_chat(user, "You slip \the [src] on over \the [src.ring].")
- if(!(flags & THICKMATERIAL))
- punch_force += ring.punch_force
- else
- ring = null
-
- if(!..())
- if(ring) //Put the ring back on if the check fails.
- if(H.equip_to_slot_if_possible(ring, slot_gloves))
- src.ring = null
- punch_force = initial(punch_force)
- return 0
-
- wearer = H //TODO clean this when magboots are cleaned
- return 1
-
-/obj/item/clothing/gloves/dropped()
- ..()
-
- if(!wearer)
- return
-
- var/mob/living/carbon/human/H = wearer
- if(ring && istype(H))
- if(!H.equip_to_slot_if_possible(ring, slot_gloves))
- ring.forceMove(get_turf(src))
- src.ring = null
- punch_force = initial(punch_force)
- wearer = null
-
-/obj/item/clothing/gloves
- var/datum/unarmed_attack/special_attack = null //do the gloves have a special unarmed attack?
- var/special_attack_type = null
-
-/obj/item/clothing/gloves/Initialize()
- . = ..()
- if(special_attack_type && ispath(special_attack_type))
- special_attack = new special_attack_type
-
-
-
-/////////////////////////////////////////////////////////////////////
-//Rings
-
-/obj/item/clothing/gloves/ring
- name = "ring"
- w_class = ITEMSIZE_TINY
- icon = 'icons/obj/clothing/rings.dmi'
- gender = NEUTER
- species_restricted = list("exclude", SPECIES_DIONA)
- siemens_coefficient = 1
- glove_level = 1
- fingerprint_chance = 100
- punch_force = 2
- body_parts_covered = 0
- drop_sound = 'sound/items/drop/ring.ogg'
- pickup_sound = 'sound/items/pickup/ring.ogg'
-
-///////////////////////////////////////////////////////////////////////
-//Head
-/obj/item/clothing/head
- name = "head"
- icon = 'icons/obj/clothing/hats.dmi'
- item_icons = list(
- slot_l_hand_str = 'icons/mob/items/lefthand_hats.dmi',
- slot_r_hand_str = 'icons/mob/items/righthand_hats.dmi',
- )
- body_parts_covered = HEAD
- slot_flags = SLOT_HEAD
- w_class = ITEMSIZE_SMALL
- blood_sprite_state = "helmetblood"
-
- var/light_overlay = "helmet_light"
- var/light_applied
- var/brightness_on
- var/on = 0
- var/image/helmet_light
-
- sprite_sheets = list(
- SPECIES_TESHARI = 'icons/mob/species/teshari/head.dmi',
- SPECIES_VOX = 'icons/mob/species/vox/head.dmi'
- )
- drop_sound = 'sound/items/drop/hat.ogg'
- pickup_sound = 'sound/items/pickup/hat.ogg'
-
-/obj/item/clothing/head/attack_self(mob/user)
- if(brightness_on)
- if(!isturf(user.loc))
- to_chat(user, "You cannot turn the light on while in this [user.loc]")
- return
- on = !on
- to_chat(user, "You [on ? "enable" : "disable"] the helmet light.")
- update_flashlight(user)
- else
- return ..(user)
-
-/obj/item/clothing/head/proc/update_flashlight(var/mob/user = null)
- if(on && !light_applied)
- set_light(brightness_on)
- light_applied = 1
- else if(!on && light_applied)
- set_light(0)
- light_applied = 0
- update_icon(user)
- user.update_action_buttons()
-
-/obj/item/clothing/head/attack_ai(var/mob/user)
- if(!mob_wear_hat(user))
- return ..()
-
-/obj/item/clothing/head/attack_generic(var/mob/user)
- if(!mob_wear_hat(user))
- return ..()
-
-/obj/item/clothing/head/proc/mob_wear_hat(var/mob/user)
- if(!Adjacent(user))
- return 0
- var/success
- if(istype(user, /mob/living/silicon/robot/drone))
- var/mob/living/silicon/robot/drone/D = user
- if(D.hat)
- success = 2
- else
- D.wear_hat(src)
- success = 1
- else if(istype(user, /mob/living/carbon/alien/diona))
- var/mob/living/carbon/alien/diona/D = user
- if(D.hat)
- success = 2
- else
- D.wear_hat(src)
- success = 1
-
- if(!success)
- return 0
- else if(success == 2)
- to_chat(user, "You are already wearing a hat.")
- else if(success == 1)
- to_chat(user, "You crawl under \the [src].")
- return 1
-
-/obj/item/clothing/head/update_icon(var/mob/user)
- var/mob/living/carbon/human/H
- if(ishuman(user))
- H = user
-
- if(on)
- // Generate object icon.
- if(!light_overlay_cache["[light_overlay]_icon"])
- light_overlay_cache["[light_overlay]_icon"] = image(icon = 'icons/obj/light_overlays.dmi', icon_state = "[light_overlay]")
- helmet_light = light_overlay_cache["[light_overlay]_icon"]
- add_overlay(helmet_light)
-
- // Generate and cache the on-mob icon, which is used in update_inv_head().
- var/body_type = (H && H.species.get_bodytype(H))
- var/cache_key = "[light_overlay][body_type && sprite_sheets[body_type] ? "_[body_type]" : ""]"
- if(!light_overlay_cache[cache_key])
- var/use_icon = LAZYACCESS(sprite_sheets,body_type) || 'icons/mob/light_overlays.dmi'
- light_overlay_cache[cache_key] = image(icon = use_icon, icon_state = "[light_overlay]")
-
- else if(helmet_light)
- cut_overlay(helmet_light)
- helmet_light = null
-
- user.update_inv_head() //Will redraw the helmet with the light on the mob
-
-/obj/item/clothing/head/update_clothing_icon()
- if (ismob(src.loc))
- var/mob/M = src.loc
- M.update_inv_head()
-
-///////////////////////////////////////////////////////////////////////
-//Mask
-/obj/item/clothing/mask
- name = "mask"
- icon = 'icons/obj/clothing/masks.dmi'
- item_icons = list(
- slot_l_hand_str = 'icons/mob/items/lefthand_masks.dmi',
- slot_r_hand_str = 'icons/mob/items/righthand_masks.dmi',
- )
- body_parts_covered = HEAD
- slot_flags = SLOT_MASK
- body_parts_covered = FACE|EYES
- blood_sprite_state = "maskblood"
- sprite_sheets = list(
- SPECIES_TESHARI = 'icons/mob/species/teshari/masks.dmi',
- SPECIES_VOX = 'icons/mob/species/vox/masks.dmi',
- SPECIES_TAJ = 'icons/mob/species/tajaran/mask.dmi',
- SPECIES_UNATHI = 'icons/mob/species/unathi/mask.dmi'
- )
-
- var/voicechange = 0
- var/list/say_messages
- var/list/say_verbs
-
- drop_sound = "generic_drop"
- pickup_sound = "generic_pickup"
-
-/obj/item/clothing/mask/update_clothing_icon()
- if (ismob(src.loc))
- var/mob/M = src.loc
- M.update_inv_wear_mask()
-
-/obj/item/clothing/mask/proc/filter_air(datum/gas_mixture/air)
- return
-
-///////////////////////////////////////////////////////////////////////
-//Shoes
-/obj/item/clothing/shoes
- name = "shoes"
- icon = 'icons/obj/clothing/shoes.dmi'
- item_icons = list(
- slot_l_hand_str = 'icons/mob/items/lefthand_shoes.dmi',
- slot_r_hand_str = 'icons/mob/items/righthand_shoes.dmi',
- )
- desc = "Comfortable-looking shoes."
- gender = PLURAL //Carn: for grammarically correct text-parsing
- siemens_coefficient = 0.9
- body_parts_covered = FEET
- slot_flags = SLOT_FEET
- blood_sprite_state = "shoeblood"
-
- var/can_hold_knife = 0
- var/obj/item/holding
-
- var/shoes_under_pants = 0
-
- var/water_speed = 0 //Speed boost/decrease in water, lower/negative values mean more speed
- var/snow_speed = 0 //Speed boost/decrease on snow, lower/negative values mean more speed
- var/rock_climbing = FALSE // If true, allows climbing cliffs with clickdrag.
-
- var/step_volume_mod = 1 //How quiet or loud footsteps in this shoe are
-
- permeability_coefficient = 0.50
- slowdown = SHOES_SLOWDOWN
- force = 2
- var/overshoes = 0
- species_restricted = list("exclude",SPECIES_TESHARI, SPECIES_VOX)
- sprite_sheets = list(
- SPECIES_TESHARI = 'icons/mob/species/teshari/shoes.dmi',
- SPECIES_VOX = 'icons/mob/species/vox/shoes.dmi'
- )
- drop_sound = 'sound/items/drop/shoes.ogg'
- pickup_sound = 'sound/items/pickup/shoes.ogg'
-
-/obj/item/clothing/shoes/proc/draw_knife()
- set name = "Draw Boot Knife"
- set desc = "Pull out your boot knife."
- set category = "IC"
- set src in usr
-
- if(usr.stat || usr.restrained() || usr.incapacitated())
- return
-
- holding.forceMove(get_turf(usr))
-
- if(usr.put_in_hands(holding))
- usr.visible_message("\The [usr] pulls a knife out of their boot!")
- playsound(src, 'sound/weapons/holster/sheathout.ogg', 25)
- holding = null
- overlays -= image(icon, "[icon_state]_knife")
- else
- to_chat(usr, "Your need an empty, unbroken hand to do that.")
- holding.forceMove(src)
-
- if(!holding)
- verbs -= /obj/item/clothing/shoes/proc/draw_knife
-
- update_icon()
- return
-
-/obj/item/clothing/shoes/attack_hand(var/mob/living/M)
- if(can_hold_knife == 1 && holding && src.loc == M)
- draw_knife()
- return
- ..()
-
-/obj/item/clothing/shoes/attackby(var/obj/item/I, var/mob/user)
- if((can_hold_knife == 1) && (istype(I, /obj/item/weapon/material/shard) || \
- istype(I, /obj/item/weapon/material/butterfly) || \
- istype(I, /obj/item/weapon/material/kitchen/utensil) || \
- istype(I, /obj/item/weapon/material/knife/tacknife)))
- if(holding)
- to_chat(user, "\The [src] is already holding \a [holding].")
- return
- user.unEquip(I)
- I.forceMove(src)
- holding = I
- user.visible_message("\The [user] shoves \the [I] into \the [src].")
- verbs |= /obj/item/clothing/shoes/proc/draw_knife
- update_icon()
- else
- return ..()
-
-/obj/item/clothing/shoes/verb/toggle_layer()
- set name = "Switch Shoe Layer"
- set category = "Object"
-
- if(shoes_under_pants == -1)
- to_chat(usr, "\The [src] cannot be worn above your suit!")
- return
- shoes_under_pants = !shoes_under_pants
- update_icon()
-
-/obj/item/clothing/shoes/update_icon()
- . = ..()
- if(holding)
- overlays += image(icon, "[icon_state]_knife")
- if(ismob(usr))
- var/mob/M = usr
- M.update_inv_shoes()
-
-/obj/item/clothing/shoes/clean_blood()
- update_icon()
- return ..()
-
-/obj/item/clothing/shoes/proc/handle_movement(var/turf/walking, var/running)
- return
-
-/obj/item/clothing/shoes/update_clothing_icon()
- if (ismob(src.loc))
- var/mob/M = src.loc
- M.update_inv_shoes()
-
-
-///////////////////////////////////////////////////////////////////////
-//Suit
-/obj/item/clothing/suit
- icon = 'icons/obj/clothing/suits.dmi'
- item_icons = list(
- slot_l_hand_str = 'icons/mob/items/lefthand_suits.dmi',
- slot_r_hand_str = 'icons/mob/items/righthand_suits.dmi',
- )
- name = "suit"
- var/fire_resist = T0C+100
- body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS
- allowed = list(/obj/item/weapon/tank/emergency/oxygen)
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
- slot_flags = SLOT_OCLOTHING
- var/blood_overlay_type = "suit"
- blood_sprite_state = "suitblood" //Defaults to the suit's blood overlay, so that some blood renders instead of no blood.
-
- var/taurized = FALSE
- siemens_coefficient = 0.9
- w_class = ITEMSIZE_NORMAL
- preserve_item = 1
- equip_sound = 'sound/items/jumpsuit_equip.ogg'
-
-
- sprite_sheets = list(
- SPECIES_TESHARI = 'icons/mob/species/teshari/suit.dmi',
- SPECIES_VOX = 'icons/mob/species/vox/suit.dmi'
- )
-
- valid_accessory_slots = (ACCESSORY_SLOT_OVER | ACCESSORY_SLOT_ARMBAND)
- restricted_accessory_slots = (ACCESSORY_SLOT_ARMBAND)
-
-/obj/item/clothing/suit/set_clothing_index()
- ..()
-
- if(index && !icon_override)
- icon = new /icon("icons/obj/clothing/suits_[index].dmi")
- item_icons = list(
- slot_l_hand_str = new /icon("icons/mob/items/lefthand_suits_[index].dmi"),
- slot_r_hand_str = new /icon("icons/mob/items/righthand_suits_[index].dmi"),
- )
-
- return 1
-
- return 0
-
-/obj/item/clothing/suit/update_clothing_icon()
- if (ismob(src.loc))
- var/mob/M = src.loc
- M.update_inv_wear_suit()
-
- set_clothing_index()
-
-/obj/item/clothing/suit/equipped(var/mob/user, var/slot)
- if(ishuman(user))
- var/mob/living/carbon/human/H = user
- if((taurized && !istaurtail(H.tail_style)) || (!taurized && istaurtail(H.tail_style)))
- taurize(user)
-
- return ..()
-
-/obj/item/clothing/suit/proc/taurize(var/mob/living/carbon/human/Taur)
- if(istaurtail(Taur.tail_style))
- var/datum/sprite_accessory/tail/taur/taurtail = Taur.tail_style
- if(taurtail.suit_sprites && (get_worn_icon_state(slot_wear_suit_str) in cached_icon_states(taurtail.suit_sprites)))
- icon_override = taurtail.suit_sprites
- taurized = TRUE
-
- if(!taurized)
- icon_override = initial(icon_override)
- taurized = FALSE
-
-// Taur suits need to be shifted so its centered on their taur half.
-/obj/item/clothing/suit/make_worn_icon(var/body_type,var/slot_name,var/inhands,var/default_icon,var/default_layer = 0,var/icon/clip_mask)
- var/image/standing = ..()
- if(taurized) //Special snowflake var on suits
- standing.pixel_x = -16
- standing.layer = BODY_LAYER + 15 // 15 is above tail layer, so will not be covered by taurbody.
- return standing
-
-/obj/item/clothing/suit/apply_accessories(var/image/standing)
- if(LAZYLEN(accessories) && taurized)
- for(var/obj/item/clothing/accessory/A in accessories)
- var/image/I = new(A.get_mob_overlay())
- I.pixel_x = 16 //Opposite of the pixel_x on the suit (-16) from taurization to cancel it out and puts the accessory in the correct place on the body.
- standing.add_overlay(I)
- else
- return ..()
-
-
-///////////////////////////////////////////////////////////////////////
-//Under clothing
-/obj/item/clothing/under
- icon = 'icons/obj/clothing/uniforms.dmi'
- item_icons = list(
- slot_l_hand_str = 'icons/mob/items/lefthand_uniforms.dmi',
- slot_r_hand_str = 'icons/mob/items/righthand_uniforms.dmi',
- )
- name = "under"
- body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
- permeability_coefficient = 0.90
- slot_flags = SLOT_ICLOTHING
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
- equip_sound = 'sound/items/jumpsuit_equip.ogg'
- w_class = ITEMSIZE_NORMAL
- show_messages = 1
- blood_sprite_state = "uniformblood"
-
- var/has_sensor = 1 //For the crew computer 2 = unable to change mode
- var/sensor_mode = 0
- /*
- 1 = Report living/dead
- 2 = Report detailed damages
- 3 = Report location
- */
- var/displays_id = 1
- var/rolled_down = -1 //0 = unrolled, 1 = rolled, -1 = cannot be toggled
- var/rolled_sleeves = -1 //0 = unrolled, 1 = rolled, -1 = cannot be toggled
- sprite_sheets = list(
- SPECIES_TESHARI = 'icons/mob/species/teshari/uniform.dmi',
- SPECIES_VOX = 'icons/mob/species/vox/uniform.dmi'
- )
-
- //convenience var for defining the icon state for the overlay used when the clothing is worn.
- //Also used by rolling/unrolling.
- var/worn_state = null
- valid_accessory_slots = (\
- ACCESSORY_SLOT_UTILITY\
- |ACCESSORY_SLOT_WEAPON\
- |ACCESSORY_SLOT_ARMBAND\
- |ACCESSORY_SLOT_DECOR\
- |ACCESSORY_SLOT_MEDAL\
- |ACCESSORY_SLOT_INSIGNIA\
- |ACCESSORY_SLOT_TIE\
- |ACCESSORY_SLOT_RANK\
- |ACCESSORY_SLOT_DEPT\
- |ACCESSORY_SLOT_OVER)
- restricted_accessory_slots = (\
- ACCESSORY_SLOT_UTILITY\
- |ACCESSORY_SLOT_WEAPON\
- |ACCESSORY_SLOT_ARMBAND\
- |ACCESSORY_SLOT_TIE\
- |ACCESSORY_SLOT_RANK\
- |ACCESSORY_SLOT_DEPT\
- |ACCESSORY_SLOT_OVER)
-
- var/icon/rolled_down_icon = 'icons/mob/uniform_rolled_down.dmi'
- var/icon/rolled_down_sleeves_icon = 'icons/mob/uniform_sleeves_rolled.dmi'
-
-/obj/item/clothing/under/attack_hand(var/mob/user)
- if(LAZYLEN(accessories))
- ..()
- if ((ishuman(usr) || issmall(usr)) && src.loc == user)
- return
- ..()
-
-/obj/item/clothing/under/Initialize()
- . = ..()
- if(worn_state)
- if(!item_state_slots)
- item_state_slots = list()
- item_state_slots[slot_w_uniform_str] = worn_state
- else
- worn_state = icon_state
-
- //autodetect rollability
- if(rolled_down < 0)
- if(("[worn_state]_d_s" in cached_icon_states(icon)) || ("[worn_state]_s" in cached_icon_states(rolled_down_icon)) || ("[worn_state]_d_s" in cached_icon_states(icon_override)))
- rolled_down = 0
-
- if(rolled_down == -1)
- verbs -= /obj/item/clothing/under/verb/rollsuit
- if(rolled_sleeves == -1)
- verbs -= /obj/item/clothing/under/verb/rollsleeves
-
-/obj/item/clothing/under/set_clothing_index()
- ..()
-
- if(index && !icon_override)
- icon = new /icon("icons/obj/clothing/uniforms_[index].dmi")
-
- item_icons = list(
- slot_l_hand_str = new /icon("icons/mob/items/lefthand_uniforms_[index].dmi"),
- slot_r_hand_str = new /icon("icons/mob/items/righthand_uniforms_[index].dmi"),
- )
-
- rolled_down_icon = new /icon("icons/mob/uniform_rolled_down_[index].dmi")
- rolled_down_sleeves_icon = new /icon("icons/mob/uniform_sleeves_rolled_[index].dmi")
- return 1
-
- return 0
-
-/obj/item/clothing/under/proc/update_rolldown_status()
- var/mob/living/carbon/human/H
- if(istype(src.loc, /mob/living/carbon/human))
- H = src.loc
-
- var/icon/under_icon
- if(icon_override)
- under_icon = icon_override
- else if(H && sprite_sheets && sprite_sheets[H.species.get_bodytype(H)])
- under_icon = sprite_sheets[H.species.get_bodytype(H)]
- else if(item_icons && item_icons[slot_w_uniform_str])
- under_icon = item_icons[slot_w_uniform_str]
- else if ("[worn_state]_s" in cached_icon_states(rolled_down_icon))
- under_icon = rolled_down_icon
-
- // The _s is because the icon update procs append it.
- if((under_icon == rolled_down_icon && ("[worn_state]_s" in cached_icon_states(under_icon))) || ("[worn_state]_d_s" in cached_icon_states(under_icon)))
- if(rolled_down != 1)
- rolled_down = 0
- else
- rolled_down = -1
- if(H) update_clothing_icon()
-
-/obj/item/clothing/under/proc/update_rollsleeves_status()
- var/mob/living/carbon/human/H
- if(istype(src.loc, /mob/living/carbon/human))
- H = src.loc
-
- var/icon/under_icon
- if(icon_override)
- under_icon = icon_override
- else if(H && sprite_sheets && sprite_sheets[H.species.get_bodytype(H)])
- under_icon = sprite_sheets[H.species.get_bodytype(H)]
- else if(item_icons && item_icons[slot_w_uniform_str])
- under_icon = item_icons[slot_w_uniform_str]
- else if ("[worn_state]_s" in cached_icon_states(rolled_down_sleeves_icon))
- under_icon = rolled_down_sleeves_icon
- else if(index)
- under_icon = new /icon("[INV_W_UNIFORM_DEF_ICON]_[index].dmi")
-
- // The _s is because the icon update procs append it.
- if((under_icon == rolled_down_sleeves_icon && ("[worn_state]_s" in cached_icon_states(under_icon))) || ("[worn_state]_r_s" in cached_icon_states(under_icon)))
- if(rolled_sleeves != 1)
- rolled_sleeves = 0
- else
- rolled_sleeves = -1
- if(H) update_clothing_icon()
-
-/obj/item/clothing/under/update_clothing_icon()
- if (ismob(src.loc))
- var/mob/M = src.loc
- M.update_inv_w_uniform()
-
- set_clothing_index()
-
-
-/obj/item/clothing/under/examine(mob/user)
- . = ..()
- switch(src.sensor_mode)
- if(0)
- . += "Its sensors appear to be disabled."
- if(1)
- . += "Its binary life sensors appear to be enabled."
- if(2)
- . += "Its vital tracker appears to be enabled."
- if(3)
- . += "Its vital tracker and tracking beacon appear to be enabled."
-
-/obj/item/clothing/under/proc/set_sensors(mob/usr as mob)
- var/mob/M = usr
- if (istype(M, /mob/observer)) return
- if (usr.stat || usr.restrained()) return
- if(has_sensor >= 2)
- to_chat(usr, "The controls are locked.")
- return 0
- if(has_sensor <= 0)
- to_chat(usr, "This suit does not have any sensors.")
- return 0
-
- var/list/modes = list("Off", "Binary sensors", "Vitals tracker", "Tracking beacon")
- var/switchMode = input("Select a sensor mode:", "Suit Sensor Mode", modes[sensor_mode + 1]) in modes
- if(get_dist(usr, src) > 1)
- to_chat(usr, "You have moved too far away.")
- return
- sensor_mode = modes.Find(switchMode) - 1
-
- if (src.loc == usr)
- switch(sensor_mode)
- if(0)
- usr.visible_message("[usr] adjusts their sensors.", "You disable your suit's remote sensing equipment.")
- if(1)
- usr.visible_message("[usr] adjusts their sensors.", "Your suit will now report whether you are live or dead.")
- if(2)
- usr.visible_message("[usr] adjusts their sensors.", "Your suit will now report your vital lifesigns.")
- if(3)
- usr.visible_message("[usr] adjusts their sensors.", "Your suit will now report your vital lifesigns as well as your coordinate position.")
-
- else if (istype(src.loc, /mob))
- usr.visible_message("[usr] adjusts [src.loc]'s sensors.", "You adjust [src.loc]'s sensors.")
-
-/obj/item/clothing/under/verb/toggle()
- set name = "Toggle Suit Sensors"
- set category = "Object"
- set src in usr
- set_sensors(usr)
-
-/obj/item/clothing/under/verb/rollsuit()
- set name = "Roll Down Jumpsuit"
- set category = "Object"
- set src in usr
- if(!istype(usr, /mob/living)) return
- if(usr.stat) return
-
- update_rolldown_status()
- if(rolled_down == -1)
- to_chat(usr, "You cannot roll down [src]!")
- return
- if((rolled_sleeves == 1) && !(rolled_down))
- rolled_sleeves = 0
-
- rolled_down = !rolled_down
- if(rolled_down)
- body_parts_covered = initial(body_parts_covered)
- body_parts_covered &= ~(UPPER_TORSO|ARMS)
- if("[worn_state]_s" in cached_icon_states(rolled_down_icon))
- icon_override = rolled_down_icon
- item_state_slots[slot_w_uniform_str] = "[worn_state]"
- else
- item_state_slots[slot_w_uniform_str] = "[worn_state]_d"
-
- to_chat(usr, "You roll down your [src].")
- else
- body_parts_covered = initial(body_parts_covered)
- if(icon_override == rolled_down_icon)
- icon_override = initial(icon_override)
- item_state_slots[slot_w_uniform_str] = "[worn_state]"
- to_chat(usr, "You roll up your [src].")
- update_clothing_icon()
-
-/obj/item/clothing/under/verb/rollsleeves()
- set name = "Roll Up Sleeves"
- set category = "Object"
- set src in usr
- if(!istype(usr, /mob/living)) return
- if(usr.stat) return
-
- update_rollsleeves_status()
- if(rolled_sleeves == -1)
- to_chat(usr, "You cannot roll up your [src]'s sleeves!")
- return
- if(rolled_down == 1)
- to_chat(usr, "You must roll up your [src] first!")
- return
-
- rolled_sleeves = !rolled_sleeves
- if(rolled_sleeves)
- body_parts_covered &= ~(ARMS)
- if("[worn_state]_s" in cached_icon_states(rolled_down_sleeves_icon))
- icon_override = rolled_down_sleeves_icon
- item_state_slots[slot_w_uniform_str] = "[worn_state]"
- else
- item_state_slots[slot_w_uniform_str] = "[worn_state]_r"
- to_chat(usr, "You roll up your [src]'s sleeves.")
- else
- body_parts_covered = initial(body_parts_covered)
- if(icon_override == rolled_down_sleeves_icon)
- icon_override = initial(icon_override)
- item_state_slots[slot_w_uniform_str] = "[worn_state]"
- to_chat(usr, "You roll down your [src]'s sleeves.")
- update_clothing_icon()
-
-/obj/item/clothing/under/rank/Initialize()
- sensor_mode = pick(0,1,2,3)
- . = ..()
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
+//Vorestation edit end
\ No newline at end of file
diff --git a/code/modules/clothing/under/accessories/clothing.dm b/code/modules/clothing/under/accessories/clothing.dm
index bf7ee6f0dd..c34466ad65 100644
--- a/code/modules/clothing/under/accessories/clothing.dm
+++ b/code/modules/clothing/under/accessories/clothing.dm
@@ -314,8 +314,6 @@
icon_state = "colorcloak"
item_state = "colorcloak"
-<<<<<<< HEAD
-=======
/obj/item/clothing/accessory/hawaii
name = "flower-pattern shirt"
desc = "You probably need some welder googles to look at this."
@@ -339,7 +337,6 @@
color = color_rotation(rand(-11,12)*15)
. = ..()
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
/obj/item/clothing/accessory/wcoat
name = "waistcoat"
desc = "For some classy, murderous fun."
diff --git a/code/modules/food/kitchen/gibber.dm b/code/modules/food/kitchen/gibber.dm
index f0fbfefe5a..eb3e1ed709 100644
--- a/code/modules/food/kitchen/gibber.dm
+++ b/code/modules/food/kitchen/gibber.dm
@@ -56,16 +56,9 @@
M.loc = src
M.gib()
-
-<<<<<<< HEAD
-/obj/machinery/gibber/New()
- ..()
- add_overlay("grjam")
-=======
/obj/machinery/gibber/Initialize()
. = ..()
- src.overlays += image('icons/obj/kitchen.dmi', "grjam")
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
+ add_overlay("grjam")
/obj/machinery/gibber/update_icon()
cut_overlays()
diff --git a/code/modules/hydroponics/beekeeping/beehive.dm b/code/modules/hydroponics/beekeeping/beehive.dm
index 24d879a9a3..6accee4497 100644
--- a/code/modules/hydroponics/beekeeping/beehive.dm
+++ b/code/modules/hydroponics/beekeeping/beehive.dm
@@ -215,15 +215,9 @@
desc = "A frame for the beehive that the bees have filled with honeycombs."
honey = 20
-<<<<<<< HEAD
-/obj/item/honey_frame/filled/New()
- ..()
- add_overlay("honeycomb")
-=======
/obj/item/honey_frame/filled/Initialize()
. = ..()
- overlays += "honeycomb"
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
+ add_overlay("honeycomb")
/obj/item/beehive_assembly
name = "beehive assembly"
@@ -273,15 +267,9 @@ var/global/list/datum/stack_recipe/wax_recipes = list( \
icon_state = "beepack"
var/full = 1
-<<<<<<< HEAD
-/obj/item/bee_pack/New()
- ..()
- add_overlay("beepack-full")
-=======
/obj/item/bee_pack/Initialize()
. = ..()
- overlays += "beepack-full"
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
+ add_overlay("beepack-full")
/obj/item/bee_pack/proc/empty()
full = 0
diff --git a/code/modules/hydroponics/grown.dm b/code/modules/hydroponics/grown.dm
index 5801f7b33d..7e576aa559 100644
--- a/code/modules/hydroponics/grown.dm
+++ b/code/modules/hydroponics/grown.dm
@@ -65,13 +65,11 @@
/obj/item/weapon/reagent_containers/food/snacks/grown/proc/update_desc()
if(!seed)
return
-<<<<<<< HEAD
-=======
- if(!plant_controller)
+
+ if(!SSplants)
testing("Plant controller does not exist and [src] requires it. Aborting.")
qdel(src)
return
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
if(SSplants.product_descs["[seed.uid]"])
desc = SSplants.product_descs["[seed.uid]"]
diff --git a/code/modules/hydroponics/spreading/spreading.dm b/code/modules/hydroponics/spreading/spreading.dm
index 6269cbf8fa..40a1b407c5 100644
--- a/code/modules/hydroponics/spreading/spreading.dm
+++ b/code/modules/hydroponics/spreading/spreading.dm
@@ -91,13 +91,7 @@
else
parent = newparent
-<<<<<<< HEAD
if(!SSplants)
- sleep(250) // ugly hack, should mean roundstart plants are fine. TODO initialize perhaps?
- if(!SSplants)
-=======
- if(!plant_controller)
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
to_world("Plant controller does not exist and [src] requires it. Aborting.")
return INITIALIZE_HINT_QDEL
diff --git a/code/modules/lighting/lighting_atom.dm b/code/modules/lighting/lighting_atom.dm
index e6a5bbbc9f..678caff796 100644
--- a/code/modules/lighting/lighting_atom.dm
+++ b/code/modules/lighting/lighting_atom.dm
@@ -91,11 +91,9 @@
else
light = new/datum/light_source(src, .)
-<<<<<<< HEAD
-=======
+
/atom/Initialize()
. = ..()
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
/**
* Updates the atom's opacity value.
diff --git a/code/modules/lighting/lighting_overlay.dm b/code/modules/lighting/lighting_overlay.dm
index 78317b244b..45d4004dd9 100644
--- a/code/modules/lighting/lighting_overlay.dm
+++ b/code/modules/lighting/lighting_overlay.dm
@@ -5,7 +5,6 @@
///whether we are already in the SSlighting.objects_queue list
var/needs_update = FALSE
-<<<<<<< HEAD
///the turf that our light is applied to
var/turf/affected_turf
@@ -20,17 +19,6 @@
. = ..()
current_underlay = mutable_appearance(LIGHTING_ICON, "transparent", source.z, PLANE_LIGHTING, 255, RESET_COLOR | RESET_ALPHA | RESET_TRANSFORM)
-=======
-/atom/movable/lighting_overlay/Initialize(var/ml, var/no_update = FALSE)
- . = ..(ml)
- verbs.Cut()
- total_lighting_overlays++
- var/turf/T = loc //If this runtimes atleast we'll know what's creating overlays outside of turfs.
- T.lighting_overlay = src
- T.luminosity = 0
- if(!no_update)
- update_overlay()
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
affected_turf = source
if (affected_turf.lighting_object)
diff --git a/code/modules/mining/drilling/drill.dm b/code/modules/mining/drilling/drill.dm
index 948f8c2775..92d616bd1c 100644
--- a/code/modules/mining/drilling/drill.dm
+++ b/code/modules/mining/drilling/drill.dm
@@ -363,15 +363,10 @@
var/brace_tier = 1
var/obj/machinery/mining/drill/connected
-<<<<<<< HEAD
/obj/machinery/mining/brace/examine(mob/user)
. = ..()
if(brace_tier > 2)
. += SPAN_NOTICE("The internals of the brace look resilient enough to support a drill by itself.")
-=======
-/obj/machinery/mining/brace/Initialize()
- . = ..()
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
/obj/machinery/mining/brace/Initialize()
. = ..()
diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm
index 2087452366..cc0c156fec 100644
--- a/code/modules/mob/dead/observer/observer.dm
+++ b/code/modules/mob/dead/observer/observer.dm
@@ -134,16 +134,12 @@
name = capitalize(pick(first_names_male)) + " " + capitalize(pick(last_names))
real_name = name
animate(src, pixel_y = 2, time = 10, loop = -1)
-<<<<<<< HEAD
observer_mob_list += src
- ..()
-=======
. = ..()
exonet = new(src)
init_exonet()
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
/mob/observer/dead/Topic(href, href_list)
if (href_list["track"])
diff --git a/code/modules/mob/holder.dm b/code/modules/mob/holder.dm
index 5207c32a39..e4f5eb1d08 100644
--- a/code/modules/mob/holder.dm
+++ b/code/modules/mob/holder.dm
@@ -22,7 +22,6 @@ var/list/holder_mob_icon_cache = list()
)
pixel_y = 8
var/mob/living/held_mob
-<<<<<<< HEAD
var/matrix/original_transform
var/original_vis_flags = NONE
@@ -42,11 +41,6 @@ var/list/holder_mob_icon_cache = list()
// I really hate this, but I'm sleepy and unable to figure out a nice stateful way to do it
// Entered and Exited seem ideal but all the inventory procs are trash and put items on
// turfs before you when manhandling things in/out of backpacks and inventory slots.
-=======
-
-/obj/item/weapon/holder/Initialize()
- . = ..()
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
START_PROCESSING(SSobj, src)
/obj/item/weapon/holder/Destroy()
diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm
index 8adc9516f1..9cf7f5f62e 100644
--- a/code/modules/mob/living/silicon/pai/pai.dm
+++ b/code/modules/mob/living/silicon/pai/pai.dm
@@ -135,10 +135,6 @@
pda.ownjob = "Personal Assistant"
pda.owner = text("[]", src)
pda.name = pda.owner + " (" + pda.ownjob + ")"
-<<<<<<< HEAD
-
-=======
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
var/datum/data/pda/app/messenger/M = pda.find_program(/datum/data/pda/app/messenger)
if(M)
M.toff = TRUE
diff --git a/code/modules/mob/living/silicon/robot/drone/drone.dm b/code/modules/mob/living/silicon/robot/drone/drone.dm
index 9862a45b46..12ab601302 100644
--- a/code/modules/mob/living/silicon/robot/drone/drone.dm
+++ b/code/modules/mob/living/silicon/robot/drone/drone.dm
@@ -101,13 +101,8 @@ var/list/mob_hat_cache = list()
can_pick_shell = FALSE
shell_accessories = list("eyes-miningdrone")
-<<<<<<< HEAD
-/mob/living/silicon/robot/drone/New()
- ..()
-=======
/mob/living/silicon/robot/drone/Initialize()
. = ..()
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
verbs += /mob/living/proc/ventcrawl
verbs += /mob/living/proc/hide
remove_language("Robot Talk")
diff --git a/code/modules/mob/living/silicon/robot/robot_modules/station.dm b/code/modules/mob/living/silicon/robot/robot_modules/station.dm
index 67b85f4e66..62e82860fe 100644
--- a/code/modules/mob/living/silicon/robot/robot_modules/station.dm
+++ b/code/modules/mob/living/silicon/robot/robot_modules/station.dm
@@ -59,13 +59,7 @@ var/global/list/robot_modules = list(
handle_shell(R)
if(R.radio)
-<<<<<<< HEAD
- if(R.shell)
- channels = R.mainframe.aiRadio.channels
- R.radio.recalculateChannels()
-=======
addtimer(CALLBACK(R.radio, /obj/item/device/radio/proc/recalculateChannels), 0)
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
vr_add_sprites() //Vorestation Edit: For vorestation only sprites
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/borer/borer.dm b/code/modules/mob/living/simple_mob/subtypes/animal/borer/borer.dm
index 0c3a125c18..a6fb248651 100644
--- a/code/modules/mob/living/simple_mob/subtypes/animal/borer/borer.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/borer/borer.dm
@@ -62,13 +62,8 @@
true_name = "[pick("Primary","Secondary","Tertiary","Quaternary")] [rand(1000,9999)]"
-<<<<<<< HEAD
- if(!roundstart && antag)
- request_player()
-=======
if(!roundstart)
addtimer(CALLBACK(src, .proc/request_player), 0)
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
return ..()
diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm
index 5906b114f1..833ddb86c2 100644
--- a/code/modules/organs/organ_external.dm
+++ b/code/modules/organs/organ_external.dm
@@ -223,16 +223,9 @@
/obj/item/organ/external/update_health()
damage = min(max_damage, (brute_dam + burn_dam))
-<<<<<<< HEAD
-
-/obj/item/organ/external/New(var/mob/living/carbon/holder)
- ..(holder, 0)
-=======
- return
/obj/item/organ/external/Initialize(var/ml)
. = ..(ml, 0)
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
if(istype(owner))
replaced(owner)
sync_colour_to_human(owner)
diff --git a/code/modules/overmap/ships/computers/ship.dm b/code/modules/overmap/ships/computers/ship.dm
index fe0acaa6b4..f413a28323 100644
--- a/code/modules/overmap/ships/computers/ship.dm
+++ b/code/modules/overmap/ships/computers/ship.dm
@@ -7,8 +7,6 @@ somewhere on that shuttle. Subtypes of these can be then used to perform ship ov
var/obj/effect/overmap/visitable/ship/linked
var/list/viewers // Weakrefs to mobs in direct-view mode.
var/extra_view = 0 // how much the view is increased by when the mob is in overmap mode.
-<<<<<<< HEAD
-=======
var/list/whitelisted_types = list(/obj/effect/overmap/visitable/ship)
var/list/blacklisted_types = list()
@@ -20,7 +18,6 @@ somewhere on that shuttle. Subtypes of these can be then used to perform ship ov
for(var/type in blacklisted_types)
L -= typesof(type)
whitelisted_types = L
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
// A late init operation called in SSshuttles, used to attach the thing to the right ship.
/obj/machinery/computer/ship/proc/attempt_hook_up(obj/effect/overmap/visitable/ship/sector)
diff --git a/code/modules/overmap/spacetravel.dm b/code/modules/overmap/spacetravel.dm
index 318e2dd775..7ef2252d0d 100644
--- a/code/modules/overmap/spacetravel.dm
+++ b/code/modules/overmap/spacetravel.dm
@@ -6,7 +6,6 @@
in_space = TRUE
/obj/effect/overmap/visitable/sector/temporary/Initialize()
-<<<<<<< HEAD
if(!istype(loc, /turf/unsimulated/map))
CRASH("Attempt to create deepspace which is not on overmap: [log_info_line(loc)]")
// Tell sector initializer where are is where we want to be.
@@ -15,9 +14,6 @@
// But pick an empty z level to use
map_z += global.using_map.get_empty_zlevel()
. = ..()
- testing("Temporary sector at [x],[y],[z] was created, corresponding zlevel is [english_list(map_z)].")
-=======
- . = ..()
if(!map_z[1])
log_and_message_admins("Could not create empty sector at [x], [y]. No available z levels to allocate.")
@@ -25,7 +21,6 @@
map_sectors["[map_z[1]]"] = src
testing("Temporary sector at [x],[y] was created, corresponding zlevel is [map_z[1]].")
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
/obj/effect/overmap/visitable/sector/temporary/Destroy()
for(var/zlevel in map_z)
@@ -55,13 +50,9 @@
var/obj/effect/overmap/visitable/sector/temporary/res = locate() in overmap_turf
if(istype(res))
return res
-<<<<<<< HEAD
- return new /obj/effect/overmap/visitable/sector/temporary(overmap_turf)
-=======
res = new /obj/effect/overmap/visitable/sector/temporary(overmap_turf)
if(!QDELETED(res))
return res
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
/atom/movable/proc/lost_in_space()
for(var/atom/movable/AM in contents)
diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm
index 6ea67af472..9102e45946 100644
--- a/code/modules/paperwork/paper.dm
+++ b/code/modules/paperwork/paper.dm
@@ -106,35 +106,26 @@
//lipstick wiping is in code/game/objects/items/weapons/cosmetics.dm!
-/obj/item/weapon/paper/Initialize(mapload)
+/obj/item/weapon/paper/Initialize(mapload, var/text, var/title)
. = ..()
+ if(istext(title))
+ name = title
+ if(istext(text))
+ info = text
+ addtimer(CALLBACK(src, .proc/update_info), 0)
+
if(mapload) // Jank, but we do this to prevent maploaded papers from somehow stacking across rounds if re-added to the board by a player.
was_maploaded = TRUE
-<<<<<<< HEAD
-/obj/item/weapon/paper/New(var/newloc, var/text, var/title)
- ..()
-=======
-/obj/item/weapon/paper/Initialize()
- . = ..()
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
pixel_y = rand(-8, 8)
pixel_x = rand(-9, 9)
stamps = ""
- addtimer(CALLBACK(src, .proc/update_info), 0)
/obj/item/weapon/paper/proc/update_info()
-
- if(!isnull(title))
- name = title
-
if(name != "paper")
desc = "This is a paper titled '" + name + "'."
- if(!isnull(text))
- info = text
-
if(info != initial(info))
info = html_encode(info)
info = replacetext(info, "\n", "
")
@@ -434,7 +425,7 @@
var/raw = input(usr, "Enter what you want to write:", "Write") as null|message
if(!raw)
return
-
+
var/t = sanitize(raw, MAX_PAPER_MESSAGE_LEN, extra = 0)
if(!t)
return
diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm
index 2b3322f388..882366fd61 100644
--- a/code/modules/paperwork/pen.dm
+++ b/code/modules/paperwork/pen.dm
@@ -212,16 +212,10 @@
desc = "It's a black ink pen with a sharp point and a carefully engraved \"Waffle Co.\""
origin_tech = list(TECH_MATERIAL = 2, TECH_ILLEGAL = 5)
-<<<<<<< HEAD
-/obj/item/weapon/pen/reagent/sleepy/New()
- ..()
- reagents.add_reagent("chloralhydrate", 1) //VOREStation Edit
- reagents.add_reagent("stoxin", 14) //VOREStation Add
-=======
/obj/item/weapon/pen/reagent/sleepy/Initialize()
. = ..()
- reagents.add_reagent("chloralhydrate", 22) //Used to be 100 sleep toxin//30 Chloral seems to be fatal, reducing it to 22./N
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
+ reagents.add_reagent("chloralhydrate", 1) //VOREStation Edit
+ reagents.add_reagent("stoxin", 14) //VOREStation Add
/*
diff --git a/code/modules/pda/cart.dm b/code/modules/pda/cart.dm
index 5202095000..8428c2018b 100644
--- a/code/modules/pda/cart.dm
+++ b/code/modules/pda/cart.dm
@@ -1,4 +1,3 @@
-<<<<<<< HEAD
var/list/command_cartridges = list(
/obj/item/weapon/cartridge/captain,
/obj/item/weapon/cartridge/hop,
@@ -306,317 +305,4 @@ var/list/civilian_cartridges = list(
name = "F.R.A.M.E. cartridge"
icon_state = "cart"
charges = 5
- messenger_plugins = list(new/datum/data/pda/messenger_plugin/virus/frame)
-=======
-var/list/command_cartridges = list(
- /obj/item/weapon/cartridge/captain,
- /obj/item/weapon/cartridge/hop,
- /obj/item/weapon/cartridge/hos,
- /obj/item/weapon/cartridge/ce,
- /obj/item/weapon/cartridge/rd,
- /obj/item/weapon/cartridge/cmo,
- /obj/item/weapon/cartridge/head,
- /obj/item/weapon/cartridge/lawyer // Internal Affaris,
- )
-
-var/list/security_cartridges = list(
- /obj/item/weapon/cartridge/security,
- /obj/item/weapon/cartridge/detective,
- /obj/item/weapon/cartridge/hos
- )
-
-var/list/engineering_cartridges = list(
- /obj/item/weapon/cartridge/engineering,
- /obj/item/weapon/cartridge/atmos,
- /obj/item/weapon/cartridge/ce
- )
-
-var/list/medical_cartridges = list(
- /obj/item/weapon/cartridge/medical,
- /obj/item/weapon/cartridge/chemistry,
- /obj/item/weapon/cartridge/cmo
- )
-
-var/list/research_cartridges = list(
- /obj/item/weapon/cartridge/signal/science,
- /obj/item/weapon/cartridge/rd
- )
-
-var/list/cargo_cartridges = list(
- /obj/item/weapon/cartridge/quartermaster, // This also covers cargo-techs, apparently,
- /obj/item/weapon/cartridge/miner,
- /obj/item/weapon/cartridge/hop
- )
-
-var/list/civilian_cartridges = list(
- /obj/item/weapon/cartridge/janitor,
- /obj/item/weapon/cartridge/service,
- /obj/item/weapon/cartridge/hop
- )
-
-/obj/item/weapon/cartridge
- name = "generic cartridge"
- desc = "A data cartridge for portable microcomputers."
- icon = 'icons/obj/pda.dmi'
- icon_state = "cart"
- item_state = "electronic"
- w_class = ITEMSIZE_TINY
- drop_sound = 'sound/items/drop/component.ogg'
- pickup_sound = 'sound/items/pickup/component.ogg'
-
- var/obj/item/radio/integrated/radio = null
-
- var/charges = 0
-
- var/list/stored_data = list()
- var/list/programs = list()
- var/list/messenger_plugins = list()
-
-/obj/item/weapon/cartridge/Destroy()
- QDEL_NULL(radio)
- QDEL_LIST(programs)
- QDEL_LIST(messenger_plugins)
- return ..()
-
-/obj/item/weapon/cartridge/proc/update_programs(obj/item/device/pda/pda)
- for(var/A in programs)
- var/datum/data/pda/P = A
- P.pda = pda
- for(var/A in messenger_plugins)
- var/datum/data/pda/messenger_plugin/P = A
- P.pda = pda
-
-/obj/item/weapon/cartridge/engineering
- name = "\improper Power-ON cartridge"
- icon_state = "cart-e"
- programs = list(
- new/datum/data/pda/app/power,
- new/datum/data/pda/utility/scanmode/halogen)
-
-/obj/item/weapon/cartridge/atmos
- name = "\improper BreatheDeep cartridge"
- icon_state = "cart-a"
- programs = list(new/datum/data/pda/utility/scanmode/gas)
-
-/obj/item/weapon/cartridge/medical
- name = "\improper Med-U cartridge"
- icon_state = "cart-m"
- programs = list(
- new/datum/data/pda/app/crew_records/medical,
- new/datum/data/pda/utility/scanmode/medical)
-
-/obj/item/weapon/cartridge/chemistry
- name = "\improper ChemWhiz cartridge"
- icon_state = "cart-chem"
- programs = list(
- new/datum/data/pda/app/crew_records/medical,
- new/datum/data/pda/utility/scanmode/medical,
- new/datum/data/pda/utility/scanmode/reagent)
-
-/obj/item/weapon/cartridge/security
- name = "\improper R.O.B.U.S.T. cartridge"
- icon_state = "cart-s"
- programs = list(
- new/datum/data/pda/app/crew_records/security)
-
-/obj/item/weapon/cartridge/detective
- name = "\improper D.E.T.E.C.T. cartridge"
- icon_state = "cart-s"
- programs = list(
- new/datum/data/pda/app/crew_records/medical,
- new/datum/data/pda/utility/scanmode/medical,
-
- new/datum/data/pda/app/crew_records/security)
-
-
-/obj/item/weapon/cartridge/janitor
- name = "\improper CustodiPRO cartridge"
- desc = "The ultimate in clean-room design."
- icon_state = "cart-j"
- programs = list(new/datum/data/pda/app/janitor)
-
-/obj/item/weapon/cartridge/lawyer
- name = "\improper P.R.O.V.E. cartridge"
- icon_state = "cart-s"
- programs = list(new/datum/data/pda/app/crew_records/security)
-
-/obj/item/weapon/cartridge/clown
- name = "\improper Honkworks 5.0 cartridge"
- icon_state = "cart-clown"
- charges = 5
- programs = list(new/datum/data/pda/utility/honk)
- messenger_plugins = list(new/datum/data/pda/messenger_plugin/virus/clown)
-
-/obj/item/weapon/cartridge/mime
- name = "\improper Gestur-O 1000 cartridge"
- icon_state = "cart-mi"
- charges = 5
- messenger_plugins = list(new/datum/data/pda/messenger_plugin/virus/mime)
-
-/obj/item/weapon/cartridge/service
- name = "\improper Serv-U Pro cartridge"
- desc = "A data cartridge designed to serve YOU!"
-
-/obj/item/weapon/cartridge/signal
- name = "generic signaler cartridge"
- desc = "A data cartridge with an integrated radio signaler module."
- programs = list(new/datum/data/pda/app/signaller)
-
-/obj/item/weapon/cartridge/signal/Initialize()
- radio = new /obj/item/radio/integrated/signal(src)
- . = ..()
-
-/obj/item/weapon/cartridge/signal/science
- name = "\improper Signal Ace 2 cartridge"
- desc = "Complete with integrated radio signaler!"
- icon_state = "cart-tox"
- programs = list(
- new/datum/data/pda/utility/scanmode/gas,
-
- new/datum/data/pda/utility/scanmode/reagent,
-
- new/datum/data/pda/app/signaller)
-
-/obj/item/weapon/cartridge/quartermaster
- name = "\improper Space Parts & Space Vendors cartridge"
- desc = "Perfect for the Quartermaster on the go!"
- icon_state = "cart-q"
- programs = list(
- new/datum/data/pda/app/supply)
-
-/obj/item/weapon/cartridge/miner
- name = "\improper Drill-Jockey 4.5 cartridge"
- desc = "It's covered in some sort of sand."
- icon_state = "cart-q"
-
-/obj/item/weapon/cartridge/head
- name = "\improper Easy-Record DELUXE cartridge"
- icon_state = "cart-h"
- programs = list(new/datum/data/pda/app/status_display)
-
-/obj/item/weapon/cartridge/hop
- name = "\improper HumanResources9001 cartridge"
- icon_state = "cart-h"
- programs = list(
- new/datum/data/pda/app/crew_records/security,
-
- new/datum/data/pda/app/janitor,
-
- new/datum/data/pda/app/supply,
-
- new/datum/data/pda/app/status_display)
-
-/obj/item/weapon/cartridge/hos
- name = "\improper R.O.B.U.S.T. DELUXE cartridge"
- icon_state = "cart-hos"
- programs = list(
- new/datum/data/pda/app/crew_records/security,
-
- new/datum/data/pda/app/status_display)
-
-/obj/item/weapon/cartridge/ce
- name = "\improper Power-On DELUXE cartridge"
- icon_state = "cart-ce"
- programs = list(
- new/datum/data/pda/app/power,
- new/datum/data/pda/utility/scanmode/halogen,
-
- new/datum/data/pda/utility/scanmode/gas,
-
- new/datum/data/pda/app/status_display)
-
-/obj/item/weapon/cartridge/cmo
- name = "\improper Med-U DELUXE cartridge"
- icon_state = "cart-cmo"
- programs = list(
- new/datum/data/pda/app/crew_records/medical,
- new/datum/data/pda/utility/scanmode/medical,
-
- new/datum/data/pda/utility/scanmode/reagent,
-
- new/datum/data/pda/app/status_display)
-
-/obj/item/weapon/cartridge/rd
- name = "\improper Signal Ace DELUXE cartridge"
- icon_state = "cart-rd"
- programs = list(
- new/datum/data/pda/utility/scanmode/gas,
-
- new/datum/data/pda/utility/scanmode/reagent,
-
- new/datum/data/pda/app/signaller,
-
- new/datum/data/pda/app/status_display)
-
-/obj/item/weapon/cartridge/rd/Initialize()
- radio = new /obj/item/radio/integrated/signal(src)
- . = ..()
-
-/obj/item/weapon/cartridge/captain
- name = "\improper Value-PAK cartridge"
- desc = "Now with 200% more value!"
- icon_state = "cart-c"
- programs = list(
- new/datum/data/pda/app/power,
- new/datum/data/pda/utility/scanmode/halogen,
-
- new/datum/data/pda/utility/scanmode/gas,
-
- new/datum/data/pda/app/crew_records/medical,
- new/datum/data/pda/utility/scanmode/medical,
-
- new/datum/data/pda/utility/scanmode/reagent,
-
- new/datum/data/pda/app/crew_records/security,
-
- new/datum/data/pda/app/janitor,
-
- new/datum/data/pda/app/supply,
-
- new/datum/data/pda/app/status_display)
-
-/obj/item/weapon/cartridge/syndicate
- name = "\improper Detomatix cartridge"
- icon_state = "cart"
- var/initial_remote_door_id = "smindicate" //Make sure this matches the syndicate shuttle's shield/door id!! //don't ask about the name, testing.
- charges = 4
- programs = list(new/datum/data/pda/utility/toggle_door)
- messenger_plugins = list(new/datum/data/pda/messenger_plugin/virus/detonate)
-
-/obj/item/weapon/cartridge/syndicate/Initialize()
- . = ..()
- var/datum/data/pda/utility/toggle_door/D = programs[1]
- if(istype(D))
- D.remote_door_id = initial_remote_door_id
-
-/obj/item/weapon/cartridge/proc/post_status(var/command, var/data1, var/data2)
-
- var/datum/radio_frequency/frequency = radio_controller.return_frequency(1435)
- if(!frequency) return
-
- var/datum/signal/status_signal = new
- status_signal.source = src
- status_signal.transmission_method = TRANSMISSION_RADIO
- status_signal.data["command"] = command
-
- switch(command)
- if("message")
- status_signal.data["msg1"] = data1
- status_signal.data["msg2"] = data2
- if(loc)
- var/obj/item/PDA = loc
- var/mob/user = PDA.fingerprintslast
- log_admin("STATUS: [user] set status screen with [PDA]. Message: [data1] [data2]")
- message_admins("STATUS: [user] set status screen with [PDA]. Message: [data1] [data2]")
-
- if("alert")
- status_signal.data["picture_state"] = data1
-
- frequency.post_signal(src, status_signal)
-
-/obj/item/weapon/cartridge/frame
- name = "F.R.A.M.E. cartridge"
- icon_state = "cart"
- charges = 5
- messenger_plugins = list(new/datum/data/pda/messenger_plugin/virus/frame)
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
+ messenger_plugins = list(new/datum/data/pda/messenger_plugin/virus/frame)
\ No newline at end of file
diff --git a/code/modules/pda/pda.dm b/code/modules/pda/pda.dm
index 6f3f9afa4b..396255afde 100644
--- a/code/modules/pda/pda.dm
+++ b/code/modules/pda/pda.dm
@@ -1,5 +1,3 @@
-<<<<<<< HEAD
-
//The advanced pea-green monochrome lcd of tomorrow.
var/global/list/obj/item/device/pda/PDAs = list()
@@ -113,8 +111,8 @@ var/global/list/obj/item/device/pda/PDAs = list()
close(usr)
return 0
-/obj/item/device/pda/New(var/mob/living/carbon/human/H)
- ..()
+/obj/item/device/pda/Initialize()
+ . = ..()
PDAs += src
PDAs = sortAtom(PDAs)
update_programs()
@@ -122,7 +120,13 @@ var/global/list/obj/item/device/pda/PDAs = list()
cartridge = new default_cartridge(src)
cartridge.update_programs(src)
new /obj/item/weapon/pen(src)
- pdachoice = isnull(H) ? 1 : (ishuman(H) ? H.pdachoice : 1)
+
+ if(ishuman(loc))
+ var/mob/living/carbon/human/H = loc
+ pdachoice = H.pdachoice
+ else
+ pdachoice = 1
+
switch(pdachoice)
if(1) icon = 'icons/obj/pda.dmi'
if(2) icon = 'icons/obj/pda_slim.dmi'
@@ -491,506 +495,4 @@ var/global/list/obj/item/device/pda/PDAs = list()
// Pass along the pulse to atoms in contents, largely added so pAIs are vulnerable to EMP
/obj/item/device/pda/emp_act(severity)
for(var/atom/A in src)
- A.emp_act(severity)
-=======
-
-//The advanced pea-green monochrome lcd of tomorrow.
-
-var/global/list/obj/item/device/pda/PDAs = list()
-
-/obj/item/device/pda
- name = "\improper PDA"
- desc = "A portable microcomputer by Thinktronic Systems, LTD. Functionality determined by a preprogrammed ROM cartridge."
- icon = 'icons/obj/pda.dmi'
- icon_state = "pda"
- item_state = "electronic"
- w_class = ITEMSIZE_SMALL
- slot_flags = SLOT_ID | SLOT_BELT
- sprite_sheets = list(SPECIES_TESHARI = 'icons/mob/species/teshari/id.dmi')
-
- //Main variables
- var/pdachoice = 1
- var/owner = null
- var/default_cartridge = 0 // Access level defined by cartridge
- var/obj/item/weapon/cartridge/cartridge = null //current cartridge
-
- //Secondary variables
- var/model_name = "Thinktronic 5230 Personal Data Assistant"
- var/datum/data/pda/utility/scanmode/scanmode = null
-
- var/lock_code = "" // Lockcode to unlock uplink
- var/honkamt = 0 //How many honks left when infected with honk.exe
- var/mimeamt = 0 //How many silence left when infected with mime.exe
- var/detonate = 1 // Can the PDA be blown up?
- var/ttone = "beep" //The ringtone!
- var/list/ttone_sound = list("beep" = 'sound/machines/twobeep.ogg',
- "boom" = 'sound/effects/explosionfar.ogg',
- "slip" = 'sound/misc/slip.ogg',
- "honk" = 'sound/items/bikehorn.ogg',
- "SKREE" = 'sound/voice/shriek1.ogg',
- // "holy" = 'sound/items/PDA/ambicha4-short.ogg',
- "xeno" = 'sound/voice/hiss1.ogg')
- var/hidden = 0 // Is the PDA hidden from the PDA list?
- var/touch_silent = 0 //If 1, no beeps on interacting.
-
- var/obj/item/weapon/card/id/id = null //Making it possible to slot an ID card into the PDA so it can function as both.
- var/ownjob = null //related to above - this is assignment (potentially alt title)
- var/ownrank = null // this one is rank, never alt title
-
- var/obj/item/device/paicard/pai = null // A slot for a personal AI device
-
- var/spam_proof = FALSE // If true, it can't be spammed by random events.
-
- var/datum/data/pda/app/current_app = null
- var/datum/data/pda/app/lastapp = null
- var/list/programs = list(
- new/datum/data/pda/app/main_menu,
- new/datum/data/pda/app/notekeeper,
- new/datum/data/pda/app/news,
- new/datum/data/pda/app/messenger,
- new/datum/data/pda/app/manifest,
- new/datum/data/pda/app/atmos_scanner,
- new/datum/data/pda/utility/scanmode/notes,
- new/datum/data/pda/utility/flashlight)
- var/list/shortcut_cache = list()
- var/list/shortcut_cat_order = list()
- var/list/notifying_programs = list()
- var/retro_mode = 0
-
-/obj/item/device/pda/examine(mob/user)
- . = ..()
- if(Adjacent(user))
- . += "The time [stationtime2text()] is displayed in the corner of the screen."
-
-/obj/item/device/pda/CtrlClick()
- if(issilicon(usr))
- return
-
- if(can_use(usr))
- remove_pen()
- return
- ..()
-
-/obj/item/device/pda/AltClick()
- if(issilicon(usr))
- return
-
- if ( can_use(usr) )
- if(id)
- remove_id()
- else
- to_chat(usr, "This PDA does not have an ID in it.")
-
-/obj/item/device/pda/proc/play_ringtone()
- var/S
-
- if(ttone in ttone_sound)
- S = ttone_sound[ttone]
- else
- S = 'sound/machines/twobeep.ogg'
- playsound(loc, S, 50, 1)
- for(var/mob/O in hearers(3, loc))
- O.show_message(text("[bicon(src)] *[ttone]*"))
-
-/obj/item/device/pda/proc/set_ringtone()
- var/t = input("Please enter new ringtone", name, ttone) as text
- if(in_range(src, usr) && loc == usr)
- if(t)
- if(hidden_uplink && hidden_uplink.check_trigger(usr, lowertext(t), lowertext(lock_code)))
- to_chat(usr, "The PDA softly beeps.")
- close(usr)
- else
- t = sanitize(copytext(t, 1, 20))
- ttone = t
- return 1
- else
- close(usr)
- return 0
-
-/obj/item/device/pda/Initialize()
- . = ..()
- PDAs += src
- PDAs = sortAtom(PDAs)
- update_programs()
- if(default_cartridge)
- cartridge = new default_cartridge(src)
- cartridge.update_programs(src)
- new /obj/item/weapon/pen(src)
-
- if(ishuman(loc))
- var/mob/living/carbon/human/H = loc
- pdachoice = H.pdachoice
- else
- pdachoice = 1
-
- switch(pdachoice)
- if(1) icon = 'icons/obj/pda.dmi'
- if(2) icon = 'icons/obj/pda_slim.dmi'
- if(3) icon = 'icons/obj/pda_old.dmi'
- if(4) icon = 'icons/obj/pda_rugged.dmi'
- if(5) icon = 'icons/obj/pda_holo.dmi'
- if(6)
- icon = 'icons/obj/pda_wrist.dmi'
- item_state = icon_state
- item_icons = list(
- slot_belt_str = 'icons/mob/pda_wrist.dmi',
- slot_wear_id_str = 'icons/mob/pda_wrist.dmi',
- slot_gloves_str = 'icons/mob/pda_wrist.dmi'
- )
- desc = "A portable microcomputer by Thinktronic Systems, LTD. This model is a wrist-bound version."
- slot_flags = SLOT_ID | SLOT_BELT | SLOT_GLOVES
- sprite_sheets = list(
- SPECIES_TESHARI = 'icons/mob/species/teshari/pda_wrist.dmi',
- SPECIES_VR_TESHARI = 'icons/mob/species/teshari/pda_wrist.dmi',
- )
- else
- icon = 'icons/obj/pda_old.dmi'
- log_debug("Invalid switch for PDA, defaulting to old PDA icons. [pdachoice] chosen.")
- start_program(find_program(/datum/data/pda/app/main_menu))
-
-/obj/item/device/pda/proc/can_use(mob/user)
- return (tgui_status(user, GLOB.tgui_inventory_state) == STATUS_INTERACTIVE)
-
-/obj/item/device/pda/GetAccess()
- if(id)
- return id.GetAccess()
- else
- return ..()
-
-/obj/item/device/pda/GetID()
- return id
-
-/obj/item/device/pda/MouseDrop(obj/over_object as obj, src_location, over_location)
- var/mob/M = usr
- if((!istype(over_object, /obj/screen)) && can_use(usr))
- return attack_self(M)
- return
-
-/obj/item/device/pda/proc/close(mob/user)
- SStgui.close_uis(src)
-
-/obj/item/device/pda/attack_self(mob/user as mob)
- user.set_machine(src)
-
- if(active_uplink_check(user))
- return
-
- tgui_interact(user)
- return
-
-/obj/item/device/pda/proc/start_program(datum/data/pda/P)
- if(P && ((P in programs) || (cartridge && (P in cartridge.programs))))
- return P.start()
- return 0
-
-/obj/item/device/pda/proc/find_program(type)
- var/datum/data/pda/A = locate(type) in programs
- if(A)
- return A
- if(cartridge)
- A = locate(type) in cartridge.programs
- if(A)
- return A
- return null
-
-// force the cache to rebuild on update_ui
-/obj/item/device/pda/proc/update_shortcuts()
- shortcut_cache.Cut()
-
-/obj/item/device/pda/proc/update_programs()
- for(var/A in programs)
- var/datum/data/pda/P = A
- P.pda = src
-
-/obj/item/device/pda/proc/detonate_act(var/obj/item/device/pda/P)
- //TODO: sometimes these attacks show up on the message server
- var/i = rand(1,100)
- var/j = rand(0,1) //Possibility of losing the PDA after the detonation
- var/message = ""
- var/mob/living/M = null
- if(ismob(P.loc))
- M = P.loc
-
- //switch(i) //Yes, the overlapping cases are intended.
- if(i<=10) //The traditional explosion
- P.explode()
- j=1
- message += "Your [P] suddenly explodes!"
- if(i>=10 && i<= 20) //The PDA burns a hole in the holder.
- j=1
- if(M && isliving(M))
- M.apply_damage( rand(30,60) , BURN)
- message += "You feel a searing heat! Your [P] is burning!"
- if(i>=20 && i<=25) //EMP
- empulse(P.loc, 1, 2, 4, 6, 1)
- message += "Your [P] emits a wave of electromagnetic energy!"
- if(i>=25 && i<=40) //Smoke
- var/datum/effect/effect/system/smoke_spread/chem/S = new /datum/effect/effect/system/smoke_spread/chem
- S.attach(P.loc)
- S.set_up(P, 10, 0, P.loc)
- playsound(P, 'sound/effects/smoke.ogg', 50, 1, -3)
- S.start()
- message += "Large clouds of smoke billow forth from your [P]!"
- if(i>=40 && i<=45) //Bad smoke
- var/datum/effect/effect/system/smoke_spread/bad/B = new /datum/effect/effect/system/smoke_spread/bad
- B.attach(P.loc)
- B.set_up(P, 10, 0, P.loc)
- playsound(P, 'sound/effects/smoke.ogg', 50, 1, -3)
- B.start()
- message += "Large clouds of noxious smoke billow forth from your [P]!"
- if(i>=65 && i<=75) //Weaken
- if(M && isliving(M))
- M.apply_effects(0,1)
- message += "Your [P] flashes with a blinding white light! You feel weaker."
- if(i>=75 && i<=85) //Stun and stutter
- if(M && isliving(M))
- M.apply_effects(1,0,0,0,1)
- message += "Your [P] flashes with a blinding white light! You feel weaker."
- if(i>=85) //Sparks
- var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
- s.set_up(2, 1, P.loc)
- s.start()
- message += "Your [P] begins to spark violently!"
- if(i>45 && i<65 && prob(50)) //Nothing happens
- message += "Your [P] bleeps loudly."
- j = prob(10)
-
- if(j && detonate) //This kills the PDA
- qdel(P)
- if(message)
- message += "It melts in a puddle of plastic."
- else
- message += "Your [P] shatters in a thousand pieces!"
-
- if(M && isliving(M))
- message = "[message]"
- M.show_message(message, 1)
-
-/obj/item/device/pda/proc/remove_id()
- if (id)
- if (ismob(loc))
- var/mob/M = loc
- M.put_in_hands(id)
- to_chat(usr, "You remove the ID from the [name].")
- playsound(src, 'sound/machines/id_swipe.ogg', 100, 1)
- else
- id.loc = get_turf(src)
- id = null
-
-/obj/item/device/pda/proc/remove_pen()
- var/obj/item/weapon/pen/O = locate() in src
- if(O)
- if(istype(loc, /mob))
- var/mob/M = loc
- if(M.get_active_hand() == null)
- M.put_in_hands(O)
- to_chat(usr, "You remove \the [O] from \the [src].")
- return
- O.loc = get_turf(src)
- else
- to_chat(usr, "This PDA does not have a pen in it.")
-
-/obj/item/device/pda/verb/verb_reset_pda()
- set category = "Object"
- set name = "Reset PDA"
- set src in usr
-
- if(issilicon(usr))
- return
-
- if(can_use(usr))
- start_program(find_program(/datum/data/pda/app/main_menu))
- notifying_programs.Cut()
- overlays -= image('icons/obj/pda.dmi', "pda-r")
- to_chat(usr, "You press the reset button on \the [src].")
- else
- to_chat(usr, "You cannot do this while restrained.")
-
-/obj/item/device/pda/verb/verb_remove_id()
- set category = "Object"
- set name = "Remove id"
- set src in usr
-
- if(issilicon(usr))
- return
-
- if ( can_use(usr) )
- if(id)
- remove_id()
- else
- to_chat(usr, "This PDA does not have an ID in it.")
- else
- to_chat(usr, "You cannot do this while restrained.")
-
-
-/obj/item/device/pda/verb/verb_remove_pen()
- set category = "Object"
- set name = "Remove pen"
- set src in usr
-
- if(issilicon(usr))
- return
-
- if ( can_use(usr) )
- remove_pen()
- else
- to_chat(usr, "You cannot do this while restrained.")
-
-/obj/item/device/pda/verb/verb_remove_cartridge()
- set category = "Object"
- set name = "Remove cartridge"
- set src in usr
-
- if(issilicon(usr))
- return
-
- if(!can_use(usr))
- to_chat(usr, "You cannot do this while restrained.")
- return
-
- if(isnull(cartridge))
- to_chat(usr, "There's no cartridge to eject.")
- return
-
- cartridge.forceMove(get_turf(src))
- if(ismob(loc))
- var/mob/M = loc
- M.put_in_hands(cartridge)
- // mode = 0
- // scanmode = 0
- if (cartridge.radio)
- cartridge.radio.hostpda = null
- to_chat(usr, "You remove \the [cartridge] from the [name].")
- playsound(src, 'sound/machines/id_swipe.ogg', 100, 1)
- cartridge = null
- update_programs()
- update_shortcuts()
- start_program(find_program(/datum/data/pda/app/main_menu))
-
-
-/obj/item/device/pda/proc/id_check(mob/user as mob, choice as num)//To check for IDs; 1 for in-pda use, 2 for out of pda use.
- if(choice == 1)
- if (id)
- remove_id()
- return 1
- else
- var/obj/item/I = user.get_active_hand()
- if (istype(I, /obj/item/weapon/card/id) && user.unEquip(I))
- I.loc = src
- id = I
- return 1
- else
- var/obj/item/weapon/card/I = user.get_active_hand()
- if (istype(I, /obj/item/weapon/card/id) && I:registered_name && user.unEquip(I))
- var/obj/old_id = id
- I.loc = src
- id = I
- user.put_in_hands(old_id)
- return 1
- return 0
-
-// access to status display signals
-/obj/item/device/pda/attackby(obj/item/C as obj, mob/user as mob)
- ..()
- if(istype(C, /obj/item/weapon/cartridge) && !cartridge)
- cartridge = C
- user.drop_item()
- cartridge.loc = src
- cartridge.update_programs(src)
- update_shortcuts()
- to_chat(usr, "You insert [cartridge] into [src].")
- if(cartridge.radio)
- cartridge.radio.hostpda = src
-
- else if(istype(C, /obj/item/weapon/card/id))
- var/obj/item/weapon/card/id/idcard = C
- if(!idcard.registered_name)
- to_chat(user, "\The [src] rejects the ID.")
- return
- if(!owner)
- owner = idcard.registered_name
- ownjob = idcard.assignment
- ownrank = idcard.rank
- name = "PDA-[owner] ([ownjob])"
- to_chat(user, "Card scanned.")
- else
- //Basic safety check. If either both objects are held by user or PDA is on ground and card is in hand.
- if(((src in user.contents) && (C in user.contents)) || (istype(loc, /turf) && in_range(src, user) && (C in user.contents)) )
- if(id_check(user, 2))
- to_chat(user, "You put the ID into \the [src]'s slot.")
- updateSelfDialog()//Update self dialog on success.
- return //Return in case of failed check or when successful.
- updateSelfDialog()//For the non-input related code.
- else if(istype(C, /obj/item/device/paicard) && !src.pai)
- user.drop_item()
- C.loc = src
- pai = C
- to_chat(user, "You slot \the [C] into \the [src].")
- SStgui.update_uis(src) // update all UIs attached to src
- else if(istype(C, /obj/item/weapon/pen))
- var/obj/item/weapon/pen/O = locate() in src
- if(O)
- to_chat(user, "There is already a pen in \the [src].")
- else
- user.drop_item()
- C.loc = src
- to_chat(user, "You slot \the [C] into \the [src].")
- return
-
-/obj/item/device/pda/attack(mob/living/C as mob, mob/living/user as mob)
- if (istype(C, /mob/living/carbon) && scanmode)
- scanmode.scan_mob(C, user)
-
-/obj/item/device/pda/afterattack(atom/A as mob|obj|turf|area, mob/user as mob, proximity)
- if(proximity && scanmode)
- scanmode.scan_atom(A, user)
-
-/obj/item/device/pda/proc/explode() //This needs tuning. //Sure did.
- if(!src.detonate) return
- var/turf/T = get_turf(src.loc)
- if(T)
- T.hotspot_expose(700,125)
- explosion(T, 0, 0, 1, rand(1,2))
- return
-
-/obj/item/device/pda/Destroy()
- PDAs -= src
- if (src.id && prob(90)) //IDs are kept in 90% of the cases
- src.id.forceMove(get_turf(src.loc))
- else
- QDEL_NULL(src.id)
-
- current_app = null
- scanmode = null
- QDEL_NULL(pai)
- QDEL_LIST(programs)
- QDEL_NULL(cartridge)
- return ..()
-
-//Some spare PDAs in a box
-/obj/item/weapon/storage/box/PDAs
- name = "box of spare PDAs"
- desc = "A box of spare PDA microcomputers."
- icon = 'icons/obj/pda.dmi'
- icon_state = "pdabox"
-
-/obj/item/weapon/storage/box/PDAs/Initialize()
- . = ..()
- new /obj/item/device/pda(src)
- new /obj/item/device/pda(src)
- new /obj/item/device/pda(src)
- new /obj/item/device/pda(src)
- new /obj/item/weapon/cartridge/head(src)
-
- var/newcart = pick( /obj/item/weapon/cartridge/engineering,
- /obj/item/weapon/cartridge/security,
- /obj/item/weapon/cartridge/medical,
- /obj/item/weapon/cartridge/signal/science,
- /obj/item/weapon/cartridge/quartermaster)
- new newcart(src)
-
-// Pass along the pulse to atoms in contents, largely added so pAIs are vulnerable to EMP
-/obj/item/device/pda/emp_act(severity)
- for(var/atom/A in src)
- A.emp_act(severity)
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
+ A.emp_act(severity)
\ No newline at end of file
diff --git a/code/modules/pda/radio.dm b/code/modules/pda/radio.dm
index 54bfa3e0c6..083c96a085 100644
--- a/code/modules/pda/radio.dm
+++ b/code/modules/pda/radio.dm
@@ -1,4 +1,3 @@
-<<<<<<< HEAD
/obj/item/radio/integrated
name = "\improper PDA radio module"
desc = "An electronic radio system."
@@ -18,8 +17,8 @@
var/on = 0 //Are we currently active??
var/menu_message = ""
-/obj/item/radio/integrated/New()
- ..()
+/obj/item/radio/integrated/Initialize()
+ . = ..()
if(istype(loc.loc, /obj/item/device/pda))
hostpda = loc.loc
if(bot_filter)
@@ -134,142 +133,4 @@
signal.data["message"] = message
spawn(0)
- radio_connection.post_signal(src, signal)
-=======
-/obj/item/radio/integrated
- name = "\improper PDA radio module"
- desc = "An electronic radio system."
- icon = 'icons/obj/module.dmi'
- icon_state = "power_mod"
- var/obj/item/device/pda/hostpda = null
-
- var/list/botlist = null // list of bots
- var/mob/living/bot/active // the active bot; if null, show bot list
- var/list/botstatus // the status signal sent by the bot
-
- var/bot_type //The type of bot it is.
- var/bot_filter //Determines which radio filter to use.
-
- var/control_freq = BOT_FREQ
-
- var/on = 0 //Are we currently active??
- var/menu_message = ""
-
-/obj/item/radio/integrated/Initialize()
- . = ..()
- if(istype(loc.loc, /obj/item/device/pda))
- hostpda = loc.loc
- if(bot_filter)
- spawn(5)
- add_to_radio(bot_filter)
-
-/obj/item/radio/integrated/Destroy()
- if(radio_controller)
- radio_controller.remove_object(src, control_freq)
- hostpda = null
- return ..()
-
-/obj/item/radio/integrated/proc/post_signal(var/freq, var/key, var/value, var/key2, var/value2, var/key3, var/value3, s_filter)
-
- //to_world("Post: [freq]: [key]=[value], [key2]=[value2]")
- var/datum/radio_frequency/frequency = radio_controller.return_frequency(freq)
-
- if(!frequency)
- return
-
- var/datum/signal/signal = new()
- signal.source = src
- signal.transmission_method = TRANSMISSION_RADIO
- signal.data[key] = value
- if(key2)
- signal.data[key2] = value2
- if(key3)
- signal.data[key3] = value3
-
- frequency.post_signal(src, signal, radio_filter = s_filter)
-
-/obj/item/radio/integrated/Topic(href, href_list)
- ..()
- switch(href_list["op"])
- if("control")
- active = locate(href_list["bot"])
- spawn(0)
- post_signal(control_freq, "command", "bot_status", "active", active, s_filter = bot_filter)
-
- if("scanbots") // find all bots
- botlist = null
- spawn(0)
- post_signal(control_freq, "command", "bot_status", s_filter = bot_filter)
-
- if("botlist")
- active = null
-
- if("stop", "go", "home")
- spawn(0)
- post_signal(control_freq, "command", href_list["op"], "active", active, s_filter = bot_filter)
- post_signal(control_freq, "command", "bot_status", "active", active, s_filter = bot_filter)
-
- if("summon")
- spawn(0)
- post_signal(control_freq, "command", "summon", "active", active, "target", get_turf(hostpda), "useraccess", hostpda.GetAccess(), "user", usr, s_filter = bot_filter)
- post_signal(control_freq, "command", "bot_status", "active", active, s_filter = bot_filter)
-
-/obj/item/radio/integrated/receive_signal(datum/signal/signal)
- if(bot_type && istype(signal.source, /mob/living/bot) && signal.data["type"] == bot_type)
- if(!botlist)
- botlist = new()
-
- botlist |= signal.source
-
- if(active == signal.source)
- var/list/b = signal.data
- botstatus = b.Copy()
-
-/obj/item/radio/integrated/proc/add_to_radio(bot_filter) //Master filter control for bots. Must be placed in the bot's local New() to support map spawned bots.
- if(radio_controller)
- radio_controller.add_object(src, control_freq, radio_filter = bot_filter)
-
-/*
- * Radio Cartridge, essentially a signaler.
- */
-/obj/item/radio/integrated/signal
- var/frequency = 1457
- var/code = 30.0
- var/last_transmission
- var/datum/radio_frequency/radio_connection
-
-/obj/item/radio/integrated/signal/Destroy()
- if(radio_controller)
- radio_controller.remove_object(src, frequency)
- radio_connection = null
- return ..()
-
-/obj/item/radio/integrated/signal/Initialize()
- . = ..()
- if(radio_controller)
- if(src.frequency < PUBLIC_LOW_FREQ || src.frequency > PUBLIC_HIGH_FREQ)
- src.frequency = sanitize_frequency(src.frequency)
- set_frequency(frequency)
-
-/obj/item/radio/integrated/signal/proc/set_frequency(new_frequency)
- radio_controller.remove_object(src, frequency)
- frequency = new_frequency
- radio_connection = radio_controller.add_object(src, frequency)
-
-/obj/item/radio/integrated/signal/proc/send_signal(message="ACTIVATE")
- if(last_transmission && world.time < (last_transmission + 5))
- return
- last_transmission = world.time
-
- var/time = time2text(world.realtime,"hh:mm:ss")
- var/turf/T = get_turf(src)
- lastsignalers.Add("[time] : [usr.key] used [src] @ location ([T.x],[T.y],[T.z]) : [format_frequency(frequency)]/[code]")
-
- var/datum/signal/signal = new
- signal.source = src
- signal.encryption = code
- signal.data["message"] = message
-
- spawn(0)
- radio_connection.post_signal(src, signal)
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
+ radio_connection.post_signal(src, signal)
\ No newline at end of file
diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm
index 171f21887a..8976a3ba26 100644
--- a/code/modules/power/lighting.dm
+++ b/code/modules/power/lighting.dm
@@ -288,13 +288,8 @@ var/global/list/light_type_cache = list()
shows_alerts = FALSE //VOREStation Edit
var/lamp_shade = 1
-<<<<<<< HEAD
-/obj/machinery/light/flamp/Initialize(mapload, obj/machinery/light_construct/construct = null)
- . = ..()
-=======
/obj/machinery/light/flamp/Initialize(var/ml, obj/machinery/light_construct/construct = null)
. = ..(ml, construct)
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
if(construct)
start_with_cell = FALSE
lamp_shade = 0
@@ -326,13 +321,8 @@ var/global/list/light_type_cache = list()
//VOREStation Add End
// create a new lighting fixture
-<<<<<<< HEAD
-/obj/machinery/light/Initialize(mapload, obj/machinery/light_construct/construct = null)
- . =..()
-=======
/obj/machinery/light/Initialize(var/ml, obj/machinery/light_construct/construct = null)
. = ..(ml)
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
if(construct)
start_with_cell = FALSE
diff --git a/code/modules/power/solar.dm b/code/modules/power/solar.dm
index 4a3e83b72e..2ce06af512 100644
--- a/code/modules/power/solar.dm
+++ b/code/modules/power/solar.dm
@@ -155,16 +155,12 @@ GLOBAL_LIST_EMPTY(solars_list)
broken()
return
-<<<<<<< HEAD
-=======
-
/obj/machinery/power/solar/fake/Initialize(mapload, glass_type)
. = ..(mapload, glass_type, 0)
/obj/machinery/power/solar/fake/process()
return PROCESS_KILL
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
//trace towards SSsun.sun to see if we're in shadow
/obj/machinery/power/solar/proc/occlusion()
diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm
index 22e176253d..e5d71a8f8d 100644
--- a/code/modules/projectiles/gun.dm
+++ b/code/modules/projectiles/gun.dm
@@ -93,7 +93,6 @@
var/last_shot = 0 //records the last shot fired
-<<<<<<< HEAD
//VOREStation Add - /tg/ icon system
var/charge_sections = 4
var/shaded_charge = FALSE
@@ -124,12 +123,8 @@
update_icon()
//VOREStation Add End
-/obj/item/weapon/gun/New()
- ..()
-=======
/obj/item/weapon/gun/Initialize()
. = ..()
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
for(var/i in 1 to firemodes.len)
firemodes[i] = new /datum/firemode(src, firemodes[i])
diff --git a/code/modules/shieldgen/handheld_defuser.dm b/code/modules/shieldgen/handheld_defuser.dm
index 075ebde826..3a11d16dcd 100644
--- a/code/modules/shieldgen/handheld_defuser.dm
+++ b/code/modules/shieldgen/handheld_defuser.dm
@@ -10,13 +10,8 @@
/obj/item/weapon/shield_diffuser/Initialize()
-<<<<<<< HEAD
- . = ..()
- cell = new(src)
-=======
cell = new(src)
. = ..()
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
/obj/item/weapon/shield_diffuser/Destroy()
QDEL_NULL(cell)
diff --git a/code/modules/shieldgen/shield_diffuser.dm b/code/modules/shieldgen/shield_diffuser.dm
index 3089875c91..a2a8c64b3c 100644
--- a/code/modules/shieldgen/shield_diffuser.dm
+++ b/code/modules/shieldgen/shield_diffuser.dm
@@ -16,14 +16,6 @@
/obj/machinery/shield_diffuser/Initialize()
. = ..()
-<<<<<<< HEAD
- // TODO - Remove this bit once machines are converted to Initialize
- if(ispath(circuit))
- circuit = new circuit(src)
- default_apply_parts()
-
-=======
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
var/turf/T = get_turf(src)
hide(!T.is_plating())
diff --git a/code/modules/tables/presets.dm b/code/modules/tables/presets.dm
index b5ca04a36d..c640cedb2d 100644
--- a/code/modules/tables/presets.dm
+++ b/code/modules/tables/presets.dm
@@ -113,28 +113,16 @@
icon_state = "holo_preview"
color = "#EEEEEE"
-<<<<<<< HEAD
-/obj/structure/table/holotable/New()
- material = get_material_by_name("holo[DEFAULT_TABLE_MATERIAL]")
- ..()
-=======
/obj/structure/table/holotable/Initialize()
material = get_material_by_name("holo" + DEFAULT_TABLE_MATERIAL)
. = ..()
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
/obj/structure/table/woodentable/holotable
icon_state = "holo_preview"
-<<<<<<< HEAD
-/obj/structure/table/woodentable/holotable/New()
- material = get_material_by_name("holowood")
- ..()
-=======
/obj/structure/table/woodentable/holotable/Initialize()
material = get_material_by_name("holo" + MAT_WOOD)
. = ..()
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
/obj/structure/table/alien
name = "alien table"
diff --git a/code/modules/tables/rack.dm b/code/modules/tables/rack.dm
index 22bfaca6af..09334156a9 100644
--- a/code/modules/tables/rack.dm
+++ b/code/modules/tables/rack.dm
@@ -26,8 +26,6 @@
/obj/structure/table/rack/holorack/dismantle(obj/item/weapon/tool/wrench/W, mob/user)
to_chat(user, "You cannot dismantle \the [src].")
return
-<<<<<<< HEAD
-=======
/obj/structure/table/rack/steel
color = "#666666"
@@ -62,5 +60,4 @@
/obj/structure/table/rack/gun_rack/steel/Initialize()
material = get_material_by_name(MAT_STEEL)
- . = ..()
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
+ . = ..()
\ No newline at end of file
diff --git a/code/modules/xenoarcheaology/tools/suspension_generator.dm b/code/modules/xenoarcheaology/tools/suspension_generator.dm
index df47ff49fc..5c01196940 100644
--- a/code/modules/xenoarcheaology/tools/suspension_generator.dm
+++ b/code/modules/xenoarcheaology/tools/suspension_generator.dm
@@ -12,11 +12,7 @@
/obj/machinery/suspension_gen/Initialize()
. = ..()
-<<<<<<< HEAD
- cell = new /obj/item/weapon/cell/high(src)
-=======
src.cell = new /obj/item/weapon/cell/high(src)
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
/obj/machinery/suspension_gen/process()
if(suspension_field)
diff --git a/code/modules/xenobio2/mob/slime/slime.dm b/code/modules/xenobio2/mob/slime/slime.dm
index ab3f303ef8..d0719c4f71 100644
--- a/code/modules/xenobio2/mob/slime/slime.dm
+++ b/code/modules/xenobio2/mob/slime/slime.dm
@@ -80,15 +80,9 @@ Slime definitions, Life and New live here.
"woodpulp" = list("heal" = 0.1, "nutr" = 0.7),
"docilitytoxin" = list("nutr" = 0.3) )
-<<<<<<< HEAD
-/mob/living/simple_mob/xeno/slime/New()
- ..()
- for(var/datum/language/L in subtypesof(/datum/language))
-=======
-/mob/living/simple_animal/xeno/slime/Initialize()
+/mob/living/simple_mob/xeno/slime/Initialize()
. = ..()
for(var/datum/language/L in (typesof(/datum/language) - /datum/language))
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
languages += L
speak += "[station_name()]?"
traitdat.source = "Slime"
diff --git a/code/modules/xenobio2/mob/xeno.dm b/code/modules/xenobio2/mob/xeno.dm
index 4d842ad2b4..0379921d41 100644
--- a/code/modules/xenobio2/mob/xeno.dm
+++ b/code/modules/xenobio2/mob/xeno.dm
@@ -74,11 +74,7 @@ Also includes Life and New
return 1 //Everything worked okay.
-<<<<<<< HEAD
-/mob/living/simple_mob/xeno/New()
-=======
-/mob/living/simple_animal/xeno/Initialize()
->>>>>>> 2f0a618d451... /atom New() => Initialize() [MDB IGNORE] (#8298)
+/mob/living/simple_mob/xeno/Initialize()
traitdat = new()
diff --git a/vorestation.dme b/vorestation.dme
index 49ca4c0685..3efa3c9887 100644
--- a/vorestation.dme
+++ b/vorestation.dme
@@ -3238,6 +3238,7 @@
#include "code\modules\multiz\ladder_assembly_vr.dm"
#include "code\modules\multiz\ladders.dm"
#include "code\modules\multiz\ladders_vr.dm"
+#include "code\modules\multiz\misc.dm"
#include "code\modules\multiz\movement.dm"
#include "code\modules\multiz\movement_vr.dm"
#include "code\modules\multiz\pipes.dm"
@@ -3826,7 +3827,6 @@
#include "code\modules\tables\rack.dm"
#include "code\modules\tables\rack_vr.dm"
#include "code\modules\tables\tables.dm"
-#include "code\modules\tables\update_triggers.dm"
#include "code\modules\telesci\bscyrstal.dm"
#include "code\modules\telesci\construction.dm"
#include "code\modules\telesci\gps_advanced.dm"