mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-08-22 19:47:47 +01:00
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:
@@ -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()
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/mob/living/New()
|
||||
..()
|
||||
/mob/living/Initialize(mapload)
|
||||
. = ..()
|
||||
|
||||
//Prime this list if we need it.
|
||||
if(has_huds)
|
||||
|
||||
@@ -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."))
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
..()
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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."))
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user