mirror of
https://github.com/fulpstation/fulpstation.git
synced 2025-12-10 01:34:12 +00:00
* Show codewords on round end screen * More efficient searching of codewords in text * Typed globals
255 lines
7.8 KiB
Plaintext
255 lines
7.8 KiB
Plaintext
/proc/lizard_name(gender)
|
|
if(gender == MALE)
|
|
return "[pick(GLOB.lizard_names_male)]-[pick(GLOB.lizard_names_male)]"
|
|
else
|
|
return "[pick(GLOB.lizard_names_female)]-[pick(GLOB.lizard_names_female)]"
|
|
|
|
/proc/ethereal_name()
|
|
var/tempname = "[pick(GLOB.ethereal_names)] [random_capital_letter()]"
|
|
if(prob(65))
|
|
tempname += random_capital_letter()
|
|
return tempname
|
|
|
|
/proc/plasmaman_name()
|
|
return "[pick(GLOB.plasmaman_names)] \Roman[rand(1,99)]"
|
|
|
|
/proc/moth_name()
|
|
return "[pick(GLOB.moth_first)] [pick(GLOB.moth_last)]"
|
|
|
|
/proc/church_name()
|
|
var/static/church_name
|
|
if (church_name)
|
|
return church_name
|
|
|
|
var/name = ""
|
|
|
|
name += pick("Holy", "United", "First", "Second", "Last")
|
|
|
|
if (prob(20))
|
|
name += " Space"
|
|
|
|
name += " " + pick("Church", "Cathedral", "Body", "Worshippers", "Movement", "Witnesses")
|
|
name += " of [religion_name()]"
|
|
|
|
return name
|
|
|
|
GLOBAL_VAR(command_name)
|
|
/proc/command_name()
|
|
if (GLOB.command_name)
|
|
return GLOB.command_name
|
|
|
|
var/name = "Central Command"
|
|
|
|
GLOB.command_name = name
|
|
return name
|
|
|
|
/proc/change_command_name(name)
|
|
|
|
GLOB.command_name = name
|
|
|
|
return name
|
|
|
|
/proc/religion_name()
|
|
var/static/religion_name
|
|
if (religion_name)
|
|
return religion_name
|
|
|
|
var/name = ""
|
|
|
|
name += pick("bee", "science", "edu", "captain", "assistant", "monkey", "alien", "space", "unit", "sprocket", "gadget", "bomb", "revolution", "beyond", "station", "goon", "robot", "ivor", "hobnob")
|
|
name += pick("ism", "ia", "ology", "istism", "ites", "ick", "ian", "ity")
|
|
|
|
return capitalize(name)
|
|
|
|
/proc/station_name()
|
|
if(!GLOB.station_name)
|
|
var/newname
|
|
var/config_station_name = CONFIG_GET(string/stationname)
|
|
if(config_station_name)
|
|
newname = config_station_name
|
|
else
|
|
newname = new_station_name()
|
|
|
|
set_station_name(newname)
|
|
|
|
return GLOB.station_name
|
|
|
|
/proc/set_station_name(newname)
|
|
GLOB.station_name = newname
|
|
|
|
var/config_server_name = CONFIG_GET(string/servername)
|
|
if(config_server_name)
|
|
world.name = "[config_server_name][config_server_name == GLOB.station_name ? "" : ": [GLOB.station_name]"]"
|
|
else
|
|
world.name = GLOB.station_name
|
|
|
|
|
|
/proc/new_station_name()
|
|
var/random = rand(1,5)
|
|
var/name = ""
|
|
var/new_station_name = ""
|
|
|
|
//Rare: Pre-Prefix
|
|
if (prob(10))
|
|
name = pick(GLOB.station_prefixes)
|
|
new_station_name = name + " "
|
|
name = ""
|
|
|
|
// Prefix
|
|
for(var/holiday_name in SSevents.holidays)
|
|
if(holiday_name == "Friday the 13th")
|
|
random = 13
|
|
var/datum/holiday/holiday = SSevents.holidays[holiday_name]
|
|
name = holiday.getStationPrefix()
|
|
//get normal name
|
|
if(!name)
|
|
name = pick(GLOB.station_names)
|
|
if(name)
|
|
new_station_name += name + " "
|
|
|
|
// Suffix
|
|
name = pick(GLOB.station_suffixes)
|
|
new_station_name += name + " "
|
|
|
|
// ID Number
|
|
switch(random)
|
|
if(1)
|
|
new_station_name += "[rand(1, 99)]"
|
|
if(2)
|
|
new_station_name += pick(GLOB.greek_letters)
|
|
if(3)
|
|
new_station_name += "\Roman[rand(1,99)]"
|
|
if(4)
|
|
new_station_name += pick(GLOB.phonetic_alphabet)
|
|
if(5)
|
|
new_station_name += pick(GLOB.numbers_as_words)
|
|
if(13)
|
|
new_station_name += pick("13","XIII","Thirteen")
|
|
return new_station_name
|
|
|
|
/proc/syndicate_name()
|
|
var/name = ""
|
|
|
|
// Prefix
|
|
name += pick("Clandestine", "Prima", "Blue", "Zero-G", "Max", "Blasto", "Waffle", "North", "Omni", "Newton", "Cyber", "Bonk", "Gene", "Gib")
|
|
|
|
// Suffix
|
|
if (prob(80))
|
|
name += " "
|
|
|
|
// Full
|
|
if (prob(60))
|
|
name += pick("Syndicate", "Consortium", "Collective", "Corporation", "Group", "Holdings", "Biotech", "Industries", "Systems", "Products", "Chemicals", "Enterprises", "Family", "Creations", "International", "Intergalactic", "Interplanetary", "Foundation", "Positronics", "Hive")
|
|
// Broken
|
|
else
|
|
name += pick("Syndi", "Corp", "Bio", "System", "Prod", "Chem", "Inter", "Hive")
|
|
name += pick("", "-")
|
|
name += pick("Tech", "Sun", "Co", "Tek", "X", "Inc", "Code")
|
|
// Small
|
|
else
|
|
name += pick("-", "*", "")
|
|
name += pick("Tech", "Sun", "Co", "Tek", "X", "Inc", "Gen", "Star", "Dyne", "Code", "Hive")
|
|
|
|
return name
|
|
|
|
|
|
//Traitors and traitor silicons will get these. Revs will not.
|
|
GLOBAL_VAR(syndicate_code_phrase) //Code phrase for traitors.
|
|
GLOBAL_VAR(syndicate_code_response) //Code response for traitors.
|
|
|
|
//Cached regex search - for checking if codewords are used.
|
|
GLOBAL_DATUM(syndicate_code_phrase_regex, /regex)
|
|
GLOBAL_DATUM(syndicate_code_response_regex, /regex)
|
|
|
|
/*
|
|
Should be expanded.
|
|
How this works:
|
|
Instead of "I'm looking for James Smith," the traitor would say "James Smith" as part of a conversation.
|
|
Another traitor may then respond with: "They enjoy running through the void-filled vacuum of the derelict."
|
|
The phrase should then have the words: James Smith.
|
|
The response should then have the words: run, void, and derelict.
|
|
This way assures that the code is suited to the conversation and is unpredicatable.
|
|
Obviously, some people will be better at this than others but in theory, everyone should be able to do it and it only enhances roleplay.
|
|
Can probably be done through "{ }" but I don't really see the practical benefit.
|
|
One example of an earlier system is commented below.
|
|
/N
|
|
*/
|
|
|
|
/proc/generate_code_phrase(return_list=FALSE)//Proc is used for phrase and response in master_controller.dm
|
|
|
|
if(!return_list)
|
|
. = ""
|
|
else
|
|
. = list()
|
|
|
|
var/words = pick(//How many words there will be. Minimum of two. 2, 4 and 5 have a lesser chance of being selected. 3 is the most likely.
|
|
50; 2,
|
|
200; 3,
|
|
50; 4,
|
|
25; 5
|
|
)
|
|
|
|
var/list/safety = list(1,2,3)//Tells the proc which options to remove later on.
|
|
var/nouns = strings(ION_FILE, "ionabstract")
|
|
var/objects = strings(ION_FILE, "ionobjects")
|
|
var/adjectives = strings(ION_FILE, "ionadjectives")
|
|
var/threats = strings(ION_FILE, "ionthreats")
|
|
var/foods = strings(ION_FILE, "ionfood")
|
|
var/drinks = strings(ION_FILE, "iondrinks")
|
|
var/list/locations = GLOB.teleportlocs.len ? GLOB.teleportlocs : drinks //if null, defaults to drinks instead.
|
|
|
|
var/list/names = list()
|
|
for(var/datum/data/record/t in GLOB.data_core.general)//Picks from crew manifest.
|
|
names += t.fields["name"]
|
|
|
|
var/maxwords = words//Extra var to check for duplicates.
|
|
|
|
for(words,words>0,words--)//Randomly picks from one of the choices below.
|
|
|
|
if(words==1&&(1 in safety)&&(2 in safety))//If there is only one word remaining and choice 1 or 2 have not been selected.
|
|
safety = list(pick(1,2))//Select choice 1 or 2.
|
|
else if(words==1&&maxwords==2)//Else if there is only one word remaining (and there were two originally), and 1 or 2 were chosen,
|
|
safety = list(3)//Default to list 3
|
|
|
|
switch(pick(safety))//Chance based on the safety list.
|
|
if(1)//1 and 2 can only be selected once each to prevent more than two specific names/places/etc.
|
|
switch(rand(1,2))//Mainly to add more options later.
|
|
if(1)
|
|
if(names.len&&prob(70))
|
|
. += pick(names)
|
|
else
|
|
if(prob(10))
|
|
. += pick(lizard_name(MALE),lizard_name(FEMALE))
|
|
else
|
|
var/new_name = pick(pick(GLOB.first_names_male,GLOB.first_names_female))
|
|
new_name += " "
|
|
new_name += pick(GLOB.last_names)
|
|
. += new_name
|
|
if(2)
|
|
. += pick(get_all_jobs())//Returns a job.
|
|
safety -= 1
|
|
if(2)
|
|
switch(rand(1,3))//Food, drinks, or things. Only selectable once.
|
|
if(1)
|
|
. += lowertext(pick(drinks))
|
|
if(2)
|
|
. += lowertext(pick(foods))
|
|
if(3)
|
|
. += lowertext(pick(locations))
|
|
safety -= 2
|
|
if(3)
|
|
switch(rand(1,4))//Abstract nouns, objects, adjectives, threats. Can be selected more than once.
|
|
if(1)
|
|
. += lowertext(pick(nouns))
|
|
if(2)
|
|
. += lowertext(pick(objects))
|
|
if(3)
|
|
. += lowertext(pick(adjectives))
|
|
if(4)
|
|
. += lowertext(pick(threats))
|
|
if(!return_list)
|
|
if(words==1)
|
|
. += "."
|
|
else
|
|
. += ", "
|