Merge branch 'master' into mobpathfix

This commit is contained in:
Sebbe
2019-04-16 11:39:01 +02:00
285 changed files with 2979 additions and 1305 deletions
@@ -56,3 +56,21 @@
mind.active = TRUE
SC.catch_mob(src) //This will result in us being deleted so...
/mob/observer/dead/verb/backup_ping()
set category = "Ghost"
set name = "Notify Transcore"
set desc = "If your past-due backup notification was missed or ignored, you can use this to send a new one."
if(src.mind.name in SStranscore.backed_up)
var/datum/transhuman/mind_record/record = SStranscore.backed_up[src.mind.name]
if(!(record.dead_state == MR_DEAD))
to_chat(src, "<span class='warning'>Your backup is not past-due yet.</span>")
else if((world.time - record.last_notification) < 10 MINUTES)
to_chat(src, "<span class='warning'>Too little time has passed since your last notification.</span>")
else
SStranscore.notify(record.mindname, TRUE)
record.last_notification = world.time
to_chat(src, "<span class='notice'>New notification has been sent.</span>")
else
to_chat(src, "<span class='warning'>No mind record found!</span>")
+15 -4
View File
@@ -1102,7 +1102,7 @@
else
usr << "<span class='warning'>You failed to check the pulse. Try again.</span>"
/mob/living/carbon/human/proc/set_species(var/new_species, var/default_colour, var/regen_icons = TRUE)
/mob/living/carbon/human/proc/set_species(var/new_species, var/default_colour, var/regen_icons = TRUE, var/mob/living/carbon/human/example = null) //VOREStation Edit - send an example
if(!dna)
if(!new_species)
@@ -1139,7 +1139,15 @@
if(species.default_language)
add_language(species.default_language)
if(species.base_color) //VOREStation Edit - Always give them a basse color
//if(species.icon_scale != 1) //VOREStation Removal
// update_transform() //VOREStation Removal
if(example) //VOREStation Edit begin
if(!(example == src))
r_skin = example.r_skin
g_skin = example.g_skin
b_skin = example.b_skin
else if(species.base_color) //VOREStation Edit end
//Apply colour.
r_skin = hex2num(copytext(species.base_color,2,4))
g_skin = hex2num(copytext(species.base_color,4,6))
@@ -1157,10 +1165,13 @@
//icon_state = lowertext(species.name) //Necessary?
species.create_organs(src)
//VOREStation Edit start: swap places of those two procs
species.handle_post_spawn(src)
species.create_organs(src)
//VOREStation Edit end: swap places of those two procs
maxHealth = species.total_health
if(LAZYLEN(descriptors))
+1 -1
View File
@@ -1398,7 +1398,7 @@
/mob/living/carbon/human/proc/process_glasses(var/obj/item/clothing/glasses/G)
if(G && G.active)
see_in_dark += G.darkness_view
if(G.overlay)
if(G.overlay && client)
client.screen |= G.overlay
if(G.vision_flags)
sight |= G.vision_flags
@@ -25,6 +25,7 @@
max_age = 200
health_hud_intensity = 2
num_alternate_languages = 3
assisted_langs = list(LANGUAGE_EAL, LANGUAGE_ROOTLOCAL, LANGUAGE_ROOTGLOBAL, LANGUAGE_VOX)
spawn_flags = SPECIES_CAN_JOIN
appearance_flags = HAS_HAIR_COLOR | HAS_SKIN_COLOR | HAS_LIPS | HAS_UNDERWEAR | HAS_EYE_COLOR
@@ -1,5 +1,5 @@
/datum/species/monkey/shark
name = "Sobaka"
name = SPECIES_MONKEY_AKULA
name_plural = "Sobaka"
icobase = 'icons/mob/human_races/monkeys/r_sobaka_vr.dmi'
deform = 'icons/mob/human_races/monkeys/r_sobaka_vr.dmi'
@@ -8,7 +8,7 @@
default_language = "Skrellian" //Closest we have.
/datum/species/monkey/sergal
name = "Saru"
name = SPECIES_MONKEY_SERGAL
greater_form = "Sergal"
icobase = 'icons/mob/human_races/monkeys/r_sergaling_vr.dmi'
deform = 'icons/mob/human_races/monkeys/r_sergaling_vr.dmi'
@@ -16,7 +16,7 @@
default_language = LANGUAGE_SAGARU
/datum/species/monkey/sparra
name = "Sparra"
name = SPECIES_MONKEY_NEVREAN
name_plural = "Sparra"
greater_form = "Nevrean"
tail = null
@@ -41,7 +41,7 @@
*/
/datum/species/monkey/vulpkanin
name = "Wolpin"
name = SPECIES_MONKEY_VULPKANIN
name_plural = "Wolpin"
icobase = 'icons/mob/human_races/monkeys/r_wolpin.dmi'
@@ -9,14 +9,8 @@
"Rapala", "Neaera", "Stok", "Farwa", "Sobaka",
"Wolpin", "Saru", "Sparra")
heal_rate = 0.2 //As of writing, original was 0.5 - Slows regen speed (bad)
hunger_factor = 0.1 //As of writing, original was 0.2 - Slows hunger rate (good)
siemens_coefficient = 1 //As of writing, original was 0.4 (bad)
active_regen_mult = 0.66 //As of writing, original was 1 (good)
color_mult = 1
mob_size = MOB_MEDIUM //As of writing, original was MOB_SMALL - Allows normal swapping (good)
num_alternate_languages = 1 //Might be outdated: They currently have 3 in the other file
mob_size = MOB_MEDIUM //As of writing, original was MOB_SMALL - Allows normal swapping
trashcan = 1 //They have goopy bodies. They can just dissolve things within them.
appearance_flags = HAS_SKIN_COLOR | HAS_EYE_COLOR | HAS_HAIR_COLOR | RADIATION_GLOWS | HAS_UNDERWEAR
+11 -1
View File
@@ -149,6 +149,12 @@ default behaviour is:
tmob.forceMove(oldloc)
now_pushing = 0
return
//VOREStation Edit - Begin
else if((tmob.mob_always_swap || (tmob.a_intent == I_HELP || tmob.restrained()) && (a_intent == I_HELP || src.restrained())) && canmove && can_swap && handle_micro_bump_helping(tmob))
forceMove(tmob.loc)
now_pushing = 0
return
//VOREStation Edit - End
if(!can_move_mob(tmob, 0, 0))
now_pushing = 0
@@ -944,7 +950,11 @@ default behaviour is:
/mob/living/proc/escape_buckle()
if(buckled)
buckled.user_unbuckle_mob(src, src)
if(istype(buckled, /obj/vehicle))
var/obj/vehicle/vehicle = buckled
vehicle.unload()
else
buckled.user_unbuckle_mob(src, src)
/mob/living/proc/resist_grab()
var/resisting = 0
+5 -2
View File
@@ -305,7 +305,10 @@ var/list/ai_verbs_default = list(
/obj/machinery/ai_powersupply/New(var/mob/living/silicon/ai/ai=null)
powered_ai = ai
powered_ai.psupply = src
forceMove(powered_ai.loc)
if(istype(powered_ai,/mob/living/silicon/ai/announcer)) //Don't try to get a loc for a nullspace announcer mob, just put it into it
forceMove(powered_ai)
else
forceMove(powered_ai.loc)
..()
use_power(1) // Just incase we need to wake up the power system.
@@ -443,7 +446,7 @@ var/list/ai_verbs_default = list(
return
if(usr != src)
return
/*if(..()) // <------ MOVED FROM HERE
/*if(..()) // <------ MOVED FROM HERE
return*/
if (href_list["mach_close"])
if (href_list["mach_close"] == "aialerts")
+1 -1
View File
@@ -201,7 +201,7 @@
medicalActive1 = null
medicalActive2 = null
medical_cannotfind = 0
GLOB.nanomanager.update_uis(src)
SSnanoui.update_uis(src)
usr << "<span class='notice'>You reset your record-viewing software.</span>"
/mob/living/silicon/pai/cancel_camera()
@@ -90,7 +90,7 @@ var/global/list/default_pai_software = list()
data["emotions"] = emotions
data["current_emotion"] = card.current_emotion
ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if (!ui)
ui = new(user, src, ui_key, "pai_interface.tmpl", "pAI Software Interface", 450, 600)
ui.set_initial_data(data)
@@ -36,7 +36,7 @@
data["prime"] = user.pai_law0
data["supplemental"] = user.pai_laws
ui = GLOB.nanomanager.try_update_ui(user, user, id, ui, data, force_open)
ui = SSnanoui.try_update_ui(user, user, id, ui, data, force_open)
if(!ui)
// Don't copy-paste this unless you're making a pAI software module!
ui = new(user, user, id, "pai_directives.tmpl", "pAI Directives", 450, 600)
@@ -102,7 +102,7 @@
data["channels"] = channels
ui = GLOB.nanomanager.try_update_ui(user, user, id, ui, data, force_open)
ui = SSnanoui.try_update_ui(user, user, id, ui, data, force_open)
if(!ui)
ui = new(user, user, id, "pai_radio.tmpl", "Radio Configuration", 300, 150)
ui.set_initial_data(data)
@@ -128,7 +128,7 @@
// This is dumb, but NanoUI breaks if it has no data to send
data["manifest"] = PDA_Manifest
ui = GLOB.nanomanager.try_update_ui(user, user, id, ui, data, force_open)
ui = SSnanoui.try_update_ui(user, user, id, ui, data, force_open)
if(!ui)
// Don't copy-paste this unless you're making a pAI software module!
ui = new(user, user, id, "crew_manifest.tmpl", "Crew Manifest", 450, 600)
@@ -178,7 +178,7 @@
data["messages"] = messages
ui = GLOB.nanomanager.try_update_ui(user, user, id, ui, data, force_open)
ui = SSnanoui.try_update_ui(user, user, id, ui, data, force_open)
if(!ui)
// Don't copy-paste this unless you're making a pAI software module!
ui = new(user, user, id, "pai_messenger.tmpl", "Digital Messenger", 450, 600)
@@ -236,7 +236,7 @@
data["medical"] = M ? M.fields : null
data["could_not_find"] = user.medical_cannotfind
ui = GLOB.nanomanager.try_update_ui(user, user, id, ui, data, force_open)
ui = SSnanoui.try_update_ui(user, user, id, ui, data, force_open)
if(!ui)
// Don't copy-paste this unless you're making a pAI software module!
ui = new(user, user, id, "pai_medrecords.tmpl", "Medical Records", 450, 600)
@@ -290,7 +290,7 @@
data["security"] = S ? S.fields : null
data["could_not_find"] = user.security_cannotfind
ui = GLOB.nanomanager.try_update_ui(user, user, id, ui, data, force_open)
ui = SSnanoui.try_update_ui(user, user, id, ui, data, force_open)
if(!ui)
// Don't copy-paste this unless you're making a pAI software module!
ui = new(user, user, id, "pai_secrecords.tmpl", "Security Records", 450, 600)
@@ -340,7 +340,7 @@
data["progress_b"] = user.hackprogress % 10
data["aborted"] = user.hack_aborted
ui = GLOB.nanomanager.try_update_ui(user, user, id, ui, data, force_open)
ui = SSnanoui.try_update_ui(user, user, id, ui, data, force_open)
if(!ui)
// Don't copy-paste this unless you're making a pAI software module!
ui = new(user, user, id, "pai_doorjack.tmpl", "Door Jack", 300, 150)
@@ -431,7 +431,7 @@
gases[++gases.len] = gas
data["gas"] = gases
ui = GLOB.nanomanager.try_update_ui(user, user, id, ui, data, force_open)
ui = SSnanoui.try_update_ui(user, user, id, ui, data, force_open)
if(!ui)
// Don't copy-paste this unless you're making a pAI software module!
ui = new(user, user, id, "pai_atmosphere.tmpl", "Atmosphere Sensor", 350, 300)
@@ -505,7 +505,7 @@
data["frequency"] = format_frequency(user.sradio.frequency)
data["code"] = user.sradio.code
ui = GLOB.nanomanager.try_update_ui(user, user, id, ui, data, force_open)
ui = SSnanoui.try_update_ui(user, user, id, ui, data, force_open)
if(!ui)
// Don't copy-paste this unless you're making a pAI software module!
ui = new(user, user, id, "pai_signaller.tmpl", "Signaller", 320, 150)
@@ -184,12 +184,12 @@
dat += "<h3>Injector</h3>"
if(patient)// && patient.health > min_health) //Not necessary, leave the buttons on, but the feedback during injection will give more information.
for(var/re in injection_chems)
var/datum/reagent/C = chemical_reagents_list[re]
var/datum/reagent/C = SSchemistry.chemical_reagents[re]
if(C)
dat += "<A href='?src=\ref[src];inject=[C.id]'>Inject [C.name]</A><BR>"
else
for(var/re in injection_chems)
var/datum/reagent/C = chemical_reagents_list[re]
var/datum/reagent/C = SSchemistry.chemical_reagents[re]
if(C)
dat += "<span class='linkOff'>Inject [C.name]</span><BR>"
@@ -393,7 +393,7 @@
patient.reagents.add_reagent(chem, inject_amount)
drain(750) //-750 charge per injection
var/units = round(patient.reagents.get_reagent_amount(chem))
to_chat(hound, "<span class='notice'>Injecting [units] unit\s of [chemical_reagents_list[chem]] into occupant.</span>") //If they were immersed, the reagents wouldn't leave with them.
to_chat(hound, "<span class='notice'>Injecting [units] unit\s of [SSchemistry.chemical_reagents[chem]] into occupant.</span>") //If they were immersed, the reagents wouldn't leave with them.
//For if the dogborg's existing patient uh, doesn't make it.
/obj/item/device/dogborg/sleeper/proc/update_patient()
@@ -628,7 +628,7 @@
else
to_chat(user, "Unable to locate a radio.")
else if (istype(W, /obj/item/weapon/card/id)||istype(W, /obj/item/device/pda)||istype(W, /obj/item/weapon/card/robot)) // trying to unlock the interface with an ID card
else if (W.GetID()) // trying to unlock the interface with an ID card
if(emagged)//still allow them to open the cover
to_chat(user, "The interface seems slightly damaged")
if(opened)
@@ -729,7 +729,7 @@
var/list/L = req_access
if(!L.len) //no requirements
return 1
if(!I || !(istype(I, /obj/item/weapon/card/id) || istype(I, /obj/item/device/pda))) //not ID or PDA
if(!I) //nothing to check with..?
return 0
var/access_found = I.GetAccess()
for(var/req in req_access)
@@ -1003,7 +1003,7 @@
if(icontype == "Custom")
icon = CUSTOM_ITEM_SYNTH
else // This is to fix an issue where someone with a custom borg sprite chooses a non-custom sprite and turns invisible.
icon = 'icons/mob/robots.dmi'
vr_sprite_check() //VOREStation Edit
icon_state = module_sprites[icontype]
updateicon()
@@ -21,7 +21,7 @@
attacktext = list("bitten")
say_list_type = /datum/say_list/snake
ai_holder_type = /datum/ai_holder/simple_mob/melee
ai_holder_type = /datum/ai_holder/simple_mob/passive
/datum/say_list/snake
emote_hear = list("hisses")
@@ -31,7 +31,6 @@
name = "Noodle"
desc = "This snake is particularly chubby and demands nothing but the finest of treats."
ai_holder_type = /datum/ai_holder/simple_mob/passive
makes_dirt = FALSE
var/turns_since_scan = 0
@@ -0,0 +1,3 @@
/datum/say_list/merc/unknown_ind
speak = list("One day the'll fix that damn engine..","Next time, We're hidding on the tropical beach planet.","Wish I had better equipment...","I knew I should have been a line chef...","Fuckin' helmet keeps fogging up.","Hate this blocky ass ship.")
say_got_target = list("Looks like trouble!","Contact!","We've got company!","Perimeter Breached!!")
+1 -1
View File
@@ -1,5 +1,5 @@
/mob/Logout()
GLOB.nanomanager.user_logout(src) // this is used to clean up (remove) this user's Nano UIs
SSnanoui.user_logout(src) // this is used to clean up (remove) this user's Nano UIs
player_list -= src
disconnect_time = world.realtime //VOREStation Addition: logging when we disappear.
update_client_z(null)
+3 -3
View File
@@ -373,8 +373,8 @@
var/deathtimeseconds = round((deathtime - deathtimeminutes * 600) / 10,1)
to_chat(usr, "You have been dead for[pluralcheck] [deathtimeseconds] seconds.")
if ((deathtime < (5 * 600)) && (ticker && ticker.current_state > GAME_STATE_PREGAME))
to_chat(usr, "You must wait 5 minutes to respawn!")
if ((deathtime < (1 * 600)) && (ticker && ticker.current_state > GAME_STATE_PREGAME)) //VOREStation Edit: lower respawn timer
to_chat(usr, "You must wait 1 minute to respawn!")
return
else
to_chat(usr, "You can respawn now, enjoy your new life!")
@@ -716,7 +716,7 @@
if(statpanel("Tickets"))
GLOB.ahelp_tickets.stat_entry()
if(length(GLOB.sdql2_queries))
if(statpanel("SDQL2"))
@@ -1049,19 +1049,10 @@
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_HEAD)
/*
rosette
name = "Rosettes"
icon_state = "rosette"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND,BP_GROIN,BP_TORSO)
rosette_color
name = "Rosettes (Colorable)"
icon_state = "rosette_color"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND,BP_GROIN,BP_TORSO)
*/
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND,BP_GROIN,BP_TORSO,BP_HEAD)
heterochromia
name = "Heterochromia"
+2
View File
@@ -182,6 +182,8 @@
var/datum/preferences/B = O.client.prefs
for(var/language in B.alternate_languages)
O.add_language(language)
O.resize(B.size_multiplier, animate = FALSE) //VOREStation Addition: add size prefs to borgs
O.fuzzy = B.fuzzy //VOREStation Addition: add size prefs to borgs
callHook("borgify", list(O))
O.Namepick()