From 9d3556283e986db21008fbad98eb9ab321dc76fa Mon Sep 17 00:00:00 2001 From: skull132 Date: Thu, 12 Jan 2017 23:07:46 +0200 Subject: [PATCH] Fix #1490, #1495, #1430, #1425, #1472, plus spacelube (#1537) Fixes #1490 Fixes #1495 Fixes runtimes from meteors. Fixes #1430 Fixes #1425 Fxies #1472 Fixes spacelube not drying. --- code/game/gamemodes/meteor/meteors.dm | 5 ++-- code/game/turfs/simulated.dm | 15 +++++----- .../preference_setup/general/03_body.dm | 8 ++--- .../preference_setup/general/04_equipment.dm | 6 ++-- code/modules/client/preferences.dm | 30 +++++++++++++++++-- code/modules/mob/living/silicon/robot/life.dm | 3 +- code/modules/organs/blood.dm | 4 +-- html/changelogs/skull132-PR_1537.yml | 11 +++++++ 8 files changed, 60 insertions(+), 22 deletions(-) create mode 100644 html/changelogs/skull132-PR_1537.yml diff --git a/code/game/gamemodes/meteor/meteors.dm b/code/game/gamemodes/meteor/meteors.dm index f8922723c97..37bce4d2707 100644 --- a/code/game/gamemodes/meteor/meteors.dm +++ b/code/game/gamemodes/meteor/meteors.dm @@ -222,9 +222,10 @@ range = ((range - world.view) * 2)+1 - for(var/mob/M in world) + for(var/A in player_list) + var/mob/M = A var/turf/mobloc = get_turf(M) - if(M.client && mobloc.z == T.z) + if(mobloc && mobloc.z == T.z) if(M.ear_deaf <= 0 || !M.ear_deaf) M.playsound_local(T, 'sound/effects/meteorimpact.ogg', range, 1, usepressure = 0) diff --git a/code/game/turfs/simulated.dm b/code/game/turfs/simulated.dm index 7a462f7b3c5..25678ee368c 100644 --- a/code/game/turfs/simulated.dm +++ b/code/game/turfs/simulated.dm @@ -27,20 +27,21 @@ overlays += wet_overlay if(unwet_task) - unwet_task.trigger_task_in(8 SECONDS) + // Space lube dries a lot. + if (wet > 1) + unwet_task.trigger_task_in(120 SECONDS) + else + unwet_task.trigger_task_in(8 SECONDS) else - unwet_task = schedule_task_in(8 SECONDS) + unwet_task = schedule_task_in(wet > 1 ? 120 SECONDS : 8 SECONDS) task_triggered_event.register(unwet_task, src, /turf/simulated/proc/task_unwet_floor) /turf/simulated/proc/task_unwet_floor(var/triggered_task) if(triggered_task == unwet_task) unwet_task = null - unwet_floor(TRUE) - -/turf/simulated/proc/unwet_floor(var/check_very_wet) - if(check_very_wet && wet >= 2) - return + unwet_floor() +/turf/simulated/proc/unwet_floor() wet = 0 if(wet_overlay) overlays -= wet_overlay diff --git a/code/modules/client/preference_setup/general/03_body.dm b/code/modules/client/preference_setup/general/03_body.dm index 2c789acb9bd..c4a76f4f484 100644 --- a/code/modules/client/preference_setup/general/03_body.dm +++ b/code/modules/client/preference_setup/general/03_body.dm @@ -255,21 +255,21 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O . += "Hair
" if(has_flag(mob_species, HAS_HAIR_COLOR)) - . += "Change Color
__
" + . += "Change Color
__
" . += " Style: [pref.h_style]
" . += "
Facial
" if(has_flag(mob_species, HAS_HAIR_COLOR)) - . += "Change Color
__
" + . += "Change Color
__
" . += " Style: [pref.f_style]
" if(has_flag(mob_species, HAS_EYE_COLOR)) . += "
Eyes
" - . += "Change Color
__

" + . += "Change Color
__

" if(has_flag(mob_species, HAS_SKIN_COLOR)) . += "
Body Color
" - . += "Change Color
__

" + . += "Change Color
__

