diff --git a/Scopes Files/PowerPlant_Alarm.ogg b/Scopes Files/PowerPlant_Alarm.ogg new file mode 100644 index 00000000..382f2409 Binary files /dev/null and b/Scopes Files/PowerPlant_Alarm.ogg differ diff --git a/Scopes Files/gravitygenerator.dm b/Scopes Files/gravitygenerator.dm index e1a093ad..ffb004fc 100644 --- a/Scopes Files/gravitygenerator.dm +++ b/Scopes Files/gravitygenerator.dm @@ -21,7 +21,7 @@ var/list/gravity_field_generators = list() // We will keep track of this by addi /client/proc/cmd_dev_reset_gravity() set category = "Debug" set name = "Restore Default Gravity" - set desc = "Resets all gravity on the entire server" + set desc = "Resets all gravity on the entire server(This spams Scopes like mad.)" if(!check_rights(R_DEBUG|R_DEV)) return @@ -36,6 +36,9 @@ var/list/gravity_field_generators = list() // We will keep track of this by addi src << "\red The game hasn't started yet!" return + if(alert(usr, "Be sure to warn Scopes, Chris, and Skull. This could be very spammy for their logs", "Restore gravity", "No", "Yes") == "No") + return 0 + world << "\red \b Resetting Gravity Simulation." gravity_is_on = 1 spawn(10) @@ -44,10 +47,12 @@ var/list/gravity_field_generators = list() // We will keep track of this by addi continue A.has_gravity = 1 + msg_scopes("Gravity reset in: [A.name]") for(var/area/SubA in A.related) SubA.has_gravity = 1 for(var/mob/living/carbon/human/M in SubA) M:float(0) + msg_scopes("Did you enjoy that insane amount of things") world << "\red Gravity Simulation reset." feedback_add_details("admin_verb","RSG") @@ -156,6 +161,7 @@ var/list/gravity_field_generators = list() // We will keep track of this by addi var/list/localareas = list() var/effectiverange = 255 //Currently unused due to errors var/round_start = 2 //To help stop a bug with round start + var/has_been_charged = 0 /obj/machinery/gravity_field_generator/main/Del() // If we somehow get deleted, remove all of our other parts. log_debug("Gravity Generator Destroyed") @@ -329,6 +335,8 @@ var/list/gravity_field_generators = list() // We will keep track of this by addi var/alert = 0 var/area/area = get_area(src) if(new_state) // If we turned on + if(has_been_charged) + return if(gravity_in_level() == 0) alert = 1 gravity_is_on = 1 @@ -355,8 +363,10 @@ var/list/gravity_field_generators = list() // We will keep track of this by addi if(charging_state != POWER_IDLE) if(charging_state == POWER_UP && charge_count >= 100) set_state(1) + has_been_charged = 1 else if(charging_state == POWER_DOWN && charge_count <= 0) set_state(0) + has_been_charged = 0 else if(charging_state == POWER_UP) charge_count += 2 diff --git a/Scopes Files/medical_alarm.dm b/Scopes Files/medical_alarm.dm index b2f52964..5da73d3b 100644 --- a/Scopes Files/medical_alarm.dm +++ b/Scopes Files/medical_alarm.dm @@ -7,10 +7,11 @@ /obj/machinery/medical_alarm name = "Medical Emergency button" desc = "Medical Emergency button for when people are hurt" - icon = 'Scopes Files/Alarms.dmi' + icon = 'Scopes Files/Alarms.dmi' //temp holder until it's done icon_state = "eng_stand" anchored = 1 var/on = 1 + var/played_sound = 0 var/area/area = null var/otherarea = null //luminosity = 1 @@ -40,6 +41,7 @@ icon_state = "eng_unlock" else icon_state = "eng_stand" + ..() /obj/machinery/medical_alarm/examine() set src in oview(1) @@ -50,7 +52,6 @@ src.attack_hand(user) /obj/machinery/medical_alarm/attack_hand(mob/user) -// var/last_icon = icon_state icon_state = "eng_press" add_fingerprint(usr) // if(!allowed(user)) @@ -62,24 +63,27 @@ for(var/area/A in area.master.related) A.medical_alarm = on - spawn(10) + spawn(8) A.updateicon() for(var/obj/machinery/medical_alarm/L in A) L.on = on - spawn(10) + spawn(8) L.updateicon() L.activate() - area.master.power_change() - /obj/machinery/medical_alarm/proc/make_noise() for (var/mob/O in hearers(6, src.loc)) - O << "Impliment Sound" + if(!played_sound) + O.playsound_local(src, 'Scopes Files/PowerPlant_Alarm.ogg', 10, 1, 0.5, 1) + O << "The [src] beeps" + played_sound = 1 /obj/machinery/medical_alarm/proc/activate() if(on) make_noise() spawn(100) activate() + else + played_sound = 0 return \ No newline at end of file diff --git a/Scopes Files/space_cooler.dm b/Scopes Files/space_cooler.dm new file mode 100644 index 00000000..a2eb1369 --- /dev/null +++ b/Scopes Files/space_cooler.dm @@ -0,0 +1,210 @@ +// Sooooo Yeah. +// +// This is reverse of the heater code. +// Still want to make it use super cooled N2 instead of a power cell +// Changes will come but wanted to get it in the DME quickly +// +// This does work if you want to use it. Just needs sprites. + +/obj/machinery/space_cooler + anchored = 0 + density = 1 + icon = 'icons/obj/atmos.dmi' + icon_state = "sheater0" + name = "space cooler" + desc = "Made by Space Amish using traditional space techniques, this cooler is guaranteed not to set the station on fire." + var/obj/item/weapon/cell/cell + var/on = 0 + var/open = 0 + var/set_temperature = 20 // in celcius, add T0C for kelvin + var/cooling_power = 40000 + + flags = FPRINT + + + New() + ..() + cell = new(src) + cell.charge = 1000 + cell.maxcharge = 1000 + update_icon() + return + + update_icon() + overlays.Cut() + icon_state = "sheater[on]" + if(open) + overlays += "sheater-open" + return + + examine() + set src in oview(12) + if (!( usr )) + return + usr << "This is \icon[src] \an [src.name]." + usr << src.desc + + usr << "The cooler is [on ? "on" : "off"] and the hatch is [open ? "open" : "closed"]." + if(open) + usr << "The power cell is [cell ? "installed" : "missing"]." + else + usr << "The charge meter reads [cell ? round(cell.percent(),1) : 0]%" + return + + emp_act(severity) + if(stat & (BROKEN|NOPOWER)) + ..(severity) + return + if(cell) + cell.emp_act(severity) + ..(severity) + + attackby(obj/item/I, mob/user) + if(istype(I, /obj/item/weapon/cell)) + if(open) + if(cell) + user << "There is already a power cell inside." + return + else + // insert cell + var/obj/item/weapon/cell/C = usr.get_active_hand() + if(istype(C)) + user.drop_item() + cell = C + C.loc = src + C.add_fingerprint(usr) + + user.visible_message("\blue [user] inserts a power cell into [src].", "\blue You insert the power cell into [src].") + else + user << "The hatch must be open to insert a power cell." + return + else if(istype(I, /obj/item/weapon/screwdriver)) + open = !open + user.visible_message("\blue [user] [open ? "opens" : "closes"] the hatch on the [src].", "\blue You [open ? "open" : "close"] the hatch on the [src].") + update_icon() + if(!open && user.machine == src) + user << browse(null, "window=spacecooler") + user.unset_machine() + else + ..() + return + + attack_hand(mob/user as mob) + src.add_fingerprint(user) + interact(user) + + interact(mob/user as mob) + + if(open) + + var/dat + dat = "Power cell: " + if(cell) + dat += "Installed
" + else + dat += "Removed
" + + dat += "Power Level: [cell ? round(cell.percent(),1) : 0]%

