diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm index 3f6758c6ad..e55323fb3a 100644 --- a/code/_onclick/hud/screen_objects.dm +++ b/code/_onclick/hud/screen_objects.dm @@ -162,6 +162,12 @@ update_icon() return 1 +/obj/screen/zone_sel/proc/set_selected_zone(bodypart) + var/old_selecting = selecting + selecting = bodypart + if(old_selecting != selecting) + update_icon() + /obj/screen/zone_sel/update_icon() overlays.Cut() overlays += image('icons/mob/zone_sel.dmi', "[selecting]") diff --git a/code/controllers/Processes/planet.dm b/code/controllers/Processes/planet.dm index 31406e92a0..b3b556d7bd 100644 --- a/code/controllers/Processes/planet.dm +++ b/code/controllers/Processes/planet.dm @@ -1,11 +1,16 @@ +var/datum/controller/process/planet/planet_controller = null + /datum/controller/process/planet var/list/planets = list() /datum/controller/process/planet/setup() name = "planet" + planet_controller = src schedule_interval = 600 // every minute - planet_sif = new() - planets.Add(planet_sif) + var/list/planet_datums = typesof(/datum/planet) - /datum/planet + for(var/P in planet_datums) + var/datum/planet/NP = new P() + planets.Add(NP) /datum/controller/process/planet/doWork() for(var/datum/planet/P in planets) diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index 5628b8774f..f06ab9ca33 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -977,7 +977,7 @@ if(!check_rights(R_DEBUG)) return - var/datum/planet/planet = input(usr, "Which planet do you want to modify the weather on?", "Change Weather") in list(planet_sif) + var/datum/planet/planet = input(usr, "Which planet do you want to modify the weather on?", "Change Weather") in planet_controller.planets var/datum/weather/new_weather = input(usr, "What weather do you want to change to?", "Change Weather") as null|anything in planet.weather_holder.allowed_weather_types if(new_weather) planet.weather_holder.change_weather(new_weather) @@ -993,7 +993,7 @@ if(!check_rights(R_DEBUG)) return - var/datum/planet/planet = input(usr, "Which planet do you want to modify time on?", "Change Time") in list(planet_sif) + var/datum/planet/planet = input(usr, "Which planet do you want to modify time on?", "Change Time") in planet_controller.planets var/datum/time/current_time_datum = planet.current_time var/new_hour = input(usr, "What hour do you want to change to?", "Change Time", text2num(current_time_datum.show_time("hh"))) as null|num diff --git a/code/modules/mining/mine_turfs.dm b/code/modules/mining/mine_turfs.dm index 32ca92b311..bf59f3c382 100644 --- a/code/modules/mining/mine_turfs.dm +++ b/code/modules/mining/mine_turfs.dm @@ -81,8 +81,8 @@ var/list/mining_overlay_cache = list() /turf/simulated/mineral/proc/update_general() update_icon(1) + recalc_atom_opacity() if(ticker && ticker.current_state == GAME_STATE_PLAYING) - recalc_atom_opacity() reconsider_lights() if(air_master) air_master.mark_for_update(src) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index a68a90e9ef..ab53d6466c 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -1018,3 +1018,47 @@ mob/proc/yank_out_object() /mob/proc/is_muzzled() return 0 + +/client/proc/check_has_body_select() + return mob && mob.hud_used && istype(mob.zone_sel, /obj/screen/zone_sel) + +/client/verb/body_toggle_head() + set name = "body-toggle-head" + set hidden = 1 + toggle_zone_sel(list(BP_HEAD, O_EYES, O_MOUTH)) + +/client/verb/body_r_arm() + set name = "body-r-arm" + set hidden = 1 + toggle_zone_sel(list(BP_R_ARM,BP_R_HAND)) + +/client/verb/body_l_arm() + set name = "body-l-arm" + set hidden = 1 + toggle_zone_sel(list(BP_L_ARM,BP_L_HAND)) + +/client/verb/body_chest() + set name = "body-chest" + set hidden = 1 + toggle_zone_sel(list(BP_TORSO)) + +/client/verb/body_groin() + set name = "body-groin" + set hidden = 1 + toggle_zone_sel(list(BP_GROIN)) + +/client/verb/body_r_leg() + set name = "body-r-leg" + set hidden = 1 + toggle_zone_sel(list(BP_R_LEG,BP_R_FOOT)) + +/client/verb/body_l_leg() + set name = "body-l-leg" + set hidden = 1 + toggle_zone_sel(list(BP_L_LEG,BP_L_FOOT)) + +/client/proc/toggle_zone_sel(list/zones) + if(!check_has_body_select()) + return + var/obj/screen/zone_sel/selector = mob.zone_sel + selector.set_selected_zone(next_in_list(mob.zone_sel.selecting,zones)) \ No newline at end of file diff --git a/code/modules/mob/new_player/sprite_accessories.dm b/code/modules/mob/new_player/sprite_accessories.dm index 0c554f19cc..f6679a6dfe 100644 --- a/code/modules/mob/new_player/sprite_accessories.dm +++ b/code/modules/mob/new_player/sprite_accessories.dm @@ -1090,11 +1090,13 @@ name = "Color Patches" icon_state = "patches" 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_TORSO,BP_GROIN) + species_allowed = list("Tajara") patchesface name = "Color Patches (Face)" icon_state = "patchesface" body_parts = list(BP_HEAD) + species_allowed = list("Tajara") bands name = "Color Bands" diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index f5d9f2ebb4..aebe847fb6 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -492,7 +492,7 @@ This function completely restores a damaged organ to perfect condition. //Burn damage can cause fluid loss due to blistering and cook-off if((damage > 5 || damage + burn_dam >= 15) && type == BURN && (robotic < ORGAN_ROBOT) && !istype(owner.loc,/mob/living) && !istype(owner.loc,/obj/item/device/dogborg/sleeper)) // VOREStation Edit - var/fluid_loss = (damage/(owner.maxHealth - config.health_threshold_dead)) * owner.species.blood_volume*(1 - BLOOD_VOLUME_SURVIVE/100) + var/fluid_loss = 0.75 * (damage/(owner.maxHealth - config.health_threshold_dead)) * owner.species.blood_volume*(1 - BLOOD_VOLUME_SURVIVE/100) owner.remove_blood(fluid_loss) // first check whether we can widen an existing wound diff --git a/code/modules/planet/planet.dm b/code/modules/planet/planet.dm index 65a2de9845..53a07f228b 100644 --- a/code/modules/planet/planet.dm +++ b/code/modules/planet/planet.dm @@ -36,7 +36,12 @@ if(weather_holder) weather_holder.process() -// Returns the time datum of Sif. -/proc/get_sif_time() - if(planet_sif) - return planet_sif.current_time \ No newline at end of file +/datum/planet/proc/update_sun_deferred(var/new_range, var/new_brightness, var/new_color) + set background = 1 + set waitfor = 0 + var/i = 0 + for(var/turf/simulated/floor/T in outdoor_turfs) + T.set_light(new_range, new_brightness, new_color) + i++ + if(i % 30 == 0) + sleep(1) diff --git a/code/modules/planet/sif.dm b/code/modules/planet/sif.dm index 7b95d387bf..303d05f509 100644 --- a/code/modules/planet/sif.dm +++ b/code/modules/planet/sif.dm @@ -13,6 +13,7 @@ var/datum/planet/sif/planet_sif = null /datum/planet/sif/New() ..() + planet_sif = src weather_holder = new /datum/weather_holder/sif(src) // Cold weather is also nice. // This code is horrible. @@ -95,12 +96,11 @@ var/datum/planet/sif/planet_sif = null spawn(1) update_sun_deferred(2, new_brightness, new_color) -/datum/planet/proc/update_sun_deferred(var/new_range, var/new_brightness, var/new_color) - set background = 1 - set waitfor = 0 - var/i = 0 - for(var/turf/simulated/floor/T in outdoor_turfs) - T.set_light(new_range, new_brightness, new_color) - i++ - if(i % 30 == 0) - sleep(1) +// We're gonna pretend there are 32 hours in a Sif day instead of 32.64 for the purposes of not losing sanity. We lose 38m 24s but the alternative is a path to madness. +/datum/time/sif + seconds_in_day = 60 * 60 * 32 * 10 // 115,200 seconds. If we did 32.64 hours/day it would be around 117,504 seconds instead. + +// Returns the time datum of Sif. +/proc/get_sif_time() + if(planet_sif) + return planet_sif.current_time diff --git a/code/modules/planet/time.dm b/code/modules/planet/time.dm index 936ae0eadd..0b3008b668 100644 --- a/code/modules/planet/time.dm +++ b/code/modules/planet/time.dm @@ -70,7 +70,3 @@ answer = replacetext(answer, "mm", minute_text) answer = replacetext(answer, "ss", second_text) return answer - -// We're gonna pretend there are 32 hours in a Sif day instead of 32.64 for the purposes of not losing sanity. We lose 38m 24s but the alternative is a path to madness. -/datum/time/sif - seconds_in_day = 60 * 60 * 32 * 10 // 115,200 seconds. If we did 32.64 hours/day it would be around 117,504 seconds instead. \ No newline at end of file diff --git a/html/changelog.html b/html/changelog.html index 9686d06097..beb8c38c32 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -57,6 +57,25 @@

Anewbe updated: