mirror of
https://github.com/fulpstation/fulpstation.git
synced 2025-12-10 10:01:40 +00:00
cl Qustinnus / Floyd / Ethereal sprites by Space, is that it? / Alerts and food sprites by MrDroppodBringer
add: Adds Ethereal; a race which lives off of electricity and shines bright. If they are healthy they shine a bright green light, and the more damaged they are, the less they shine and the greyer they become. Their punches do burn damage and they are weak to blunt attacks!
They dont need to eat normal food and dont have nutrition, Instead they gain charge by going into borg rechargers, eating ethereal food or doign specific interactions.
refactor: all nutrition changes now go through a proc so we can override behavior
/cl
Adds Ethereal. A race which is essentialy inspired by Zoltan but then with different mechanics to make it fit with SS13 more. I'm trying to stay away from making them actually provide power but the change from nutrition to electricity seemed kind of fun.
They have the following specifications:
They are walking lights; and shine bright and green if healthy, and get greyer and darker the more damaged they are. When dead they are just a grey unlit corpse.
They do burn punch damage instead of blunt.
They are weaker to blunt; especially when low on charge
They have charge instead of nutrition. Charge is gained by some interactions or by going into a borg charger. or eating new ethereal food.
They are slightly stronger to shock damage, and gain charge from it a bit; however, it is still deadly to them and thus they aren't free insulated gloves.
251 lines
7.6 KiB
Plaintext
251 lines
7.6 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.
|
|
|
|
/*
|
|
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
|
|
. += ", "
|