diff --git a/code/__HELPERS/text.dm b/code/__HELPERS/text.dm index de781995a63..4eb03ef4ce3 100644 --- a/code/__HELPERS/text.dm +++ b/code/__HELPERS/text.dm @@ -667,6 +667,9 @@ t = replacetext(t, "\[barcode\]", "") t = replacetext(t, "\[time\]", "[worldtime2text()]") t = replacetext(t, "\[date\]", "[worlddate2text()]") + t = replacetext(t, "\[tajtime\]", "[tajaran_time()]") + t = replacetext(t, "\[tajdate\]", "[tajaran_full_date()]") + t = replacetext(t, "\[cr\]", "电") t = replacetext(t, "\[editorbr\]", "
") t = replacetext(t, @"[image id=([\w]*?\.[\w]*?)]", "") return t diff --git a/code/__HELPERS/time.dm b/code/__HELPERS/time.dm index bff59cdf029..9ff9fb2cd7d 100644 --- a/code/__HELPERS/time.dm +++ b/code/__HELPERS/time.dm @@ -5,13 +5,19 @@ var/round_start_time //Returns the world time in english /proc/worldtime2text(time = world.time, timeshift = 1) - if(!roundstart_hour) roundstart_hour = REALTIMEOFDAY - (TIME_OFFSET HOURS) + if(!roundstart_hour) + roundstart_hour = REALTIMEOFDAY - (TIME_OFFSET HOURS) return timeshift ? time2text(time+roundstart_hour, "hh:mm") : time2text(time, "hh:mm") /proc/worldtime2hours() if (!roundstart_hour) worldtime2text() - . = text2num(time2text(world.time + (roundstart_hour HOURS), "hh")) + . = text2num(time2text(world.time+roundstart_hour, "hh")) + +/proc/worldtime2minutes() + if (!roundstart_hour) + worldtime2text() + . = text2num(time2text(world.time+roundstart_hour, "mm")) /proc/worlddate2text() return num2text(GLOB.game_year) + "-" + time2text(world.timeofday, "MM-DD") @@ -19,6 +25,7 @@ var/round_start_time /proc/time_stamp() return time2text(world.timeofday, "hh:mm:ss") + /** * Check if specific day of the year * @@ -121,3 +128,60 @@ var/real_round_start_time if(hour) hourT = " and [hour] hour[(hour != 1)? "s":""]" return "[day] day[(day != 1)? "s":""][hourT][minuteT][secondT]" + +/** + * The current time on Adhomai + */ +/proc/tajaran_time() + var/adhomian_time = worldtime2hours() + var/adhomian_minute = worldtime2minutes() + var/adhomian_day = tajaran_date() + if(ISEVEN(adhomian_day)) + adhomian_time += 24 + if(adhomian_minute < 10) // make it display 5:08 instead of 5:8 when the time is in single digits + adhomian_minute = "0[adhomian_minute]" + return "[adhomian_time]:[adhomian_minute]" + +/** + * The current month/season on Adhomai + */ +/proc/tajaran_month() + var/static/months = list("Menshe-aysaif", "Sil'nryy-aysaif", "Menshe-rhazzimy", "Sil'nryy-rhazzimy") + + var/adhomian_month = text2num(time2text(world.time, "MM")) + + adhomian_month = months[Ceiling(adhomian_month/3)] + + return adhomian_month + +/** + * The current date on Adhomai + */ +/proc/tajaran_date() + var/adhomian_day = text2num(time2text(world.time, "DD")) + var/current_month = text2num(time2text(world.time, "MM")) + switch(current_month) + if(2, 5, 8, 11) + adhomian_day += 31 + if(6, 9, 12) + adhomian_day += 61 + if(3) + adhomian_day += 59 + isLeap(text2num(time2text(world.realtime, "YYYY"))) // we can conveniently use the result of `isLeap` to add 1 when we are in a leap year + + adhomian_day = FLOOR(adhomian_day / 2, 1) + + return adhomian_day + +/** + * The current year on Adhomai + */ +/proc/tajaran_year() + return GLOB.game_year + 1158 + +/** + * The full year, month and date on Adhomai + */ +/proc/tajaran_full_date() + var/adhomian_month = text2num(time2text(world.time, "MM")) + adhomian_month = Ceiling(adhomian_month/3) + return "[tajaran_year()]-[adhomian_month]-[tajaran_date()]" diff --git a/code/_onclick/hud/action.dm b/code/_onclick/hud/action.dm index 8307aba1532..f6df12e0109 100644 --- a/code/_onclick/hud/action.dm +++ b/code/_onclick/hud/action.dm @@ -294,6 +294,15 @@ to_chat(usr, SPAN_NOTICE("You press the button on the exterior of \the [target_clothing].")) target_clothing.action_circuit.activate_pin(1) +/datum/action/item_action/watch + check_flags = AB_CHECK_RESTRAINED|AB_CHECK_STUNNED|AB_CHECK_ALIVE|AB_CHECK_INSIDE + +/datum/action/item_action/watch/Trigger() + if(!Checks()) + return + var/obj/item/clothing/wrists/watch/target_clothing = target + target_clothing.checktime(usr) + /datum/action/eye action_type = AB_GENERIC check_flags = AB_CHECK_LYING|AB_CHECK_STUNNED diff --git a/code/game/objects/items/tajara.dm b/code/game/objects/items/tajara.dm index be01b6aa802..dca67759f23 100644 --- a/code/game/objects/items/tajara.dm +++ b/code/game/objects/items/tajara.dm @@ -137,8 +137,7 @@ icon_state = "adhomai_clock" item_state = "adhomai_clock" contained_sprite = TRUE - slot_flags = SLOT_MASK - var/static/months = list("Menshe-aysaif", "Sil'nryy-aysaif", "Menshe-rhazzimy", "Sil'nryy-rhazzimy") + slot_flags = SLOT_MASK | SLOT_WRISTS | SLOT_BELT | SLOT_S_STORE /obj/item/clothing/wrists/watch/pocketwatch/adhomai/get_mask_examine_text(mob/user) return "around [user.get_pronoun("his")] neck" @@ -151,26 +150,7 @@ if(closed) to_chat(usr, SPAN_WARNING("You check your watch, realising it's closed.")) else - - var/adhomian_year = GLOB.game_year + 1158 - var/current_month = text2num(time2text(world.realtime, "MM")) - var/current_day = text2num(time2text(world.realtime, "DD")) - var/adhomian_day - var/adhomian_month = src.months[Ceiling(current_month/3)] - switch(current_month) - if(2, 5, 8, 11) - current_day += 31 - if(6, 9, 12) - current_day += 61 - if(3) - current_day += 59 + isLeap(text2num(time2text(world.realtime, "YYYY"))) // we can conveniently use the result of `isLeap` to add 1 when we are in a leap year - var/real_time = text2num(time2text(world.time + (REALTIMEOFDAY - (TIME_OFFSET HOURS)), "hh")) - var/adhomian_time = real_time - if(ISEVEN(current_day)) - adhomian_time = real_time + 24 - adhomian_day = FLOOR(current_day / 2, 1) - to_chat(usr, "You check your [src.name], glancing over at the watch face, reading the time to be '[adhomian_time]'. Today's date is the '[adhomian_day]th day of [adhomian_month], [adhomian_year]'.") - + to_chat(usr, SPAN_NOTICE("You check your [name], glancing over at the watch face, reading the time to be '[tajaran_time()]'. Today's date is the '[tajaran_date()]th day of [tajaran_month()], [tajaran_year()]'.")) /obj/item/flame/lighter/adhomai name = "adhomian lighter" diff --git a/code/modules/background/origins/_origins.dm b/code/modules/background/origins/_origins.dm index 4004d45da5a..bedcec8c3d9 100644 --- a/code/modules/background/origins/_origins.dm +++ b/code/modules/background/origins/_origins.dm @@ -43,3 +43,5 @@ old_origin.on_remove(src) OI.on_apply(src) +/singleton/origin_item/culture/proc/get_custom_time() + return FALSE diff --git a/code/modules/background/origins/origins/tajara/adhomai.dm b/code/modules/background/origins/origins/tajara/adhomai.dm index a1269940be4..4caf403197e 100644 --- a/code/modules/background/origins/origins/tajara/adhomai.dm +++ b/code/modules/background/origins/origins/tajara/adhomai.dm @@ -48,6 +48,9 @@ /singleton/origin_item/origin/crevus ) +/singleton/origin_item/culture/adhomian/get_custom_time() + return "Adhomian Time: [tajaran_time()], [tajaran_full_date()]" + /singleton/origin_item/origin/hadiist_heartlands name = "Hadiist Heartlands" desc = "The Hadiist Heartlands include Nraz'i Basin, Ras'nrr Heartlands, East Ras'nrr, and Rhazar Mountains. In this region, the People's Republic's culture project was most successful. Its inhabitants are known for their political loyalty and adherence to the Party's teachings. In typical Republican fashion, the local culture places a large emphasis on the importance of the collective over the individual interest, with each Tajara being considered as a piece in the machinery of society." diff --git a/code/modules/clothing/wrists/watches.dm b/code/modules/clothing/wrists/watches.dm index c0c658992e2..052b891f3c5 100644 --- a/code/modules/clothing/wrists/watches.dm +++ b/code/modules/clothing/wrists/watches.dm @@ -6,6 +6,8 @@ item_state = "watch" var/wired = TRUE var/screwed = TRUE + action_button_name = "Check time" + default_action_type = /datum/action/item_action/watch /obj/item/clothing/wrists/watch/silver desc = "It's a GaussIo ZeitMeister, a finely tuned wristwatch encased in silver." @@ -38,7 +40,7 @@ item_state = "watch_silver" /obj/item/clothing/wrists/watch/spy/checktime() - to_chat(usr, "You check your watch. Unfortunately for you, it's not a real watch, dork.") + to_chat(usr, SPAN_NOTICE("You check your watch. Unfortunately for you, it's not a real watch, dork.")) /obj/item/clothing/wrists/watch/pocketwatch name = "pocketwatch" @@ -77,9 +79,9 @@ /obj/item/clothing/wrists/watch/pocketwatch/checktime(mob/user) if(closed) - to_chat(usr, "You check your watch, realising it's closed.") + to_chat(usr, SPAN_NOTICE("You check your watch, realising it's closed.")) else - to_chat(usr, "You check your watch, glancing over at the watch face, reading the time to be '[worldtime2text()]'. Today's date is '[time2text(world.time, "Month DD")]. [GLOB.game_year]'.") + to_chat(usr, SPAN_NOTICE("You check your watch, glancing over at the watch face, reading the time to be '[worldtime2text()]'. Today's date is '[time2text(world.time, "Month DD")]. [GLOB.game_year]'.")) /obj/item/clothing/wrists/watch/pocketwatch/pointatwatch() if(closed) @@ -93,13 +95,13 @@ set src in usr if(wired && screwed) - to_chat(usr, "You check your watch, spotting a digital collection of numbers reading '[worldtime2text()]'. Today's date is '[time2text(world.time, "Month DD")]. [GLOB.game_year]'.") + to_chat(usr, SPAN_NOTICE("You check your watch, spotting a digital collection of numbers reading '[worldtime2text()]'. Today's date is '[time2text(world.time, "Month DD")]. [GLOB.game_year]'.")) if (GLOB.evacuation_controller.get_status_panel_eta()) to_chat(usr, SPAN_WARNING("Time until Bluespace Jump: [GLOB.evacuation_controller.get_status_panel_eta()].")) else if(wired && !screwed) - to_chat(usr, "You check your watch, realising it's still open.") + to_chat(usr, SPAN_NOTICE("You check your watch, realising it's still open.")) else - to_chat(usr, "You check your watch as it dawns on you that it's broken.") + to_chat(usr, SPAN_NOTICE("You check your watch as it dawns on you that it's broken.")) /obj/item/clothing/wrists/watch/verb/pointatwatch() set category = "Object.Equipped" diff --git a/code/modules/clothing/wrists/xeno/tajara.dm b/code/modules/clothing/wrists/xeno/tajara.dm index 2b4a2b3f54d..5789431b2f4 100644 --- a/code/modules/clothing/wrists/xeno/tajara.dm +++ b/code/modules/clothing/wrists/xeno/tajara.dm @@ -6,6 +6,13 @@ item_state = "watch_taj-male" contained_sprite = TRUE +/obj/item/clothing/wrists/watch/tajara/checktime(mob/user) + set category = "Object.Equipped" + set name = "Check Time" + set src in usr + + to_chat(usr, SPAN_NOTICE("You check your [name], glancing over at the watch face, reading the time to be '[tajaran_time()]'. Today's date is the '[tajaran_date()]th day of [tajaran_month()], [tajaran_year()]'.")) + /obj/item/clothing/wrists/watch/tajara/female name = "adhomian watch" desc = "An adhomian wrist watch made for female Tajara. Due to its use in the past wars, wrist watches are becoming more popular in Adhomai." diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 2652b8724bb..0b9768cdbcd 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -228,6 +228,9 @@ . += "Energy: [round(DS.stored_energy)] / [round(DS.max_energy)]" if(DS.regen_limb) . += "Regeneration Progress: [round(DS.regen_limb_progress)] / [LIMB_REGROW_REQUIREMENT]" + var/custom_time = culture.get_custom_time() + if(custom_time) + . += custom_time if(internal) if(!internal.air_contents) qdel(internal) diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm index c8531e59cc9..482e6434978 100644 --- a/code/modules/paperwork/pen.dm +++ b/code/modules/paperwork/pen.dm @@ -32,6 +32,9 @@ \[field\] : Inserts an invisible field which lets you start type from there. Useful for forms. \[date\] : Inserts today's date. \[time\] : Inserts the current station time. + \[cr\] : Inserts the credit symbol. + \[tajdate\] : Inserts the current date on Adhomai. + \[tajtime\] : Inserts the current time on Adhomai.
Pen Exclusive Commands \[small\] - \[/small\] : Decreases the size of the text. diff --git a/html/changelogs/HavingAGrandTime.yml b/html/changelogs/HavingAGrandTime.yml new file mode 100644 index 00000000000..88a2a555951 --- /dev/null +++ b/html/changelogs/HavingAGrandTime.yml @@ -0,0 +1,10 @@ +author: TheGreyWolf + +delete-after: True + +changes: + - rscadd: "Watches now have an icon top left to check time, similarly to an integrated time piece." + - rscadd: "The tajaran wrist watches now shows the time on adhomai, similar to the tajaran pocketwatch." + - rscadd: "There are three new papercode commands: tajtime, tajdate and cr. The last of which creates the credit symbol." + - rscadd: "The time and date on adhomai is now visible on the stat panel for tajara originating from Adhomai." + - code_imp: "The tajaran time and date calculations have been moved to procs in _HELPERS/time.dm to be used more universally."