Skip to content

Commit

Permalink
TGS Test Merge (#16902)
Browse files Browse the repository at this point in the history
  • Loading branch information
comfyorange committed Jan 15, 2025
2 parents 0b86022 + d93fcc3 commit bf31c02
Show file tree
Hide file tree
Showing 36 changed files with 406 additions and 222 deletions.
13 changes: 13 additions & 0 deletions code/__DEFINES/_helpers.dm
Original file line number Diff line number Diff line change
@@ -1,5 +1,18 @@
// Stuff that is relatively "core" and is used in other defines/helpers

/**
* The game's world.icon_size. \
* Ideally divisible by 16. \
* Ideally a number, but it
* can be a string ("32x32"), so more exotic coders
* will be sad if you use this in math.
*/
#define ICON_SIZE_ALL 32
/// The X/Width dimension of ICON_SIZE. This will more than likely be the bigger axis.
#define ICON_SIZE_X 32
/// The Y/Height dimension of ICON_SIZE. This will more than likely be the smaller axis.
#define ICON_SIZE_Y 32

//Returns the hex value of a decimal number
//len == length of returned string
#define num2hex(X, len) num2text(X, len, 16)
Expand Down
3 changes: 0 additions & 3 deletions code/__DEFINES/colors.dm
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,6 @@
///how many colour priority levels there are.
#define COLOR_PRIORITY_AMOUNT 4

#define COLOR_INPUT_DISABLED "#F0F0F0"
#define COLOR_INPUT_ENABLED "#D3B5B5"

#define LIGHTMODE_BACKGROUND "none"
#define LIGHTMODE_TEXT "#000000"

Expand Down
1 change: 1 addition & 0 deletions code/__DEFINES/dcs/signals/signals_keybindings.dm
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
#define COMSIG_KB_CLIENT_GETHELP_DOWN "keybinding_client_gethelp_down"
#define COMSIG_KB_CLIENT_SCREENSHOT_DOWN "keybinding_client_screenshot_down"
#define COMSIG_KB_CLIENT_MINIMALHUD_DOWN "keybinding_client_minimalhud_down"
#define COMSIG_KB_CLIENT_FULLSCREEN_DOWN "keybinding_client_fullscreen_down"
#define COMSIG_KB_CLIENT_SAY_DOWN "keybinding_client_say_down"
#define COMSIG_KB_CLIENT_RADIO_DOWN "keybinding_client_radio_down"
#define COMSIG_KB_CLIENT_ME_DOWN "keybinding_client_me_down"
Expand Down
9 changes: 9 additions & 0 deletions code/__DEFINES/text.dm
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,15 @@
/// Smallest size. (ie: whisper runechat) - Size options: 6pt 12pt 18pt.
#define MAPTEXT_SPESSFONT(text) {"<span style='font-family: \"Spess Font\"; font-size: 6pt; line-height: 1.4; -dm-text-outline: 1px black'>[##text]</span>"}

#define CENTER_ALIGN_TEXT "center"
#define LEFT_ALIGN_TEXT "left"

#define MAPTEXT_HUDMESSAGE_TITLE(text, alignment) {"<span style='font-family: \"Pixellari\"; font-size: 12pt; -dm-text-outline: 1px black; text-align: [##alignment]; line-height: 1.5; valign: top'><u>[##text]:</u></span>"}

#define MAPTEXT_HUDMESSAGE(text) {"<span style='font-family: \"Pixellari\"; font-size: 12pt; -dm-text-outline: 1px black'>[##text]</span>"}

#define HUD_ANNOUNCEMENT_FORMATTING(title, text, alignment) (MAPTEXT_HUDMESSAGE_TITLE(##title, ##alignment) + "<br>" + MAPTEXT_HUDMESSAGE(##text))

/**
* Prepares a text to be used for maptext, using a variable size font.
*
Expand Down
56 changes: 37 additions & 19 deletions code/_onclick/hud/screen_objects/menu_text_objects.dm
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,27 @@
* hrefs will make the text blue though so dont do it :/
*/

#define COLOR_HOVER_MOUSE COLOR_ORANGE

///Unclickable Lobby UI objects
/atom/movable/screen/text/lobby
screen_loc = "CENTER"
maptext_height = 480
maptext_width = 480
maptext_x = 24
maptext_y = 9
maptext_x = 28
maptext_y = 5
/// if this text has a different color that we want to display when it's not being mosued over
var/unhighlighted_color

/atom/movable/screen/text/lobby/Initialize(mapload, datum/hud/hud_owner)
. = ..()
update_appearance(UPDATE_ICON)

/atom/movable/screen/text/lobby/update_icon(updates)
. = ..()
if(color == COLOR_HOVER_MOUSE)
return
color = unhighlighted_color

///This proc updates the maptext of the buttons.
/atom/movable/screen/text/lobby/proc/update_text()
Expand All @@ -35,13 +48,15 @@
. = ..()
if(!(atom_flags & INITIALIZED)) //yes this can happen, fuck me
return
color = COLOR_ORANGE
color = COLOR_HOVER_MOUSE
var/mob/new_player/player = usr
player.playsound_local(player, 'sound/effects/menu_click.ogg', 50)
update_appearance(UPDATE_ICON)

/atom/movable/screen/text/lobby/clickable/MouseExited(location, control, params)
. = ..()
color = initial(color)
color = unhighlighted_color
update_appearance(UPDATE_ICON)

/atom/movable/screen/text/lobby/clickable/Click()
if(!(atom_flags & INITIALIZED)) //yes this can happen, fuck me
Expand All @@ -50,27 +65,26 @@
var/mob/new_player/player = usr
player.playsound_local(player, 'sound/effects/menu_select.ogg', 50)


/atom/movable/screen/text/lobby/clickable/setup_character
maptext = "<span class='maptext' style=font-size:6px>CHARACTER: ...</span>"
maptext = "<span class='lobbytext'>CHARACTER LOADING</span>"
icon_state = "setup"
maptext_x = 23
///Bool, whether we registered to listen for charachter updates already
var/registered = FALSE
maptext_y = 11

/atom/movable/screen/text/lobby/clickable/setup_character/Click()
. = ..()
hud.mymob.client?.prefs.ShowChoices(hud.mymob)

/atom/movable/screen/text/lobby/clickable/setup_character/update_text()
maptext = "<span class='maptext' style=font-size:6px>CHARACTER: [hud?.mymob.client ? hud.mymob.client.prefs.real_name : "Unknown User"]</span>"
maptext = "<span class='lobbytext'>[hud?.mymob.client ? hud.mymob.client.prefs.real_name : "Unknown Character"]</span>"
if(registered)
return
RegisterSignal(hud.mymob.client, COMSIG_CLIENT_PREFERENCES_UIACTED, PROC_REF(update_text))
registered = TRUE

/atom/movable/screen/text/lobby/clickable/join_game
maptext = "<span class='maptext' style=font-size:8px>JOIN GAME</span>"
maptext = "<span class='lobbytext'>JOIN GAME</span>"
icon_state = "join"

/atom/movable/screen/text/lobby/clickable/join_game/Initialize(mapload, datum/hud/hud_owner)
Expand All @@ -81,11 +95,15 @@
/atom/movable/screen/text/lobby/clickable/join_game/update_text()
var/mob/new_player/player = hud.mymob
if(SSticker?.current_state > GAME_STATE_PREGAME)
maptext = "<span class='maptext' style=font-size:8px>JOIN GAME</span>"
maptext = "<span class='lobbytext'>JOIN GAME</span>"
icon_state = "join"
unhighlighted_color = null
update_appearance(UPDATE_ICON)
return
maptext = "<span class='maptext' style=font-size:8px>YOU ARE: [player.ready ? "" : "NOT "]READY</span>"
unhighlighted_color = player.ready ? COLOR_GREEN : COLOR_RED
maptext = "<span class='lobbytext'>YOU ARE: [player.ready ? "" : "NOT "]READY</span>"
icon_state = player.ready ? "ready" : "unready"
update_appearance(UPDATE_ICON)

/atom/movable/screen/text/lobby/clickable/join_game/Click()
. = ..()
Expand All @@ -98,7 +116,7 @@


/atom/movable/screen/text/lobby/clickable/observe
maptext = "<span class='maptext' style=font-size:8px>OBSERVE</span>"
maptext = "<span class='lobbytext'>OBSERVE</span>"
icon_state = "observe"

/atom/movable/screen/text/lobby/clickable/observe/Click()
Expand All @@ -107,7 +125,7 @@
player.try_to_observe()

/atom/movable/screen/text/lobby/clickable/manifest
maptext = "<span class='maptext' style=font-size:8px>VIEW MANIFEST</span>"
maptext = "<span class='lobbytext'>VIEW MANIFEST</span>"
icon_state = "manifest"

/atom/movable/screen/text/lobby/clickable/manifest/Click()
Expand All @@ -116,7 +134,7 @@
player.view_manifest()

/atom/movable/screen/text/lobby/clickable/xenomanifest
maptext = "<span class='maptext' style=font-size:8px>VIEW HIVE LEADERS</span>"
maptext = "<span class='lobbytext'>VIEW HIVE LEADERS</span>"
icon_state = "manifest"

/atom/movable/screen/text/lobby/clickable/xenomanifest/Click()
Expand All @@ -125,7 +143,7 @@
player.view_xeno_manifest()

/atom/movable/screen/text/lobby/clickable/background
maptext = "<span class='maptext' style=font-size:8px>BACKGROUND</span>"
maptext = "<span class='lobbytext'>BACKGROUND</span>"
icon_state = "background"

/atom/movable/screen/text/lobby/clickable/background/Click()
Expand All @@ -135,7 +153,7 @@


/atom/movable/screen/text/lobby/clickable/changelog
maptext = "<span class='maptext' style=font-size:8px>CHANGELOG</span>"
maptext = "<span class='lobbytext'>CHANGELOG</span>"
icon_state = "changelog"

/atom/movable/screen/text/lobby/clickable/changelog/Click()
Expand All @@ -144,7 +162,7 @@


/atom/movable/screen/text/lobby/clickable/polls
maptext = "<span class='maptext' style=font-size:8px>POLLS</span>"
maptext = "<span class='lobbytext'>POLLS</span>"
icon_state = "poll"

/atom/movable/screen/text/lobby/clickable/polls/update_text()
Expand All @@ -155,9 +173,9 @@
var/mob/new_player/player = hud.mymob
var/hasnewpolls = player.check_playerpolls()
if(isnull(hasnewpolls))
maptext = "<span class='maptext' style=font-size:8px>NO DATABASE!</span>"
maptext = "<span class='lobbytext'>NO DATABASE!</span>"
return
maptext = "<span class='maptext' style=font-size:8px>SHOW POLLS[hasnewpolls ? " (NEW!)" : ""]</span>"
maptext = "<span class='lobbytext'>SHOW POLLS[hasnewpolls ? " (NEW!)" : ""]</span>"

/atom/movable/screen/text/lobby/clickable/polls/Click()
. = ..()
Expand Down
12 changes: 8 additions & 4 deletions code/datums/chatmessage.dm
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
/// Approximate height in pixels of an 'average' line, used for height decay
#define CHAT_MESSAGE_APPROX_LHEIGHT 11
/// Max width of chat message in pixels
#define CHAT_MESSAGE_WIDTH 96
#define CHAT_MESSAGE_WIDTH 112
/// Max length of chat message in characters
#define CHAT_MESSAGE_MAX_LENGTH 110
/// Maximum precision of float before rounding errors occur (in this context)
Expand Down Expand Up @@ -129,6 +129,10 @@
if (!ismob(target))
extra_classes |= "small"

// Why are you yelling?
if(copytext_char(text, -2) == "!!")
extra_classes |= SPAN_YELL

// Append radio icon if from a virtual speaker
if (extra_classes.Find("virtual-speaker"))
var/image/r_icon = image('icons/UI_Icons/chat_icons.dmi', icon_state = "radio")
Expand All @@ -141,7 +145,7 @@
var/tgt_color = extra_classes.Find("italics") ? target.chat_color_darkened : target.chat_color


var/complete_text = "<span class='center maptext [extra_classes.Join(" ")]' style='color: [tgt_color]'>[owner.say_emphasis(text)]</span>"
var/complete_text = "<span style='color: [tgt_color]'><span class='center [extra_classes.Join(" ")]'>[owner.say_emphasis(text)]</span></span>"

var/mheight
WXH_TO_HEIGHT(owned_by.MeasureText(complete_text, null, CHAT_MESSAGE_WIDTH), mheight)
Expand Down Expand Up @@ -204,9 +208,9 @@
message.alpha = 0
message.pixel_y = owner.bound_height * 0.95
message.maptext_width = CHAT_MESSAGE_WIDTH
message.maptext_height = mheight
message.maptext_height = mheight * 1.25 // We add extra because some characters are superscript, like actions
message.maptext_x = (CHAT_MESSAGE_WIDTH - owner.bound_width) * -0.5
message.maptext = complete_text
message.maptext = MAPTEXT(complete_text)

animate_start = rough_time
animate_lifespan = lifespan
Expand Down
4 changes: 2 additions & 2 deletions code/datums/fire_support/fire_support.dm
Original file line number Diff line number Diff line change
Expand Up @@ -62,8 +62,8 @@
playsound(target_turf, initiate_sound, 100)
if(initiate_chat_message)
to_chat(user, span_notice(initiate_chat_message))
if(portrait_type && initiate_screen_message && initiate_title)
user.play_screen_text("<span class='maptext' style=font-size:24pt;text-align:left valign='top'><u>[initiate_title]</u></span><br>" + initiate_screen_message, portrait_type)
if(portrait_type && initiate_title && initiate_screen_message)
user.play_screen_text(HUD_ANNOUNCEMENT_FORMATTING(initiate_title, initiate_screen_message, LEFT_ALIGN_TEXT), portrait_type)

///Actually begins the fire support attack
/datum/fire_support/proc/start_fire_support(turf/target_turf)
Expand Down
4 changes: 2 additions & 2 deletions code/datums/gamemodes/campaign.dm
Original file line number Diff line number Diff line change
Expand Up @@ -81,9 +81,9 @@
var/op_name_faction_two = GLOB.operation_namepool[/datum/operation_namepool].get_random_name()
for(var/mob/living/carbon/human/human AS in GLOB.alive_human_list)
if(human.faction == factions[1])
human.play_screen_text("<span class='maptext' style=font-size:24pt;text-align:left valign='top'><u>[op_name_faction_one]</u></span><br>" + "Fight to restore peace and order across the planet, and check the SOM threat.<br>" + "[GAME_YEAR]-[time2text(world.realtime, "MM-DD")] [stationTimestamp("hh:mm")]<br>" + "TGMC Rapid Reaction Battalion<br>" + "[human.job.title], [human]<br>", /atom/movable/screen/text/screen_text/picture/rapid_response)
human.play_screen_text(HUD_ANNOUNCEMENT_FORMATTING(op_name_faction_one, "Fight to restore peace and order across the planet, and check the SOM threat.<br>" + "[GAME_YEAR]-[time2text(world.realtime, "MM-DD")] [stationTimestamp("hh:mm")]<br>" + "TGMC Rapid Reaction Battalion<br>" + "[human.job.title], [human]<br>", LEFT_ALIGN_TEXT), /atom/movable/screen/text/screen_text/picture/rapid_response)
else if(human.faction == factions[2])
human.play_screen_text("<span class='maptext' style=font-size:24pt;text-align:left valign='top'><u>[op_name_faction_two]</u></span><br>" + "Fight to liberate the people of Palmaria from the yoke of TerraGov oppression!<br>" + "[GAME_YEAR]-[time2text(world.realtime, "MM-DD")] [stationTimestamp("hh:mm")]<br>" + "SOM 4th Special Assault Force<br>" + "[human.job.title], [human]<br>", /atom/movable/screen/text/screen_text/picture/saf_four)
human.play_screen_text(HUD_ANNOUNCEMENT_FORMATTING(op_name_faction_two, "Fight to liberate the people of Palmaria from the yoke of TerraGov oppression!<br>" + "[GAME_YEAR]-[time2text(world.realtime, "MM-DD")] [stationTimestamp("hh:mm")]<br>" + "SOM 4th Special Assault Force<br>" + "[human.job.title], [human]<br>", LEFT_ALIGN_TEXT), /atom/movable/screen/text/screen_text/picture/saf_four)

/datum/game_mode/hvh/campaign/process()
if(round_finished)
Expand Down
4 changes: 2 additions & 2 deletions code/datums/gamemodes/campaign/campaign_mission.dm
Original file line number Diff line number Diff line change
Expand Up @@ -214,7 +214,7 @@
return

user.playsound_local(user, "sound/effects/CIC_order.ogg", 10, 1)
user.play_screen_text("<span class='maptext' style=font-size:24pt;text-align:left valign='top'><u>[text_source]</u></span><br>" + message, portrait_to_use)
user.play_screen_text(HUD_ANNOUNCEMENT_FORMATTING("<u>[text_source]</u>", message, LEFT_ALIGN_TEXT), portrait_to_use)

///Generates status tab info for the mission
/datum/campaign_mission/proc/get_status_tab_items(mob/source, list/items)
Expand Down Expand Up @@ -483,7 +483,7 @@
if(human.faction != faction)
continue
human.playsound_local(null, sound_effect, 10, 1)
human.play_screen_text("<span class='maptext' style=font-size:24pt;text-align:left valign='top'><u>[title]</u></span><br>" + "[message]", display_picture)
human.play_screen_text(HUD_ANNOUNCEMENT_FORMATTING(title, message, LEFT_ALIGN_TEXT), display_picture)

///Removes a flag or flags from this mission
/datum/campaign_mission/proc/remove_mission_flag(datum/source, blocker, removed_flags, losing_faction)
Expand Down
4 changes: 2 additions & 2 deletions code/datums/gamemodes/campaign/faction_stats.dm
Original file line number Diff line number Diff line change
Expand Up @@ -213,13 +213,13 @@ GLOBAL_LIST_INIT(campaign_mission_pool, list(

if(old_leader && old_leader != faction_leader)
for(var/mob/living/carbon/human/human AS in GLOB.alive_human_list_faction[faction])
human.play_screen_text("<span class='maptext' style=font-size:24pt;text-align:left valign='top'><u>OVERWATCH</u></span><br>" + "[old_leader] has been demoted from the role of faction commander", faction_portrait)
human.play_screen_text(HUD_ANNOUNCEMENT_FORMATTING("OVERWATCH", "[old_leader] has been demoted from the role of faction commander", LEFT_ALIGN_TEXT), faction_portrait)
if(!faction_leader)
return

for(var/mob/living/carbon/human/human AS in GLOB.alive_human_list_faction[faction])
human.playsound_local(null, 'sound/effects/CIC_order.ogg', 30, 1)
human.play_screen_text("<span class='maptext' style=font-size:24pt;text-align:left valign='top'><u>OVERWATCH</u></span><br>" + "[faction_leader] has been promoted to the role of faction commander", faction_portrait)
human.play_screen_text(HUD_ANNOUNCEMENT_FORMATTING("OVERWATCH", "[faction_leader] has been promoted to the role of faction commander", LEFT_ALIGN_TEXT), faction_portrait)
to_chat(faction_leader, span_userdanger("You have been promoted to the role of commander for your faction. It is your responsibility to determine your side's course of action, and how to best utilise the resources at your disposal. \
Attrition must be set BEFORE a mission starts ensure you team has access to respawns. Check this in the Faction UI screen. \
You are the only one that can choose the next mission for your faction. If your faction wins a mission, select the next one in the Faction UI screen, in the Missions tab."))
Expand Down
12 changes: 9 additions & 3 deletions code/datums/gamemodes/combat_patrol.dm
Original file line number Diff line number Diff line change
Expand Up @@ -36,11 +36,17 @@
/datum/game_mode/hvh/combat_patrol/intro_sequence()
var/op_name_tgmc = GLOB.operation_namepool[/datum/operation_namepool].get_random_name()
var/op_name_som = GLOB.operation_namepool[/datum/operation_namepool].get_random_name()
for(var/mob/living/carbon/human/human AS in GLOB.alive_human_list)
for(var/mob/living/carbon/human/human in GLOB.alive_human_list)
var/title
var/text
if(human.faction == FACTION_TERRAGOV)
human.play_screen_text("<span class='maptext' style=font-size:24pt;text-align:left valign='top'><u>[op_name_tgmc]</u></span><br>" + "[SSmapping.configs[GROUND_MAP].map_name]<br>" + "[GAME_YEAR]-[time2text(world.realtime, "MM-DD")] [stationTimestamp("hh:mm")]<br>" + "Territorial Defense Force Platoon<br>" + "[human.job.title], [human]<br>", /atom/movable/screen/text/screen_text/picture/tdf)
title = "<u>[op_name_tgmc]</u>"
text = "[SSmapping.configs[GROUND_MAP].map_name]<br>" + "[GAME_YEAR]-[time2text(world.realtime, "MM-DD")] [stationTimestamp("hh:mm")]<br>" + "Territorial Defense Force Platoon<br>" + "[human.job.title], [human]<br>"
human.play_screen_text(HUD_ANNOUNCEMENT_FORMATTING(title, text, LEFT_ALIGN_TEXT), /atom/movable/screen/text/screen_text/picture/tdf)
else
human.play_screen_text("<span class='maptext' style=font-size:24pt;text-align:left valign='top'><u>[op_name_som]</u></span><br>" + "[SSmapping.configs[GROUND_MAP].map_name]<br>" + "[GAME_YEAR]-[time2text(world.realtime, "MM-DD")] [stationTimestamp("hh:mm")]<br>" + "Shokk Infantry Platoon<br>" + "[human.job.title], [human]<br>", /atom/movable/screen/text/screen_text/picture/shokk)
title = "<u>[op_name_som]</u>"
text = "[SSmapping.configs[GROUND_MAP].map_name]<br>" + "[GAME_YEAR]-[time2text(world.realtime, "MM-DD")] [stationTimestamp("hh:mm")]<br>" + "Shokk Infantry Platoon<br>" + "[human.job.title], [human]<br>"
human.play_screen_text(HUD_ANNOUNCEMENT_FORMATTING(title, text, LEFT_ALIGN_TEXT), /atom/movable/screen/text/screen_text/picture/shokk)

/datum/game_mode/hvh/combat_patrol/game_end_countdown()
if(!game_timer)
Expand Down
2 changes: 1 addition & 1 deletion code/datums/gamemodes/hvh.dm
Original file line number Diff line number Diff line change
Expand Up @@ -187,7 +187,7 @@ Sensors indicate [num_som_delta || "no"] unknown lifeform signature[num_som_delt
if(!message)
return
user.playsound_local(user, "sound/effects/CIC_order.ogg", 10, 1)
user.play_screen_text("<span class='maptext' style=font-size:24pt;text-align:left valign='top'><u>OVERWATCH</u></span><br>" + message, GLOB.faction_to_portrait[user.faction])
user.play_screen_text(HUD_ANNOUNCEMENT_FORMATTING("OVERWATCH", message, LEFT_ALIGN_TEXT), GLOB.faction_to_portrait[user.faction])

///Returns a message to play to a mob when they deploy into the AO
/datum/game_mode/hvh/proc/get_deploy_point_message(mob/living/user)
Expand Down
2 changes: 1 addition & 1 deletion code/datums/jobs/squads.dm
Original file line number Diff line number Diff line change
Expand Up @@ -372,7 +372,7 @@

for(var/mob/living/marine AS in marines_list)
marine.playsound_local(marine, sound, 35)
marine.play_screen_text("<span class='maptext' style=font-size:24pt;text-align:center valign='top'><u>[header]</u></span><br>" + message, message_type, message_color)
marine.play_screen_text("<span class='maptext' style=font-size:12pt;text-align:center valign='top'><u>[header]</u></span><br>" + message, message_type, message_color)

/datum/squad/proc/check_entry(datum/job/job)
if(!(job.title in current_positions))
Expand Down
15 changes: 15 additions & 0 deletions code/datums/keybinding/client.dm
Original file line number Diff line number Diff line change
Expand Up @@ -46,3 +46,18 @@
return
user.mob.button_pressed_F12()
return TRUE

/datum/keybinding/client/fullscreen
hotkey_keys = list("F11")
name = "fullscreen"
full_name = "Fullscreen"
description = "Swap to fullscreen."
keybind_signal = COMSIG_KB_CLIENT_FULLSCREEN_DOWN

/datum/keybinding/client/fullscreen/down(client/user)
. = ..()
if(.)
return
user.prefs.fullscreen_mode = !user.prefs.fullscreen_mode
user.set_fullscreen(user.prefs.fullscreen_mode)
return TRUE
Loading

0 comments on commit bf31c02

Please sign in to comment.