diff --git a/code/_helpers/time.dm b/code/_helpers/time.dm index 8d37b47f0a..d111ebb8fc 100644 --- a/code/_helpers/time.dm +++ b/code/_helpers/time.dm @@ -12,7 +12,7 @@ proc/worldtime2text(time = world.time) proc/worlddate2text() return num2text((text2num(time2text(world.timeofday, "YYYY"))+544)) + "-" + time2text(world.timeofday, "MM-DD") - + proc/time_stamp() return time2text(world.timeofday, "hh:mm:ss") @@ -27,3 +27,18 @@ proc/isDay(var/month, var/day) // Uncomment this out when debugging! //else //return 1 + +var/next_duration_update = 0 +var/last_round_duration = 0 +proc/round_duration() + if(last_round_duration && world.time < next_duration_update) + return last_round_duration + + var/mills = world.time // 1/10 of a second, not real milliseconds but whatever + //var/secs = ((mills % 36000) % 600) / 10 //Not really needed, but I'll leave it here for refrence.. or something + var/mins = (mills % 36000) / 600 + var/hours = mills / 36000 + + last_round_duration = "[round(hours)]h [round(mins)]m" + next_duration_update = world.time + 1 MINUTES + return last_round_duration diff --git a/code/controllers/communications.dm b/code/controllers/communications.dm index 52521415b4..c1594665a1 100644 --- a/code/controllers/communications.dm +++ b/code/controllers/communications.dm @@ -97,20 +97,21 @@ On the map: 1455 for AI access */ +var/const/BOT_FREQ = 1447 var/const/COMM_FREQ = 1353 -var/const/SYND_FREQ = 1213 var/const/ERT_FREQ = 1345 +var/const/AI_FREQ = 1343 var/const/DTH_FREQ = 1341 -var/const/AI_FREQ = 1447 +var/const/SYND_FREQ = 1213 // department channels var/const/PUB_FREQ = 1459 var/const/SEC_FREQ = 1359 var/const/ENG_FREQ = 1357 -var/const/SCI_FREQ = 1351 var/const/MED_FREQ = 1355 -var/const/SUP_FREQ = 1347 +var/const/SCI_FREQ = 1351 var/const/SRV_FREQ = 1349 +var/const/SUP_FREQ = 1347 var/list/radiochannels = list( "Common" = PUB_FREQ, diff --git a/code/controllers/shuttle_controller.dm b/code/controllers/shuttle_controller.dm index 0b868cf1e4..074fb4791e 100644 --- a/code/controllers/shuttle_controller.dm +++ b/code/controllers/shuttle_controller.dm @@ -203,7 +203,7 @@ var/global/datum/shuttle_controller/shuttle_controller //Skipjack. var/datum/shuttle/multi_shuttle/VS = new/datum/shuttle/multi_shuttle() - VS.origin = locate(/area/shuttle/skipjack/station) + VS.origin = locate(/area/skipjack_station) VS.destinations = list( "Fore Starboard Solars" = locate(/area/skipjack_station/northeast_solars), diff --git a/code/game/antagonist/outsider/raider.dm b/code/game/antagonist/outsider/raider.dm index c10fe6182a..ff3309ef30 100644 --- a/code/game/antagonist/outsider/raider.dm +++ b/code/game/antagonist/outsider/raider.dm @@ -184,7 +184,7 @@ var/datum/antagonist/raider/raiders return 0 for(var/datum/mind/player in current_antagonists) - if(!player.current || get_area(player.current) != locate(/area/shuttle/skipjack/station)) + if(!player.current || get_area(player.current) != locate(/area/skipjack_station)) return 0 return 1 diff --git a/code/game/area/Space Station 13 areas.dm b/code/game/area/Space Station 13 areas.dm index d872493443..64ccca9855 100755 --- a/code/game/area/Space Station 13 areas.dm +++ b/code/game/area/Space Station 13 areas.dm @@ -319,11 +319,6 @@ area/space/atmosalert() /area/shuttle/research/outpost icon_state = "shuttle" -/area/shuttle/skipjack/station - name = "\improper Skipjack" - icon_state = "yellow" - requires_power = 0 - /area/airtunnel1/ // referenced in airtunnel.dm:759 /area/dummy/ // Referenced in engine.dm:261 @@ -516,6 +511,11 @@ area/space/atmosalert() requires_power = 0 lighting_use_dynamic = 0 +/area/skipjack_station + name = "\improper Skipjack" + icon_state = "yellow" + requires_power = 0 + /area/skipjack_station/transit name = "\improper hyperspace" diff --git a/code/game/gamemodes/objective.dm b/code/game/gamemodes/objective.dm index 16d50cee4d..13b896987d 100644 --- a/code/game/gamemodes/objective.dm +++ b/code/game/gamemodes/objective.dm @@ -728,7 +728,7 @@ datum/objective/heist/kidnap //if (!target.current.restrained()) // return 0 // They're loose. Close but no cigar. - var/area/shuttle/skipjack/station/A = locate() + var/area/skipjack_station/A = locate() for(var/mob/living/carbon/human/M in A) if(target.current == M) return 1 //They're restrained on the shuttle. Success. @@ -779,7 +779,7 @@ datum/objective/heist/loot var/total_amount = 0 - for(var/obj/O in locate(/area/shuttle/skipjack/station)) + for(var/obj/O in locate(/area/skipjack_station)) if(istype(O,target)) total_amount++ for(var/obj/I in O.contents) if(istype(I,target)) total_amount++ @@ -828,7 +828,7 @@ datum/objective/heist/salvage var/total_amount = 0 - for(var/obj/item/O in locate(/area/shuttle/skipjack/station)) + for(var/obj/item/O in locate(/area/skipjack_station)) var/obj/item/stack/material/S if(istype(O,/obj/item/stack/material)) diff --git a/code/game/machinery/bots/mulebot.dm b/code/game/machinery/bots/mulebot.dm index 5ba75ab41a..6411646f24 100644 --- a/code/game/machinery/bots/mulebot.dm +++ b/code/game/machinery/bots/mulebot.dm @@ -19,7 +19,7 @@ brute_dam_coeff = 0.5 var/atom/movable/load = null // the loaded crate (usually) var/beacon_freq = 1400 - var/control_freq = AI_FREQ + var/control_freq = BOT_FREQ suffix = "" diff --git a/code/game/machinery/telecomms/presets.dm b/code/game/machinery/telecomms/presets.dm index f91fd2d40c..dcb555b755 100644 --- a/code/game/machinery/telecomms/presets.dm +++ b/code/game/machinery/telecomms/presets.dm @@ -56,7 +56,7 @@ id = "Receiver A" network = "tcommsat" autolinkers = list("receiverA") // link to relay - freq_listening = list(SCI_FREQ, MED_FREQ, SUP_FREQ, SRV_FREQ, COMM_FREQ, ENG_FREQ, SEC_FREQ) + freq_listening = list(AI_FREQ, SCI_FREQ, MED_FREQ, SUP_FREQ, SRV_FREQ, COMM_FREQ, ENG_FREQ, SEC_FREQ) //Common and other radio frequencies for people to freely use New() @@ -88,7 +88,7 @@ /obj/machinery/telecomms/bus/preset_two/New() for(var/i = 1441, i < 1489, i += 2) - if(i == AI_FREQ || i == PUB_FREQ) + if(i == PUB_FREQ) continue freq_listening |= i ..() diff --git a/code/game/objects/items/devices/PDA/radio.dm b/code/game/objects/items/devices/PDA/radio.dm index c4fb385536..2536308fb7 100644 --- a/code/game/objects/items/devices/PDA/radio.dm +++ b/code/game/objects/items/devices/PDA/radio.dm @@ -40,7 +40,7 @@ var/mob/living/bot/secbot/active // the active bot; if null, show bot list var/list/botstatus // the status signal sent by the bot - var/control_freq = AI_FREQ + var/control_freq = BOT_FREQ // create a new QM cartridge, and register to receive bot control & beacon message New() @@ -112,7 +112,7 @@ var/list/beacons var/beacon_freq = 1400 - var/control_freq = AI_FREQ + var/control_freq = BOT_FREQ // create a new QM cartridge, and register to receive bot control & beacon message New() diff --git a/code/game/objects/items/devices/radio/intercom.dm b/code/game/objects/items/devices/radio/intercom.dm index 522bef89a6..1abccb5e77 100644 --- a/code/game/objects/items/devices/radio/intercom.dm +++ b/code/game/objects/items/devices/radio/intercom.dm @@ -67,3 +67,10 @@ icon_state = "intercom-p" else icon_state = "intercom" + +/obj/item/device/radio/intercom/locked + freerange = 1 + var/locked_frequency + +/obj/item/device/radio/intercom/locked/set_frequency() + ..(locked_frequency) diff --git a/code/game/objects/structures/girders.dm b/code/game/objects/structures/girders.dm index 35a28558ae..ee78ac1506 100644 --- a/code/game/objects/structures/girders.dm +++ b/code/game/objects/structures/girders.dm @@ -43,6 +43,7 @@ return /obj/structure/girder/proc/reset_girder() + anchored = 1 cover = initial(cover) health = min(health,initial(health)) state = 0 diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index 1fec557b8d..31db462b3c 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -290,6 +290,10 @@ set category = "Object" set src in oview(1) + // TODO : Change to incapacitated() on merge. + if(usr.stat || usr.lying || usr.resting || usr.buckled) + return 0 + if(anchored) usr << "It is fastened to the floor therefore you can't rotate it!" return 0 @@ -306,6 +310,10 @@ set category = "Object" set src in oview(1) + // TODO : Change to incapacitated() on merge. + if(usr.stat || usr.lying || usr.resting || usr.buckled) + return 0 + if(anchored) usr << "It is fastened to the floor therefore you can't rotate it!" return 0 diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index 2b267b908b..25eecd51eb 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -189,7 +189,6 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp /mob/dead/observer/Stat() ..() if(statpanel("Status")) - stat(null, "Station Time: [worldtime2text()]") if(emergency_shuttle) var/eta_status = emergency_shuttle.get_status_panel_eta() if(eta_status) diff --git a/code/modules/mob/living/bot/bot.dm b/code/modules/mob/living/bot/bot.dm index 821c87bb1f..4505c666fd 100644 --- a/code/modules/mob/living/bot/bot.dm +++ b/code/modules/mob/living/bot/bot.dm @@ -97,10 +97,12 @@ ..(message, null, verb) /mob/living/bot/Bump(var/atom/A) - if(istype(A, /obj/machinery/door) && botcard) + if(on && botcard && istype(A, /obj/machinery/door)) var/obj/machinery/door/D = A if(!istype(D, /obj/machinery/door/firedoor) && !istype(D, /obj/machinery/door/blast) && D.check_access(botcard)) D.open() + else + ..() /mob/living/bot/emag_act(var/remaining_charges, var/mob/user) return 0 diff --git a/code/modules/mob/living/bot/ed209bot.dm b/code/modules/mob/living/bot/ed209bot.dm index 78262f58ec..570e58ec2e 100644 --- a/code/modules/mob/living/bot/ed209bot.dm +++ b/code/modules/mob/living/bot/ed209bot.dm @@ -11,6 +11,11 @@ is_ranged = 1 preparing_arrest_sounds = new() + a_intent = I_HURT + mob_bump_flag = HEAVY + mob_swap_flags = ~HEAVY + mob_push_flags = HEAVY + var/shot_delay = 4 var/last_shot = 0 diff --git a/code/modules/mob/living/bot/secbot.dm b/code/modules/mob/living/bot/secbot.dm index ee4a35e15b..547361f400 100644 --- a/code/modules/mob/living/bot/secbot.dm +++ b/code/modules/mob/living/bot/secbot.dm @@ -30,7 +30,7 @@ var/obj/secbot_listener/listener = null var/beacon_freq = 1445 // Navigation beacon frequency - var/control_freq = AI_FREQ // Bot control frequency + var/control_freq = BOT_FREQ // Bot control frequency var/list/path = list() var/frustration = 0 var/turf/patrol_target = null // This is where we are headed diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm index 8d4ca440fc..36630f2382 100644 --- a/code/modules/mob/living/carbon/human/human_defines.dm +++ b/code/modules/mob/living/carbon/human/human_defines.dm @@ -82,5 +82,5 @@ var/list/flavor_texts = list() mob_bump_flag = HUMAN - mob_push_flags = ALLMOBS - mob_swap_flags = ALLMOBS + mob_push_flags = ~HEAVY + mob_swap_flags = ~HEAVY diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index 85d7f45c45..394bf3906c 100644 --- a/code/modules/mob/living/carbon/human/species/species.dm +++ b/code/modules/mob/living/carbon/human/species/species.dm @@ -134,9 +134,9 @@ ) // Bump vars - var/bump_flag = HUMAN // What are we considered to be when bumped? - var/push_flags = ALLMOBS // What can we push? - var/swap_flags = ALLMOBS // What can we swap place with? + var/bump_flag = HUMAN // What are we considered to be when bumped? + var/push_flags = ~HEAVY // What can we push? + var/swap_flags = ~HEAVY // What can we swap place with? /datum/species/New() if(hud_type) diff --git a/code/modules/mob/living/carbon/human/species/xenomorphs/alien_species.dm b/code/modules/mob/living/carbon/human/species/xenomorphs/alien_species.dm index b48593796f..52410c5fc6 100644 --- a/code/modules/mob/living/carbon/human/species/xenomorphs/alien_species.dm +++ b/code/modules/mob/living/carbon/human/species/xenomorphs/alien_species.dm @@ -53,8 +53,8 @@ ) bump_flag = ALIEN - swap_flags = ALLMOBS - push_flags = ALLMOBS ^ ROBOT + swap_flags = ~HEAVY + push_flags = (~HEAVY) ^ ROBOT var/alien_number = 0 var/caste_name = "creature" // Used to update alien name. diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index 90f82d9304..2851684be5 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -128,7 +128,6 @@ proc/get_radio_key_from_channel(var/channel) return verb /mob/living/say(var/message, var/datum/language/speaking = null, var/verb="says", var/alt_name="") - if(client) if(client.prefs.muted & MUTE_IC) src << "\red You cannot speak in IC (Muted)." @@ -171,7 +170,7 @@ proc/get_radio_key_from_channel(var/channel) // irrespective of distance or anything else. if(speaking.flags & HIVEMIND) speaking.broadcast(src,trim(message)) - return + return 1 //If we've gotten this far, keep going! if(speaking.flags & COMMON_VERBS) verb = say_quote(message) @@ -188,11 +187,11 @@ proc/get_radio_key_from_channel(var/channel) verb = handle_s[2] if(!message || message == "") - return + return 0 var/list/obj/item/used_radios = new if(handle_message_mode(message_mode, message, verb, speaking, used_radios, alt_name)) - return + return 1 var/list/handle_v = handle_speech_sound() var/sound/speech_sound = handle_v[1] diff --git a/code/modules/mob/living/silicon/laws.dm b/code/modules/mob/living/silicon/laws.dm index c4a4d63448..5c2068abdf 100644 --- a/code/modules/mob/living/silicon/laws.dm +++ b/code/modules/mob/living/silicon/laws.dm @@ -78,6 +78,8 @@ for(var/datum/ai_law/law in laws.laws_to_state()) can_state = statelaw("[prefix][law.get_index()]. [law.law]") + if(!can_state) + break if(!can_state) src << "[method]: Unable to state laws. Communication method unavailable." diff --git a/code/modules/mob/living/silicon/robot/drone/drone_say.dm b/code/modules/mob/living/silicon/robot/drone/drone_say.dm index 71ca1c6918..40f0119c99 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone_say.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone_say.dm @@ -37,4 +37,4 @@ else if(M.stat == 2 && M.client.prefs.toggles & CHAT_GHOSTEARS) if(M.client) M << "[src] transmits, \"[message]\"" return 1 - ..(message) \ No newline at end of file + return ..(message, 0) \ No newline at end of file diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 1159545a54..493ae9f971 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -10,7 +10,7 @@ mob_bump_flag = ROBOT mob_swap_flags = ROBOT|MONKEY|SLIME|SIMPLE_ANIMAL - mob_push_flags = ALLMOBS //trundle trundle + mob_push_flags = ~HEAVY //trundle trundle var/lights_on = 0 // Is our integrated light on? var/used_power_this_tick = 0 diff --git a/code/modules/mob/living/silicon/say.dm b/code/modules/mob/living/silicon/say.dm index 25052354ed..ece00da5ee 100644 --- a/code/modules/mob/living/silicon/say.dm +++ b/code/modules/mob/living/silicon/say.dm @@ -1,3 +1,6 @@ +/mob/living/silicon/say(var/message, var/sanitize = 1) + return ..(sanitize ? sanitize(message) : message) + /mob/living/silicon/handle_message_mode(message_mode, message, verb, speaking, used_radios, alt_name) log_say("[key_name(src)] : [message]") diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm index 9bb71d2210..c8b0f3d0e0 100644 --- a/code/modules/mob/living/silicon/silicon.dm +++ b/code/modules/mob/living/silicon/silicon.dm @@ -151,12 +151,6 @@ /mob/living/silicon/proc/show_malf_ai() return 0 - -// this function displays the station time in the status panel -/mob/living/silicon/proc/show_station_time() - stat(null, "Station Time: [worldtime2text()]") - - // this function displays the shuttles ETA in the status panel if the shuttle has been called /mob/living/silicon/proc/show_emergency_shuttle_eta() if(emergency_shuttle) @@ -168,7 +162,6 @@ // This adds the basic clock, shuttle recall timer, and malf_ai info to all silicon lifeforms /mob/living/silicon/Stat() if(statpanel("Status")) - show_station_time() show_emergency_shuttle_eta() show_system_integrity() show_malf_ai() diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 9aec67001e..2db05cedeb 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -654,16 +654,21 @@ . = (client && client.inactivity < 1200) if(.) + if(statpanel("Status") && ticker && ticker.current_state != GAME_STATE_PREGAME) + stat("Station Time", worldtime2text()) + stat("Round Duration", round_duration()) + if(client.holder) if(statpanel("Status")) - statpanel("Status","Location:","([x], [y], [z])") - statpanel("Status","CPU:","[world.cpu]") - statpanel("Status","Instances:","[world.contents.len]") - if(statpanel("Status") && processScheduler && processScheduler.getIsRunning()) - for(var/datum/controller/process/P in processScheduler.processes) - statpanel("Status",P.getStatName(), P.getTickTime()) - else - statpanel("Status","processScheduler is not running.") + stat("Location:","([x], [y], [z])") + if(statpanel("Processes")) + stat("CPU:","[world.cpu]") + stat("Instances:","[world.contents.len]") + if(processScheduler && processScheduler.getIsRunning()) + for(var/datum/controller/process/P in processScheduler.processes) + stat(P.getStatName(), P.getTickTime()) + else + stat("processScheduler is not running.") if(listed_turf && client) if(!TurfAdjacent(listed_turf)) @@ -729,7 +734,7 @@ drop_l_hand() drop_r_hand() else - density = 1 + density = initial(density) for(var/obj/item/weapon/grab/G in grabbed_by) if(G.state >= GRAB_AGGRESSIVE) @@ -1089,4 +1094,4 @@ mob/proc/yank_out_object() /mob/proc/throw_mode_on() src.in_throw_mode = 1 if(src.throw_icon) - src.throw_icon.icon_state = "act_throw_on" + src.throw_icon.icon_state = "act_throw_on" diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index f29330f5bd..12a4ddfea2 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -67,12 +67,7 @@ Stat() ..() - statpanel("Status") - if (client.statpanel == "Status" && ticker) - if (ticker.current_state != GAME_STATE_PREGAME) - stat(null, "Station Time: [worldtime2text()]") - statpanel("Lobby") - if(client.statpanel=="Lobby" && ticker) + if(statpanel("Lobby") && ticker) if(ticker.hide_mode) stat("Game Mode:", "Secret") else @@ -387,16 +382,11 @@ global_announcer.autosay("A new[rank ? " [rank]" : " visitor" ] [join_message ? join_message : "has arrived on the station"].", "Arrivals Announcement Computer") proc/LateChoices() - var/mills = world.time // 1/10 of a second, not real milliseconds but whatever - //var/secs = ((mills % 36000) % 600) / 10 //Not really needed, but I'll leave it here for refrence.. or something - var/mins = (mills % 36000) / 600 - var/hours = mills / 36000 - var/name = client.prefs.be_random_name ? "friend" : client.prefs.real_name var/dat = "
" dat += "Welcome, [name].
" - dat += "Round Duration: [round(hours)]h [round(mins)]m
" + dat += "Round Duration: [round_duration()]
" if(emergency_shuttle) //In case Nanotrasen decides reposess CentComm's shuttles. if(emergency_shuttle.going_to_centcom()) //Shuttle is going to centcomm, not recalled diff --git a/html/changelog.html b/html/changelog.html index 85762f5503..d80615781c 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -56,6 +56,12 @@ -->
+

17 August 2015

+

PsiOmegaDelta updated:

+ +

11 August 2015

PsiOmegaDelta updated: