diff --git a/baystation12.dme b/baystation12.dme index 411f58ddd3..855bd5368e 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -954,6 +954,7 @@ #include "code\modules\mob\living\carbon\brain\death.dm" #include "code\modules\mob\living\carbon\brain\emote.dm" #include "code\modules\mob\living\carbon\brain\life.dm" +#include "code\modules\mob\living\carbon\brain\login.dm" #include "code\modules\mob\living\carbon\brain\MMI.dm" #include "code\modules\mob\living\carbon\brain\posibrain.dm" #include "code\modules\mob\living\carbon\brain\say.dm" diff --git a/code/WorkInProgress/computer3/laptop.dm b/code/WorkInProgress/computer3/laptop.dm index bff5a116f3..b88f782c2c 100644 --- a/code/WorkInProgress/computer3/laptop.dm +++ b/code/WorkInProgress/computer3/laptop.dm @@ -30,18 +30,18 @@ var/obj/machinery/computer3/laptop/stored_computer = null verb/open_computer() - set name = "open laptop" + set name = "Open Laptop" set category = "Object" set src in view(1) - + if(usr.stat || usr.restrained() || usr.lying || !istype(usr, /mob/living)) usr << "\red You can't do that." return - + if(!Adjacent(usr)) usr << "You can't reach it." return - + if(!istype(loc,/turf)) usr << "[src] is too bulky! You'll have to set it down." return @@ -69,9 +69,42 @@ if(Adjacent(usr)) open_computer() +//Quickfix until Snapshot works out how he wants to redo power. ~Z +/obj/item/device/laptop/verb/eject_id() + set category = "Object" + set name = "Eject ID Card" + set src in oview(1) + + if(stored_computer) + stored_computer.eject_id() + +/obj/machinery/computer3/laptop/verb/eject_id() + set category = "Object" + set name = "Eject ID Card" + set src in oview(1) + + var/obj/item/part/computer/cardslot/C = locate() in src.contents + + if(!C) + usr << "There is no card port on the laptop." + return + + var/obj/item/weapon/card/id/card + if(C.reader) + card = C.reader + else if(C.writer) + card = C.writer + else + usr << "There is nothing to remove from the laptop card port." + return + + usr << "You remove [card] from the laptop." + C.remove(card) + + /obj/machinery/computer3/laptop name = "Laptop Computer" - desc = "A clamshell portable computer. It is open." + desc = "A clamshell portable computer. It is open." icon_state = "laptop" density = 0 @@ -90,15 +123,15 @@ set name = "Close Laptop" set category = "Object" set src in view(1) - + if(usr.stat || usr.restrained() || usr.lying || !istype(usr, /mob/living)) usr << "\red You can't do that." return - + if(!Adjacent(usr)) usr << "You can't reach it." return - + if(istype(loc,/obj/item/device/laptop)) testing("Close closed computer") return diff --git a/code/modules/clothing/head/jobs.dm b/code/modules/clothing/head/jobs.dm index d2ef8deccf..692cc90b63 100644 --- a/code/modules/clothing/head/jobs.dm +++ b/code/modules/clothing/head/jobs.dm @@ -3,7 +3,7 @@ /obj/item/clothing/head/chefhat name = "chef's hat" desc = "It's a hat used by chefs to keep hair out of your food. Judging by the food in the mess, they don't work." - icon_state = "chef" + icon_state = "chefhat" item_state = "chefhat" desc = "The commander in chef's head wear." flags = FPRINT | TABLEPASS diff --git a/code/modules/mining/machine_processing.dm b/code/modules/mining/machine_processing.dm index d350e2052c..d8b671af25 100644 --- a/code/modules/mining/machine_processing.dm +++ b/code/modules/mining/machine_processing.dm @@ -142,10 +142,20 @@ /obj/machinery/mineral/processing_unit/process() - if (!active || !src.output || !src.input) return + if (!src.output || !src.input) return var/list/tick_alloys = list() + //Grab some more ore to process this tick. + for(var/i = 0,i 0 && findtext(message,"\"",1, null) > 0) + // return //This check does not work and I have no idea why, I'm leaving it in for reference. + if (src.client) if (client.prefs.muted & MUTE_IC) src << "\red You cannot send IC messages (muted)." diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 211da1cdac..f772fe5840 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -690,6 +690,7 @@ loc_temp = environment.temperature if(adjusted_pressure < species.warning_high_pressure && adjusted_pressure > species.warning_low_pressure && abs(loc_temp - bodytemperature) < 20 && bodytemperature < species.heat_level_1 && bodytemperature > species.cold_level_1 && environment.phoron < MOLES_PHORON_VISIBLE) + pressure_alert = 0 return // Temperatures are within normal ranges, fuck all this processing. ~Ccomp //Body temperature adjusts depending on surrounding atmosphere based on your thermal protection @@ -1098,6 +1099,9 @@ return //TODO: DEFERRED proc/handle_regular_status_updates() + + if(status_flags & GODMODE) return 0 + if(stat == DEAD) //DEAD. BROWN BREAD. SWIMMING WITH THE SPESS CARP blinded = 1 silent = 0 diff --git a/code/modules/mob/living/silicon/login.dm b/code/modules/mob/living/silicon/login.dm index 32e0c8d346..a95a754eae 100644 --- a/code/modules/mob/living/silicon/login.dm +++ b/code/modules/mob/living/silicon/login.dm @@ -1,4 +1,5 @@ /mob/living/silicon/Login() + sleeping = 0 if(mind && ticker && ticker.mode) ticker.mode.remove_cultist(mind, 1) ticker.mode.remove_revolutionary(mind, 1) diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index b4d3f02196..0f18e02cf3 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -134,6 +134,7 @@ return 1 if(href_list["late_join"]) + if(!ticker || ticker.current_state != GAME_STATE_PLAYING) usr << "\red The round is either not ready, or has already finished..." return @@ -143,6 +144,11 @@ src << alert("You are currently not whitelisted to play [client.prefs.species].") return 0 + var/datum/species/S = all_species[client.prefs.species] + if(!(S.flags & IS_WHITELISTED)) + src << alert("Your current species,[client.prefs.species], is not available for play on the station.") + return 0 + LateChoices() if(href_list["manifest"]) @@ -159,6 +165,11 @@ src << alert("You are currently not whitelisted to play [client.prefs.species].") return 0 + var/datum/species/S = all_species[client.prefs.species] + if(!(S.flags & IS_WHITELISTED)) + src << alert("Your current species,[client.prefs.species], is not available for play on the station.") + return 0 + AttemptLateSpawn(href_list["SelectedJob"],client.prefs.spawnpoint) return diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index b885d7610e..713de4aef4 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -32,6 +32,7 @@ var/damage_msg = "\red You feel an intense pain" var/broken_description + var/vital //Lose a vital limb, die immediately. var/status = 0 var/open = 0 var/stage = 0 @@ -355,7 +356,7 @@ INFECTION_LEVEL_THREE above this germ level the player will take additional toxi Note that amputating the affected organ does in fact remove the infection from the player's body. */ /datum/organ/external/proc/update_germs() - + if(status & (ORGAN_ROBOT|ORGAN_DESTROYED) || (owner.species && owner.species.flags & IS_PLANT)) //Robotic limbs shouldn't be infected, nor should nonexistant limbs. germ_level = 0 return @@ -363,7 +364,7 @@ Note that amputating the affected organ does in fact remove the infection from t if(owner.bodytemperature >= 170) //cryo stops germs from moving and doing their bad stuffs //** Syncing germ levels with external wounds handle_germ_sync() - + //** Handle antibiotics and curing infections handle_antibiotics() @@ -386,10 +387,10 @@ Note that amputating the affected organ does in fact remove the infection from t /datum/organ/external/proc/handle_germ_effects() var/antibiotics = owner.reagents.get_reagent_amount("spaceacillin") - + if (germ_level > 0 && germ_level < INFECTION_LEVEL_ONE && prob(60)) //this could be an else clause, but it looks cleaner this way germ_level-- //since germ_level increases at a rate of 1 per second with dirty wounds, prob(60) should give us about 5 minutes before level one. - + if(germ_level >= INFECTION_LEVEL_ONE) //having an infection raises your body temperature var/fever_temperature = (owner.species.heat_level_1 - owner.species.body_temperature - 1)* min(germ_level/INFECTION_LEVEL_THREE, 1) + owner.species.body_temperature @@ -400,7 +401,7 @@ Note that amputating the affected organ does in fact remove the infection from t if(prob(round(germ_level/10))) if (antibiotics < 5) germ_level++ - + if (prob(5)) //adjust this to tweak how fast people take toxin damage from infections owner.adjustToxLoss(1) @@ -411,7 +412,7 @@ Note that amputating the affected organ does in fact remove the infection from t if (I.germ_level > 0 && I.germ_level < min(germ_level, INFECTION_LEVEL_TWO)) //once the organ reaches whatever we can give it, or level two, switch to a different one if (!target_organ || I.germ_level > target_organ.germ_level) //choose the organ with the highest germ_level target_organ = I - + if (!target_organ) //figure out which organs we can spread germs to and pick one at random var/list/candidate_organs = list() @@ -420,7 +421,7 @@ Note that amputating the affected organ does in fact remove the infection from t candidate_organs += I if (candidate_organs.len) target_organ = pick(candidate_organs) - + if (target_organ) target_organ.germ_level++ @@ -666,6 +667,9 @@ Note that amputating the affected organ does in fact remove the infection from t // OK so maybe your limb just flew off, but if it was attached to a pair of cuffs then hooray! Freedom! release_restraints() + if(vital) + owner.death() + /**************************************************** HELPERS ****************************************************/ @@ -829,7 +833,7 @@ Note that amputating the affected organ does in fact remove the infection from t max_damage = 75 min_broken_damage = 40 body_part = UPPER_TORSO - + vital = 1 /datum/organ/external/groin name = "groin" @@ -838,6 +842,7 @@ Note that amputating the affected organ does in fact remove the infection from t max_damage = 50 min_broken_damage = 30 body_part = LOWER_TORSO + vital = 1 /datum/organ/external/l_arm name = "l_arm" @@ -931,6 +936,7 @@ Note that amputating the affected organ does in fact remove the infection from t min_broken_damage = 40 body_part = HEAD var/disfigured = 0 + vital = 1 /datum/organ/external/head/get_icon() if (!owner) diff --git a/code/modules/supermatter/supermatter.dm b/code/modules/supermatter/supermatter.dm index 129f54daa4..e7e3cc4972 100644 --- a/code/modules/supermatter/supermatter.dm +++ b/code/modules/supermatter/supermatter.dm @@ -123,20 +123,22 @@ shift_light(5, warning_color) if((world.timeofday - lastwarning) / 10 >= WARNING_DELAY) var/stability = num2text(round((damage / explosion_point) * 100)) + var/alert_msg if(damage > emergency_point) shift_light(7, emergency_color) - radio.autosay(addtext(emergency_alert, " Instability: ",stability,"%"), "Supermatter Monitor") + alert_msg = addtext(emergency_alert, " Instability: ",stability,"%") lastwarning = world.timeofday - else if(damage >= damage_archived) // The damage is still going up - radio.autosay(addtext(warning_alert," Instability: ",stability,"%"), "Supermatter Monitor") + alert_msg = addtext(warning_alert," Instability: ",stability,"%") lastwarning = world.timeofday - 150 - - else // Phew, we're safe - radio.autosay(safe_alert, "Supermatter Monitor") + else // Phew, we're safe + alert_msg = safe_alert lastwarning = world.timeofday + if(!istype(L, /turf/space) && alert_msg) + radio.autosay(alert_msg, "Supermatter Monitor") + if(damage > explosion_point) for(var/mob/living/mob in living_mob_list) if(istype(mob, /mob/living/carbon/human)) diff --git a/icons/mob/species/tajaran/helmet.dmi b/icons/mob/species/tajaran/helmet.dmi index dc431a835a..7316d42bb3 100644 Binary files a/icons/mob/species/tajaran/helmet.dmi and b/icons/mob/species/tajaran/helmet.dmi differ diff --git a/icons/mob/species/tajaran/suit.dmi b/icons/mob/species/tajaran/suit.dmi index d0eca318fd..13eb7174d9 100644 Binary files a/icons/mob/species/tajaran/suit.dmi and b/icons/mob/species/tajaran/suit.dmi differ diff --git a/icons/obj/clothing/hats.dmi b/icons/obj/clothing/hats.dmi index 31be71e8e9..901928b414 100644 Binary files a/icons/obj/clothing/hats.dmi and b/icons/obj/clothing/hats.dmi differ