More initialize tweaks (#2971)

changes:

Organs now use Initialize().
The observe message now shows the configured respawn delay instead of always 30 minutes.
Seed datums no longer have a timer in New().
External organs no longer have a timer in New()/Initialize()
Converted some spawns in organs to timers.
Floor init no longer breaks to plating first for mapped in tiles.
Added the INITIALIZE_IMMEDIATE macro to make Initialize() not wait for SSatoms init.
Mannequins now use INITIALIZE_IMMEDIATE instead of a custom-defined New().
Mannequins (from get_mannequin) now delete themselves if unused for 5 minutes or longer.
This commit is contained in:
Lohikar
2017-07-28 04:00:36 -05:00
committed by Erki
parent 92d4ccec5a
commit f8cdcd013c
14 changed files with 254 additions and 222 deletions
+9 -2
View File
@@ -27,6 +27,12 @@
var/force_skintone = FALSE // If true, icon generation will skip is-robotic checks. Used for synthskin limbs.
/obj/item/organ/New(loc, ...)
..()
if (!initialized && istype(loc, /mob/living/carbon/human/dummy/mannequin))
args[1] = TRUE
SSatoms.InitAtom(src, args)
/obj/item/organ/Destroy()
STOP_PROCESSING(SSprocessing, src)
if(!owner)
@@ -51,8 +57,9 @@
/obj/item/organ/proc/update_health()
return
/obj/item/organ/New(var/mob/living/carbon/holder, var/internal)
..(holder)
/obj/item/organ/Initialize(mapload, internal)
. = ..()
var/mob/living/carbon/holder = loc
create_reagents(5)
if(!max_damage)
max_damage = min_broken_damage * 2
+4 -5
View File
@@ -165,18 +165,17 @@
damage = min(max_damage, (brute_dam + burn_dam))
return
/obj/item/organ/external/New(var/mob/living/carbon/holder)
..(holder, 0)
/obj/item/organ/external/Initialize(mapload)
. = ..(mapload, FALSE)
if(owner)
replaced(owner)
sync_colour_to_human(owner)
addtimer(CALLBACK(src, .proc/get_icon), 1)
if ((status & ORGAN_PLANT))
cannot_break = 1
get_icon()
/obj/item/organ/external/replaced(var/mob/living/carbon/human/target)
owner = target
forceMove(owner)
+7 -7
View File
@@ -240,14 +240,14 @@ obj/item/organ/vaurca/neuralsocket/process()
var/volume = 50
var/manipulated_by = null
/obj/item/organ/vaurca/preserve/New()
..()
/obj/item/organ/vaurca/preserve/Initialize()
. = ..()
src.air_contents = new /datum/gas_mixture()
src.air_contents.adjust_gas("phoron", (ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C))
src.air_contents.volume = volume //liters
src.air_contents.temperature = T20C
src.distribute_pressure = ((pick(1.8,2.0,2.4,2.8)*ONE_ATMOSPHERE)*O2STANDARD)
air_contents = new /datum/gas_mixture()
air_contents.adjust_gas("phoron", (ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C))
air_contents.volume = volume //liters
air_contents.temperature = T20C
distribute_pressure = ((pick(1.8,2.0,2.4,2.8)*ONE_ATMOSPHERE)*O2STANDARD)
START_PROCESSING(SSprocessing, src)
var/mob/living/carbon/location = loc
+2 -2
View File
@@ -3,7 +3,7 @@
icon_name = ""
dislocated = -1
/obj/item/organ/external/stump/New(var/mob/living/carbon/holder, var/internal, var/obj/item/organ/external/limb)
/obj/item/organ/external/stump/Initialize(mapload, var/internal, var/obj/item/organ/external/limb)
if(istype(limb))
limb_name = limb.limb_name
body_part = limb.body_part
@@ -11,7 +11,7 @@
joint = limb.joint
parent_organ = limb.parent_organ
wounds = limb.wounds
..(holder, internal)
. = ..(mapload, internal)
if(istype(limb))
max_damage = limb.max_damage
if((limb.status & ORGAN_ROBOT) && (!parent || (parent.status & ORGAN_ROBOT)))
+122 -118
View File
@@ -6,88 +6,88 @@
can_intake_reagents = 0
encased = "support frame"
/obj/item/organ/external/head/ipc/New()
/obj/item/organ/external/head/ipc/Initialize()
robotize("Hephaestus Integrated Limb")
..()
. = ..()
/obj/item/organ/external/chest/ipc
dislocated = -1
encased = "support frame"
/obj/item/organ/external/chest/ipc/New()
/obj/item/organ/external/chest/ipc/Initialize()
robotize("Hephaestus Integrated Limb")
..()
. = ..()
/obj/item/organ/external/groin/ipc
dislocated = -1
encased = "support frame"
/obj/item/organ/external/groin/ipc/New()
/obj/item/organ/external/groin/ipc/Initialize()
robotize("Hephaestus Integrated Limb")
..()
. = ..()
/obj/item/organ/external/arm/ipc
dislocated = -1
encased = "support frame"
/obj/item/organ/external/arm/ipc/New()
/obj/item/organ/external/arm/ipc/Initialize()
robotize("Hephaestus Integrated Limb")
..()
. = ..()
/obj/item/organ/external/arm/right/ipc
dislocated = -1
encased = "support frame"
/obj/item/organ/external/arm/right/ipc/New()
/obj/item/organ/external/arm/right/ipc/Initialize()
robotize("Hephaestus Integrated Limb")
..()
. = ..()
/obj/item/organ/external/leg/ipc
dislocated = -1
encased = "support frame"
/obj/item/organ/external/leg/ipc/New()
/obj/item/organ/external/leg/ipc/Initialize()
robotize("Hephaestus Integrated Limb")
..()
. = ..()
/obj/item/organ/external/leg/right/ipc
dislocated = -1
/obj/item/organ/external/leg/right/ipc/New()
/obj/item/organ/external/leg/right/ipc/Initialize()
robotize("Hephaestus Integrated Limb")
..()
. = ..()
/obj/item/organ/external/foot/ipc
dislocated = -1
encased = "support frame"
/obj/item/organ/external/foot/ipc/New()
/obj/item/organ/external/foot/ipc/Initialize()
robotize("Hephaestus Integrated Limb")
..()
. = ..()
/obj/item/organ/external/foot/right/ipc
dislocated = -1
encased = "support frame"
/obj/item/organ/external/foot/right/ipc/New()
/obj/item/organ/external/foot/right/ipc/Initialize()
robotize("Hephaestus Integrated Limb")
..()
. = ..()
/obj/item/organ/external/hand/ipc
dislocated = -1
encased = "support frame"
/obj/item/organ/external/hand/ipc/New()
/obj/item/organ/external/hand/ipc/Initialize()
robotize("Hephaestus Integrated Limb")
..()
. = ..()
/obj/item/organ/external/hand/right/ipc
dislocated = -1
encased = "support frame"
/obj/item/organ/external/hand/right/ipc/New()
/obj/item/organ/external/hand/right/ipc/Initialize()
robotize("Hephaestus Integrated Limb")
..()
. = ..()
/obj/item/organ/cell
name = "microbattery"
@@ -98,12 +98,12 @@
parent_organ = "chest"
vital = 1
/obj/item/organ/cell/New()
/obj/item/organ/cell/Initialize()
robotize()
..()
. = ..()
/obj/item/organ/cell/replaced()
..()
. = ..()
// This is very ghetto way of rebooting an IPC. TODO better way.
if(owner && owner.stat == DEAD)
owner.stat = 0
@@ -116,9 +116,9 @@
icon_state = "camera"
dead_icon = "camera_broken"
/obj/item/organ/eyes/optical_sensor/New()
/obj/item/organ/eyes/optical_sensor/Initialize()
robotize()
..()
. = ..()
/obj/item/organ/ipc_tag
name = "identification tag"
@@ -128,9 +128,9 @@
icon_state = "gps-c"
dead_icon = "gps-c"
/obj/item/organ/ipc_tag/New()
/obj/item/organ/ipc_tag/Initialize()
robotize()
..()
. = ..()
// Used for an MMI or posibrain being installed into a human.
/obj/item/organ/mmi_holder
@@ -154,36 +154,40 @@
stored_mmi.loc = get_turf(src)
if(owner.mind)
owner.mind.transfer_to(stored_mmi.brainmob)
..()
. = ..()
var/mob/living/holder_mob = loc
if(istype(holder_mob))
holder_mob.drop_from_inventory(src)
qdel(src)
/obj/item/organ/mmi_holder/New()
..()
/obj/item/organ/mmi_holder/Initialize(mapload)
. = ..()
// This is very ghetto way of rebooting an IPC. TODO better way.
spawn(1)
if(owner && owner.stat == DEAD)
owner.stat = 0
owner.visible_message("<span class='danger'>\The [owner] twitches visibly!</span>")
if (!mapload)
addtimer(CALLBACK(src, .proc/attempt_revive), 1)
/obj/item/organ/mmi_holder/posibrain/New()
/obj/item/organ/mmi_holder/proc/attempt_revive()
if (owner && owner.stat == DEAD)
owner.stat = 0
owner.visible_message("<span class='danger'>\The [owner] twitches visibly!</span>")
/obj/item/organ/mmi_holder/posibrain/Initialize()
robotize()
stored_mmi = new /obj/item/device/mmi/digital/posibrain(src)
..()
spawn(1)
if(owner)
stored_mmi.name = "positronic brain ([owner.name])"
stored_mmi.brainmob.real_name = owner.name
stored_mmi.brainmob.name = stored_mmi.brainmob.real_name
stored_mmi.icon_state = "posibrain-occupied"
update_from_mmi()
else
stored_mmi.loc = get_turf(src)
qdel(src)
. = ..()
addtimer(CALLBACK(src, .proc/setup_brain), 1)
/obj/item/organ/mmi_holder/posibrain/proc/setup_brain()
if(owner)
stored_mmi.name = "positronic brain ([owner.name])"
stored_mmi.brainmob.real_name = owner.name
stored_mmi.brainmob.name = stored_mmi.brainmob.real_name
stored_mmi.icon_state = "posibrain-occupied"
update_from_mmi()
else
stored_mmi.loc = get_turf(src)
qdel(src)
//////////////
//Terminator//
@@ -205,9 +209,9 @@
vital = 0
emp_coeff = 0.1
/obj/item/organ/data/New()
/obj/item/organ/data/Initialize()
robotize()
..()
. = ..()
/obj/item/organ/cell/terminator
name = "shielded microbattery"
@@ -219,9 +223,9 @@
vital = 1
emp_coeff = 0.1
/obj/item/organ/cell/New()
/obj/item/organ/cell/Initialize()
robotize()
..()
. = ..()
/obj/item/organ/external/head/terminator
dislocated = -1
@@ -232,99 +236,99 @@
/obj/item/organ/eyes/optical_sensor/terminator
emp_coeff = 0.5
/obj/item/organ/external/head/terminator/New()
/obj/item/organ/external/head/terminator/Initialize()
robotize("Hephaestus Vulcanite Limb")
..()
. = ..()
/obj/item/organ/external/chest/terminator
dislocated = -1
encased = "reinforced support frame"
emp_coeff = 0.5
/obj/item/organ/external/chest/terminator/New()
/obj/item/organ/external/chest/terminator/Initialize()
robotize("Hephaestus Vulcanite Limb")
..()
. = ..()
/obj/item/organ/external/groin/terminator
dislocated = -1
encased = "reinforced support frame"
emp_coeff = 0.5
/obj/item/organ/external/groin/terminator/New()
/obj/item/organ/external/groin/terminator/Initialize()
robotize("Hephaestus Vulcanite Limb")
..()
. = ..()
/obj/item/organ/external/arm/terminator
dislocated = -1
encased = "reinforced support frame"
emp_coeff = 0.5
/obj/item/organ/external/arm/terminator/New()
/obj/item/organ/external/arm/terminator/Initialize()
robotize("Hephaestus Vulcanite Limb")
..()
. = ..()
/obj/item/organ/external/arm/right/terminator
dislocated = -1
encased = "reinforced support frame"
emp_coeff = 0.5
/obj/item/organ/external/arm/right/terminator/New()
/obj/item/organ/external/arm/right/terminator/Initialize()
robotize("Hephaestus Vulcanite Limb")
..()
. = ..()
/obj/item/organ/external/leg/terminator
dislocated = -1
encased = "reinforced support frame"
emp_coeff = 0.5
/obj/item/organ/external/leg/terminator/New()
/obj/item/organ/external/leg/terminator/Initialize()
robotize("Hephaestus Vulcanite Limb")
..()
. = ..()
/obj/item/organ/external/leg/right/terminator
dislocated = -1
encased = "reinforced support frame"
emp_coeff = 0.5
/obj/item/organ/external/leg/right/terminator/New()
/obj/item/organ/external/leg/right/terminator/Initialize()
robotize("Hephaestus Vulcanite Limb")
..()
. = ..()
/obj/item/organ/external/foot/terminator
dislocated = -1
encased = "reinforced support frame"
emp_coeff = 0.5
/obj/item/organ/external/foot/terminator/New()
/obj/item/organ/external/foot/terminator/Initialize()
robotize("Hephaestus Vulcanite Limb")
..()
. = ..()
/obj/item/organ/external/foot/right/terminator
dislocated = -1
encased = "reinforced support frame"
emp_coeff = 0.5
/obj/item/organ/external/foot/right/terminator/New()
/obj/item/organ/external/foot/right/terminator/Initialize()
robotize("Hephaestus Vulcanite Limb")
..()
. = ..()
/obj/item/organ/external/hand/terminator
dislocated = -1
encased = "reinforced support frame"
emp_coeff = 0.5
/obj/item/organ/external/hand/terminator/New()
/obj/item/organ/external/hand/terminator/Initialize()
robotize("Hephaestus Vulcanite Limb")
..()
. = ..()
/obj/item/organ/external/hand/right/terminator
dislocated = -1
encased = "reinforced support frame"
emp_coeff = 0.5
/obj/item/organ/external/hand/right/terminator/New()
/obj/item/organ/external/hand/right/terminator/Initialize()
robotize("Hephaestus Vulcanite Limb")
..()
. = ..()
//////////////
//Industrial//
@@ -335,89 +339,89 @@
can_intake_reagents = 0
encased = "support frame"
/obj/item/organ/external/head/industrial/New()
/obj/item/organ/external/head/industrial/Initialize()
robotize("Hephaestus Industrial Limb")
..()
. = ..()
/obj/item/organ/external/chest/industrial
dislocated = -1
encased = "support frame"
/obj/item/organ/external/chest/industrial/New()
/obj/item/organ/external/chest/industrial/Initialize()
robotize("Hephaestus Industrial Limb")
..()
. = ..()
/obj/item/organ/external/groin/industrial
dislocated = -1
encased = "support frame"
/obj/item/organ/external/groin/industrial/New()
/obj/item/organ/external/groin/industrial/Initialize()
robotize("Hephaestus Industrial Limb")
..()
. = ..()
/obj/item/organ/external/arm/industrial
dislocated = -1
encased = "support frame"
/obj/item/organ/external/arm/industrial/New()
/obj/item/organ/external/arm/industrial/Initialize()
robotize("Hephaestus Industrial Limb")
..()
. = ..()
/obj/item/organ/external/arm/right/industrial
dislocated = -1
encased = "support frame"
/obj/item/organ/external/arm/right/industrial/New()
/obj/item/organ/external/arm/right/industrial/Initialize()
robotize("Hephaestus Industrial Limb")
..()
. = ..()
/obj/item/organ/external/leg/industrial
dislocated = -1
encased = "support frame"
/obj/item/organ/external/leg/industrial/New()
/obj/item/organ/external/leg/industrial/Initialize()
robotize("Hephaestus Industrial Limb")
..()
. = ..()
/obj/item/organ/external/leg/right/industrial
dislocated = -1
encased = "support frame"
/obj/item/organ/external/leg/right/industrial/New()
/obj/item/organ/external/leg/right/industrial/Initialize()
robotize("Hephaestus Industrial Limb")
..()
. = ..()
/obj/item/organ/external/foot/industrial
dislocated = -1
encased = "support frame"
/obj/item/organ/external/foot/industrial/New()
/obj/item/organ/external/foot/industrial/Initialize()
robotize("Hephaestus Industrial Limb")
..()
. = ..()
/obj/item/organ/external/foot/right/industrial
dislocated = -1
encased = "support frame"
/obj/item/organ/external/foot/right/industrial/New()
/obj/item/organ/external/foot/right/industrial/Initialize()
robotize("Hephaestus Industrial Limb")
..()
. = ..()
/obj/item/organ/external/hand/industrial
dislocated = -1
encased = "support frame"
/obj/item/organ/external/hand/industrial/New()
/obj/item/organ/external/hand/industrial/Initialize()
robotize("Hephaestus Industrial Limb")
..()
. = ..()
/obj/item/organ/external/hand/right/industrial
dislocated = -1
encased = "support frame"
/obj/item/organ/external/hand/right/industrial/New()
/obj/item/organ/external/hand/right/industrial/Initialize()
robotize("Hephaestus Industrial Limb")
..()
. = ..()
///////////////
//Shell limbs//
@@ -429,9 +433,9 @@
encased = "support frame"
force_skintone = TRUE
/obj/item/organ/external/head/shell/New()
/obj/item/organ/external/head/shell/Initialize()
robotize("Human Synthskin")
..()
. = ..()
/obj/item/organ/external/chest/shell
dislocated = -1
@@ -439,87 +443,87 @@
force_skintone = TRUE
/obj/item/organ/external/chest/shell/New()
/obj/item/organ/external/chest/shell/Initialize()
robotize("Human Synthskin")
..()
. = ..()
/obj/item/organ/external/groin/shell
dislocated = -1
encased = "support frame"
force_skintone = TRUE
/obj/item/organ/external/groin/shell/New()
/obj/item/organ/external/groin/shell/Initialize()
robotize("Human Synthskin")
..()
. = ..()
/obj/item/organ/external/arm/shell
dislocated = -1
encased = "support frame"
force_skintone = TRUE
/obj/item/organ/external/arm/shell/New()
/obj/item/organ/external/arm/shell/Initialize()
robotize("Human Synthskin")
..()
. = ..()
/obj/item/organ/external/arm/right/shell
dislocated = -1
encased = "support frame"
force_skintone = TRUE
/obj/item/organ/external/arm/right/shell/New()
/obj/item/organ/external/arm/right/shell/Initialize()
robotize("Human Synthskin")
..()
. = ..()
/obj/item/organ/external/leg/shell
dislocated = -1
encased = "support frame"
force_skintone = TRUE
/obj/item/organ/external/leg/shell/New()
/obj/item/organ/external/leg/shell/Initialize()
robotize("Human Synthskin")
..()
. = ..()
/obj/item/organ/external/leg/right/shell
dislocated = -1
encased = "support frame"
force_skintone = TRUE
/obj/item/organ/external/leg/right/shell/New()
/obj/item/organ/external/leg/right/shell/Initialize()
robotize("Human Synthskin")
..()
. = ..()
/obj/item/organ/external/foot/shell
dislocated = -1
encased = "support frame"
force_skintone = TRUE
/obj/item/organ/external/foot/shell/New()
/obj/item/organ/external/foot/shell/Initialize()
robotize("Human Synthskin")
..()
. = ..()
/obj/item/organ/external/foot/right/shell
dislocated = -1
encased = "support frame"
force_skintone = TRUE
/obj/item/organ/external/foot/right/shell/New()
/obj/item/organ/external/foot/right/shell/Initialize()
robotize("Human Synthskin")
..()
. = ..()
/obj/item/organ/external/hand/shell
dislocated = -1
encased = "support frame"
force_skintone = TRUE
/obj/item/organ/external/hand/shell/New()
/obj/item/organ/external/hand/shell/Initialize()
robotize("Human Synthskin")
..()
. = ..()
/obj/item/organ/external/hand/right/shell
dislocated = -1
encased = "support frame"
force_skintone = TRUE
/obj/item/organ/external/hand/right/shell/New()
/obj/item/organ/external/hand/right/shell/Initialize()
robotize("Human Synthskin")
..()
. = ..()