SS Conversion: Atoms, Machines, n' Mobs

This converts the machine and mob processes to the SMC. Additionally, it
adds the Atom subsystem, which handles all Initialize() calls in place
of the old gameticker. Due to incompatibility with our atmospherics
(FUCK OUR ATMOSPHERICS FOR FUCKING EVER JESUS CHRIST WHO THE FUCK MADE
THIS PIECE OF GODDAMN SHIT) atmospherics machines do not use
Initialize() as they should, instead opting for a custom atmos_init
proc that the air controller handles.
This commit is contained in:
tigercat2000
2018-04-28 17:55:15 -07:00
parent dabdbd4426
commit 7d8c9a731a
181 changed files with 765 additions and 571 deletions
+1 -1
View File
@@ -51,7 +51,7 @@
return
feedback_add_details("admin_verb","CPOW") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
for(var/datum/powernet/PN in powernets)
for(var/datum/powernet/PN in SSmachines.powernets)
if(!PN.nodes || !PN.nodes.len)
if(PN.cables && (PN.cables.len > 1))
var/obj/structure/cable/C = PN.cables[1]
+1 -1
View File
@@ -387,7 +387,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
if(!check_rights(R_DEBUG))
return
makepowernets()
SSmachines.makepowernets()
log_admin("[key_name(src)] has remade the powernet. makepowernets() called.")
message_admins("[key_name_admin(src)] has remade the powernets. makepowernets() called.", 0)
feedback_add_details("admin_verb","MPWN") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
@@ -27,11 +27,11 @@
team = "Blue"
avatar_y_offset = 1
/obj/machinery/computer/mob_battle_terminal/red/initialize()
/obj/machinery/computer/mob_battle_terminal/red/Initialize()
..()
check_connection()
/obj/machinery/computer/mob_battle_terminal/blue/initialize()
/obj/machinery/computer/mob_battle_terminal/blue/Initialize()
..()
check_connection()
+2 -1
View File
@@ -23,7 +23,8 @@
if(radio_controller)
set_frequency(frequency)
/obj/item/assembly/signaler/initialize()
/obj/item/assembly/signaler/Initialize()
..()
if(radio_controller)
set_frequency(frequency)
+2 -1
View File
@@ -29,7 +29,8 @@
var/brute_damage = 0
var/oxy_damage = 0
/obj/effect/landmark/corpse/initialize()
/obj/effect/landmark/corpse/Initialize()
..()
if(istype(src,/obj/effect/landmark/corpse/clown))
var/obj/effect/landmark/corpse/clown/C = src
C.chooseRank()
+3 -3
View File
@@ -9,7 +9,7 @@ var/obj/machinery/gateway/centerstation/the_gateway = null
unacidable = 1
var/active = 0
/obj/machinery/gateway/initialize()
/obj/machinery/gateway/Initialize()
..()
update_icon()
update_density_from_dir()
@@ -44,7 +44,7 @@ var/obj/machinery/gateway/centerstation/the_gateway = null
if(!the_gateway)
the_gateway = src
/obj/machinery/gateway/centerstation/initialize()
/obj/machinery/gateway/centerstation/Initialize()
..()
update_icon()
wait = world.time + config.gateway_delay //+ thirty minutes default
@@ -170,7 +170,7 @@ var/obj/machinery/gateway/centerstation/the_gateway = null
var/obj/machinery/gateway/centeraway/stationgate = null
/obj/machinery/gateway/centeraway/initialize()
/obj/machinery/gateway/centeraway/Initialize()
..()
update_icon()
stationgate = locate(/obj/machinery/gateway/centerstation) in world
+2 -1
View File
@@ -5,7 +5,8 @@
var/lootdoubles = 0 //if the same item can be spawned twice
var/loot = "" //a list of possible items to spawn- a string of paths
/obj/effect/spawner/away/lootdrop/initialize()
/obj/effect/spawner/away/lootdrop/Initialize()
..()
var/list/things = params2list(loot)
if(things && things.len)
+2 -7
View File
@@ -18,13 +18,8 @@
template_name = tname
if(template_name)
template = map_templates[template_name]
// Catches the interim-zone of worldstart and roundstart
// I want both the ticker to exist (so mapped-in maploaders don't trip this)
// but also not have started yet (since the zlevel system would handle this on its own otherwise)
if((ticker && ticker.current_state < GAME_STATE_PLAYING))
attempt_init()
/obj/effect/landmark/map_loader/initialize()
/obj/effect/landmark/map_loader/Initialize()
..()
if(template)
load(template)
@@ -48,7 +43,7 @@
/obj/effect/landmark/map_loader/random
var/template_list = ""
/obj/effect/landmark/map_loader/random/initialize()
/obj/effect/landmark/map_loader/random/Initialize()
..()
if(template_list)
template_name = safepick(splittext(template_list, ";"))
@@ -422,13 +422,6 @@ var/global/dmm_suite/preloader/_preloader = new
return to_return
//atom creation method that preloads variables at creation
/atom/New()
if(use_preloader && (src.type == _preloader.target_path))//in case the instanciated atom is creating other atoms in New()
_preloader.load(src)
. = ..()
/dmm_suite/Destroy()
..()
return QDEL_HINT_HARDDEL_NOW
@@ -54,7 +54,7 @@
name = "space hotel pamphlet"
info = "<h3>Welcome to Deep Space Hotel 419!</h3>Thank you for choosing our hotel. Simply hand your credit or debit card to the concierge and get your room key! To check out, hand your credit card back.<small><h4>Conditions:</h4><ul><li>The hotel is not responsible for any losses due to time or space anomalies.<li>The hotel is not responsible for events that occur outside of the hotel station, including, but not limited to, events that occur inside of dimensional pockets.<li>The hotel is not responsible for overcharging your account.<li>The hotel is not responsible for missing persons.<li>The hotel is not responsible for mind-altering effects due to drugs, magic, demons, or space worms.</ul></small>"
/obj/effect/landmark/map_loader/hotel_room/initialize()
/obj/effect/landmark/map_loader/hotel_room/Initialize()
..()
// load and randomly assign rooms
var/global/list/south_room_templates = list()
+2 -2
View File
@@ -22,7 +22,7 @@
..()
levels += src
/obj/effect/levelref/initialize()
/obj/effect/levelref/Initialize()
..()
for(var/obj/effect/levelref/O in levels)
if(id == O.id && O != src)
@@ -161,7 +161,7 @@
..()
portals += src
/obj/effect/view_portal/initialize()
/obj/effect/view_portal/Initialize()
..()
if(id)
for(var/obj/effect/view_portal/O in portals)
+1 -1
View File
@@ -38,7 +38,7 @@ log transactions
..()
machine_id = "[station_name()] RT #[num_financial_terminals++]"
/obj/machinery/atm/initialize()
/obj/machinery/atm/Initialize()
..()
reconnect_database()
+1 -1
View File
@@ -96,7 +96,7 @@ var/total_runtimes_skipped = 0
// Now to actually output the error info...
log_world("\[[time_stamp()]] Runtime in [e.file],[e.line]: [e]")
log_runtime_txt("\[[time_stamp()]] Runtime in [e.file],[e.line]: [e]")
log_runtime_txt("Runtime in [e.file],[e.line]: [e]")
for(var/line in desclines)
log_world(line)
log_runtime_txt(line)
+1 -1
View File
@@ -24,7 +24,7 @@
var/tmp/busy = 0
var/list/allowed_books = list(/obj/item/book, /obj/item/spellbook, /obj/item/storage/bible, /obj/item/tome) //Things allowed in the bookcase
/obj/structure/bookcase/initialize()
/obj/structure/bookcase/Initialize()
..()
for(var/obj/item/I in loc)
if(is_type_in_list(I, allowed_books))
-10
View File
@@ -40,16 +40,6 @@
else
light = new /datum/light_source(src, .)
/atom/New()
. = ..()
if(light_power && light_range)
update_light()
if(opacity && isturf(loc))
var/turf/T = loc
T.has_opaque_atom = TRUE // No need to recalculate it in this case, it's guranteed to be on afterwards anyways.
/atom/Destroy()
if(light)
light.destroy()
@@ -9,7 +9,6 @@
invisibility = INVISIBILITY_LIGHTING
color = LIGHTING_BASE_MATRIX
icon_state = "light1"
auto_init = 0 // doesn't need special init
blend_mode = BLEND_MULTIPLY
var/lum_r = 0
+1 -1
View File
@@ -50,7 +50,7 @@
component_parts += LG
component_parts += new /obj/item/stack/cable_coil(null, 1)
/obj/machinery/logic_gate/initialize()
/obj/machinery/logic_gate/Initialize()
..()
set_frequency(frequency)
+2 -2
View File
@@ -106,7 +106,7 @@ var/list/image/ghost_darkness_images = list() //this is a list of images for thi
Transfer_mind is there to check if mob is being deleted/not going to have a body.
Works together with spawning an observer, noted above.
*/
/mob/dead/observer/Life()
/mob/dead/observer/Life(seconds, times_fired)
..()
if(!loc) return
if(!client) return 0
@@ -419,7 +419,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
if(.)
update_following()
/mob/Life()
/mob/Life(seconds, times_fired)
// to catch teleports etc which directly set loc
update_following()
return ..()
@@ -1,4 +1,4 @@
/mob/living/carbon/alien/humanoid/Life()
/mob/living/carbon/alien/humanoid/Life(seconds, times_fired)
. = ..()
update_icons()
@@ -1,4 +1,4 @@
/mob/living/carbon/alien/larva/Life()
/mob/living/carbon/alien/larva/Life(seconds, times_fired)
if(..()) //still breathing
// GROW!
if(amount_grown < max_grown)
+52 -53
View File
@@ -10,8 +10,7 @@
var/datum/species/species //Contains icon generation and language information, set during New().
var/obj/item/rig/wearing_rig // This is very not good, but it's much much better than calling get_rig() every update_canmove() call.
/mob/living/carbon/human/New(var/new_loc, var/new_species = null, var/delay_ready_dna = 0)
/mob/living/carbon/human/Initialize(mapload, new_species = null)
if(!dna)
dna = new /datum/dna(null)
// Species name is handled by set_species()
@@ -40,7 +39,7 @@
faction |= "\ref[M]" //what
// Set up DNA.
if(!delay_ready_dna && dna)
if(dna)
dna.ready_dna(src)
dna.real_name = real_name
sync_organ_dna(1)
@@ -69,80 +68,80 @@
real_name = "Test Dummy"
status_flags = GODMODE|CANPUSH
/mob/living/carbon/human/skrell/New(var/new_loc)
..(new_loc, "Skrell")
/mob/living/carbon/human/skrell/Initialize(mapload)
..(mapload, "Skrell")
/mob/living/carbon/human/tajaran/New(var/new_loc)
..(new_loc, "Tajaran")
/mob/living/carbon/human/tajaran/Initialize(mapload)
..(mapload, "Tajaran")
/mob/living/carbon/human/vulpkanin/New(var/new_loc)
..(new_loc, "Vulpkanin")
/mob/living/carbon/human/vulpkanin/Initialize(mapload)
..(mapload, "Vulpkanin")
/mob/living/carbon/human/unathi/New(var/new_loc)
..(new_loc, "Unathi")
/mob/living/carbon/human/unathi/Initialize(mapload)
..(mapload, "Unathi")
/mob/living/carbon/human/vox/New(var/new_loc)
..(new_loc, "Vox")
/mob/living/carbon/human/vox/Initialize(mapload)
..(mapload, "Vox")
/mob/living/carbon/human/voxarmalis/New(var/new_loc)
..(new_loc, "Vox Armalis")
/mob/living/carbon/human/voxarmalis/Initialize(mapload)
..(mapload, "Vox Armalis")
/mob/living/carbon/human/skeleton/New(var/new_loc)
..(new_loc, "Skeleton")
/mob/living/carbon/human/skeleton/Initialize(mapload)
..(mapload, "Skeleton")
/mob/living/carbon/human/kidan/New(var/new_loc)
..(new_loc, "Kidan")
/mob/living/carbon/human/kidan/Initialize(mapload)
..(mapload, "Kidan")
/mob/living/carbon/human/plasma/New(var/new_loc)
..(new_loc, "Plasmaman")
/mob/living/carbon/human/plasma/Initialize(mapload)
..(mapload, "Plasmaman")
/mob/living/carbon/human/slime/New(var/new_loc)
..(new_loc, "Slime People")
/mob/living/carbon/human/slime/Initialize(mapload)
..(mapload, "Slime People")
/mob/living/carbon/human/grey/New(var/new_loc)
..(new_loc, "Grey")
/mob/living/carbon/human/grey/Initialize(mapload)
..(mapload, "Grey")
/mob/living/carbon/human/abductor/New(var/new_loc)
..(new_loc, "Abductor")
/mob/living/carbon/human/abductor/Initialize(mapload)
..(mapload, "Abductor")
/mob/living/carbon/human/human/New(var/new_loc)
..(new_loc, "Human")
/mob/living/carbon/human/human/Initialize(mapload)
..(mapload, "Human")
/mob/living/carbon/human/diona/New(var/new_loc)
..(new_loc, "Diona")
/mob/living/carbon/human/diona/Initialize(mapload)
..(mapload, "Diona")
/mob/living/carbon/human/machine/New(var/new_loc)
..(new_loc, "Machine")
/mob/living/carbon/human/machine/Initialize(mapload)
..(mapload, "Machine")
/mob/living/carbon/human/shadow/New(var/new_loc)
..(new_loc, "Shadow")
/mob/living/carbon/human/shadow/Initialize(mapload)
..(mapload, "Shadow")
/mob/living/carbon/human/golem/New(var/new_loc)
..(new_loc, "Golem")
/mob/living/carbon/human/golem/Initialize(mapload)
..(mapload, "Golem")
/mob/living/carbon/human/wryn/New(var/new_loc)
..(new_loc, "Wryn")
/mob/living/carbon/human/wryn/Initialize(mapload)
..(mapload, "Wryn")
/mob/living/carbon/human/nucleation/New(var/new_loc)
..(new_loc, "Nucleation")
/mob/living/carbon/human/nucleation/Initialize(mapload)
..(mapload, "Nucleation")
/mob/living/carbon/human/drask/New(var/new_loc)
..(new_loc, "Drask")
/mob/living/carbon/human/drask/Initialize(mapload)
..(mapload, "Drask")
/mob/living/carbon/human/monkey/New(var/new_loc)
..(new_loc, "Monkey")
/mob/living/carbon/human/monkey/Initialize(mapload)
..(mapload, "Monkey")
/mob/living/carbon/human/farwa/New(var/new_loc)
..(new_loc, "Farwa")
/mob/living/carbon/human/farwa/Initialize(mapload)
..(mapload, "Farwa")
/mob/living/carbon/human/wolpin/New(var/new_loc)
..(new_loc, "Wolpin")
/mob/living/carbon/human/wolpin/Initialize(mapload)
..(mapload, "Wolpin")
/mob/living/carbon/human/neara/New(var/new_loc)
..(new_loc, "Neara")
/mob/living/carbon/human/neara/Initialize(mapload)
..(mapload, "Neara")
/mob/living/carbon/human/stok/New(var/new_loc)
..(new_loc, "Stok")
/mob/living/carbon/human/stok/Initialize(mapload)
..(mapload, "Stok")
/mob/living/carbon/human/Stat()
..()
+4 -5
View File
@@ -1,4 +1,4 @@
/mob/living/carbon/human/Life()
/mob/living/carbon/human/Life(seconds, times_fired)
life_tick++
voice = GetVoice()
@@ -32,7 +32,7 @@
//Update our name based on whether our face is obscured/disfigured
name = get_visible_name()
pulse = handle_pulse()
pulse = handle_pulse(times_fired)
if(mind && mind.vampire)
mind.vampire.handle_vampire()
@@ -902,9 +902,8 @@
hud_used.lingchemdisplay.invisibility = 101
/mob/living/carbon/human/proc/handle_pulse()
if(mob_master.current_cycle % 5)
/mob/living/carbon/human/proc/handle_pulse(times_fired)
if(times_fired % 5 == 1)
return pulse //update pulse every 5 life ticks (~1 tick/sec, depending on server load)
if(NO_BLOOD in species.species_traits)
+8 -8
View File
@@ -1,4 +1,4 @@
/mob/living/carbon/Life()
/mob/living/carbon/Life(seconds, times_fired)
set invisibility = 0
set background = BACKGROUND_ENABLED
@@ -14,7 +14,7 @@
O.on_life()
handle_changeling()
handle_wetness()
handle_wetness(times_fired)
// Increase germ_level regularly
if(germ_level < GERM_LEVEL_AMBIENT && prob(30)) //if you're just standing there, you shouldn't get more germs beyond an ambient level
@@ -26,8 +26,8 @@
///////////////
//Start of a breath chain, calls breathe()
/mob/living/carbon/handle_breathing()
if(mob_master.current_cycle % 4 == 2 || failed_last_breath)
/mob/living/carbon/handle_breathing(times_fired)
if(times_fired % 4 == 2 || failed_last_breath)
breathe() //Breathe per 4 ticks, unless suffocating
else
if(istype(loc, /obj/))
@@ -241,11 +241,11 @@
reagents.metabolize(src)
/mob/living/carbon/proc/handle_wetness()
if(mob_master.current_cycle%20==2) //dry off a bit once every 20 ticks or so
/mob/living/carbon/proc/handle_wetness(times_fired)
if(times_fired % 20==2) //dry off a bit once every 20 ticks or so
wetlevel = max(wetlevel - 1,0)
/mob/living/carbon/handle_stomach()
/mob/living/carbon/handle_stomach(times_fired)
for(var/mob/living/M in stomach_contents)
if(M.loc != src)
stomach_contents.Remove(M)
@@ -255,7 +255,7 @@
stomach_contents.Remove(M)
qdel(M)
continue
if(mob_master.current_cycle%3==1)
if(times_fired % 3 == 1)
M.adjustBruteLoss(5)
nutrition += 10
+1 -1
View File
@@ -5,7 +5,7 @@
var/Discipline = 0 // if a slime has been hit with a freeze gun, or wrestled/attacked off a human, they become disciplined and don't attack anymore for a while
var/SStun = 0 // stun variable
/mob/living/carbon/slime/Life()
/mob/living/carbon/slime/Life(seconds, times_fired)
if(..())
handle_nutrition()
handle_targets()
+5 -5
View File
@@ -1,4 +1,4 @@
/mob/living/Life()
/mob/living/Life(seconds, times_fired)
set invisibility = 0
set background = BACKGROUND_ENABLED
@@ -22,7 +22,7 @@
handle_mutations_and_radiation()
//Breathing, if applicable
handle_breathing()
handle_breathing(times_fired)
//Random events (vomiting etc)
handle_random_events()
@@ -38,7 +38,7 @@
handle_fire()
//stuff in the stomach
handle_stomach()
handle_stomach(times_fired)
update_gravity(mob_has_gravity())
@@ -61,7 +61,7 @@
..()
/mob/living/proc/handle_breathing()
/mob/living/proc/handle_breathing(times_fired)
return
/mob/living/proc/handle_mutations_and_radiation()
@@ -80,7 +80,7 @@
/mob/living/proc/handle_environment(datum/gas_mixture/environment)
return
/mob/living/proc/handle_stomach()
/mob/living/proc/handle_stomach(times_fired)
return
/mob/living/proc/update_pulling()
+1 -1
View File
@@ -3,7 +3,7 @@
#define POWER_RESTORATION_SEARCH_APC 2
#define POWER_RESTORATION_APC_FOUND 3
/mob/living/silicon/ai/Life()
/mob/living/silicon/ai/Life(seconds, times_fired)
//doesn't call parent because it's a horrible mess
if(stat == DEAD)
return
@@ -1,4 +1,4 @@
/mob/living/silicon/decoy/Life()
/mob/living/silicon/decoy/Life(seconds, times_fired)
if(src.stat == 2)
return
else
+1 -1
View File
@@ -1,4 +1,4 @@
/mob/living/silicon/pai/Life()
/mob/living/silicon/pai/Life(seconds, times_fired)
. = ..()
if(.)
//if(secHUD == 1)
@@ -1,4 +1,4 @@
/mob/living/silicon/robot/Life()
/mob/living/silicon/robot/Life(seconds, times_fired)
set invisibility = 0
set background = BACKGROUND_ENABLED
@@ -267,7 +267,7 @@ Auto Patrol: []"},
C.visible_message("<span class='danger'>[src] has [harmbaton ? "beaten" : "stunned"] [C]!</span>",\
"<span class='userdanger'>[src] has [harmbaton ? "beaten" : "stunned"] you!</span>")
/mob/living/simple_animal/bot/secbot/Life()
/mob/living/simple_animal/bot/secbot/Life(seconds, times_fired)
. = ..()
if(flashing_lights)
switch(light_color)
@@ -285,7 +285,7 @@
AIStatus = AI_ON
environment_smash = 1 //only token destruction, don't smash the cult wall NO STOP
/mob/living/simple_animal/hostile/construct/behemoth/Life()
/mob/living/simple_animal/hostile/construct/behemoth/Life(seconds, times_fired)
weakened = 0
return ..()
@@ -46,7 +46,7 @@
Read_Memory()
..()
/mob/living/simple_animal/pet/cat/Runtime/Life()
/mob/living/simple_animal/pet/cat/Runtime/Life(seconds, times_fired)
if(!cats_deployed && ticker.current_state >= GAME_STATE_SETTING_UP)
Deploy_The_Cats()
if(!stat && ticker.current_state == GAME_STATE_FINISHED && !memory_saved)
@@ -37,7 +37,7 @@
if(gender == NEUTER)
gender = pick(MALE, FEMALE)
/mob/living/simple_animal/pet/corgi/Life()
/mob/living/simple_animal/pet/corgi/Life(seconds, times_fired)
. = ..()
regenerate_icons()
@@ -612,7 +612,7 @@
A.fire()
return
/mob/living/simple_animal/pet/corgi/Ian/borgi/Life()
/mob/living/simple_animal/pet/corgi/Ian/borgi/Life(seconds, times_fired)
..()
if(emagged && prob(25))
var/mob/living/carbon/target = locate() in view(10,src)
@@ -34,7 +34,7 @@
Move(get_step(src, east_vs_west), east_vs_west)
turns_since_move = 0
/mob/living/simple_animal/crab/Life()
/mob/living/simple_animal/crab/Life(seconds, times_fired)
. = ..()
regenerate_icons()
@@ -52,7 +52,7 @@
if(SV)
SV.eat(src)
/mob/living/simple_animal/hostile/retaliate/goat/Life()
/mob/living/simple_animal/hostile/retaliate/goat/Life(seconds, times_fired)
. = ..()
if(stat == CONSCIOUS && prob(5))
milk_content = min(50, milk_content+rand(5, 10))
@@ -132,7 +132,7 @@
else
..()
/mob/living/simple_animal/cow/Life()
/mob/living/simple_animal/cow/Life(seconds, times_fired)
. = ..()
if(stat == CONSCIOUS && prob(5))
milk_content = min(50, milk_content+rand(5, 10))
@@ -188,7 +188,7 @@
pixel_x = rand(-6, 6)
pixel_y = rand(0, 10)
/mob/living/simple_animal/chick/Life()
/mob/living/simple_animal/chick/Life(seconds, times_fired)
. =..()
if(.)
amount_grown += rand(1,2)
@@ -267,7 +267,7 @@ var/global/chicken_count = 0
else
..()
/mob/living/simple_animal/chicken/Life()
/mob/living/simple_animal/chicken/Life(seconds, times_fired)
. = ..()
if((. && prob(3) && eggsleft > 0) && egg_type)
visible_message("[src] [pick(layMessage)]")
@@ -39,7 +39,7 @@
for(var/mob/M in view())
M << 'sound/effects/mousesqueek.ogg'
/mob/living/simple_animal/mouse/Life()
/mob/living/simple_animal/mouse/Life(seconds, times_fired)
. = ..()
if(stat == UNCONSCIOUS)
if(ckey || prob(1))
@@ -57,7 +57,7 @@
target = null
return ..()
/mob/living/simple_animal/hostile/Life()
/mob/living/simple_animal/hostile/Life(seconds, times_fired)
. = ..()
if(!.)
walk(src, 0)
@@ -75,7 +75,7 @@ Difficulty: Hard
/obj/effect/decal/cleanable/blood/gibs/bubblegum/can_bloodcrawl_in()
return TRUE
/mob/living/simple_animal/hostile/megafauna/bubblegum/Life()
/mob/living/simple_animal/hostile/megafauna/bubblegum/Life(seconds, times_fired)
..()
move_to_delay = Clamp((health/maxHealth) * 10, 5, 10)
@@ -76,7 +76,7 @@ Difficulty: Hard
internal_gps = new/obj/item/gps/internal/hierophant(src)
spawned_rune = new(loc)
/mob/living/simple_animal/hostile/megafauna/hierophant/Life()
/mob/living/simple_animal/hostile/megafauna/hierophant/Life(seconds, times_fired)
. = ..()
if(. && spawned_rune && !client)
if(target || loc == spawned_rune.loc)
@@ -51,7 +51,7 @@
var/attempt_open = 0
// Pickup loot
/mob/living/simple_animal/hostile/mimic/crate/initialize()
/mob/living/simple_animal/hostile/mimic/crate/Initialize()
..()
for(var/obj/item/I in loc)
I.loc = src
@@ -269,7 +269,7 @@
stat_attack = 1
robust_searching = 1
/mob/living/simple_animal/hostile/asteroid/hivelordbrood/legion/Life()
/mob/living/simple_animal/hostile/asteroid/hivelordbrood/legion/Life(seconds, times_fired)
if(isturf(loc))
for(var/mob/living/carbon/human/H in view(src,1)) //Only for corpse right next to/on same tile
if(H.stat == UNCONSCIOUS)
@@ -42,7 +42,7 @@
else
to_chat(user, "<span class='info'>It looks like it's been roughed up.</span>")
/mob/living/simple_animal/hostile/mushroom/Life()
/mob/living/simple_animal/hostile/mushroom/Life(seconds, times_fired)
..()
if(!stat)//Mushrooms slowly regenerate if conscious, for people who want to save them from being eaten
adjustBruteLoss(-2)
@@ -62,7 +62,7 @@
return ..()
//self repair systems have a chance to bring the drone back to life
/mob/living/simple_animal/hostile/retaliate/malf_drone/Life()
/mob/living/simple_animal/hostile/retaliate/malf_drone/Life(seconds, times_fired)
//emps and lots of damage can temporarily shut us down
if(disabled > 0)
@@ -56,7 +56,7 @@
if(.)
custom_emote(1, "wails at [.]")
/mob/living/simple_animal/hostile/retaliate/ghost/Life()
/mob/living/simple_animal/hostile/retaliate/ghost/Life(seconds, times_fired)
if(target)
invisibility = pick(0,0,60,invisibility)
else
@@ -190,7 +190,7 @@
SW.death()
/mob/living/simple_animal/hostile/spaceWorm/Life()
/mob/living/simple_animal/hostile/spaceWorm/Life(seconds, times_fired)
if(nextWorm && !(Adjacent(nextWorm)))
Detach(0)
@@ -48,7 +48,7 @@
visible_message("<span class='notice'>[src] chitters in the direction of [Q]!</span>")
. = ..()
/mob/living/simple_animal/hostile/poison/terror_spider/purple/Life()
/mob/living/simple_animal/hostile/poison/terror_spider/purple/Life(seconds, times_fired)
. = ..()
if(.) // if mob is NOT dead
if(!degenerate && spider_myqueen)
@@ -61,7 +61,7 @@
spider_growinstantly = 1
spider_spawnfrequency = 150
/mob/living/simple_animal/hostile/poison/terror_spider/queen/Life()
/mob/living/simple_animal/hostile/poison/terror_spider/queen/Life(seconds, times_fired)
. = ..()
if(.) // if mob is NOT dead
if(ckey && canlay < 12 && hasnested) // max 12 eggs worth stored at any one time, realistically that's tons.
@@ -292,7 +292,7 @@ var/global/list/ts_spiderling_list = list()
handle_dying()
return ..()
/mob/living/simple_animal/hostile/poison/terror_spider/Life()
/mob/living/simple_animal/hostile/poison/terror_spider/Life(seconds, times_fired)
. = ..()
if(!.) // if mob is dead
if(prob(2))
@@ -276,7 +276,7 @@
/*
* AI - Not really intelligent, but I'm calling it AI anyway.
*/
/mob/living/simple_animal/parrot/Life()
/mob/living/simple_animal/parrot/Life(seconds, times_fired)
..()
//Sprite and AI update for when a parrot gets pulled
@@ -60,7 +60,7 @@
qdel(src)
/mob/living/simple_animal/possessed_object/Life()
/mob/living/simple_animal/possessed_object/Life(seconds, times_fired)
..()
if(!possessed_item) // If we're a donut and someone's eaten us, for instance.
@@ -68,7 +68,7 @@ var/global/totaltribbles = 0 //global variable so it updates for all tribbles,
gestation = 0
/mob/living/simple_animal/tribble/Life()
/mob/living/simple_animal/tribble/Life(seconds, times_fired)
..()
if(src.health > 0) //no mostly dead procreation
if(gestation != null) //neuter check
+1 -1
View File
@@ -169,7 +169,7 @@
/mob/proc/movement_delay()
return 0
/mob/proc/Life()
/mob/proc/Life(seconds, times_fired)
// handle_typing_indicator()
return
+2 -1
View File
@@ -30,7 +30,8 @@
icon_state = "tallcabinet"
/obj/structure/filingcabinet/initialize()
/obj/structure/filingcabinet/Initialize()
..()
for(var/obj/item/I in loc)
if(istype(I, /obj/item/paper) || istype(I, /obj/item/folder) || istype(I, /obj/item/photo))
I.loc = src
+8 -17
View File
@@ -14,15 +14,6 @@
var/list/programs = list()
var/list/messenger_plugins = list()
/obj/item/cartridge/New()
if(ticker && ticker.current_state >= GAME_STATE_SETTING_UP)
initialize()
/obj/item/cartridge/initialize()
if(radio)
radio.initialize()
..()
/obj/item/cartridge/Destroy()
QDEL_NULL(radio)
QDEL_LIST(programs)
@@ -68,7 +59,7 @@
new/datum/data/pda/app/crew_records/security,
new/datum/data/pda/app/secbot_control)
/obj/item/cartridge/security/initialize()
/obj/item/cartridge/security/Initialize()
radio = new /obj/item/integrated_radio/beepsky(src)
..()
@@ -118,7 +109,7 @@
desc = "A data cartridge with an integrated radio signaler module."
programs = list(new/datum/data/pda/app/signaller)
/obj/item/cartridge/signal/initialize()
/obj/item/cartridge/signal/Initialize()
radio = new /obj/item/integrated_radio/signal(src)
..()
@@ -141,7 +132,7 @@
new/datum/data/pda/app/supply,
new/datum/data/pda/app/mule_control)
/obj/item/cartridge/quartermaster/initialize()
/obj/item/cartridge/quartermaster/Initialize()
radio = new /obj/item/integrated_radio/mule(src)
..()
@@ -163,7 +154,7 @@
new/datum/data/pda/app/status_display)
/obj/item/cartridge/hop/initialize()
/obj/item/cartridge/hop/Initialize()
radio = new /obj/item/integrated_radio/mule(src)
..()
@@ -176,7 +167,7 @@
new/datum/data/pda/app/status_display)
/obj/item/cartridge/hos/initialize()
/obj/item/cartridge/hos/Initialize()
radio = new /obj/item/integrated_radio/beepsky(src)
..()
@@ -214,7 +205,7 @@
new/datum/data/pda/app/status_display)
/obj/item/cartridge/rd/initialize()
/obj/item/cartridge/rd/Initialize()
radio = new /obj/item/integrated_radio/signal(src)
..()
@@ -242,7 +233,7 @@
new/datum/data/pda/app/status_display)
/obj/item/cartridge/captain/initialize()
/obj/item/cartridge/captain/Initialize()
radio = new /obj/item/integrated_radio/beepsky(src)
..()
@@ -279,7 +270,7 @@
new/datum/data/pda/app/status_display)
/obj/item/cartridge/centcom/initialize()
/obj/item/cartridge/centcom/Initialize()
radio = new /obj/item/integrated_radio/beepsky(src)
..()
+1 -1
View File
@@ -173,7 +173,7 @@
radio_connection = null
return ..()
/obj/item/integrated_radio/signal/initialize()
/obj/item/integrated_radio/signal/Initialize()
if(!radio_controller)
return
if(src.frequency < PUBLIC_LOW_FREQ || src.frequency > PUBLIC_HIGH_FREQ)
+3 -9
View File
@@ -72,19 +72,13 @@ By design, d1 is the smallest direction and d2 is the highest
var/turf/T = src.loc // hide if turf is not intact
if(level==1) hide(T.intact)
cable_list += src //add it to the global cable list
// Catches the interim-zone of worldstart and roundstart
// I want both the ticker to exist (so mapped-in cables don't trip this)
// but also not have started yet (since the zlevel system would handle this on its own otherwise)
if((ticker && ticker.current_state < GAME_STATE_PLAYING))
attempt_init()
LAZYADD(GLOB.cable_list, src) //add it to the global cable list
/obj/structure/cable/Destroy() // called when a cable is deleted
if(powernet)
cut_cable_from_powernet() // update the powernets
cable_list -= src //remove it from global cable list
LAZYREMOVE(GLOB.cable_list, src) //remove it from global cable list
return ..() // then go ahead and delete the cable
///////////////////////////////////
@@ -462,7 +456,7 @@ obj/structure/cable/proc/cable_color(var/colorC)
powernet.remove_cable(src) //remove the cut cable from its powernet
// queue it to rebuild
deferred_powernet_rebuilds += O
SSmachines.deferred_powernet_rebuilds += O
// Disconnect machines connected to nodes
if(d1 == 0) // if we cut a node (O-X) cable
+1 -1
View File
@@ -35,7 +35,7 @@
if(powernet)
disconnect_from_network()
/obj/machinery/power/generator/initialize()
/obj/machinery/power/generator/Initialize()
..()
connect()
+1 -9
View File
@@ -85,20 +85,12 @@ var/const/GRAV_NEEDS_WRENCH = 3
// Generator which spawns with the station.
//
/obj/machinery/gravity_generator/main/station/initialize()
/obj/machinery/gravity_generator/main/station/Initialize()
..()
setup_parts()
middle.overlays += "activated"
update_list()
//
// Generator an admin can spawn
//
/obj/machinery/gravity_generator/main/station/admin/New()
..()
initialize()
//
// Main Generator with the main code
//
+1 -1
View File
@@ -112,7 +112,7 @@
var/temperature = 0 //The current temperature
var/overheating = 0 //if this gets high enough the generator explodes
/obj/machinery/power/port_gen/pacman/initialize()
/obj/machinery/power/port_gen/pacman/Initialize()
..()
if(anchored)
connect_to_network()
-20
View File
@@ -232,26 +232,6 @@
. += C
return .
/hook/startup/proc/buildPowernets()
return makepowernets()
// rebuild all power networks from scratch - only called at world creation or by the admin verb
/proc/makepowernets()
for(var/datum/powernet/PN in powernets)
qdel(PN)
powernets.Cut()
for(var/obj/structure/cable/PC in cable_list)
makepowernet_for(PC)
return 1
/proc/makepowernet_for(var/obj/structure/cable/PC)
if(!PC.powernet)
var/datum/powernet/NewPN = new()
NewPN.add_cable(PC)
propagate_network(PC,PC.powernet)
//remove the old powernet and replace it with a new one throughout the network.
/proc/propagate_network(var/obj/O, var/datum/powernet/PN)
//log_world("propagating new network")
+2 -2
View File
@@ -16,7 +16,7 @@
/datum/powernet/New()
powernets += src
SSmachines.powernets += src
..()
/datum/powernet/Destroy()
@@ -28,7 +28,7 @@
nodes -= M
M.powernet = null
powernets -= src
SSmachines.powernets -= src
return ..()
//Returns the amount of excess power (before refunding to SMESs) from last tick.
+2 -1
View File
@@ -76,12 +76,13 @@
return
rotate()
/obj/machinery/power/emitter/initialize()
/obj/machinery/power/emitter/Initialize()
..()
if(state == 2 && anchored)
connect_to_network()
if(frequency)
set_frequency(frequency)
/obj/machinery/power/emitter/multitool_menu(var/mob/user,var/obj/item/multitool/P)
return {"
<ul>
+1 -1
View File
@@ -300,7 +300,7 @@
track = 2 // Auto tracking mode
autostart = 1 // Automatically start
/obj/machinery/power/solar_control/initialize()
/obj/machinery/power/solar_control/Initialize()
..()
if(!powernet)
return
+2 -2
View File
@@ -18,7 +18,7 @@
var/list/mobs_running[0]
var/id = null // for linking to monitor
/obj/machinery/power/treadmill/initialize()
/obj/machinery/power/treadmill/Initialize()
..()
if(anchored)
connect_to_network()
@@ -137,7 +137,7 @@
var/frame = 0 // on 0, show labels, on 1 show numbers
var/redeem_immediately = 0 // redeem immediately for holding cell
/obj/machinery/treadmill_monitor/initialize()
/obj/machinery/treadmill_monitor/Initialize()
..()
if(id)
for(var/obj/machinery/power/treadmill/T in machines)
+3 -3
View File
@@ -82,7 +82,7 @@
inturf = get_step(src, dir)
/obj/machinery/power/compressor/initialize()
/obj/machinery/power/compressor/Initialize()
..()
locate_machinery()
if(!turbine)
@@ -202,7 +202,7 @@
outturf = get_step(src, dir)
/obj/machinery/power/turbine/initialize()
/obj/machinery/power/turbine/Initialize()
..()
locate_machinery()
if(!compressor)
@@ -341,7 +341,7 @@
/obj/machinery/computer/turbine_computer/initialize()
/obj/machinery/computer/turbine_computer/Initialize()
..()
spawn(10)
locate_machinery()
+1 -1
View File
@@ -51,7 +51,7 @@
trunk.linked = null
return ..()
/obj/machinery/disposal/initialize()
/obj/machinery/disposal/Initialize()
// this will get a copy of the air turf and take a SEND PRESSURE amount of air from it
..()
var/atom/L = loc
+2 -2
View File
@@ -149,10 +149,10 @@ won't update every console in existence) but it's more of a hassle to do. Also,
matching_designs = list()
if(!id)
for(var/obj/machinery/r_n_d/server/centcom/S in world)
S.initialize()
S.initialize_serv()
break
/obj/machinery/computer/rdconsole/initialize()
/obj/machinery/computer/rdconsole/Initialize()
..()
SyncRDevices()
+3 -4
View File
@@ -23,7 +23,7 @@
component_parts += new /obj/item/stack/cable_coil(null,1)
component_parts += new /obj/item/stack/cable_coil(null,1)
RefreshParts()
initialize(); //Agouri
initialize_serv(); //Agouri // fuck you agouri
/obj/machinery/r_n_d/server/upgraded/New()
..()
@@ -44,8 +44,7 @@
tot_rating += SP.rating
heat_gen /= max(1, tot_rating)
/obj/machinery/r_n_d/server/initialize()
..()
/obj/machinery/r_n_d/server/proc/initialize_serv()
if(!files) files = new /datum/research(src)
var/list/temp_list
if(!id_with_upload.len)
@@ -162,7 +161,7 @@
name = "CentComm. Central R&D Database"
server_id = -1
/obj/machinery/r_n_d/server/centcom/initialize()
/obj/machinery/r_n_d/server/centcom/Initialize()
..()
var/list/no_id_servers = list()
var/list/server_ids = list()
+1 -1
View File
@@ -351,7 +351,7 @@
height = 4
var/target_area = /area/mine/dangerous/unexplored
/obj/docking_port/stationary/random/initialize()
/obj/docking_port/stationary/random/Initialize()
..()
var/list/turfs = get_area_turfs(target_area)
var/turf/T = pick(turfs)
+1 -1
View File
@@ -229,7 +229,7 @@
/obj/docking_port/mobile/initialize()
/obj/docking_port/mobile/Initialize()
if(!timid)
register()
..()
+3 -6
View File
@@ -152,7 +152,7 @@
if(istype(AM, /obj/effect/landmark/map_loader))
late_maps.Add(AM)
continue
AM.initialize()
AM.Initialize(TRUE)
if(istype(AM, /obj/machinery/atmospherics))
pipes.Add(AM)
else if(istype(AM, /obj/structure/cable))
@@ -179,10 +179,7 @@
/datum/space_level/proc/do_cables(list/cables)
var/watch = start_watch()
log_debug("Building powernets on z-level '[zpos]'!")
for(var/schmoo in cables)
var/obj/structure/cable/C = schmoo
if(C)
makepowernet_for(C)
SSmachines.setup_template_powernets(cables)
cables.Cut()
log_debug("Took [stop_watch(watch)]s")
@@ -193,7 +190,7 @@
for(var/schmoo in late_maps)
var/obj/effect/landmark/map_loader/ML = schmoo
if(ML)
ML.initialize()
ML.Initialize()
late_maps.Cut()
space_manager.remove_dirt(zpos)
log_debug("Took [stop_watch(watch)]s")
+1 -1
View File
@@ -273,7 +273,7 @@
area_aim = TRUE
target_all_areas = TRUE
/obj/machinery/computer/bsa_control/admin/initialize()
/obj/machinery/computer/bsa_control/admin/Initialize()
..()
if(!cannon)
cannon = deploy()
+1 -1
View File
@@ -46,7 +46,7 @@
..(user)
to_chat(user, "There are [crystals.len ? crystals.len : "no"] bluespace crystal\s in the crystal slots.")
/obj/machinery/computer/telescience/initialize()
/obj/machinery/computer/telescience/Initialize()
..()
for(var/i = 1; i <= starting_crystals; i++)
crystals += new /obj/item/ore/bluespace_crystal/artificial(null) // starting crystals