" + + dat += "Set Temperature: " + + dat += "-" + + dat += " [set_temperature]°C " + dat += "+
" + + user.set_machine(src) + user << browse("Space cooler Control Panel[dat]", "window=spacecooler") + onclose(user, "spacecooler") + + + + + else + on = !on + user.visible_message("\blue [user] switches [on ? "on" : "off"] the [src].","\blue You switch [on ? "on" : "off"] the [src].") + update_icon() + return + + + Topic(href, href_list) + if (usr.stat) + return + if ((in_range(src, usr) && istype(src.loc, /turf)) || (istype(usr, /mob/living/silicon))) + usr.set_machine(src) + + switch(href_list["op"]) + + if("temp") + var/value = text2num(href_list["val"]) + + // limit to 20-90 degC + set_temperature = dd_range(-50, 20, set_temperature + value) + + if("cellremove") + if(open && cell && !usr.get_active_hand()) + cell.updateicon() + usr.put_in_hands(cell) + cell.add_fingerprint(usr) + cell = null + usr.visible_message("\blue [usr] removes the power cell from \the [src].", "\blue You remove the power cell from \the [src].") + + + if("cellinstall") + if(open && !cell) + var/obj/item/weapon/cell/C = usr.get_active_hand() + if(istype(C)) + usr.drop_item() + cell = C + C.loc = src + C.add_fingerprint(usr) + + usr.visible_message("\blue [usr] inserts a power cell into \the [src].", "\blue You insert the power cell into \the [src].") + + updateDialog() + else + usr << browse(null, "window=spacecooler") + usr.unset_machine() + return + + + + process() + if(on) + if(cell && cell.charge > 0) + + var/turf/simulated/L = loc + if(istype(L)) + var/datum/gas_mixture/env = L.return_air() + if(env.temperature != set_temperature + T0C) + + var/transfer_moles = 0.25 * env.total_moles() + + var/datum/gas_mixture/removed = env.remove(transfer_moles) + + //world << "got [transfer_moles] moles at [removed.temperature]" + + if(removed) + + var/heat_capacity = removed.heat_capacity() + //world << "heating ([heat_capacity])" + if(heat_capacity) // Added check to avoid divide by zero (oshi-) runtime errors -- TLE + if(removed.temperature > set_temperature + T0C) + removed.temperature = min(removed.temperature - cooling_power/heat_capacity, TCMB) // Added min() check to try and avoid wacky superheating issues in low gas scenarios -- TLE + else + removed.temperature = max(removed.temperature + cooling_power/heat_capacity, 1000) + cell.use(cooling_power/20000) + + //world << "now at [removed.temperature]" + + env.merge(removed) + + //world << "turf now at [env.temperature]" + + + else + on = 0 + update_icon() + + + return \ No newline at end of file diff --git a/aurora.dme b/aurora.dme index b9456d4f..c5bbe042 100644 --- a/aurora.dme +++ b/aurora.dme @@ -1469,5 +1469,7 @@ #include "interface\skin.dmf" #include "maps\tgstation2.dmm" #include "Scopes Files\gravitygenerator.dm" +#include "Scopes Files\medical_alarm.dm" #include "Scopes Files\signal_modifier.dm" +#include "Scopes Files\space_cooler.dm" // END_INCLUDE diff --git a/code/controllers/voting.dm b/code/controllers/voting.dm index 6d3b3185..207d51f2 100644 --- a/code/controllers/voting.dm +++ b/code/controllers/voting.dm @@ -238,7 +238,10 @@ datum/controller/vote started_time = world.time var/timedifference = round((world.time - last_vote_time)) var/timedifference_text + timedifference_text = time2text(timedifference, "hh:mm:ss") + msg_scopes("timedifference_text debug: [timedifference]") timedifference_text = time2text(timedifference,"mm:ss") + msg_scopes("timedifference: [timedifference] timedifference_text: [timedifference_text] started_time: [started_time]") for(var/client/C in admins) C << "Time since last vote: [timedifference_text]" var/text = "[capitalize(mode)] vote started by [initiator]." diff --git a/code/game/gamemodes/meteor/meteors.dm b/code/game/gamemodes/meteor/meteors.dm index a36b569d..07448e83 100644 --- a/code/game/gamemodes/meteor/meteors.dm +++ b/code/game/gamemodes/meteor/meteors.dm @@ -98,6 +98,7 @@ if (A) A.meteorhit(src) + message_admins("Meteor hit [A] at [src.x], [src.y], [src.z]([src ? "JMP" : "null"])" , 0) playsound(src.loc, 'sound/effects/meteorimpact.ogg', 40, 1) if (--src.hits <= 0) diff --git a/code/game/machinery/kitchen/deep_fryer.dm b/code/game/machinery/kitchen/deep_fryer.dm index 84e0365e..858dbe1f 100644 --- a/code/game/machinery/kitchen/deep_fryer.dm +++ b/code/game/machinery/kitchen/deep_fryer.dm @@ -18,8 +18,39 @@ /obj/machinery/deepfryer/attackby(obj/item/I, mob/user) if(on) - user << "[src] is still active!" - return + var/obj/item/weapon/grab/G = I + if(istype(G)) // handle grabbed mob + if(ismob(G.affecting)) + var/mob/living/GM = G.affecting + for (var/mob/V in viewers(usr)) + V.show_message("[usr] starts pushing [GM.name] into the fryer.", 3) + + if(do_after(usr, 20)) + var/body_part = fry_mob_by_limb(GM, user.zone_sel.selecting) + if(!body_part) //If you fry a valid part this will be set + for (var/mob/V in viewers(usr)) + if(GM.sleeping||GM.resting) + V.show_message("[GM.name] is to much of a dead weight to be place in the fryer") + else + V.show_message("[GM.name] breaks free.", 3) + return + + for (var/mob/C in viewers(src)) + C.show_message("\red [GM.name]'s [body_part] has been placed in the [src] by [user].", 3) + + del(G) + usr.attack_log += text("\[[time_stamp()]\] Has placed [GM.name] ([GM.ckey]) in in the fryer.") + GM.attack_log += text("\[[time_stamp()]\] Has been fried by [usr.name] ([usr.ckey])") + msg_admin_attack("[usr] ([usr.ckey]) placed [GM] ([GM.ckey]) in a fryer. (JMP)") + else + for (var/mob/V in viewers(usr)) + V.show_message("[usr] broke free") + return + + else + user << "[src] is still active!" + return + if(!istype(I, /obj/item/weapon/reagent_containers/food/snacks/)) user << "Budget cuts won't let you put that in there." return @@ -27,31 +58,51 @@ user << "You cannot doublefry." return else - user << "You put [I] into [src]." - on = TRUE - user.drop_item() - frying = I - frying.loc = src - icon_state = "fryer_on" - sleep(200) - - if(frying && frying.loc == src) - var/obj/item/weapon/reagent_containers/food/snacks/deepfryholder/S = new(get_turf(src)) - if(istype(frying, /obj/item/weapon/reagent_containers/)) - var/obj/item/weapon/reagent_containers/food = frying - food.reagents.trans_to(S, food.reagents.total_volume) - S.color = "#FFAD33" - S.icon = frying.icon - S.overlays = I.overlays - S.icon_state = frying.icon_state - S.name = "deep fried [frying.name]" - S.desc = I.desc - frying.loc = S //this might be a bad idea. - - icon_state = "fryer_off" - on = FALSE - playsound(src.loc, 'sound/machines/ding.ogg', 50, 1) + fry_food(I, user) +/obj/machinery/deepfryer/proc/fry_mob_by_limb(var/mob/living/M, var/limb) + switch(limb) + if("head") + M.apply_damage(40, BURN, limb) + M << "\red Your thoughts are overwritten by the pain, as seering hot oil encompasses your head." + return "head" + if("l_leg") + M.apply_damage(20, BURN, limb) + M.apply_damage(30, BURN, "l_foot") + M << "\red Your thoughts are overwritten by the pain, as seering hot oil encompasses your left leg and foot." + return "left leg" + if("l_foot") + M.apply_damage(20, BURN, limb) + M << "\red Your thoughts are overwritten by the pain, as seering hot oil encompasses your left foot." + return "left foot" + if("r_leg") + M.apply_damage(20, BURN, limb) + M.apply_damage(30, BURN, "r_foot") + M << "\red Your thoughts are overwritten by the pain, as seering hot oil encompasses your right leg and foot." + return "right leg" + if("r_foot") + M.apply_damage(20, BURN, limb) + M << "\red Your thoughts are overwritten by the pain, as seering hot oil encompasses your right foot." + return "right foot" + if("l_arm") + M.apply_damage(20, BURN, limb) + M.apply_damage(30, BURN, "l_hand") + M << "\red Your thoughts are overwritten by the pain, as seering hot oil encompasses your left arm and hand." + return "left arm" + if("l_hand") + M.apply_damage(20, BURN, limb) + M << "\red Your thoughts are overwritten by the pain, as seering hot oil encompasses your left hand." + return "left hand" + if("r_arm") + M.apply_damage(20, BURN, limb) + M.apply_damage(30, BURN, "r_hand") + M << "\red Your thoughts are overwritten by the pain, as seering hot oil encompasses your right arm and hand." + return "right arm" + if("r_hand") + M.apply_damage(20, BURN, limb) + M << "\red Your thoughts are overwritten by the pain, as seering hot oil encompasses your right hand." + return "right hand" + return null /obj/machinery/deepfryer/attack_hand(mob/user) if(on && frying) @@ -59,4 +110,31 @@ user.put_in_hands(frying) frying = null return - ..() \ No newline at end of file + ..() + +/obj/machinery/deepfryer/proc/fry_food(var/obj/I, var/mob/user) + user << "You put [I] into [src]." + on = TRUE + user.drop_item() + frying = I + frying.loc = src + icon_state = "fryer_on" + sleep(200) + + if(frying && frying.loc == src) + var/obj/item/weapon/reagent_containers/food/snacks/deepfryholder/S = new(get_turf(src)) + if(istype(frying, /obj/item/weapon/reagent_containers/)) + var/obj/item/weapon/reagent_containers/food = frying + food.reagents.trans_to(S, food.reagents.total_volume) + S.color = "#FFAD33" + S.icon = frying.icon + S.overlays = I.overlays + S.icon_state = frying.icon_state + S.name = "deep fried [frying.name]" + S.desc = I.desc + frying.loc = S //this might be a bad idea. + + icon_state = "fryer_off" + on = FALSE + playsound(src.loc, 'sound/machines/ding.ogg', 50, 1) + return \ No newline at end of file diff --git a/code/modules/reagents/reagent_containers/food/snacks.dm b/code/modules/reagents/reagent_containers/food/snacks.dm index 186db440..67d052bf 100644 --- a/code/modules/reagents/reagent_containers/food/snacks.dm +++ b/code/modules/reagents/reagent_containers/food/snacks.dm @@ -279,6 +279,9 @@ New() ..() reagents.add_reagent("nutriment", 10) + Del() + contents = null + ..() /obj/item/weapon/reagent_containers/food/snacks/candy name = "candy" diff --git a/html/changelog.html b/html/changelog.html index f711e86d..9093b7c0 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -56,9 +56,24 @@ should be listed in the changelog upon commit though. Thanks. --> +
+

25 August 2014

+

SoundScopes updated:

+ +
+ +

20 August 2014

-

updated:

+

SoundScopes updated: