Skip to content

Commit

Permalink
Merge branch 'master' of github.com:DaedalusDock/daedalusdock into 02…
Browse files Browse the repository at this point in the history
…01205antagselector
  • Loading branch information
Kapu1178 committed Feb 3, 2025
2 parents 7b29079 + 942415a commit eed1154
Show file tree
Hide file tree
Showing 14 changed files with 34 additions and 19 deletions.
1 change: 1 addition & 0 deletions code/__DEFINES/role_preferences.dm
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,7 @@ GLOBAL_LIST_INIT(special_roles, list(
ROLE_THIEF = 0,
ROLE_TRAITOR = 0,
ROLE_WIZARD = 14,
ROLE_VAMPIRE = 0,

// Midround
ROLE_ABDUCTOR = 0,
Expand Down
8 changes: 6 additions & 2 deletions code/controllers/subsystem/job.dm
Original file line number Diff line number Diff line change
Expand Up @@ -438,6 +438,7 @@ SUBSYSTEM_DEF(job)

. = assign_captain()
if(!.)
SSticker.mode.setup_error += "Failed to assign captain. See JobDebug for more information."
return FALSE

//People who wants to be the overflow role, sure, go on.
Expand Down Expand Up @@ -528,6 +529,7 @@ SUBSYSTEM_DEF(job)
if(!AssignRole(player, GetJobType(overflow_role))) //If everything is already filled, make them an assistant
JobDebug("DO, Forced antagonist could not be assigned any random job or the overflow role. DivideOccupations failed.")
JobDebug("---------------------------------------------------")
SSticker.mode.setup_error += "An unassigned player could not be given a random or overflow role. See JobDebug for more information."
return FALSE //Living on the edge, the forced antagonist couldn't be assigned to overflow role (bans, client age) - just reroll

JobDebug("DO, Ending handle unrejectable unassigned")
Expand All @@ -543,6 +545,8 @@ SUBSYSTEM_DEF(job)
we_fucked = TRUE

if(we_fucked)
JobDebug("DO, could not fill all departments.")
SSticker.mode.setup_error += "Could not fill all required departments. See JobDebug for more information."
return FALSE

JobDebug("DO, all departments have atleast one player.")
Expand Down Expand Up @@ -1076,12 +1080,12 @@ SUBSYSTEM_DEF(job)
for(var/rank in required_group)
var/datum/job/J = GetJob(rank)
if(!J)
SSticker.mode.setup_error = "Invalid job [rank] in gamemode required jobs."
SSticker.mode.setup_error += "Invalid job [rank] in gamemode required jobs."
return FALSE
if(J.current_positions < required_group[rank])
group_ok = FALSE
break
if(group_ok)
return TRUE
SSticker.mode.setup_error = "Required jobs not present."
SSticker.mode.setup_error += "Required jobs not present."
return FALSE
4 changes: 2 additions & 2 deletions code/controllers/subsystem/ticker.dm
Original file line number Diff line number Diff line change
Expand Up @@ -837,8 +837,8 @@ SUBSYSTEM_DEF(ticker)

if(!GLOB.Debug2)
if(!can_continue)
log_game("[get_mode_name(TRUE)] failed pre_setup, cause: [mode.setup_error].")
message_admins("[get_mode_name(TRUE)] failed pre_setup, cause: [mode.setup_error].")
log_game("[get_mode_name(TRUE)] failed pre_setup, cause(s): [english_list(mode.setup_error)].")
message_admins("[get_mode_name(TRUE)] failed pre_setup, cause(s): [english_list(mode.setup_error)].")
to_chat(world, "<B>Error setting up [get_mode_name(TRUE)].</B> Reverting to pre-game lobby.")
mode.on_failed_execute()
QDEL_NULL(mode)
Expand Down
2 changes: 1 addition & 1 deletion code/datums/station_traits/negative_traits.dm
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@
for(var/mob/living/simple_animal/bot/found_bot in GLOB.alive_mob_list)
/// The bot's language holder - so we can randomize and change their language
var/datum/language_holder/bot_languages = found_bot.get_language_holder()
bot_languages.selected_language = bot_languages.get_random_spoken_language()
bot_languages.set_selected_language(bot_languages.get_random_spoken_language())

/datum/station_trait/revenge_of_pun_pun
name = "Revenge of Pun Pun"
Expand Down
2 changes: 1 addition & 1 deletion code/game/atoms_movable.dm
Original file line number Diff line number Diff line change
Expand Up @@ -1188,7 +1188,7 @@
*/

/// Gets or creates the relevant language holder. For mindless atoms, gets the local one. For atom with mind, gets the mind one.
/atom/movable/proc/get_language_holder(get_minds = TRUE)
/atom/movable/proc/get_language_holder(get_minds = TRUE) as /datum/language_holder
RETURN_TYPE(/datum/language_holder)
if(!language_holder)
language_holder = new initial_language_holder(src)
Expand Down
8 changes: 4 additions & 4 deletions code/game/gamemodes/game_mode.dm
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@
///Is the gamemode votable? !Not implimented!
var/votable = FALSE

///Dynamically set to what the problem was. Or the first problem, anyway.
var/setup_error = ""
///Dynamically set to what the problem(s) was/were.
var/list/setup_error = list()

///The minimum players this gamemode can roll
var/min_pop = 1
Expand Down Expand Up @@ -61,14 +61,14 @@
/datum/game_mode/proc/execute_roundstart()
SHOULD_CALL_PARENT(TRUE)
if(!pre_setup())
setup_error ||= "Failed pre_setup."
setup_error += "Failed pre_setup."
return FALSE

antagonists = GLOB.pre_setup_antags.Copy()
GLOB.pre_setup_antags.Cut()
var/number_of_antags = length(antagonists)
if(number_of_antags < required_enemies)
setup_error = "Not enough antagonists selected. Required [required_enemies], got [number_of_antags]."
setup_error += "Not enough antagonists selected. Required [required_enemies], got [number_of_antags]."
return FALSE

return TRUE
Expand Down
2 changes: 1 addition & 1 deletion code/game/gamemodes/one_antag.dm
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
/datum/game_mode/one_antag/pre_setup()
. = ..()
if(!antag_selector.setup(get_antag_count(), SSticker.ready_players.Copy()))
setup_error = "No possible antagonists found"
setup_error += "No possible antagonists found"
return FALSE

antagonists = antag_selector.selected_antagonists
Expand Down
4 changes: 2 additions & 2 deletions code/game/machinery/hologram.dm
Original file line number Diff line number Diff line change
Expand Up @@ -690,7 +690,7 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/
Hologram.add_atom_colour("#77abff", FIXED_COLOUR_PRIORITY)
Hologram.dir = SOUTH //for now
var/datum/language_holder/holder = Hologram.get_language_holder()
holder.selected_language = record.language
holder.set_selected_language(GET_LANGUAGE_DATUM(record.language))
Hologram.mouse_opacity = MOUSE_OPACITY_TRANSPARENT//So you can't click on it.
Hologram.layer = FLY_LAYER//Above all the other objects/mobs. Or the vast majority of them.
Hologram.set_anchored(TRUE)//So space wind cannot drag it.
Expand Down Expand Up @@ -774,7 +774,7 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/
return
if(HOLORECORD_LANGUAGE)
var/datum/language_holder/holder = replay_holo.get_language_holder()
holder.selected_language = entry[2]
holder.set_selected_language(GET_LANGUAGE_DATUM(entry[2]))
if(HOLORECORD_PRESET)
var/preset_type = entry[2]
var/datum/preset_holoimage/H = new preset_type
Expand Down
2 changes: 1 addition & 1 deletion code/modules/client/preferences/antagonists.dm
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
/datum/preference/blob/antagonists/create_default_value()
. = list()
for(var/antagonist in GLOB.special_roles)
.[antagonist] = FALSE
.[antagonist] = TRUE

/datum/preference/blob/antagonists/deserialize(input, datum/preferences/preferences)
var/list/reference = create_default_value()
Expand Down
3 changes: 2 additions & 1 deletion code/modules/flockmind/flock_language.dm
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
/datum/language/flock
name = "Symphonic"
syllables = list("caw")
sentence_chance = 0
space_chance = 100
default_priority = 101
default_priority = 99
key = "f"

icon_state = "flock"
9 changes: 9 additions & 0 deletions code/modules/language/language_holder.dm
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,13 @@ Key procs
owner = null
return ..()

/// Setter for selected language.
/datum/language_holder/proc/set_selected_language(datum/language/new_selected)
if(!istype(new_selected))
CRASH("Tried to set selected language to a [new_selected].")

selected_language = new_selected

/// Grants the supplied language.
/datum/language_holder/proc/grant_language(datum/language/language, understood = TRUE, spoken = TRUE, source = LANGUAGE_MIND)
if(istype(language))
Expand Down Expand Up @@ -185,6 +192,8 @@ Key procs

/// Returns selected language if it can be spoken, or decides, sets and returns a new selected language if possible.
/datum/language_holder/proc/get_selected_language()
RETURN_TYPE(/datum/language)

if(selected_language && can_speak_language(selected_language))
return selected_language

Expand Down
2 changes: 1 addition & 1 deletion code/modules/language/language_menu.dm
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@
switch(action)
if("select_default")
if(language_datum && AM.can_speak_language(language_datum))
language_holder.selected_language = language_datum
language_holder.set_selected_language(language_datum)
. = TRUE
if("grant_language")
if((is_admin || isobserver(AM)) && language_datum)
Expand Down
4 changes: 2 additions & 2 deletions code/modules/mob/living/silicon/pai/pai_defense.dm
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,9 @@
if(3)
adjust_timed_status_effect(INFINITY, /datum/status_effect/speech/stutter/derpspeech)
to_chat(src, span_danger("Warning: Vocabulary databank corrupted."))
if(prob(40))
mind.language_holder.selected_language = get_random_spoken_language()

if(prob(40))
mind.language_holder.set_selected_language(get_random_spoken_language())

/mob/living/silicon/pai/ex_act(severity, target)
take_holo_damage(50 * severity)
Expand Down
2 changes: 1 addition & 1 deletion code/modules/unit_tests/say.dm
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,7 @@

// Language test
speaker.grant_language(/datum/language/beachbum)
speaker.get_language_holder():selected_language = GET_LANGUAGE_DATUM(/datum/language/beachbum)
speaker.get_language_holder():set_selected_language(GET_LANGUAGE_DATUM(/datum/language/beachbum))
listener.add_blocked_language(/datum/language/beachbum)
// speaking and whispering should be hearable
conversation(distance = 1)
Expand Down

0 comments on commit eed1154

Please sign in to comment.