" /datum/category_item/player_setup_item/general/body/proc/has_flag(var/datum/species/mob_species, var/flag) return mob_species && (mob_species.appearance_flags & flag) diff --git a/code/modules/client/preference_setup/general/04_equipment.dm b/code/modules/client/preference_setup/general/04_equipment.dm index 56041b074b7..74c6ff7077a 100644 --- a/code/modules/client/preference_setup/general/04_equipment.dm +++ b/code/modules/client/preference_setup/general/04_equipment.dm @@ -41,11 +41,11 @@ var/undies = get_undies() var/gender_socks = get_gender_socks() if(!get_key_by_value(undies, pref.underwear)) - pref.underwear = undies[1] + pref.underwear = undies[undies[1]] if(!get_key_by_value(undershirt_t, pref.undershirt)) - pref.undershirt = undershirt_t[1] + pref.undershirt = undershirt_t[undershirt_t[1]] if(!get_key_by_value(gender_socks, pref.socks)) - pref.socks = gender_socks[1] + pref.socks = gender_socks[gender_socks[1]] var/total_cost = 0 for(var/gear_name in pref.gear) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 7c299bf71d5..e6ad92b1fce 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -213,12 +213,12 @@ datum/preferences if(!user || !user.client) return var/dat = "
" - // #MARKER-SQLSAVE: Options and buttons. if(path) - dat += "Slot - " dat += "Load slot - " dat += "Save slot - " dat += "Reload slot" + if (config.sql_saves) + dat += " - Delete slot" else dat += "Please create an account to save your preferences." @@ -271,6 +271,11 @@ datum/preferences close_load_dialog(usr) else if(href_list["close_load_dialog"]) close_load_dialog(usr) + else if(href_list["delete"]) + if (!config.sql_saves) + return 0 + if (alert(usr, "This will permanently delete the character you have loaded. Are you sure?", "Delete Character", "No", "Yes") == "Yes") + delete_character_sql() else return 0 @@ -541,3 +546,24 @@ datum/preferences nanotrasen_relation = "Neutral" update_preview_icon() + +// Deletes a character from the database +/datum/preferences/proc/delete_character_sql(var/client/C) + if (!C) + return + + if (!current_character) + C << "You do not have a character loaded." + return + + if (!establish_db_connection(dbcon)) + C << "Unable to establish database connection." + return + + var/DBQuery/query = dbcon.NewQuery("UPDATE ss13_characters SET deleted_at = NOW() WHERE id = :char_id") + query.Execute(list(":char_id" = current_character)) + + // Create a new character. + new_setup(1) + + C << "Character successfully deleted! Please make a new one or load an existing setup." diff --git a/code/modules/mob/living/silicon/robot/life.dm b/code/modules/mob/living/silicon/robot/life.dm index f2d3010547c..7946ba604b1 100644 --- a/code/modules/mob/living/silicon/robot/life.dm +++ b/code/modules/mob/living/silicon/robot/life.dm @@ -148,6 +148,7 @@ return 1 /mob/living/silicon/robot/handle_regular_hud_updates() + ..() if (src.stat == 2 || (XRAY in mutations) || (src.sight_mode & BORGXRAY)) src.sight |= SEE_TURFS @@ -180,8 +181,6 @@ src.see_invisible = SEE_INVISIBLE_LIVING // This is normal vision (25), setting it lower for normal vision means you don't "see" things like darkness since darkness // has a "invisible" value of 15 - ..() - var/obj/item/borg/sight/hud/hud = (locate(/obj/item/borg/sight/hud) in src) if(hud && hud.hud) hud.hud.process_hud(src) diff --git a/code/modules/organs/blood.dm b/code/modules/organs/blood.dm index 66b77eda51b..4a539bc0af0 100644 --- a/code/modules/organs/blood.dm +++ b/code/modules/organs/blood.dm @@ -221,8 +221,8 @@ var/const/BLOOD_VOLUME_SURVIVE = 122 //Transfers blood from reagents to vessel, respecting blood types compatability. /mob/living/carbon/human/inject_blood(var/datum/reagent/blood/injected, var/amount) - - if(!(species.flags & NO_BLOOD)) + // In case of mobs without blood, put it in their chem storage. + if(species.flags & NO_BLOOD) reagents.add_reagent("blood", amount, injected.data) reagents.update_total() return diff --git a/html/changelogs/skull132-PR_1537.yml b/html/changelogs/skull132-PR_1537.yml new file mode 100644 index 00000000000..d80b3083843 --- /dev/null +++ b/html/changelogs/skull132-PR_1537.yml @@ -0,0 +1,11 @@ +author: Skull132 + +delete-after: True + +changes: + - bugfix: "Re-added the character delete button." + - bugfix: "Fixed borg scanners." + - bugfix: "Fixed a case of the colour squares on character creation showing wrong colours." + - bugfix: "Fixed underwear/socks/undershirts bugging out on incompatible saved data." + - bugfix: "Fixed not being able to infect any human mobs (monkeys included) with viruses via injection." + - bugfix: "Fixed spacelube not drying ever. It still takes a shit load of time, however."