New to init final (#17512)

* Initial

* some more

* next few

* only light left

* fix things up

* some rmore fixes

* guh

* Update ai_vr.dm

* comment

* lets try something

* .

* hmm

* .

* .

* hmm

* push that here

* fix layout

* grrr
This commit is contained in:
Kashargul
2025-04-14 00:07:35 +02:00
committed by GitHub
parent 53ee76ad92
commit cdfa1c853f
170 changed files with 1262 additions and 1219 deletions
+17 -16
View File
@@ -93,9 +93,9 @@
var/last_revive_notification = null // world.time of last notification, used to avoid spamming players from defibs or cloners.
var/cleanup_timer // Refernece to a timer that will delete this mob if no client returns
/mob/observer/dead/New(mob/body, aghost = FALSE)
/mob/observer/dead/Initialize(mapload, aghost = FALSE)
appearance = body
appearance = loc
invisibility = INVISIBILITY_OBSERVER
layer = BELOW_MOB_LAYER
plane = PLANE_GHOSTS
@@ -107,30 +107,31 @@
see_in_dark = world.view //I mean. I don't even know if byond has occlusion culling... but...
var/turf/T
if(ismob(body))
T = get_turf(body) //Where is the body located?
attack_log = body.attack_log //preserve our attack logs by copying them to our ghost
gender = body.gender
if(body.mind && body.mind.name)
name = body.mind.name
if(ismob(loc))
var/mob/M = loc
T = get_turf(M) //Where is the body located?
attack_log = M.attack_log //preserve our attack logs by copying them to our ghost
gender = M.gender
if(M.mind && M.mind.name)
name = M.mind.name
else
if(body.real_name)
name = body.real_name
if(M.real_name)
name = M.real_name
else
if(gender == MALE)
name = capitalize(pick(first_names_male)) + " " + capitalize(pick(last_names))
else
name = capitalize(pick(first_names_female)) + " " + capitalize(pick(last_names))
mind = body.mind //we don't transfer the mind but we keep a reference to it.
mind = M.mind //we don't transfer the mind but we keep a reference to it.
// Fix for naked ghosts.
// Unclear why this isn't being grabbed by appearance.
if(ishuman(body))
var/mob/living/carbon/human/H = body
if(ishuman(M))
var/mob/living/carbon/human/H = M
add_overlay(H.overlays_standing)
default_pixel_x = body.default_pixel_x
default_pixel_y = body.default_pixel_y
default_pixel_x = M.default_pixel_x
default_pixel_y = M.default_pixel_y
if(!T && length(latejoin))
T = get_turf(pick(latejoin)) //Safety in case we cannot find the body's position
if(T)
@@ -145,7 +146,7 @@
animate(src, pixel_y = 2, time = 10, loop = -1)
animate(pixel_y = default_pixel_y, time = 10, loop = -1)
observer_mob_list += src
..()
. = ..()
visualnet = ghostnet
/mob/observer/dead/proc/checkStatic()
+2 -13
View File
@@ -7,8 +7,8 @@
name = "Inactive AI Eye"
icon_state = "AI-eye"
/mob/observer/eye/aiEye/New()
..()
/mob/observer/eye/aiEye/Initialize(mapload)
. = ..()
visualnet = cameranet
/mob/observer/eye/aiEye/Destroy()
@@ -74,17 +74,6 @@
client.eye = eyeobj
SetName(src.name)
// Intiliaze the eye by assigning it's "ai" variable to us. Then set it's loc to us.
/mob/living/silicon/ai/Initialize(mapload)
. = ..()
create_eyeobj()
if(eyeobj)
eyeobj.loc = src.loc
/mob/living/silicon/ai/Destroy()
destroy_eyeobj()
return ..()
/atom/proc/move_camera_by_click()
if(isAI(usr))
var/mob/living/silicon/ai/AI = usr
+2 -2
View File
@@ -8,6 +8,6 @@
acceleration = 0
owner_follows_eye = 1
/mob/observer/eye/maskEye/New()
..()
/mob/observer/eye/maskEye/Initialize(mapload)
. = ..()
visualnet = cultnet
@@ -18,8 +18,8 @@
#undef CULT_UPDATE_BUFFER
/mob/living/New()
..()
/mob/living/Initialize(mapload)
. = ..()
cultnet.updateVisibility(src, 0)
/mob/living/rejuvenate()
+1 -1
View File
@@ -86,7 +86,7 @@
syllables = list("sss","sSs","SSS")
/datum/language/xenos
name = "Hivemind"
name = LANGUAGE_HIVEMIND
desc = "Xenomorphs have the strange ability to commune over a psychic hivemind."
speech_verb = "hisses"
ask_verb = "hisses"
+2 -2
View File
@@ -1,5 +1,5 @@
/datum/language/binary
name = "Robot Talk"
name = LANGUAGE_ROBOT_TALK
desc = "Most human stations support free-use communications protocols and routing hubs for synthetic use."
colour = "say_quote_italics"
speech_verb = "states"
@@ -58,7 +58,7 @@
R.cell_use_power(C.active_usage)
/datum/language/binary/drone
name = "Drone Talk"
name = LANGUAGE_DRONE_TALK
desc = "A heavily encoded damage control coordination stream."
speech_verb = "transmits"
ask_verb = "transmits"
+2 -2
View File
@@ -338,8 +338,8 @@
w_class = ITEMSIZE_NORMAL
/obj/item/farmbot_arm_assembly/New(var/newloc, var/theTank)
..(newloc)
/obj/item/farmbot_arm_assembly/Initialize(mapload, var/theTank)
. = ..()
if(!theTank) // If an admin spawned it, it won't have a watertank it, so lets make one for em!
tank = new /obj/structure/reagent_dispensers/watertank(src)
else
@@ -52,7 +52,7 @@
/mob/living/carbon/alien/get_default_language()
if(default_language)
return default_language
return GLOB.all_languages["Xenomorph"]
return GLOB.all_languages[LANGUAGE_XENOLINGUA]
/mob/living/carbon/alien/say_quote(var/message, var/datum/language/speaking = null)
var/verb = "hisses"
@@ -4,7 +4,7 @@
adult_form = /mob/living/carbon/human
speak_emote = list("hisses")
icon_state = "larva"
language = "Hivemind"
language = LANGUAGE_HIVEMIND
maxHealth = 50
health = 50
faction = FACTION_XENO
@@ -12,5 +12,5 @@
/mob/living/carbon/alien/larva/Initialize(mapload)
. = ..()
add_language("Xenomorph") //Bonus language.
add_language(LANGUAGE_XENOLINGUA) //Bonus language.
internal_organs |= new /obj/item/organ/internal/xenos/hivenode(src)
+9 -8
View File
@@ -20,7 +20,8 @@
var/obj/item/radio/headset/mmi_radio/radio = null//Let's give it a radio.
var/mob/living/body_backup = null //add reforming
/obj/item/mmi/New()
/obj/item/mmi/Initialize(mapload)
. = ..()
radio = new(src)//Spawns a radio inside the MMI.
/obj/item/mmi/verb/toggle_radio()
@@ -185,16 +186,16 @@
var/ghost_query_type = null
var/datum/ghost_query/Q //This is used so we can unregister ourself.
/obj/item/mmi/digital/New()
/obj/item/mmi/digital/Initialize(mapload)
. = ..()
src.brainmob = new(src)
// src.brainmob.add_language("Robot Talk")//No binary without a binary communication device
// src.brainmob.add_language(LANGUAGE_ROBOT_TALK)//No binary without a binary communication device
src.brainmob.add_language(LANGUAGE_GALCOM)
src.brainmob.add_language(LANGUAGE_EAL)
src.brainmob.loc = src
src.brainmob.container = src
src.brainmob.set_stat(CONSCIOUS)
src.brainmob.silent = 0
radio = new(src)
dead_mob_list -= src.brainmob
/obj/item/mmi/digital/attackby(var/obj/item/O as obj, var/mob/user as mob)
@@ -300,8 +301,8 @@
origin_tech = list(TECH_ENGINEERING = 4, TECH_MATERIAL = 3, TECH_DATA = 4)
ghost_query_type = /datum/ghost_query/drone_brain
/obj/item/mmi/digital/robot/New()
..()
/obj/item/mmi/digital/robot/Initialize(mapload)
. = ..()
src.brainmob.name = "[pick(list("ADA","DOS","GNU","MAC","WIN","NJS","SKS","DRD","IOS","CRM","IBM","TEX","LVM","BSD",))]-[rand(1000, 9999)]"
src.brainmob.real_name = src.brainmob.name
@@ -343,8 +344,8 @@
..()
icon_state = "posibrain"
/obj/item/mmi/digital/posibrain/New()
..()
/obj/item/mmi/digital/posibrain/Initialize(mapload)
. = ..()
src.brainmob.name = "[pick(list("PBU","HIU","SINA","ARMA","OSI"))]-[rand(100, 999)]"
src.brainmob.real_name = src.brainmob.name
@@ -1,42 +1,42 @@
/mob/living/carbon/human/dummy
no_vore = TRUE //Dummies don't need bellies.
/mob/living/carbon/human/sergal/New(var/new_loc)
/mob/living/carbon/human/sergal/Initialize(mapload)
h_style = "Sergal Plain"
..(new_loc, SPECIES_SERGAL)
. = ..(mapload, SPECIES_SERGAL)
/mob/living/carbon/human/akula/New(var/new_loc)
..(new_loc, SPECIES_AKULA)
/mob/living/carbon/human/akula/Initialize(mapload)
. = ..(mapload, SPECIES_AKULA)
/mob/living/carbon/human/nevrean/New(var/new_loc)
..(new_loc, SPECIES_NEVREAN)
/mob/living/carbon/human/nevrean/Initialize(mapload)
. = ..(mapload, SPECIES_NEVREAN)
/mob/living/carbon/human/xenochimera/New(var/new_loc)
..(new_loc, SPECIES_XENOCHIMERA)
/mob/living/carbon/human/xenochimera/Initialize(mapload)
. = ..(mapload, SPECIES_XENOCHIMERA)
/mob/living/carbon/human/spider/New(var/new_loc)
..(new_loc, SPECIES_VASILISSAN)
/mob/living/carbon/human/spider/Initialize(mapload)
. = ..(mapload, SPECIES_VASILISSAN)
/mob/living/carbon/human/vulpkanin/New(var/new_loc)
..(new_loc, SPECIES_VULPKANIN)
/mob/living/carbon/human/vulpkanin/Initialize(mapload)
. = ..(mapload, SPECIES_VULPKANIN)
/mob/living/carbon/human/protean/New(var/new_loc)
..(new_loc, SPECIES_PROTEAN)
/mob/living/carbon/human/protean/Initialize(mapload)
. = ..(mapload, SPECIES_PROTEAN)
/mob/living/carbon/human/alraune/New(var/new_loc)
..(new_loc, SPECIES_ALRAUNE)
/mob/living/carbon/human/alraune/Initialize(mapload)
. = ..(mapload, SPECIES_ALRAUNE)
/mob/living/carbon/human/shadekin/New(var/new_loc)
..(new_loc, SPECIES_SHADEKIN)
/mob/living/carbon/human/shadekin/Initialize(mapload)
. = ..(mapload, SPECIES_SHADEKIN)
/mob/living/carbon/human/altevian/New(var/new_loc)
..(new_loc, SPECIES_ALTEVIAN)
/mob/living/carbon/human/altevian/Initialize(mapload)
. = ..(mapload, SPECIES_ALTEVIAN)
/mob/living/carbon/human/lleill/New(var/new_loc)
..(new_loc, SPECIES_LLEILL)
/mob/living/carbon/human/lleill/Initialize(mapload)
. = ..(mapload, SPECIES_LLEILL)
/mob/living/carbon/human/hanner/New(var/new_loc)
..(new_loc, SPECIES_HANNER)
/mob/living/carbon/human/hanner/Initialize(mapload)
. = ..(mapload, SPECIES_HANNER)
/mob/living/carbon/human/sparkledog/New(var/new_loc)
..(new_loc, SPECIES_SPARKLE)
/mob/living/carbon/human/sparkledog/Initialize(mapload)
. = ..(mapload, SPECIES_SPARKLE)
@@ -101,14 +101,13 @@
return
//Constructor allows passing the human to sync damages
/mob/living/simple_mob/slime/promethean/New(var/newloc, var/mob/living/carbon/human/H)
..()
if(H)
humanform = H
updatehealth()
/mob/living/simple_mob/slime/promethean/Initialize(mapload, var/mob/living/carbon/human/H)
. = ..()
if(!H)
return INITIALIZE_HINT_QDEL
else
qdel(src)
humanform = H
updatehealth()
/mob/living/simple_mob/slime/promethean/updatehealth()
if(!humanform)
@@ -3,8 +3,8 @@
name = SPECIES_XENO
name_plural = "Xenomorphs"
default_language = "Xenomorph"
language = "Hivemind"
default_language = LANGUAGE_XENOLINGUA
language = LANGUAGE_HIVEMIND
assisted_langs = list()
unarmed_types = list(/datum/unarmed_attack/claws/strong/xeno, /datum/unarmed_attack/bite/strong/xeno)
hud_type = /datum/hud_data/alien
@@ -7,24 +7,24 @@
new_alien.set_species("Xenomorph [alien_caste]")
return new_alien
/mob/living/carbon/human/xdrone/New(var/new_loc)
/mob/living/carbon/human/xdrone/Initialize(mapload)
h_style = "Bald"
faction = FACTION_XENO
..(new_loc, SPECIES_XENO_DRONE)
. = ..(mapload, SPECIES_XENO_DRONE)
/mob/living/carbon/human/xsentinel/New(var/new_loc)
/mob/living/carbon/human/xsentinel/Initialize(mapload)
h_style = "Bald"
faction = FACTION_XENO
..(new_loc, SPECIES_XENO_SENTINEL)
. = ..(mapload, SPECIES_XENO_SENTINEL)
/mob/living/carbon/human/xhunter/New(var/new_loc)
/mob/living/carbon/human/xhunter/Initialize(mapload)
h_style = "Bald"
faction = FACTION_XENO
..(new_loc, SPECIES_XENO_HUNTER)
. = ..(mapload, SPECIES_XENO_HUNTER)
/mob/living/carbon/human/xqueen/New(var/new_loc)
/mob/living/carbon/human/xqueen/Initialize(mapload)
h_style = "Bald"
faction = FACTION_XENO
..(new_loc, SPECIES_XENO_QUEEN)
. = ..(mapload, SPECIES_XENO_QUEEN)
//Removed AddInfectionImages, no longer required.
@@ -26,8 +26,8 @@
enhanced = 1
qdel(O)
*/
/obj/item/slime_extract/New()
..()
/obj/item/slime_extract/Initialize(mapload)
. = ..()
create_reagents(5)
// reagents.add_reagent(REAGENT_ID_SLIMEJELLY, 30)
@@ -326,8 +326,8 @@
var/Flush = 30
var/Uses = 5 // uses before it goes inert
/obj/item/slime_core/New()
..()
/obj/item/slime_core/Initialize(mapload)
. = ..()
create_reagents(100)
POWERFLAG = rand(1,10)
Uses = rand(7, 25)
+2 -2
View File
@@ -1,5 +1,5 @@
/mob/living/New()
..()
/mob/living/Initialize(mapload)
. = ..()
//Prime this list if we need it.
if(has_huds)
+19 -13
View File
@@ -106,7 +106,8 @@ var/list/ai_verbs_default = list(
remove_verb(src, ai_verbs_default)
remove_verb(src, silicon_subsystems)
/mob/living/silicon/ai/New(loc, var/datum/ai_laws/L, var/obj/item/mmi/B, var/safety = 0)
/mob/living/silicon/ai/Initialize(mapload, is_decoy, datum/ai_laws/L, obj/item/mmi/B, safety = FALSE)
announcement = new()
announcement.title = "A.I. Announcement"
announcement.announcement_type = "A.I. Announcement"
@@ -128,7 +129,6 @@ var/list/ai_verbs_default = list(
anchored = TRUE
canmove = 0
density = TRUE
loc = loc
if(!is_dummy)
aiCommunicator = new /obj/item/communicator/integrated(src)
@@ -156,7 +156,7 @@ var/list/ai_verbs_default = list(
add_ai_verbs(src)
//Languages
add_language("Robot Talk", 1)
add_language(LANGUAGE_ROBOT_TALK, 1)
add_language(LANGUAGE_GALCOM, 1)
add_language(LANGUAGE_SOL_COMMON, 1)
add_language(LANGUAGE_UNATHI, 1)
@@ -175,20 +175,25 @@ var/list/ai_verbs_default = list(
if(!safety)//Only used by AIize() to successfully spawn an AI.
if (!B)//If there is no player/brain inside.
empty_playable_ai_cores += new/obj/structure/AIcore/deactivated(loc)//New empty terminal.
qdel(src)//Delete AI.
return
else
if (B.brainmob.mind)
B.brainmob.mind.transfer_to(src)
return INITIALIZE_HINT_QDEL //Delete AI.
on_mob_init()
if (B.brainmob.mind)
B.brainmob.mind.transfer_to(src)
on_mob_init()
spawn(5)
new /obj/machinery/ai_powersupply(src)
ai_list += src
..()
return
. = ..()
new /obj/machinery/ai_powersupply(src)
if(CONFIG_GET(flag/allow_ai_shells))
add_verb(src, /mob/living/silicon/ai/proc/deploy_to_shell_act)
create_eyeobj()
if(eyeobj)
eyeobj.loc = src.loc
/mob/living/silicon/ai/proc/on_mob_init()
var/init_text = list(span_bold("You are playing the station's AI. The AI cannot move, but can interact with many objects while viewing them (through cameras)."),
@@ -235,6 +240,7 @@ var/list/ai_verbs_default = list(
QDEL_NULL(aiCamera)
hack = null
destroy_eyeobj()
return ..()
@@ -1,11 +1,6 @@
/mob/living/silicon/ai
var/mob/living/silicon/robot/deployed_shell = null //For shell control
/mob/living/silicon/ai/Initialize(mapload)
if(CONFIG_GET(flag/allow_ai_shells))
add_verb(src, /mob/living/silicon/ai/proc/deploy_to_shell_act)
return ..()
/mob/living/silicon/ai/proc/deploy_to_shell(var/mob/living/silicon/robot/target)
if(!CONFIG_GET(flag/allow_ai_shells))
to_chat(src, span_warning("AI Shells are not allowed on this server. You shouldn't have this verb because of it, so consider making a bug report."))
+2 -2
View File
@@ -1,5 +1,5 @@
/mob/living/silicon/ai/Initialize(mapload, var/datum/ai_laws/L, var/obj/item/mmi/B, var/safety = 0)
. = ..(mapload, L, B, safety)
/mob/living/silicon/ai/Initialize(mapload, is_decoy, var/datum/ai_laws/L, var/obj/item/mmi/B, var/safety = FALSE)
. = ..()
add_language(LANGUAGE_BIRDSONG, 1)
add_language(LANGUAGE_SAGARU, 1)
add_language(LANGUAGE_CANILUNZT, 1)
@@ -5,8 +5,5 @@
anchored = TRUE // -- TLE
canmove = 0
/mob/living/silicon/decoy/New()
src.icon = 'icons/mob/AI.dmi'
src.icon_state = "ai"
src.anchored = TRUE
src.canmove = 0
/mob/living/silicon/decoy/Initialize(mapload)
. = ..(mapload, TRUE)
+14 -11
View File
@@ -112,9 +112,13 @@
var/our_icon_rotation = 0
/mob/living/silicon/pai/New(var/obj/item/paicard)
src.loc = paicard
card = paicard
/mob/living/silicon/pai/Initialize(mapload)
. = ..()
card = loc
if(!istype(card))
return INITIALIZE_HINT_QDEL
sradio = new(src)
communicator = new(src)
if(card)
@@ -135,15 +139,14 @@
//PDA
pda = new(src)
spawn(5)
pda.ownjob = "Personal Assistant"
pda.owner = text("[]", src)
pda.name = pda.owner + " (" + pda.ownjob + ")"
pda.ownjob = "Personal Assistant"
pda.owner = text("[]", src)
pda.name = pda.owner + " (" + pda.ownjob + ")"
var/datum/data/pda/app/messenger/M = pda.find_program(/datum/data/pda/app/messenger)
if(M)
M.toff = FALSE
..()
var/datum/data/pda/app/messenger/M = pda.find_program(/datum/data/pda/app/messenger)
if(M)
M.toff = FALSE
. = ..()
/mob/living/silicon/pai/Login()
..()
@@ -8,10 +8,7 @@
throwforce = 0
attack_verb = list("nuzzled", "nosed", "booped")
w_class = ITEMSIZE_TINY
/obj/item/boop_module/New()
..()
flags |= NOBLUDGEON //No more attack messages
flags = NOBLUDGEON //No more attack messages
/obj/item/boop_module/attack_self(mob/user)
if (!( istype(user.loc, /turf) ))
@@ -130,10 +127,7 @@
hitsound = 'sound/effects/attackblob.ogg'
var/emagged = 0
var/busy = 0 //prevents abuse and runtimes
/obj/item/robot_tongue/New()
..()
flags |= NOBLUDGEON //No more attack messages
flags = NOBLUDGEON //No more attack messages
/obj/item/robot_tongue/attack_self(mob/user)
var/mob/living/silicon/robot/R = user
@@ -213,10 +207,7 @@
icon = 'icons/mob/dogborg_vr.dmi'
icon_state = "scrub0"
var/enabled = FALSE
/obj/item/pupscrubber/New()
..()
flags |= NOBLUDGEON
flags = NOBLUDGEON
/obj/item/pupscrubber/attack_self(mob/user)
var/mob/living/silicon/robot/R = user
@@ -320,10 +311,7 @@
force = 0
throwforce = 0
var/bluespace = FALSE
/obj/item/dogborg/pounce/New()
..()
flags |= NOBLUDGEON
flags = NOBLUDGEON
/obj/item/dogborg/pounce/attack_self(mob/user)
var/mob/living/silicon/robot/R = user
@@ -43,10 +43,10 @@
var/recycles = FALSE
var/medsensor = TRUE //Does belly sprite come with patient ok/dead light?
var/obj/item/healthanalyzer/med_analyzer = null
flags = NOBLUDGEON
/obj/item/dogborg/sleeper/New()
..()
flags |= NOBLUDGEON //No more attack messages
/obj/item/dogborg/sleeper/Initialize(mapload)
. = ..()
files = new /datum/research/techonly(src)
med_analyzer = new /obj/item/healthanalyzer
@@ -102,22 +102,19 @@ var/list/mob_hat_cache = list()
can_pick_shell = FALSE
shell_accessories = list("eyes-miningdrone")
/mob/living/silicon/robot/drone/New()
..()
/mob/living/silicon/robot/drone/Initialize(mapload, is_decoy)
. = ..(mapload, is_decoy, FALSE, TRUE)
add_verb(src, /mob/living/proc/ventcrawl)
add_verb(src, /mob/living/proc/hide)
remove_language("Robot Talk")
add_language("Robot Talk", 0)
add_language("Drone Talk", 1)
remove_language(LANGUAGE_ROBOT_TALK)
add_language(LANGUAGE_ROBOT_TALK, 0)
add_language(LANGUAGE_DRONE_TALK, 1)
serial_number = rand(0,999)
//They are unable to be upgraded, so let's give them a bit of a better battery.
cell.maxcharge = 10000
cell.charge = 10000
// NO BRAIN.
mmi = null
//We need to screw with their HP a bit. They have around one fifth as much HP as a full borg.
for(var/V in components) if(V != "power cell")
var/datum/robot_component/C = components[V]
@@ -14,7 +14,7 @@
return emote(copytext(message,2))
if(copytext(message,1,2) == ";")
var/datum/language/L = GLOB.all_languages["Drone Talk"]
var/datum/language/L = GLOB.all_languages[LANGUAGE_DRONE_TALK]
if(istype(L))
return L.broadcast(src,trim(copytext(message,2)))
@@ -140,13 +140,13 @@
vore_fullness_ex = list()
vore_icon_bellies = list()
/mob/living/silicon/robot/New(loc, var/unfinished = 0)
/mob/living/silicon/robot/Initialize(mapload, is_decoy, unfinished = FALSE)
spark_system = new /datum/effect/effect/system/spark_spread()
spark_system.set_up(5, 0, src)
spark_system.attach(src)
robotact = new(src)
add_language("Robot Talk", 1)
add_language(LANGUAGE_ROBOT_TALK, 1)
add_language(LANGUAGE_GALCOM, 1)
add_language(LANGUAGE_EAL, 1)
@@ -183,7 +183,7 @@
else if(ispath(cell))
cell = new cell(src)
..()
. = ..()
if(cell)
var/datum/robot_component/cell_component = components["power cell"]
@@ -315,7 +315,7 @@
mmi.brainmob.languages = M.original_languages
else
mmi.brainmob.languages = languages
mmi.brainmob.remove_language("Robot Talk")
mmi.brainmob.remove_language(LANGUAGE_ROBOT_TALK)
mind.transfer_to(mmi.brainmob)
else if(!shell) // Shells don't have brainmbos in their MMIs.
to_chat(src, span_danger("Oops! Something went very wrong, your MMI was unable to receive your mind. You have been ghosted. Please make a bug report so we can fix this bug."))
@@ -12,10 +12,14 @@
var/obj/item/loaded_item //What is currently inside the analyzer.
/obj/item/portable_destructive_analyzer/New()
..()
/obj/item/portable_destructive_analyzer/Initialize(mapload)
. = ..()
files = new /datum/research/techonly(src) //Setup the research data holder.
/obj/item/portable_destructive_analyzer/Destroy()
qdel_null(files)
. = ..()
/obj/item/portable_destructive_analyzer/attack_self(user as mob)
var/response = tgui_alert(user, "Analyzing the item inside will *DESTROY* the item for good.\n\
Syncing to the research server will send the data that is stored inside to research.\n\
@@ -606,9 +610,9 @@
var/overload_time = 0 //Stores the time of overload
var/last_flash = 0 //Stores the time of last flash
/obj/item/borg/combat/shield/New()
/obj/item/borg/combat/shield/Initialize(mapload)
. = ..()
START_PROCESSING(SSobj, src)
..()
/obj/item/borg/combat/shield/Destroy()
STOP_PROCESSING(SSobj, src)
@@ -169,7 +169,7 @@
can_be_pushed = 0
/obj/item/robot_module/robot/standard/hound/New(var/mob/living/silicon/robot/R)
/obj/item/robot_module/robot/standard/hound/create_equipment(mob/living/silicon/robot/robot)
..()
src.modules += new /obj/item/melee/baton/loaded(src)
src.modules += new /obj/item/tool/wrench/cyborg(src)
@@ -203,5 +203,4 @@
add_verb(R,/mob/living/proc/toggle_rider_reins)
add_verb(R,/mob/living/proc/shred_limb)
add_verb(R,/mob/living/silicon/robot/proc/rest_style)
..()
*/
@@ -46,7 +46,8 @@ What Borgs are available is sadly handled in the above file in the proc
"Vampire's Aid" = "boozeborg(red)",
"Vodka Komrade" = "boozeborg(vodka)"
)
/obj/item/robot_module/robot/booze/New(var/mob/living/silicon/robot/R)
/obj/item/robot_module/robot/booze/create_equipment(mob/living/silicon/robot/robot)
..()
src.modules += new /obj/item/gripper/service(src)
//src.modules += new /obj/item/reagent_containers/glass/bucket(src)
//src.modules += new /obj/item/material/minihoe(src)
@@ -111,7 +112,6 @@ What Borgs are available is sadly handled in the above file in the proc
R.vore_capacity_ex = list("stomach" = 1)
R.wideborg = TRUE
add_verb(R,/mob/living/silicon/robot/proc/ex_reserve_refill) //TGPanel
..()
/obj/item/robot_module/robot/booze/respawn_consumable(var/mob/living/silicon/robot/R, var/amount)
var/obj/item/reagent_containers/food/condiment/enzyme/E = locate() in src.modules
@@ -27,7 +27,8 @@
/obj/item/robot_module/robot/exploration
can_be_pushed = 0
/obj/item/robot_module/robot/exploration/New(var/mob/living/silicon/robot/R)
/obj/item/robot_module/robot/exploration/create_equipment(mob/living/silicon/robot/robot)
..()
src.modules += new /obj/item/dogborg/sleeper/exploration(src)
src.modules += new /obj/item/cataloguer(src)
src.modules += new /obj/item/gun/energy/robotic/flare(src)
@@ -40,5 +41,3 @@
src.modules += new /obj/item/card/id/exploration/borg(src)
src.emag += new /obj/item/melee/robotic/jaws/big/explojaws(src)
..()
+8 -7
View File
@@ -29,15 +29,16 @@
var/hudmode = null
/mob/living/silicon/New()
/mob/living/silicon/Initialize(mapload, is_decoy = FALSE)
. = ..()
silicon_mob_list += src
..()
add_language(LANGUAGE_GALCOM)
apply_default_language(GLOB.all_languages[LANGUAGE_GALCOM])
init_id()
init_subsystems()
if(!is_decoy)
add_language(LANGUAGE_GALCOM)
apply_default_language(GLOB.all_languages[LANGUAGE_GALCOM])
init_id()
init_subsystems()
AddElement(/datum/element/footstep, FOOTSTEP_MOB_SHOE, 1, -6)
AddElement(/datum/element/footstep, FOOTSTEP_MOB_SHOE, 1, -6)
/mob/living/silicon/Destroy()
silicon_mob_list -= src
@@ -30,13 +30,9 @@
var/mob/living/simple_mob/vore/overmap/parent_mob_type
var/mob/living/simple_mob/vore/overmap/parent
/obj/effect/overmap/visitable/simplemob/New(newloc, new_parent)
if(new_parent)
parent = new_parent
return ..()
/obj/effect/overmap/visitable/simplemob/Initialize(mapload)
/obj/effect/overmap/visitable/simplemob/Initialize(mapload, new_parent)
. = ..()
parent = new_parent
if(!parent_mob_type && !parent)
log_and_message_admins("An improperly configured OM mob event tried to spawn, and was deleted.")
return INITIALIZE_HINT_QDEL
@@ -140,13 +136,9 @@
var/om_child_type
var/shipvore = FALSE //Enable this to allow the mob to eat spaceships by dragging them onto its sprite.
/mob/living/simple_mob/vore/overmap/New(mapload, new_child)
if(new_child)
child_om_marker = new_child
return ..()
/mob/living/simple_mob/vore/overmap/Initialize(mapload)
/mob/living/simple_mob/vore/overmap/Initialize(mapload, new_child)
. = ..()
child_om_marker = new_child
if(!om_child_type)
log_and_message_admins("An improperly configured OM mob tried to spawn, and was deleted.")
return INITIALIZE_HINT_QDEL
@@ -174,13 +166,9 @@
var/mob/living/simple_mob/vore/overmap/parent_mob_type
var/mob/living/simple_mob/vore/overmap/parent
/obj/effect/overmap/visitable/ship/simplemob/New(newloc, new_parent)
if(new_parent)
parent = new_parent
return ..()
/obj/effect/overmap/visitable/ship/simplemob/Initialize(mapload)
/obj/effect/overmap/visitable/ship/simplemob/Initialize(mapload, new_parent)
. = ..()
parent = new_parent
if(!parent_mob_type && !parent)
log_and_message_admins("An improperly configured OM mob event tried to spawn, and was deleted.")
return INITIALIZE_HINT_QDEL
@@ -38,20 +38,16 @@
desc = "Don't make fun, they have a condition."
digestable = 0
/mob/living/simple_mob/animal/passive/mouse/jerboa/leggy/New()
..()
name = initial(name)
desc = initial(desc)
/mob/living/simple_mob/animal/passive/mouse/jerboa/leggy/Initialize(mapload)
. = ..(mapload, TRUE)
/mob/living/simple_mob/animal/passive/mouse/brown/feivel
name = "Feivel"
desc = "Heading out west wasn't far enough, so he's going to space!"
digestable = 0
/mob/living/simple_mob/animal/passive/mouse/brown/feivel/New()
..()
name = initial(name)
desc = initial(desc)
/mob/living/simple_mob/animal/passive/mouse/brown/feivel/Initialize(mapload)
. = ..(mapload, TRUE)
/mob/living/simple_mob/animal/passive/cat/jones
name = "Jones"
@@ -122,12 +122,12 @@ GLOBAL_VAR_INIT(jellyfish_count, 0)
if(prob(25))
L.adjustHalLoss(leech)
/mob/living/simple_mob/vore/alienanimals/space_jellyfish/New(newloc, jellyfish)
/mob/living/simple_mob/vore/alienanimals/space_jellyfish/Initialize(mapload, jellyfish)
. = ..()
GLOB.jellyfish_count ++
var/mob/living/simple_mob/vore/alienanimals/space_jellyfish/parent = jellyfish
if(parent)
parent.faction = faction
..()
/mob/living/simple_mob/vore/alienanimals/space_jellyfish/death()
. = ..()
@@ -176,11 +176,7 @@ GLOBAL_VAR_INIT(jellyfish_count, 0)
var/inherited_nutriment = 0
/obj/item/reagent_containers/food/snacks/jellyfishcore/New(newloc, inherit)
inherited_nutriment = inherit
. = ..()
/obj/item/reagent_containers/food/snacks/jellyfishcore/Initialize(mapload)
nutriment_amt += inherited_nutriment
/obj/item/reagent_containers/food/snacks/jellyfishcore/Initialize(mapload, inherit)
. = ..()
nutriment_amt += inherit
reagents.add_reagent(REAGENT_ID_NUTRIMENT, nutriment_amt, nutriment_desc)
@@ -687,7 +687,6 @@ GLOBAL_VAR_INIT(teppi_count, 0) // How mant teppi DO we have?
var/nutrition_cost = 500 + (nutrition / 2)
adjust_nutrition(-nutrition_cost)
new /mob/living/simple_mob/vore/alienanimals/teppi(loc, src)
qdel(src)
else
visible_message("\The [src] whines pathetically...", runemessage = "whines")
if(prob(50))
@@ -762,13 +761,14 @@ GLOBAL_VAR_INIT(teppi_count, 0) // How mant teppi DO we have?
return TRUE
//Handles both growing up from a baby and also passing parent details to new babies.
/mob/living/simple_mob/vore/alienanimals/teppi/New(newloc, teppi1, teppi2)
/mob/living/simple_mob/vore/alienanimals/teppi/Initialize(mapload, teppi1, teppi2)
GLOB.teppi_count ++
if(teppi1 && !teppi2)
inherit_from_baby(teppi1)
qdel(teppi1)
else if (teppi1 && teppi2)
inherit_from_parents(teppi1, teppi2)
..()
. = ..()
/mob/living/simple_mob/vore/alienanimals/teppi/Destroy()
GLOB.teppi_count --
@@ -1134,13 +1134,13 @@ GLOBAL_VAR_INIT(teppi_count, 0) // How mant teppi DO we have?
return
//This a teppi with funny colors will spawn!
/mob/living/simple_mob/vore/alienanimals/teppi/mutant/New()
/mob/living/simple_mob/vore/alienanimals/teppi/mutant/Initialize(mapload)
teppi_mutate = TRUE
. = ..()
//Custom teppi colors! For funzies.
/mob/living/simple_mob/vore/alienanimals/teppi/cass/New()
/mob/living/simple_mob/vore/alienanimals/teppi/cass/Initialize(mapload)
inherit_colors = TRUE
color = "#c69c85"
marking_color = "#eeb698"
@@ -1151,7 +1151,7 @@ GLOBAL_VAR_INIT(teppi_count, 0) // How mant teppi DO we have?
horn_type = "0"
. = ..()
/mob/living/simple_mob/vore/alienanimals/teppi/baby/cass/New()
/mob/living/simple_mob/vore/alienanimals/teppi/baby/cass/Initialize(mapload)
inherit_colors = TRUE
color = "#c69c85"
marking_color = "#eeb698"
@@ -1162,7 +1162,7 @@ GLOBAL_VAR_INIT(teppi_count, 0) // How mant teppi DO we have?
horn_type = "0"
. = ..()
/mob/living/simple_mob/vore/alienanimals/teppi/aronai/New()
/mob/living/simple_mob/vore/alienanimals/teppi/aronai/Initialize(mapload)
inherit_colors = TRUE
color = "#404040"
marking_color = "#222222"
@@ -1173,7 +1173,7 @@ GLOBAL_VAR_INIT(teppi_count, 0) // How mant teppi DO we have?
horn_type = "1"
. = ..()
/mob/living/simple_mob/vore/alienanimals/teppi/lira/New()
/mob/living/simple_mob/vore/alienanimals/teppi/lira/Initialize(mapload)
inherit_colors = TRUE
color = "#fdfae9"
marking_color = "#ffffc0"
@@ -32,8 +32,8 @@ GLOBAL_VAR_INIT(chicken_count, 0) // How mant chickens DO we have?
var/eggsleft = 0
var/body_color
/mob/living/simple_mob/animal/passive/chicken/New()
..()
/mob/living/simple_mob/animal/passive/chicken/Initialize(mapload)
. = ..()
if(!body_color)
body_color = pick( list("brown","black","white") )
icon_state = "chicken_[body_color]"
@@ -132,8 +132,8 @@ GLOBAL_VAR_INIT(chicken_count, 0) // How mant chickens DO we have?
var/amount_grown = 0
/mob/living/simple_mob/animal/passive/chick/New()
..()
/mob/living/simple_mob/animal/passive/chick/Initialize(mapload)
. = ..()
pixel_x = rand(-6, 6)
pixel_y = rand(0, 10)
@@ -24,10 +24,11 @@
var/datum/reagents/udder = null
/mob/living/simple_mob/animal/passive/cow/New()
/mob/living/simple_mob/animal/passive/cow/Initialize(mapload)
. = ..()
udder = new(50)
udder.my_atom = src
..()
/mob/living/simple_mob/animal/passive/cow/attackby(var/obj/item/O as obj, var/mob/user as mob)
var/obj/item/reagent_containers/glass/G = O
@@ -27,10 +27,10 @@
var/datum/reagents/udder = null
/mob/living/simple_mob/animal/goat/New()
/mob/living/simple_mob/animal/goat/Initialize(mapload)
. = ..()
udder = new(50)
udder.my_atom = src
..()
/mob/living/simple_mob/animal/goat/Life()
. = ..()
@@ -44,13 +44,13 @@
var/body_color //brown, gray, white and black, leave blank for random
/mob/living/simple_mob/animal/passive/mouse/New()
..()
/mob/living/simple_mob/animal/passive/mouse/Initialize(mapload, keep_parent_data)
. = ..()
add_verb(src, /mob/living/proc/ventcrawl)
add_verb(src, /mob/living/proc/hide)
if(name == initial(name))
if(!keep_parent_data && name == initial(name))
name = "[name] ([rand(1, 1000)])"
real_name = name
@@ -61,7 +61,7 @@
icon_living = "mouse_[body_color]"
icon_dead = "mouse_[body_color]_dead"
icon_rest = "mouse_[body_color]_sleep"
if (body_color != "rat")
if (!keep_parent_data && body_color != "rat")
desc = "A small [body_color] rodent, often seen hiding in maintenance areas and making a nuisance of itself."
holder_type = /obj/item/holder/mouse/rat
if (body_color == "operative")
@@ -131,10 +131,8 @@
name = "Tom"
desc = "Jerry the cat is not amused."
/mob/living/simple_mob/animal/passive/mouse/brown/Tom/New()
..()
// Change my name back, don't want to be named Tom (666)
name = initial(name)
/mob/living/simple_mob/animal/passive/mouse/brown/Tom/Initialize(mapload)
. = ..(mapload, TRUE)
/mob/living/simple_mob/animal/passive/mouse/black
body_color = "black"
@@ -184,10 +182,8 @@
name = "Agent Cheese"
desc = "I like my cheese Swiss... not American."
/mob/living/simple_mob/animal/passive/mouse/operative/agent_cheese/New()
..()
// Change my name back, don't want to be named agent_cheese (666)
name = initial(name)
/mob/living/simple_mob/animal/passive/mouse/operative/agent_cheese/Initialize(mapload)
. = ..(mapload, TRUE)
// Mouse noises
/datum/say_list/mouse
@@ -56,11 +56,8 @@
desc = "Dainty, well groomed and cared for, her eyes glitter with untold knowledge..."
gender = FEMALE
/mob/living/simple_mob/animal/passive/mouse/white/apple/New()
..()
// Change my name back, don't want to be named Apple (666)
name = initial(name)
desc = initial(desc)
/mob/living/simple_mob/animal/passive/mouse/white/apple/Initialize(mapload, keep_parent_data)
. = ..(mapload, TRUE)
/obj/item/holder/mouse/attack_self(mob/living/carbon/user)
user.setClickCooldown(user.get_attack_speed())
@@ -212,7 +212,7 @@
icon_state = "sneksnakbox"
storage_slots = 7
/obj/item/storage/box/snakesnackbox/New()
/obj/item/storage/box/snakesnackbox/Initialize(mapload)
new /obj/item/reagent_containers/food/snacks/snakesnack(src)
new /obj/item/reagent_containers/food/snacks/snakesnack(src)
new /obj/item/reagent_containers/food/snacks/snakesnack(src)
@@ -220,4 +220,4 @@
new /obj/item/reagent_containers/food/snacks/snakesnack(src)
new /obj/item/reagent_containers/food/snacks/snakesnack(src)
new /obj/item/reagent_containers/food/snacks/snakesnack(src)
..()
. = ..()
@@ -19,17 +19,13 @@
var/prey_ooc_likes
var/prey_ooc_dislikes
/mob/living/dominated_brain/New(loc, var/mob/living/pred, preyname, var/mob/living/prey)
. = ..()
/mob/living/dominated_brain/Initialize(mapload, var/mob/living/pred, preyname, var/mob/living/prey)
prey_name = preyname
if(prey)
prey_body = prey
pred_body = pred
/mob/living/dominated_brain/Initialize(mapload)
if(!isliving(loc))
qdel(src)
return
return INITIALIZE_HINT_QDEL
. = ..()
lets_register_our_signals()
add_verb(src, /mob/living/dominated_brain/proc/resist_control)
@@ -341,7 +341,8 @@ GLOBAL_LIST_INIT(valid_random_lamias, list(
))
/mob/living/simple_mob/vore/lamia/random
/mob/living/simple_mob/vore/lamia/random/New()
/mob/living/simple_mob/vore/lamia/random/Initialize(mapload)
var/mob/living/simple_mob/vore/lamia/new_attrs = pick(GLOB.valid_random_lamias)
name = initial(new_attrs.name)
@@ -312,23 +312,22 @@
var/prey_ckey
/mob/living/simple_mob/vore/morph/dominated_prey/New(loc, pckey, parent, prey)
/mob/living/simple_mob/vore/morph/dominated_prey/Initialize(mapload, pckey, parent, prey)
. = ..()
if(pckey)
prey_ckey = pckey
parent_morph = parent
prey_body = prey
prey_body.forceMove(get_turf(parent_morph))
prey_body.muffled = FALSE
prey_body.absorbed = FALSE
absorbed = TRUE
ckey = prey_ckey
prey_body.ckey = parent_morph.original_ckey
parent_morph.forceMove(src)
name = "[prey_body.name]"
to_chat(prey_body, span_notice("You have completely assumed the form of [prey_body]. Your form is now unable to change anymore until you restore control back to them. You can do this by 'ejecting' them from your [prey_body.vore_selected]. This will not actually release them from your body in this state, but instead return control to them, and restore you to your original form."))
else
qdel(src)
if(!pckey)
return INITIALIZE_HINT_QDEL
prey_ckey = pckey
parent_morph = parent
prey_body = prey
prey_body.forceMove(get_turf(parent_morph))
prey_body.muffled = FALSE
prey_body.absorbed = FALSE
absorbed = TRUE
ckey = prey_ckey
prey_body.ckey = parent_morph.original_ckey
parent_morph.forceMove(src)
name = "[prey_body.name]"
to_chat(prey_body, span_notice("You have completely assumed the form of [prey_body]. Your form is now unable to change anymore until you restore control back to them. You can do this by 'ejecting' them from your [prey_body.vore_selected]. This will not actually release them from your body in this state, but instead return control to them, and restore you to your original form."))
/mob/living/simple_mob/vore/morph/dominated_prey/death(gibbed)
. = ..()
@@ -31,8 +31,8 @@
faction = FACTION_SUCCUBUS
/mob/living/simple_mob/vore/succubus/New()
..()
/mob/living/simple_mob/vore/succubus/Initialize(mapload)
. = ..()
if(random_skin)
icon_living = pick(skins)
icon_rest = "[icon_living]asleep"
@@ -38,8 +38,8 @@
pixel_y = 0
faction = FACTION_WOLFTAUR
/mob/living/simple_mob/vore/wolftaur/New()
..()
/mob/living/simple_mob/vore/wolftaur/Initialize(mapload)
. = ..()
if(random_skin)
icon_living = pick(skins)
icon_rest = "[icon_living]_rest"
+5 -7
View File
@@ -36,15 +36,13 @@
destroy_on_drop = TRUE //VOREStation Edit
/obj/item/grab/New(mob/user, mob/victim)
..()
loc = user
assailant = user
/obj/item/grab/Initialize(mapload, mob/victim)
. = ..()
assailant = loc
affecting = victim
if(affecting.anchored || !assailant.Adjacent(victim))
qdel(src)
return
if(!istype(assailant) || !istype(affecting) || affecting.anchored || !assailant.Adjacent(victim))
return INITIALIZE_HINT_QDEL
affecting.grabbed_by += src
affecting.reveal(span_warning("You are revealed as [assailant] grabs you."))
+1 -3
View File
@@ -130,10 +130,8 @@
var/invis_toggle = FALSE
var/list/sub_planes
/obj/screen/plane_master/New()
..(null) //Never be in anything ever.
/obj/screen/plane_master/proc/backdrop(mob/mymob)
return
/obj/screen/plane_master/proc/set_desired_alpha(var/new_alpha)
if(new_alpha != alpha && new_alpha > 0 && new_alpha <= 255)
+5 -5
View File
@@ -4,10 +4,10 @@
plane_masters[VIS_CH_HEALTH_VR] = new /obj/screen/plane_master{plane = PLANE_CH_HEALTH_VR} //Health bar but transparent at 100
plane_masters[VIS_CH_BACKUP] = new /obj/screen/plane_master{plane = PLANE_CH_BACKUP} //Backup implant status
plane_masters[VIS_CH_VANTAG] = new /obj/screen/plane_master{plane = PLANE_CH_VANTAG} //Vore Antags
plane_masters[VIS_CH_STOMACH] = new /obj/screen/plane_master{plane = PLANE_CH_STOMACH} //Stomach
plane_masters[VIS_SOULCATCHER] = new /obj/screen/plane_master{plane = PLANE_SOULCATCHER} // Soulcatcher
plane_masters[VIS_CH_STOMACH] = new /obj/screen/plane_master{plane = PLANE_CH_STOMACH} //Stomach
plane_masters[VIS_SOULCATCHER] = new /obj/screen/plane_master{plane = PLANE_SOULCATCHER} // Soulcatcher
plane_masters[VIS_AUGMENTED] = new /obj/screen/plane_master/augmented(M = my_mob) //Augmented reality
plane_masters[VIS_AUGMENTED] = new /obj/screen/plane_master/augmented(null, my_mob) //Augmented reality
..()
/////////////////
@@ -17,8 +17,8 @@
var/state = FALSE //Saves cost with the lists
var/mob/my_mob
/obj/screen/plane_master/augmented/New(null, var/mob/M)
..()
/obj/screen/plane_master/augmented/Initialize(mapload, var/mob/M)
. = ..()
my_mob = M
/obj/screen/plane_master/augmented/Destroy()
+70 -6
View File
@@ -22,11 +22,9 @@
var/created_for
/mob/new_player/New()
mob_list += src
/mob/new_player/Initialize(mapload)
. = ..()
add_verb(src, /mob/proc/insidePanel)
flags |= ATOM_INITIALIZED // Explicitly don't use Initialize(). New players join super early and use New()
/mob/new_player/Destroy()
if(panel)
@@ -249,7 +247,6 @@
voted = 1
break
qdel(query)
//This is a safety switch, so only valid options pass through
var/option = "UNKNOWN"
switch(href_list["privacy_poll"])
@@ -447,6 +444,30 @@
spawning = 1
close_spawn_windows()
var/obj/item/itemtf = join_props["itemtf"]
if(itemtf && istype(itemtf, /obj/item/capture_crystal))
var/obj/item/capture_crystal/cryst = itemtf
if(cryst.spawn_mob_type)
// We want to be a spawned mob instead of a person aaaaa
var/mob/living/carrier = join_props["carrier"]
var/vorgans = join_props["vorgans"]
cryst.bound_mob = new cryst.spawn_mob_type(cryst)
cryst.spawn_mob_type = null
cryst.bound_mob.ai_holder_type = /datum/ai_holder/simple_mob/inert
cryst.bound_mob.key = src.key
log_and_message_admins("[key_name_admin(src)] joined [cryst.bound_mob] inside a capture crystal [ADMIN_FLW(cryst.bound_mob)]")
if(vorgans)
cryst.bound_mob.copy_from_prefs_vr()
if(istype(carrier))
cryst.capture(cryst.bound_mob, carrier)
else
//Something went wrong, but lets try to do as much as we can.
cryst.bound_mob.capture_caught = TRUE
cryst.persist_storable = FALSE
cryst.update_icon()
qdel(src)
return
job_master.AssignRole(src, rank, 1)
var/mob/living/character = create_character(T) //creates the human and transfers vars and mind
@@ -484,7 +505,15 @@
ticker.mode.latespawn(character)
if(J.mob_type & JOB_SILICON)
if(rank == JOB_OUTSIDER)
log_and_message_admins("has joined the round as non-crew. (<A href='byond://?_src_=holder;[HrefToken()];adminplayerobservecoodjump=1;X=[T.x];Y=[T.y];Z=[T.z]'>JMP</a>)",character)
if(!(J.mob_type & JOB_SILICON))
ticker.minds += character.mind
else if(rank == JOB_ANOMALY)
log_and_message_admins("has joined the round as anomaly. (<A href='byond://?_src_=holder;[HrefToken()];adminplayerobservecoodjump=1;X=[T.x];Y=[T.y];Z=[T.z]'>JMP</a>)",character)
if(!(J.mob_type & JOB_SILICON))
ticker.minds += character.mind
else if(J.mob_type & JOB_SILICON)
AnnounceCyborg(character, rank, join_message, announce_channel, character.z)
else
AnnounceArrival(character, rank, join_message, announce_channel, character.z)
@@ -496,6 +525,41 @@
if(imp.handle_implant(character,character.zone_sel.selecting))
imp.post_implant(character)
var/gut = join_props["voreny"]
var/start_absorbed = join_props["absorb"]
var/mob/living/prey = join_props["prey"]
if(itemtf && istype(itemtf, /obj/item/capture_crystal))
//We want to be in the crystal, not actually possessing the crystal.
var/obj/item/capture_crystal/cryst = itemtf
var/mob/living/carrier = join_props["carrier"]
cryst.capture(character, carrier)
character.forceMove(cryst)
cryst.update_icon()
else if(itemtf)
itemtf.inhabit_item(character, itemtf.name, character)
var/mob/living/possessed_voice = itemtf.possessed_voice
itemtf.trash_eatable = character.devourable
itemtf.unacidable = !character.digestable
character.forceMove(possessed_voice)
else if(prey)
character.copy_from_prefs_vr(1,1) //Yes I know we're reloading these, shut up
var/obj/belly/gut_to_enter
for(var/obj/belly/B in character.vore_organs)
if(B.name == gut)
gut_to_enter = B
character.vore_selected = B
var/datum/effect/effect/system/teleport_greyscale/tele = new /datum/effect/effect/system/teleport_greyscale()
tele.set_up("#00FFFF", get_turf(prey))
tele.start()
character.forceMove(get_turf(prey))
if(start_absorbed)
prey.absorbed = 1
prey.forceMove(gut_to_enter)
else
if(gut)
if(start_absorbed)
character.absorbed = 1
character.forceMove(gut)
character.client.init_verbs()
qdel(src) // Delete new_player mob
+2 -2
View File
@@ -105,7 +105,7 @@
O.key = key
//Languages
add_language("Robot Talk", 1)
add_language(LANGUAGE_ROBOT_TALK, 1)
add_language(LANGUAGE_GALCOM, 1)
add_language(LANGUAGE_SOL_COMMON, 1)
add_language(LANGUAGE_UNATHI, 1)
@@ -151,7 +151,7 @@
for(var/t in organs)
qdel(t)
var/mob/living/silicon/robot/O = new /mob/living/silicon/robot( loc )
var/mob/living/silicon/robot/O = new /mob/living/silicon/robot(loc)
O.gender = gender
O.invisibility = 0