Removed mob/var/UI, it now uses client.prefs.UI_style

Removed var/constant/Pi It's already defined in setup.dm
Moved a bunch of global_lists to global_lists.dm
Fixed hair randomisation. (still bits to do)
Moved a lot of preferences_setup.dm stuff into __HELPERS/mobs.dm They'll be FAR more helpful as generic procs, rather than something tied to preferences.
Merged mob/var/nopush into status_flags with the CANPUSH flag
Merged mob/var/nodamage into status_flags with the GODMODE flag
Removed mob/var/be_syndicate and mob/var/be_random_name as they are not used.
Added /proc/ui_style2icon(ui_style) proc. It converts a string like "Midnight" into its corresponding dmi file. The code fore creating a new hud uses it.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5164 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
elly1989@rocketmail.com
2012-11-22 15:22:08 +00:00
parent bae59832d6
commit 73b54b017b
52 changed files with 344 additions and 509 deletions

View File

@@ -11,12 +11,24 @@ var/global/list/living_mob_list = list() //List of all alive mobs, including c
var/global/list/dead_mob_list = list() //List of all dead mobs, including clientless. Excludes /mob/new_player var/global/list/dead_mob_list = list() //List of all dead mobs, including clientless. Excludes /mob/new_player
var/global/list/cable_list = list() //Index for all cables, so that powernets don't have to look through the entire world all the time var/global/list/cable_list = list() //Index for all cables, so that powernets don't have to look through the entire world all the time
var/global/list/hair_styles_list = list() //stores /datum/sprite_accessory/hair indexed by name
var/global/list/facial_hair_styles_list = list() //stores /datum/sprite_accessory/facial_hair indexed by name
var/global/list/chemical_reactions_list //list of all /datum/chemical_reaction datums. Used during chemical reactions var/global/list/chemical_reactions_list //list of all /datum/chemical_reaction datums. Used during chemical reactions
var/global/list/chemical_reagents_list //list of all /datum/reagent datums indexed by reagent id. Used by chemistry stuff var/global/list/chemical_reagents_list //list of all /datum/reagent datums indexed by reagent id. Used by chemistry stuff
var/global/list/landmarks_list = list() //list of all landmarks created var/global/list/landmarks_list = list() //list of all landmarks created
//Preferences stuff
//Hairstyles
var/global/list/hair_styles_list = list() //stores /datum/sprite_accessory/hair indexed by name
var/global/list/hair_styles_male_list = list()
var/global/list/hair_styles_female_list = list()
var/global/list/facial_hair_styles_list = list() //stores /datum/sprite_accessory/facial_hair indexed by name
var/global/list/facial_hair_styles_male_list = list()
var/global/list/facial_hair_styles_female_list = list()
//Underwear
var/global/list/underwear_m = list("White", "Grey", "Green", "Blue", "Black", "Mankini", "Love-Hearts", "Black2", "Grey2", "Stripey", "Kinky", "None") //Curse whoever made male/female underwear diffrent colours
var/global/list/underwear_f = list("Red", "White", "Yellow", "Blue", "Black", "Thong", "Babydoll", "Baby-Blue", "Green", "Pink", "Kinky", "None")
//Backpacks
var/global/list/backbaglist = list("Nothing", "Backpack", "Satchel")
////////////////////////// //////////////////////////
/////Initial Building///// /////Initial Building/////
////////////////////////// //////////////////////////
@@ -28,9 +40,21 @@ var/global/list/landmarks_list = list() //list of all landmarks created
for(var/path in paths) for(var/path in paths)
var/datum/sprite_accessory/hair/H = new path() var/datum/sprite_accessory/hair/H = new path()
hair_styles_list[H.name] = H hair_styles_list[H.name] = H
switch(H.gender)
if(MALE) hair_styles_male_list += H.name
if(FEMALE) hair_styles_female_list += H.name
else
hair_styles_male_list += H.name
hair_styles_female_list += H.name
//Facial Hair - Initialise all /datum/sprite_accessory/facial_hair into an list indexed by facialhair-style name //Facial Hair - Initialise all /datum/sprite_accessory/facial_hair into an list indexed by facialhair-style name
paths = typesof(/datum/sprite_accessory/facial_hair) - /datum/sprite_accessory/facial_hair paths = typesof(/datum/sprite_accessory/facial_hair) - /datum/sprite_accessory/facial_hair
for(var/path in paths) for(var/path in paths)
var/datum/sprite_accessory/facial_hair/H = new path() var/datum/sprite_accessory/facial_hair/H = new path()
facial_hair_styles_list[H.name] = H facial_hair_styles_list[H.name] = H
switch(H.gender)
if(MALE) facial_hair_styles_male_list += H.name
if(FEMALE) facial_hair_styles_female_list += H.name
else
facial_hair_styles_male_list += H.name
facial_hair_styles_female_list += H.name

View File

@@ -1,7 +1,5 @@
// Credits to Nickr5 for the useful procs I've taken from his library resource. // Credits to Nickr5 for the useful procs I've taken from his library resource.
var/const/Pi = 3.14159265
var/const/E = 2.71828183 var/const/E = 2.71828183
var/const/Sqrt2 = 1.41421356 var/const/Sqrt2 = 1.41421356

50
code/__HELPERS/mobs.dm Normal file
View File

@@ -0,0 +1,50 @@
proc/random_hair_style(gender)
switch(gender)
if(MALE) return pick(hair_styles_male_list)
if(FEMALE) return pick(hair_styles_female_list)
else return pick(hair_styles_list)
proc/random_facial_hair_style(gender)
switch(gender)
if(MALE) return pick(facial_hair_styles_male_list)
if(FEMALE) return pick(facial_hair_styles_female_list)
else return pick(facial_hair_styles_list)
proc/random_name(gender)
if(gender==FEMALE) return capitalize(pick(first_names_female)) + " " + capitalize(pick(last_names))
else return capitalize(pick(first_names_male)) + " " + capitalize(pick(last_names))
proc/random_skin_tone()
switch(pick(55;"caucasian", 15;"afroamerican", 10;"african", 10;"latino", 5;"albino", 5;"weird"))
if("caucasian") . = -10
if("afroamerican") . = -115
if("african") . = -165
if("latino") . = -55
if("albino") . = 34
else . = rand(-185,34)
return min(max( .+rand(-25, 25), -185),34)
proc/skintone2racedescription(tone)
switch (tone)
if(30 to INFINITY) return "albino"
if(20 to 30) return "pale"
if(5 to 15) return "light skinned"
if(-10 to 5) return "white"
if(-25 to -10) return "tan"
if(-45 to -25) return "darker skinned"
if(-65 to -45) return "brown"
if(-INFINITY to -65) return "black"
else return "unknown"
proc/age2agedescription(age)
switch(age)
if(0 to 1) return "infant"
if(1 to 3) return "toddler"
if(3 to 13) return "child"
if(13 to 19) return "teenager"
if(19 to 30) return "young adult"
if(30 to 45) return "adult"
if(45 to 60) return "middle-aged"
if(60 to 70) return "aging"
if(70 to INFINITY) return "elderly"
else return "unknown"

View File

@@ -44,7 +44,3 @@
if(65 to 70) . += ascii2text(ascii+32) //letters A to F - translates to lowercase if(65 to 70) . += ascii2text(ascii+32) //letters A to F - translates to lowercase
else return default else return default
return . return .

View File

@@ -254,4 +254,10 @@ proc/tg_list2text(list/list, glue=",")
if(rights & R_VAREDIT) . += "[seperator]+VAREDIT" if(rights & R_VAREDIT) . += "[seperator]+VAREDIT"
if(rights & R_SOUNDS) . += "[seperator]+SOUND" if(rights & R_SOUNDS) . += "[seperator]+SOUND"
if(rights & R_SPAWN) . += "[seperator]+SPAWN" if(rights & R_SPAWN) . += "[seperator]+SPAWN"
return . return .
/proc/ui_style2icon(ui_style)
switch(ui_style)
if("old") return 'icons/mob/screen1_old.dmi'
if("Orange") return 'icons/mob/screen1_Orange.dmi'
else return 'icons/mob/screen1_Midnight.dmi'

View File

@@ -78,7 +78,7 @@
//Damage will not exceed max_damage using this proc //Damage will not exceed max_damage using this proc
//Cannot apply negative damage //Cannot apply negative damage
/datum/organ/external/proc/take_damage(brute, burn) /datum/organ/external/proc/take_damage(brute, burn)
if(owner && owner.nodamage) return 0 //godmode if(owner && (owner.status_flags & GODMODE)) return 0 //godmode
brute = max(brute,0) brute = max(brute,0)
burn = max(burn,0) burn = max(burn,0)

View File

@@ -382,7 +382,7 @@ var/list/sacrificed = list()
D.real_name = copytext(P.info, 1, MAX_NAME_LEN) D.real_name = copytext(P.info, 1, MAX_NAME_LEN)
break break
D.universal_speak = 1 D.universal_speak = 1
D.nodamage = 0 D.status_flags &= ~GODMODE
D.key = ghost.key D.key = ghost.key

View File

@@ -71,7 +71,7 @@
if ("Summon") if ("Summon")
for(var/mob/living/simple_animal/shade/A in src) for(var/mob/living/simple_animal/shade/A in src)
A.nodamage = 0 A.status_flags &= ~GODMODE
A.canmove = 1 A.canmove = 1
A << "<b>You have been released from your prison, but you are still bound to [U.name]'s will. Help them suceed in their goals at all costs.</b>" A << "<b>You have been released from your prison, but you are still bound to [U.name]'s will. Help them suceed in their goals at all costs.</b>"
A.loc = U.loc A.loc = U.loc
@@ -124,7 +124,7 @@
del(animation) del(animation)
var/mob/living/simple_animal/shade/S = new /mob/living/simple_animal/shade( T.loc ) var/mob/living/simple_animal/shade/S = new /mob/living/simple_animal/shade( T.loc )
S.loc = C //put shade in stone S.loc = C //put shade in stone
S.nodamage = 1 //So they won't die inside the stone somehow S.status_flags |= GODMODE //So they won't die inside the stone somehow
S.canmove = 0//Can't move out of the soul stone S.canmove = 0//Can't move out of the soul stone
S.name = "Shade of [T.real_name]" S.name = "Shade of [T.real_name]"
S.real_name = "Shade of [T.real_name]" S.real_name = "Shade of [T.real_name]"
@@ -151,7 +151,7 @@
U << "\red <b>Capture failed!</b>: \black The soul stone has already been imprinted with [C.imprinted]'s mind!" U << "\red <b>Capture failed!</b>: \black The soul stone has already been imprinted with [C.imprinted]'s mind!"
else else
T.loc = C //put shade in stone T.loc = C //put shade in stone
T.nodamage = 1 T.status_flags |= GODMODE
T.canmove = 0 T.canmove = 0
T.health = T.maxHealth T.health = T.maxHealth
C.icon_state = "soulstone2" C.icon_state = "soulstone2"

View File

@@ -241,9 +241,11 @@ datum/hud/New(mob/owner)
/datum/hud/proc/instantiate() /datum/hud/proc/instantiate()
if(!ismob(mymob)) return 0 if(!ismob(mymob)) return 0
if(!mymob.client) return 0
var/ui_style = ui_style2icon(mymob.client.prefs.UI_style)
if(ishuman(mymob)) if(ishuman(mymob))
human_hud(mymob.UI) // Pass the player the UI style chosen in preferences human_hud(ui_style) // Pass the player the UI style chosen in preferences
if(RADAR in mymob.augmentations) if(RADAR in mymob.augmentations)
spawn() spawn()
@@ -253,10 +255,10 @@ datum/hud/New(mob/owner)
mymob:place_radar_closed() mymob:place_radar_closed()
else if(ismonkey(mymob)) else if(ismonkey(mymob))
monkey_hud(mymob.UI) monkey_hud(ui_style)
else if(isbrain(mymob)) else if(isbrain(mymob))
brain_hud(mymob.UI) brain_hud(ui_style)
else if(islarva(mymob)) else if(islarva(mymob))
larva_hud() larva_hud()
@@ -279,4 +281,4 @@ datum/hud/New(mob/owner)
else if(isobserver(mymob)) else if(isobserver(mymob))
ghost_hud() ghost_hud()
return return

View File

@@ -113,7 +113,7 @@
//Clonepod //Clonepod
//Start growing a human clone in the pod! //Start growing a human clone in the pod!
/obj/machinery/clonepod/proc/growclone(var/ckey, var/clonename, var/ui, var/se, var/mindref, var/mrace, var/UI) /obj/machinery/clonepod/proc/growclone(var/ckey, var/clonename, var/ui, var/se, var/mindref, var/mrace)
if(mess || attempting) if(mess || attempting)
return 0 return 0
var/datum/mind/clonemind = locate(mindref) var/datum/mind/clonemind = locate(mindref)
@@ -144,7 +144,6 @@
var/mob/living/carbon/human/H = new /mob/living/carbon/human(src) var/mob/living/carbon/human/H = new /mob/living/carbon/human(src)
occupant = H occupant = H
H.UI = UI // set interface preference
if(!clonename) //to prevent null names if(!clonename) //to prevent null names
clonename = "clone ([rand(0,999)])" clonename = "clone ([rand(0,999)])"

View File

@@ -378,7 +378,7 @@
temp = "Error: Clonepod malfunction." temp = "Error: Clonepod malfunction."
else if(!config.revival_cloning) else if(!config.revival_cloning)
temp = "Error: Unable to initiate cloning cycle." temp = "Error: Unable to initiate cloning cycle."
else if(pod1.growclone(C.fields["ckey"], C.fields["name"], C.fields["UI"], C.fields["SE"], C.fields["mind"], C.fields["mrace"], C.fields["interface"])) else if(pod1.growclone(C.fields["ckey"], C.fields["name"], C.fields["UI"], C.fields["SE"], C.fields["mind"], C.fields["mrace"]))
temp = "Initiating cloning cycle..." temp = "Initiating cloning cycle..."
records.Remove(C) records.Remove(C)
del(C) del(C)
@@ -429,11 +429,6 @@
R.fields["UI"] = subject.dna.uni_identity R.fields["UI"] = subject.dna.uni_identity
R.fields["SE"] = subject.dna.struc_enzymes R.fields["SE"] = subject.dna.struc_enzymes
// Preferences stuff
R.fields["interface"] = subject.UI
//Add an implant if needed //Add an implant if needed
var/obj/item/weapon/implant/health/imp = locate(/obj/item/weapon/implant/health, subject) var/obj/item/weapon/implant/health/imp = locate(/obj/item/weapon/implant/health, subject)
if (isnull(imp)) if (isnull(imp))

View File

@@ -34,7 +34,7 @@
R.module = null R.module = null
R.modtype = "robot" R.modtype = "robot"
R.updatename("Default") R.updatename("Default")
R.nopush = 0 R.status_flags |= CANPUSH
R.updateicon() R.updateicon()
return 1 return 1

View File

@@ -206,67 +206,6 @@ var/forum_authenticated_group = "10"
// However it'd be ok to use for accessing attack logs and such too, which are even laggier. // However it'd be ok to use for accessing attack logs and such too, which are even laggier.
var/fileaccess_timer = 1800 //Cannot access files by ftp until the game is finished setting up and stuff. var/fileaccess_timer = 1800 //Cannot access files by ftp until the game is finished setting up and stuff.
//Please don't edit these values without speaking to Errorage first ~Carn
//Admin Permissions
#define R_BUILDMODE 1
#define R_ADMIN 2
#define R_BAN 4
#define R_FUN 8
#define R_SERVER 16
#define R_DEBUG 32
#define R_POSSESS 64
#define R_PERMISSIONS 128
#define R_STEALTH 256
#define R_REJUVINATE 512
#define R_VAREDIT 1024
#define R_SOUNDS 2048
#define R_SPAWN 4096
#define R_MAXPERMISSION 4096 //This holds the maximum value for a permission. It is used in iteration, so keep it updated.
#define R_HOST 65535
//Preference toggles
#define SOUND_ADMINHELP 1
#define SOUND_MIDI 2
#define SOUND_AMBIENCE 4
#define SOUND_LOBBY 8
#define CHAT_OOC 16
#define CHAT_DEAD 32
#define CHAT_GHOSTEARS 64
#define CHAT_GHOSTSIGHT 128
#define CHAT_PRAYER 256
#define CHAT_RADIO 512
#define TOGGLES_DEFAULT (SOUND_ADMINHELP|SOUND_MIDI|SOUND_AMBIENCE|SOUND_LOBBY|CHAT_OOC|CHAT_DEAD|CHAT_GHOSTEARS|CHAT_PRAYER|CHAT_RADIO)
#define BE_TRAITOR 1
#define BE_OPERATIVE 2
#define BE_CHANGELING 4
#define BE_WIZARD 8
#define BE_MALF 16
#define BE_REV 32
#define BE_ALIEN 64
#define BE_PAI 128
#define BE_CULTIST 256
#define BE_MONKEY 512
#define BE_NINJA 1024
var/list/be_special_flags = list(
"Traitor" = BE_TRAITOR,
"Operative" = BE_OPERATIVE,
"Changeling" = BE_CHANGELING,
"Wizard" = BE_WIZARD,
"Malf AI" = BE_MALF,
"Revolutionary" = BE_REV,
"Xenomorph" = BE_ALIEN,
"pAI" = BE_PAI,
"Cultist" = BE_CULTIST,
"Monkey" = BE_MONKEY,
"Ninja" = BE_NINJA
)
//Database connections //Database connections
//A connection is established on world creation. Ideally, the connection dies when the server restarts (After feedback logging.). //A connection is established on world creation. Ideally, the connection dies when the server restarts (After feedback logging.).
var/DBConnection/dbcon = new() //Feedback database (New database) var/DBConnection/dbcon = new() //Feedback database (New database)

View File

@@ -112,15 +112,11 @@
if(!holder) if(!holder)
src << "Only administrators may use this command." src << "Only administrators may use this command."
return return
if (M.nodamage == 1) M.status_flags ^= GODMODE
M.nodamage = 0 usr << "\blue Toggled [(M.status_flags & GODMODE) ? "ON" : "OFF"]"
usr << "\blue Toggled OFF"
else
M.nodamage = 1
usr << "\blue Toggled ON"
log_admin("[key_name(usr)] has toggled [key_name(M)]'s nodamage to [(M.nodamage ? "On" : "Off")]") log_admin("[key_name(usr)] has toggled [key_name(M)]'s nodamage to [(M.status_flags & GODMODE) ? "On" : "Off"]")
message_admins("[key_name_admin(usr)] has toggled [key_name_admin(M)]'s nodamage to [(M.nodamage ? "On" : "Off")]", 1) message_admins("[key_name_admin(usr)] has toggled [key_name_admin(M)]'s nodamage to [(M.status_flags & GODMODE) ? "On" : "Off"]", 1)
feedback_add_details("admin_verb","GOD") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! feedback_add_details("admin_verb","GOD") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!

View File

@@ -16,9 +16,6 @@ var/global/list/special_roles = list( //keep synced with the defines BE_* in set
"infested monkey" = IS_MODE_COMPILED("monkey"), // 9 "infested monkey" = IS_MODE_COMPILED("monkey"), // 9
) )
var/global/list/underwear_m = list("White", "Grey", "Green", "Blue", "Black", "Mankini", "Love-Hearts", "Black2", "Grey2", "Stripey", "Kinky", "None") //Curse whoever made male/female underwear diffrent colours
var/global/list/underwear_f = list("Red", "White", "Yellow", "Blue", "Black", "Thong", "Babydoll", "Baby-Blue", "Green", "Pink", "Kinky", "None")
var/global/list/backbaglist = list("Nothing", "Backpack", "Satchel")
var/const/MAX_SAVE_SLOTS = 3 var/const/MAX_SAVE_SLOTS = 3
@@ -94,7 +91,8 @@ datum/preferences
if(load_preferences()) if(load_preferences())
load_character() load_character()
return return
randomize_name() gender = pick(MALE, FEMALE)
real_name = random_name(gender)
/datum/preferences /datum/preferences
proc/ShowChoices(mob/user) proc/ShowChoices(mob/user)
@@ -420,63 +418,49 @@ datum/preferences
if("random") if("random")
switch(href_list["preference"]) switch(href_list["preference"])
if("name") if("name")
randomize_name() real_name = random_name(gender)
if("age") if("age")
age = rand(17, 85) age = rand(AGE_MIN, AGE_MAX)
// if("b_type")
// b_type = pick( 31;"A+", 7;"A-", 8;"B+", 2;"B-", 2;"AB+", 1;"AB-", 40;"O+", 9;"O-" )
if("hair") if("hair")
randomize_hair_color("hair") r_hair = rand(0,255)
g_hair = rand(0,255)
b_hair = rand(0,255)
if("h_style") if("h_style")
randomize_hair(gender) h_style = random_hair_style(gender)
if("facial") if("facial")
randomize_hair_color("facial") r_facial = rand(0,255)
g_facial = rand(0,255)
b_facial = rand(0,255)
if("f_style") if("f_style")
randomize_facial(gender) f_style = random_facial_hair_style(gender)
if("underwear") if("underwear")
underwear = rand(1,12) underwear = rand(1,underwear_m.len)
if("eyes") if("eyes")
randomize_eyes_color() r_eyes = rand(0,255)
g_eyes = rand(0,255)
b_eyes = rand(0,255)
if("s_tone") if("s_tone")
randomize_skin_tone() s_tone = random_skin_tone()
if("bag") if("bag")
backbag = rand(1,3) backbag = rand(1,3)
if("all") if("all")
gender = pick(MALE,FEMALE) gender = pick(MALE,FEMALE)
randomize_name() real_name = random_name(gender)
age = rand(17,85) age = rand(AGE_MIN,AGE_MAX)
underwear = rand(1,12) underwear = rand(1,12)
backbag = rand(1,3) backbag = rand(1,3)
randomize_hair_color("hair") r_hair = rand(0,255)
randomize_hair(gender) g_hair = rand(0,255)
randomize_hair_color("facial") b_hair = rand(0,255)
randomize_facial(gender) r_facial = r_hair
randomize_eyes_color() g_facial = g_hair
randomize_skin_tone() b_facial = b_hair
job_civilian_high = 0 r_eyes = rand(0,255)
job_civilian_med = 0 g_eyes = rand(0,255)
job_civilian_low = 0 b_eyes = rand(0,255)
job_medsci_high = 0 h_style = random_hair_style(gender)
job_medsci_med = 0 f_style = random_facial_hair_style(gender)
job_medsci_low = 0 s_tone = random_skin_tone()
job_engsec_high = 0
job_engsec_med = 0
job_engsec_low = 0
be_special = 0
be_random_name = 0
UI_style = "Midnight"
userandomjob = 1
if("input") if("input")
switch(href_list["preference"]) switch(href_list["preference"])
@@ -488,20 +472,15 @@ datum/preferences
user << "<font color='red'>Invalid name. Your name should be at least 2 and at most [MAX_NAME_LEN] characters long. It may only contain the characters A-Z, a-z, -, ' and .</font>" user << "<font color='red'>Invalid name. Your name should be at least 2 and at most [MAX_NAME_LEN] characters long. It may only contain the characters A-Z, a-z, -, ' and .</font>"
if("age") if("age")
var/new_age = input(user, "Choose your character's age:\n(17-85)", "Character Preference") as num|null var/new_age = input(user, "Choose your character's age:\n([AGE_MIN]-[AGE_MAX])", "Character Preference") as num|null
if(new_age) if(new_age)
age = max(min(round(text2num(new_age)), 85), 17) age = max(min( round(text2num(new_age)), AGE_MAX),AGE_MIN)
if("metadata") if("metadata")
var/new_metadata = input(user, "Enter any information you'd like others to see, such as Roleplay-preferences:", "Game Preference" , metadata) as message|null var/new_metadata = input(user, "Enter any information you'd like others to see, such as Roleplay-preferences:", "Game Preference" , metadata) as message|null
if(new_metadata) if(new_metadata)
metadata = sanitize(copytext(new_metadata,1,MAX_MESSAGE_LEN)) metadata = sanitize(copytext(new_metadata,1,MAX_MESSAGE_LEN))
// if("b_type")
// var/new_b_type = input(user, "Choose your character's blood-type:", "Character Preference") as null|anything in list( "A+", "A-", "B+", "B-", "AB+", "AB-", "O+", "O-" )
// if(new_b_type)
// b_type = new_b_type
if("hair") if("hair")
var/new_hair = input(user, "Choose your character's hair colour:", "Character Preference") as color|null var/new_hair = input(user, "Choose your character's hair colour:", "Character Preference") as color|null
if(new_hair) if(new_hair)
@@ -547,8 +526,7 @@ datum/preferences
if("s_tone") if("s_tone")
var/new_s_tone = input(user, "Choose your character's skin-tone:\n(Light 1 - 220 Dark)", "Character Preference") as num|null var/new_s_tone = input(user, "Choose your character's skin-tone:\n(Light 1 - 220 Dark)", "Character Preference") as num|null
if(new_s_tone) if(new_s_tone)
s_tone = max(min(round(new_s_tone), 220), 1) s_tone = 35 - max(min( round(new_s_tone), 220),1)
s_tone = -s_tone + 35
if("ooccolor") if("ooccolor")
var/new_ooccolor = input(user, "Choose your OOC colour:", "Game Preference") as color|null var/new_ooccolor = input(user, "Choose your OOC colour:", "Game Preference") as color|null
@@ -618,7 +596,7 @@ datum/preferences
proc/copy_to(mob/living/carbon/human/character, safety = 0) proc/copy_to(mob/living/carbon/human/character, safety = 0)
if(be_random_name) if(be_random_name)
randomize_name() real_name = random_name()
if(config.humans_need_surnames) if(config.humans_need_surnames)
var/firstspace = findtext(real_name, " ") var/firstspace = findtext(real_name, " ")
@@ -629,14 +607,12 @@ datum/preferences
real_name += "[pick(last_names)]" real_name += "[pick(last_names)]"
character.real_name = real_name character.real_name = real_name
character.name = character.real_name
if(character.dna) if(character.dna)
character.dna.real_name = character.real_name character.dna.real_name = character.real_name
character.gender = gender character.gender = gender
character.age = age character.age = age
character.b_type = b_type character.b_type = b_type
character.r_eyes = r_eyes character.r_eyes = r_eyes
@@ -656,17 +632,7 @@ datum/preferences
character.h_style = h_style character.h_style = h_style
character.f_style = f_style character.f_style = f_style
switch(UI_style) if(underwear > underwear_m.len || underwear < 1)
if("Midnight")
character.UI = 'icons/mob/screen1_Midnight.dmi'
if("Orange")
character.UI = 'icons/mob/screen1_Orange.dmi'
if("old")
character.UI = 'icons/mob/screen1_old.dmi'
else
character.UI = 'icons/mob/screen1_Midnight.dmi'
if(underwear > 12 || underwear < 1)
underwear = 1 //I'm sure this is 100% unnecessary, but I'm paranoid... sue me. underwear = 1 //I'm sure this is 100% unnecessary, but I'm paranoid... sue me.
character.underwear = underwear character.underwear = underwear

View File

@@ -19,6 +19,8 @@
fdel(delpath) fdel(delpath)
break break
savefile_version = 8 savefile_version = 8
if(savefile_version == SAVEFILE_VERSION_MAX) //update successful.
save_preferences() save_preferences()
save_character() save_character()
return 1 return 1
@@ -129,10 +131,10 @@
//Sanitize //Sanitize
metadata = sanitize_text(metadata, initial(metadata)) metadata = sanitize_text(metadata, initial(metadata))
real_name = reject_bad_name(real_name) real_name = reject_bad_name(real_name)
if(!real_name) randomize_name() if(!real_name) real_name = random_name()
be_random_name = sanitize_integer(be_random_name, 0, 1, initial(be_random_name)) be_random_name = sanitize_integer(be_random_name, 0, 1, initial(be_random_name))
gender = sanitize_gender(gender) gender = sanitize_gender(gender)
age = sanitize_integer(age, 17, 85, initial(age)) age = sanitize_integer(age, AGE_MIN, AGE_MAX, initial(age))
r_hair = sanitize_integer(r_hair, 0, 255, initial(r_hair)) r_hair = sanitize_integer(r_hair, 0, 255, initial(r_hair))
g_hair = sanitize_integer(g_hair, 0, 255, initial(g_hair)) g_hair = sanitize_integer(g_hair, 0, 255, initial(g_hair))
b_hair = sanitize_integer(b_hair, 0, 255, initial(b_hair)) b_hair = sanitize_integer(b_hair, 0, 255, initial(b_hair))

View File

@@ -118,4 +118,5 @@
if(!role_flag) return if(!role_flag) return
prefs.be_special ^= role_flag prefs.be_special ^= role_flag
prefs.save_preferences() prefs.save_preferences()
src << "You will [(prefs.be_special & role_flag) ? "now" : "no longer"] be considered for [role] events (where possible)." src << "You will [(prefs.be_special & role_flag) ? "now" : "no longer"] be considered for [role] events (where possible)."
feedback_add_details("admin_verb","TBeSpecial") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!

View File

@@ -21,7 +21,7 @@
var/move_delay_add = 0 // movement delay to add var/move_delay_add = 0 // movement delay to add
status_flags = CANPARALYSE status_flags = CANPARALYSE|CANPUSH
var/heal_rate = 5 var/heal_rate = 5
var/plasma_rate = 5 var/plasma_rate = 5
@@ -49,7 +49,7 @@
return 2 return 2
/mob/living/carbon/alien/updatehealth() /mob/living/carbon/alien/updatehealth()
if(nodamage) if(status_flags & GODMODE)
health = maxHealth health = maxHealth
stat = CONSCIOUS stat = CONSCIOUS
else else

View File

@@ -37,7 +37,6 @@
for(var/mob/O in viewers(src, null)) for(var/mob/O in viewers(src, null))
O.show_message(text("\green <B>[src] begins to twist and contort!</B>"), 1) O.show_message(text("\green <B>[src] begins to twist and contort!</B>"), 1)
var/mob/living/carbon/alien/humanoid/queen/new_xeno = new (loc) var/mob/living/carbon/alien/humanoid/queen/new_xeno = new (loc)
new_xeno.UI = UI
mind.transfer_to(new_xeno) mind.transfer_to(new_xeno)
del(src) del(src)
else else

View File

@@ -6,7 +6,6 @@
var/obj/item/clothing/head/head = null // var/obj/item/clothing/head/head = null //
var/obj/item/weapon/r_store = null var/obj/item/weapon/r_store = null
var/obj/item/weapon/l_store = null var/obj/item/weapon/l_store = null
// var/alien_invis = 0
var/caste = "" var/caste = ""
update_icon = 1 update_icon = 1

View File

@@ -167,7 +167,7 @@
return null return null
proc/handle_breath(datum/gas_mixture/breath) proc/handle_breath(datum/gas_mixture/breath)
if(nodamage) if(status_flags & GODMODE)
return return
if(!breath || (breath.total_moles() == 0)) if(!breath || (breath.total_moles() == 0))
@@ -459,6 +459,6 @@
del(M) del(M)
continue continue
if(air_master.current_cycle%3==1) if(air_master.current_cycle%3==1)
if(!M.nodamage) if(!(status_flags & GODMODE))
M.adjustBruteLoss(5) M.adjustBruteLoss(5)
nutrition += 10 nutrition += 10

View File

@@ -4,7 +4,7 @@
maxHealth = 250 maxHealth = 250
health = 250 health = 250
icon_state = "alienq_s" icon_state = "alienq_s"
nopush = 1 status_flags = CANPARALYSE
heal_rate = 5 heal_rate = 5
plasma_rate = 20 plasma_rate = 20

View File

@@ -37,7 +37,7 @@
src << "\red <B>You fail to push [tmob]'s fat ass out of the way.</B>" src << "\red <B>You fail to push [tmob]'s fat ass out of the way.</B>"
now_pushing = 0 now_pushing = 0
return return
if(tmob.nopush) if(!(tmob.status_flags & CANPUSH))
now_pushing = 0 now_pushing = 0
return return
tmob.LAssailant = src tmob.LAssailant = src

View File

@@ -139,7 +139,7 @@
return null return null
proc/handle_breath(datum/gas_mixture/breath) proc/handle_breath(datum/gas_mixture/breath)
if(nodamage) if(status_flags & GODMODE)
return return
if(!breath || (breath.total_moles() == 0)) if(!breath || (breath.total_moles() == 0))
@@ -378,6 +378,6 @@
del(M) del(M)
continue continue
if(air_master.current_cycle%3==1) if(air_master.current_cycle%3==1)
if(!M.nodamage) if(!(M.status_flags & GODMODE))
M.adjustBruteLoss(5) M.adjustBruteLoss(5)
nutrition += 10 nutrition += 10

View File

@@ -44,7 +44,6 @@
new_xeno = new /mob/living/carbon/alien/humanoid/sentinel(loc) new_xeno = new /mob/living/carbon/alien/humanoid/sentinel(loc)
if("Drone") if("Drone")
new_xeno = new /mob/living/carbon/alien/humanoid/drone(loc) new_xeno = new /mob/living/carbon/alien/humanoid/drone(loc)
new_xeno.UI = UI
if(mind) mind.transfer_to(new_xeno) if(mind) mind.transfer_to(new_xeno)
del(src) del(src)
return return

View File

@@ -91,7 +91,7 @@
return //TODO: DEFERRED return //TODO: DEFERRED
proc/handle_temperature_damage(body_part, exposed_temperature, exposed_intensity) proc/handle_temperature_damage(body_part, exposed_temperature, exposed_intensity)
if(nodamage) return if(status_flags & GODMODE) return
if(exposed_temperature > bodytemperature) if(exposed_temperature > bodytemperature)
var/discomfort = min( abs(exposed_temperature - bodytemperature)*(exposed_intensity)/2000000, 1.0) var/discomfort = min( abs(exposed_temperature - bodytemperature)*(exposed_intensity)/2000000, 1.0)

View File

@@ -8,7 +8,7 @@
/mob/living/carbon/human/dummy /mob/living/carbon/human/dummy
real_name = "Test Dummy" real_name = "Test Dummy"
nodamage = 1 status_flags = GODMODE|CANPUSH
@@ -82,7 +82,7 @@
if(prob(99)) if(prob(99))
now_pushing = 0 now_pushing = 0
return return
if(tmob.nopush) if(!(tmob.status_flags & CANPUSH))
now_pushing = 0 now_pushing = 0
return return

View File

@@ -1,6 +1,6 @@
//Updates the mob's health from organs and mob damage variables //Updates the mob's health from organs and mob damage variables
/mob/living/carbon/human/updatehealth() /mob/living/carbon/human/updatehealth()
if(nodamage) if(status_flags & GODMODE)
health = 100 health = 100
stat = CONSCIOUS stat = CONSCIOUS
return return
@@ -117,7 +117,7 @@
// damage MANY external organs, in random order // damage MANY external organs, in random order
/mob/living/carbon/human/take_overall_damage(var/brute, var/burn) /mob/living/carbon/human/take_overall_damage(var/brute, var/burn)
if(nodamage) return //godmode if(status_flags & GODMODE) return //godmode
var/list/datum/organ/external/parts = get_damageable_organs() var/list/datum/organ/external/parts = get_damageable_organs()
var/update = 0 var/update = 0
while(parts.len && (brute>0 || burn>0) ) while(parts.len && (brute>0 || burn>0) )

View File

@@ -329,7 +329,7 @@
proc/handle_breath(datum/gas_mixture/breath) proc/handle_breath(datum/gas_mixture/breath)
if(nodamage || REBREATHER in augmentations) if((status_flags & GODMODE) || REBREATHER in augmentations)
return return
if(!breath || (breath.total_moles() == 0) || suiciding) if(!breath || (breath.total_moles() == 0) || suiciding)
@@ -1245,7 +1245,7 @@
del(M) del(M)
continue continue
if(air_master.current_cycle%3==1) if(air_master.current_cycle%3==1)
if(!M.nodamage) if(!(M.status_flags & GODMODE))
M.adjustBruteLoss(5) M.adjustBruteLoss(5)
nutrition += 10 nutrition += 10

View File

@@ -19,7 +19,7 @@
// canstun and canweaken don't affect metroids because they ignore stun and weakened variables // canstun and canweaken don't affect metroids because they ignore stun and weakened variables
// for the sake of cleanliness, though, here they are. // for the sake of cleanliness, though, here they are.
status_flags = CANPARALYSE status_flags = CANPARALYSE|CANPUSH
var/cores = 3 // the number of /obj/item/metroid_core's the metroid has left inside var/cores = 3 // the number of /obj/item/metroid_core's the metroid has left inside
@@ -681,18 +681,18 @@ mob/living/carbon/metroid/var/temperature_resistance = T0C+75
return return
/mob/living/carbon/metroid/updatehealth() /mob/living/carbon/metroid/updatehealth()
if (nodamage == 0) if(status_flags & GODMODE)
if(istype(src, /mob/living/carbon/metroid/adult))
health = 200
else
health = 150
stat = CONSCIOUS
else
// metroids can't suffocate unless they suicide. They are also not harmed by fire // metroids can't suffocate unless they suicide. They are also not harmed by fire
if(istype(src, /mob/living/carbon/metroid/adult)) if(istype(src, /mob/living/carbon/metroid/adult))
health = 200 - (getOxyLoss() + getToxLoss() + getFireLoss() + getBruteLoss() + getCloneLoss()) health = 200 - (getOxyLoss() + getToxLoss() + getFireLoss() + getBruteLoss() + getCloneLoss())
else else
health = 150 - (getOxyLoss() + getToxLoss() + getFireLoss() + getBruteLoss() + getCloneLoss()) health = 150 - (getOxyLoss() + getToxLoss() + getFireLoss() + getBruteLoss() + getCloneLoss())
else
if(istype(src, /mob/living/carbon/metroid/adult))
health = 200
else
health = 150
stat = 0
/mob/living/carbon/metroid/proc/get_obstacle_ok(atom/A) /mob/living/carbon/metroid/proc/get_obstacle_ok(atom/A)

View File

@@ -223,7 +223,7 @@
return null return null
proc/handle_breath(datum/gas_mixture/breath) proc/handle_breath(datum/gas_mixture/breath)
if(nodamage) if(status_flags & GODMODE)
return return
if(!breath || (breath.total_moles() == 0)) if(!breath || (breath.total_moles() == 0))
@@ -357,7 +357,7 @@
return return
proc/handle_temperature_damage(body_part, exposed_temperature, exposed_intensity) proc/handle_temperature_damage(body_part, exposed_temperature, exposed_intensity)
if(nodamage) return if(status_flags & GODMODE) return
var/discomfort = min( abs(exposed_temperature - bodytemperature)*(exposed_intensity)/2000000, 1.0) var/discomfort = min( abs(exposed_temperature - bodytemperature)*(exposed_intensity)/2000000, 1.0)
//adjustFireLoss(2.5*discomfort) //adjustFireLoss(2.5*discomfort)

View File

@@ -66,7 +66,7 @@
usr << "\red <B>You fail to push [tmob]'s fat ass out of the way.</B>" usr << "\red <B>You fail to push [tmob]'s fat ass out of the way.</B>"
now_pushing = 0 now_pushing = 0
return return
if(tmob.nopush) if(!(tmob.status_flags & CANPUSH))
now_pushing = 0 now_pushing = 0
return return

View File

@@ -8,11 +8,11 @@
/mob/living/proc/updatehealth() /mob/living/proc/updatehealth()
if(nodamage) if(status_flags & GODMODE)
src.health = 100 health = 100
src.stat = 0 stat = CONSCIOUS
else else
src.health = src.maxHealth - src.getOxyLoss() - src.getToxLoss() - src.getFireLoss() - src.getBruteLoss() - src.getCloneLoss() - src.halloss health = maxHealth - getOxyLoss() - getToxLoss() - getFireLoss() - getBruteLoss() - getCloneLoss() - halloss
//This proc is used for mobs which are affected by pressure to calculate the amount of pressure that actually //This proc is used for mobs which are affected by pressure to calculate the amount of pressure that actually
@@ -75,69 +75,69 @@
return bruteloss return bruteloss
/mob/living/proc/adjustBruteLoss(var/amount) /mob/living/proc/adjustBruteLoss(var/amount)
if(src.nodamage) return 0 //godmode if(status_flags & GODMODE) return 0 //godmode
bruteloss = min(max(bruteloss + amount, 0),(maxHealth*2)) bruteloss = min(max(bruteloss + amount, 0),(maxHealth*2))
/mob/living/proc/getOxyLoss() /mob/living/proc/getOxyLoss()
return oxyloss return oxyloss
/mob/living/proc/adjustOxyLoss(var/amount) /mob/living/proc/adjustOxyLoss(var/amount)
if(src.nodamage) return 0 //godmode if(status_flags & GODMODE) return 0 //godmode
oxyloss = min(max(oxyloss + amount, 0),(maxHealth*2)) oxyloss = min(max(oxyloss + amount, 0),(maxHealth*2))
/mob/living/proc/setOxyLoss(var/amount) /mob/living/proc/setOxyLoss(var/amount)
if(src.nodamage) return 0 //godmode if(status_flags & GODMODE) return 0 //godmode
oxyloss = amount oxyloss = amount
/mob/living/proc/getToxLoss() /mob/living/proc/getToxLoss()
return toxloss return toxloss
/mob/living/proc/adjustToxLoss(var/amount) /mob/living/proc/adjustToxLoss(var/amount)
if(src.nodamage) return 0 //godmode if(status_flags & GODMODE) return 0 //godmode
toxloss = min(max(toxloss + amount, 0),(maxHealth*2)) toxloss = min(max(toxloss + amount, 0),(maxHealth*2))
/mob/living/proc/setToxLoss(var/amount) /mob/living/proc/setToxLoss(var/amount)
if(src.nodamage) return 0 //godmode if(status_flags & GODMODE) return 0 //godmode
toxloss = amount toxloss = amount
/mob/living/proc/getFireLoss() /mob/living/proc/getFireLoss()
return fireloss return fireloss
/mob/living/proc/adjustFireLoss(var/amount) /mob/living/proc/adjustFireLoss(var/amount)
if(src.nodamage) return 0 //godmode if(status_flags & GODMODE) return 0 //godmode
fireloss = min(max(fireloss + amount, 0),(maxHealth*2)) fireloss = min(max(fireloss + amount, 0),(maxHealth*2))
/mob/living/proc/getCloneLoss() /mob/living/proc/getCloneLoss()
return cloneloss return cloneloss
/mob/living/proc/adjustCloneLoss(var/amount) /mob/living/proc/adjustCloneLoss(var/amount)
if(src.nodamage) return 0 //godmode if(status_flags & GODMODE) return 0 //godmode
cloneloss = min(max(cloneloss + amount, 0),(maxHealth*2)) cloneloss = min(max(cloneloss + amount, 0),(maxHealth*2))
/mob/living/proc/setCloneLoss(var/amount) /mob/living/proc/setCloneLoss(var/amount)
if(src.nodamage) return 0 //godmode if(status_flags & GODMODE) return 0 //godmode
cloneloss = amount cloneloss = amount
/mob/living/proc/getBrainLoss() /mob/living/proc/getBrainLoss()
return brainloss return brainloss
/mob/living/proc/adjustBrainLoss(var/amount) /mob/living/proc/adjustBrainLoss(var/amount)
if(src.nodamage) return 0 //godmode if(status_flags & GODMODE) return 0 //godmode
brainloss = min(max(brainloss + amount, 0),(maxHealth*2)) brainloss = min(max(brainloss + amount, 0),(maxHealth*2))
/mob/living/proc/setBrainLoss(var/amount) /mob/living/proc/setBrainLoss(var/amount)
if(src.nodamage) return 0 //godmode if(status_flags & GODMODE) return 0 //godmode
brainloss = amount brainloss = amount
/mob/living/proc/getHalLoss() /mob/living/proc/getHalLoss()
return halloss return halloss
/mob/living/proc/adjustHalLoss(var/amount) /mob/living/proc/adjustHalLoss(var/amount)
if(src.nodamage) return 0 //godmode if(status_flags & GODMODE) return 0 //godmode
halloss = min(max(halloss + amount, 0),(maxHealth*2)) halloss = min(max(halloss + amount, 0),(maxHealth*2))
/mob/living/proc/setHalLoss(var/amount) /mob/living/proc/setHalLoss(var/amount)
if(src.nodamage) return 0 //godmode if(status_flags & GODMODE) return 0 //godmode
halloss = amount halloss = amount
/mob/living/proc/getMaxHealth() /mob/living/proc/getMaxHealth()

View File

@@ -9,7 +9,7 @@
var/list/visibleCameraChunks = list() var/list/visibleCameraChunks = list()
var/mob/living/silicon/ai/ai = null var/mob/living/silicon/ai/ai = null
density = 0 density = 0
nodamage = 1 // You can't damage it. status_flags = GODMODE // You can't damage it.
mouse_opacity = 0 mouse_opacity = 0
// Movement code. Returns 0 to stop air movement from moving it. // Movement code. Returns 0 to stop air movement from moving it.

View File

@@ -171,11 +171,11 @@
theAPC = null theAPC = null
/mob/living/silicon/ai/updatehealth() /mob/living/silicon/ai/updatehealth()
if (src.nodamage == 0) if(status_flags & GODMODE)
if(src.fire_res_on_core) health = 100
src.health = 100 - src.getOxyLoss() - src.getToxLoss() - src.getBruteLoss() stat = CONSCIOUS
else
src.health = 100 - src.getOxyLoss() - src.getToxLoss() - src.getFireLoss() - src.getBruteLoss()
else else
src.health = 100 if(fire_res_on_core)
src.stat = 0 health = 100 - getOxyLoss() - getToxLoss() - getBruteLoss()
else
health = 100 - getOxyLoss() - getToxLoss() - getFireLoss() - getBruteLoss()

View File

@@ -8,8 +8,8 @@
/mob/living/silicon/decoy/updatehealth() /mob/living/silicon/decoy/updatehealth()
if (src.nodamage == 0) if(status_flags & GODMODE)
src.health = 100 - src.getOxyLoss() - src.getToxLoss() - src.getFireLoss() - src.getBruteLoss() health = 100
stat = CONSCIOUS
else else
src.health = 100 health = 100 - getOxyLoss() - getToxLoss() - getFireLoss() - getBruteLoss()
src.stat = 0

View File

@@ -19,8 +19,9 @@
src << "<font color=green>Communication circuit reinitialized. Speech and messaging functionality restored.</font>" src << "<font color=green>Communication circuit reinitialized. Speech and messaging functionality restored.</font>"
/mob/living/silicon/pai/updatehealth() /mob/living/silicon/pai/updatehealth()
if(src.nodamage) if(status_flags & GODMODE)
src.health = 100 health = 100
src.stat = 0 stat = CONSCIOUS
else else
src.health = 100 - src.getBruteLoss() - src.getFireLoss() health = 100 - getBruteLoss() - getFireLoss()

View File

@@ -155,7 +155,7 @@
hands.icon_state = "medical" hands.icon_state = "medical"
icon_state = "surgeon" icon_state = "surgeon"
modtype = "Med" modtype = "Med"
nopush = 1 status_flags &= ~CANPUSH
feedback_inc("cyborg_medical",1) feedback_inc("cyborg_medical",1)
if("Security") if("Security")
@@ -165,7 +165,7 @@
icon_state = "bloodhound" icon_state = "bloodhound"
modtype = "Sec" modtype = "Sec"
//speed = -1 Secborgs have nerfed tasers now, so the speed boost is not necessary //speed = -1 Secborgs have nerfed tasers now, so the speed boost is not necessary
nopush = 1 status_flags &= ~CANPUSH
feedback_inc("cyborg_security",1) feedback_inc("cyborg_security",1)
if("Engineering") if("Engineering")
@@ -327,7 +327,7 @@
usr << "\red <B>You fail to push [tmob]'s fat ass out of the way.</B>" usr << "\red <B>You fail to push [tmob]'s fat ass out of the way.</B>"
now_pushing = 0 now_pushing = 0
return return
if(tmob.nopush) if(!(tmob.status_flags & CANPUSH))
now_pushing = 0 now_pushing = 0
return return
now_pushing = 0 now_pushing = 0

View File

@@ -185,7 +185,7 @@
src << "\red <B>You fail to push [tmob]'s fat ass out of the way.</B>" src << "\red <B>You fail to push [tmob]'s fat ass out of the way.</B>"
now_pushing = 0 now_pushing = 0
return return
if(tmob.nopush) if(!(tmob.status_flags & CANPUSH))
now_pushing = 0 now_pushing = 0
return return

View File

@@ -64,7 +64,7 @@
src << "\red <B>You fail to push [tmob]'s fat ass out of the way.</B>" src << "\red <B>You fail to push [tmob]'s fat ass out of the way.</B>"
now_pushing = 0 now_pushing = 0
return return
if(tmob.nopush) if(!(tmob.status_flags & CANPUSH))
now_pushing = 0 now_pushing = 0
return return
@@ -142,7 +142,6 @@
attacktext = "smashes their armoured gauntlet into" attacktext = "smashes their armoured gauntlet into"
speed = 3 speed = 3
wall_smash = 1 wall_smash = 1
nopush = 1
attack_sound = 'sound/weapons/punch3.ogg' attack_sound = 'sound/weapons/punch3.ogg'
/mob/living/simple_animal/construct/armoured/attackby(var/obj/item/O as obj, var/mob/user as mob) /mob/living/simple_animal/construct/armoured/attackby(var/obj/item/O as obj, var/mob/user as mob)
@@ -212,7 +211,6 @@
attacktext = "rams" attacktext = "rams"
speed = 0 speed = 0
wall_smash = 1 wall_smash = 1
nopush = 1
attack_sound = 'sound/weapons/punch2.ogg' attack_sound = 'sound/weapons/punch2.ogg'
@@ -236,7 +234,6 @@
attacktext = "brutally crushes" attacktext = "brutally crushes"
speed = 5 speed = 5
wall_smash = 1 wall_smash = 1
nopush = 1
attack_sound = 'sound/weapons/punch4.ogg' attack_sound = 'sound/weapons/punch4.ogg'
var/energy = 0 var/energy = 0
var/max_energy = 1000 var/max_energy = 1000

View File

@@ -326,7 +326,7 @@
src << "\red <B>You fail to push [tmob]'s fat ass out of the way.</B>" src << "\red <B>You fail to push [tmob]'s fat ass out of the way.</B>"
now_pushing = 0 now_pushing = 0
return return
if(tmob.nopush) if(!(tmob.status_flags & CANPUSH))
now_pushing = 0 now_pushing = 0
return return

View File

@@ -262,7 +262,7 @@
if("grab") if("grab")
if (M == src) if (M == src)
return return
if (nopush) if (!(status_flags & CANPUSH))
return return
var/obj/item/weapon/grab/G = new /obj/item/weapon/grab( M, M, src ) var/obj/item/weapon/grab/G = new /obj/item/weapon/grab( M, M, src )
@@ -301,7 +301,7 @@
if ("grab") if ("grab")
if(M == src) if(M == src)
return return
if (nopush) if(!(status_flags & CANPUSH))
return return
var/obj/item/weapon/grab/G = new /obj/item/weapon/grab( M, M, src ) var/obj/item/weapon/grab/G = new /obj/item/weapon/grab( M, M, src )

View File

@@ -186,7 +186,7 @@
weapon1 = /obj/item/weapon/melee/energy/sword/red weapon1 = /obj/item/weapon/melee/energy/sword/red
weapon2 = /obj/item/weapon/shield/energy weapon2 = /obj/item/weapon/shield/energy
attacktext = "slashes" attacktext = "slashes"
nopush = 1 status_flags = CANSTUN|CANWEAKEN|CANPARALYSE
/mob/living/simple_animal/syndicate/melee/attackby(var/obj/item/O as obj, var/mob/user as mob) /mob/living/simple_animal/syndicate/melee/attackby(var/obj/item/O as obj, var/mob/user as mob)
if(O.force) if(O.force)
@@ -276,7 +276,7 @@
src << "\red <B>You fail to push [tmob]'s fat ass out of the way.</B>" src << "\red <B>You fail to push [tmob]'s fat ass out of the way.</B>"
now_pushing = 0 now_pushing = 0
return return
if(tmob.nopush) if(!(tmob.status_flags & CANPUSH))
now_pushing = 0 now_pushing = 0
return return

View File

@@ -5,6 +5,7 @@
icon_state = "spaceworm" icon_state = "spaceworm"
icon_living = "spaceworm" icon_living = "spaceworm"
icon_dead = "spacewormdead" icon_dead = "spacewormdead"
status_flags = 0
speak_emote = list("transmits") //not supposed to be used under AI control speak_emote = list("transmits") //not supposed to be used under AI control
emote_hear = list("transmits") //I'm just adding it so it doesn't runtime if controlled by player who speaks emote_hear = list("transmits") //I'm just adding it so it doesn't runtime if controlled by player who speaks
@@ -29,7 +30,6 @@
a_intent = "harm" //so they don't get pushed around a_intent = "harm" //so they don't get pushed around
nopush = 1
wall_smash = 1 wall_smash = 1
speed = -1 speed = -1

View File

@@ -10,7 +10,6 @@
//Not in use yet //Not in use yet
var/obj/effect/organstructure/organStructure = null var/obj/effect/organstructure/organStructure = null
// var/uses_hud = 0
var/obj/screen/flash = null var/obj/screen/flash = null
var/obj/screen/blind = null var/obj/screen/blind = null
var/obj/screen/hands = null var/obj/screen/hands = null
@@ -61,11 +60,9 @@
var/ear_damage = null //Carbon var/ear_damage = null //Carbon
var/stuttering = null //Carbon var/stuttering = null //Carbon
var/real_name = null var/real_name = null
// var/original_name = null //Original name is only used in ghost chat! Depracated, now used bb
var/blinded = null var/blinded = null
var/bhunger = 0 //Carbon var/bhunger = 0 //Carbon
var/ajourn = 0 var/ajourn = 0
// var/rejuv = null
var/druggy = 0 //Carbon var/druggy = 0 //Carbon
var/confused = 0 //Carbon var/confused = 0 //Carbon
var/antitoxs = null var/antitoxs = null
@@ -120,7 +117,6 @@
var/datum/hud/hud_used = null var/datum/hud/hud_used = null
//var/list/organs = list( ) //moved to human.
var/list/grabbed_by = list( ) var/list/grabbed_by = list( )
var/list/requests = list( ) var/list/requests = list( )
@@ -137,10 +133,6 @@
var/job = null//Living var/job = null//Living
var/nodamage = 0
var/be_syndicate = 0//This really should be a client variable.
var/be_random_name = 0
var/const/blindness = 1//Carbon var/const/blindness = 1//Carbon
var/const/deafness = 2//Carbon var/const/deafness = 2//Carbon
var/const/muteness = 4//Carbon var/const/muteness = 4//Carbon
@@ -193,10 +185,7 @@
var/update_icon = 1 //Set to 1 to trigger update_icons() at the next life() call var/update_icon = 1 //Set to 1 to trigger update_icons() at the next life() call
var/UI = 'icons/mob/screen1_Midnight.dmi' // For changing the UI from preferences var/status_flags = CANSTUN|CANWEAKEN|CANPARALYSE|CANPUSH //bitflags defining which status effects can be inflicted (replaces canweaken, canstun, etc)
var/status_flags = 255 //bitflags defining which status effects can be inflicted (replaces canweaken, canstun, etc)
var/nopush = 0 //Can they be shoved?
var/area/lastarea = null var/area/lastarea = null
@@ -211,4 +200,4 @@
//Whether or not mobs can understand other mobtypes. These stay in /mob so that ghosts can hear everything. //Whether or not mobs can understand other mobtypes. These stay in /mob so that ghosts can hear everything.
var/universal_speak = 0 // Set to 1 to enable the mob to speak to everyone -- TLE var/universal_speak = 0 // Set to 1 to enable the mob to speak to everyone -- TLE
var/robot_talk_understand = 0 var/robot_talk_understand = 0
var/alien_talk_understand = 0 var/alien_talk_understand = 0

View File

@@ -41,7 +41,6 @@
M.real_name = src.real_name M.real_name = src.real_name
M.dna = src.dna M.dna = src.dna
M.UI = src.UI
if(mind) if(mind)
mind.transfer_to(M) mind.transfer_to(M)

View File

@@ -114,9 +114,9 @@
src << "\blue Now teleporting." src << "\blue Now teleporting."
observer.loc = O.loc observer.loc = O.loc
if(client.prefs.be_random_name) if(client.prefs.be_random_name)
client.prefs.randomize_name() client.prefs.real_name = random_name()
observer.name = client.prefs.real_name observer.real_name = client.prefs.real_name
observer.real_name = observer.name observer.name = observer.real_name
observer.key = key observer.key = key
del(src) del(src)
@@ -296,7 +296,7 @@
if(ticker.random_players) if(ticker.random_players)
new_character.gender = pick(MALE, FEMALE) new_character.gender = pick(MALE, FEMALE)
client.prefs.randomize_name() client.prefs.real_name = random_name()
client.prefs.randomize_appearance_for(new_character) client.prefs.randomize_appearance_for(new_character)
else else
client.prefs.copy_to(new_character) client.prefs.copy_to(new_character)

View File

@@ -5,171 +5,30 @@ datum/preferences
gender = MALE gender = MALE
else else
gender = FEMALE gender = FEMALE
randomize_skin_tone() s_tone = random_skin_tone()
randomize_hair(gender) h_style = random_hair_style(gender)
randomize_hair_color("hair") f_style = random_facial_hair_style(gender)
if(gender == MALE)//only for dudes. r_hair = rand(0,255)
randomize_facial() g_hair = rand(0,255)
randomize_hair_color("facial") b_hair = rand(0,255)
randomize_eyes_color() r_facial = r_hair
underwear = 1 g_facial = g_hair
b_facial = b_hair
r_eyes = rand(0,255)
g_eyes = rand(0,255)
b_eyes = rand(0,255)
underwear = rand(1,underwear_m.len)
backbag = 2 backbag = 2
age = rand(19,35) age = rand(AGE_MIN,AGE_MAX)
copy_to(H,1) copy_to(H,1)
proc/randomize_name() proc/update_preview_icon() //seriously. This is horrendous.
if(gender == MALE)
real_name = capitalize(pick(first_names_male) + " " + capitalize(pick(last_names)))
else
real_name = capitalize(pick(first_names_female) + " " + capitalize(pick(last_names)))
return
proc/randomize_hair(var/gender)
h_style = pick(hair_styles_list)
proc/randomize_facial() // uncommented, see randomize_hair() for commentation
f_style = pick(facial_hair_styles_list)
proc/randomize_skin_tone()
var/tone
var/tmp = pickweight ( list ("caucasian" = 55, "afroamerican" = 15, "african" = 10, "latino" = 10, "albino" = 5, "weird" = 5))
switch (tmp)
if ("caucasian")
tone = -45 + 35
if ("afroamerican")
tone = -150 + 35
if ("african")
tone = -200 + 35
if ("latino")
tone = -90 + 35
if ("albino")
tone = -1 + 35
if ("weird")
tone = -(rand (1, 220)) + 35
s_tone = min(max(tone + rand (-25, 25), -185), 34)
proc/randomize_hair_color(var/target = "hair")
if (prob (75) && target == "facial") // Chance to inherit hair color
r_facial = r_hair
g_facial = g_hair
b_facial = b_hair
return
var/red
var/green
var/blue
var/col = pick ("blonde", "black", "chestnut", "copper", "brown", "wheat", "old", "punk")
switch (col)
if ("blonde")
red = 255
green = 255
blue = 0
if ("black")
red = 0
green = 0
blue = 0
if ("chestnut")
red = 153
green = 102
blue = 51
if ("copper")
red = 255
green = 153
blue = 0
if ("brown")
red = 102
green = 51
blue = 0
if ("wheat")
red = 255
green = 255
blue = 153
if ("old")
red = rand (100, 255)
green = red
blue = red
if ("punk")
red = rand (0, 255)
green = rand (0, 255)
blue = rand (0, 255)
red = max(min(red + rand (-25, 25), 255), 0)
green = max(min(green + rand (-25, 25), 255), 0)
blue = max(min(blue + rand (-25, 25), 255), 0)
switch(target)
if ("hair")
r_hair = red
g_hair = green
b_hair = blue
if ("facial")
r_facial = red
g_facial = green
b_facial = blue
proc/randomize_eyes_color()
var/red
var/green
var/blue
var/col = pick ("black", "grey", "brown", "chestnut", "blue", "lightblue", "green", "albino", "weird")
switch (col)
if ("black")
red = 0
green = 0
blue = 0
if ("grey")
red = rand (100, 200)
green = red
blue = red
if ("brown")
red = 102
green = 51
blue = 0
if ("chestnut")
red = 153
green = 102
blue = 0
if ("blue")
red = 51
green = 102
blue = 204
if ("lightblue")
red = 102
green = 204
blue = 255
if ("green")
red = 0
green = 102
blue = 0
if ("albino")
red = rand (200, 255)
green = rand (0, 150)
blue = rand (0, 150)
if ("weird")
red = rand (0, 255)
green = rand (0, 255)
blue = rand (0, 255)
red = max(min(red + rand (-25, 25), 255), 0)
green = max(min(green + rand (-25, 25), 255), 0)
blue = max(min(blue + rand (-25, 25), 255), 0)
r_eyes = red
g_eyes = green
b_eyes = blue
proc/update_preview_icon()
del(preview_icon_front) del(preview_icon_front)
del(preview_icon_side) del(preview_icon_side)
var/icon/preview_icon = null var/icon/preview_icon = null
var/g = "m" var/g = "m"
if (gender == FEMALE) g = "f" if(gender == FEMALE) g = "f"
preview_icon = new /icon('icons/mob/human.dmi', "body_[g]_s") preview_icon = new /icon('icons/mob/human.dmi', "body_[g]_s")
@@ -492,47 +351,4 @@ datum/preferences
del(preview_icon) del(preview_icon)
del(eyes_s) del(eyes_s)
del(clothes_s) del(clothes_s)
proc/skintone2racedescription(var/tone)
switch (tone)
if(30 to INFINITY)
return "albino"
if(20 to 30)
return "pale"
if(5 to 15)
return "light skinned"
if(-10 to 5)
return "white"
if(-25 to -10)
return "tan"
if(-45 to -25)
return "darker skinned"
if(-65 to -45)
return "brown"
if(-INFINITY to -65)
return "black"
proc/age2agedescription(var/age)
switch (age)
if(0 to 1)
return "infant"
if(1 to 3)
return "toddler"
if(3 to 13)
return "child"
if(13 to 19)
return "teenager"
if(19 to 30)
return "young adult"
if(30 to 45)
return "adult"
if(45 to 60)
return "middle-aged"
if(60 to 70)
return "aging"
if(70 to INFINITY)
return "elderly"

View File

@@ -26,8 +26,7 @@
var/name // the preview name of the accessory var/name // the preview name of the accessory
// Determines if the accessory will be skipped or included in random hair generations // Determines if the accessory will be skipped or included in random hair generations
var/choose_female = 1 var/gender = NEUTER
var/choose_male = 1
/* /*
@@ -97,12 +96,12 @@
pompadour pompadour
name = "Pompadour" name = "Pompadour"
icon_state = "hair_pompadour" icon_state = "hair_pompadour"
choose_female = 0 gender = MALE
quiff quiff
name = "Quiff" name = "Quiff"
icon_state = "hair_quiff" icon_state = "hair_quiff"
choose_female = 0 gender = MALE
bedhead bedhead
name = "Bedhead" name = "Bedhead"
@@ -119,37 +118,37 @@
beehive beehive
name = "Beehive" name = "Beehive"
icon_state = "hair_beehive" icon_state = "hair_beehive"
choose_male = 0 gender = FEMALE
bobcurl bobcurl
name = "Bobcurl" name = "Bobcurl"
icon_state = "hair_bobcurl" icon_state = "hair_bobcurl"
choose_male = 0 gender = FEMALE
bob bob
name = "Bob" name = "Bob"
icon_state = "hair_bobcut" icon_state = "hair_bobcut"
choose_male = 0 gender = FEMALE
bowl bowl
name = "Bowl" name = "Bowl"
icon_state = "hair_bowlcut" icon_state = "hair_bowlcut"
choose_female = 0 gender = MALE
buzz buzz
name = "Buzzcut" name = "Buzzcut"
icon_state = "hair_buzzcut" icon_state = "hair_buzzcut"
choose_female = 0 gender = MALE
crew crew
name = "Crewcut" name = "Crewcut"
icon_state = "hair_crewcut" icon_state = "hair_crewcut"
choose_female = 0 gender = MALE
combover combover
name = "Combover" name = "Combover"
icon_state = "hair_combover" icon_state = "hair_combover"
choose_female = 0 gender = MALE
devillock devillock
name = "Devil Lock" name = "Devil Lock"
@@ -158,7 +157,7 @@
dreadlocks dreadlocks
name = "Dreadlocks" name = "Dreadlocks"
icon_state = "hair_dreads" icon_state = "hair_dreads"
choose_female = 0 // okay.jpg gender = MALE // okay.jpg
curls curls
name = "Curls" name = "Curls"
@@ -175,12 +174,12 @@
afro_large afro_large
name = "Big Afro" name = "Big Afro"
icon_state = "hair_bigafro" icon_state = "hair_bigafro"
choose_female = 0 gender = MALE
sargeant sargeant
name = "Flat Top" name = "Flat Top"
icon_state = "hair_sargeant" icon_state = "hair_sargeant"
choose_female = 0 gender = MALE
emo emo
name = "Emo" name = "Emo"
@@ -197,27 +196,27 @@
hitop hitop
name = "Hitop" name = "Hitop"
icon_state = "hair_hitop" icon_state = "hair_hitop"
choose_female = 0 gender = MALE
mohawk mohawk
name = "Mohawk" name = "Mohawk"
icon_state = "hair_d" icon_state = "hair_d"
choose_female = 0 // gross gender = MALE // gross
jensen jensen
name = "Adam Jensen Hair" name = "Adam Jensen Hair"
icon_state = "hair_jensen" icon_state = "hair_jensen"
choose_female = 0 gender = MALE
gelled gelled
name = "Gelled Back" name = "Gelled Back"
icon_state = "hair_gelled" icon_state = "hair_gelled"
choose_male = 0 gender = FEMALE
spiky spiky
name = "Spiky" name = "Spiky"
icon_state = "hair_spikey" icon_state = "hair_spikey"
choose_female = 0 gender = MALE
kusangi kusangi
name = "Kusanagi Hair" name = "Kusanagi Hair"
@@ -226,32 +225,32 @@
kagami kagami
name = "Pigtails" name = "Pigtails"
icon_state = "hair_kagami" icon_state = "hair_kagami"
choose_male = 0 gender = FEMALE
himecut himecut
name = "Hime Cut" name = "Hime Cut"
icon_state = "hair_himecut" icon_state = "hair_himecut"
choose_male = 0 gender = FEMALE
braid braid
name = "Floorlength Braid" name = "Floorlength Braid"
icon_state = "hair_braid" icon_state = "hair_braid"
choose_male = 0 gender = FEMALE
odango odango
name = "Odango" name = "Odango"
icon_state = "hair_odango" icon_state = "hair_odango"
choose_male = 0 gender = FEMALE
ombre ombre
name = "Ombre" name = "Ombre"
icon_state = "hair_ombre" icon_state = "hair_ombre"
choose_male = 0 gender = FEMALE
updo updo
name = "Updo" name = "Updo"
icon_state = "hair_updo" icon_state = "hair_updo"
choose_male = 0 gender = FEMALE
skinhead skinhead
name = "Skinhead" name = "Skinhead"
@@ -260,12 +259,12 @@
balding balding
name = "Balding Hair" name = "Balding Hair"
icon_state = "hair_e" icon_state = "hair_e"
choose_female = 0 // turnoff! gender = MALE // turnoff!
bald bald
name = "Bald" name = "Bald"
icon_state = "bald" icon_state = "bald"
choose_female = 0 gender = MALE
/* /*
/////////////////////////////////// ///////////////////////////////////
@@ -278,12 +277,12 @@
/datum/sprite_accessory/facial_hair /datum/sprite_accessory/facial_hair
icon = 'icons/mob/human_face.dmi' icon = 'icons/mob/human_face.dmi'
choose_female = 0 // barf (unless you're a dorf, dorfs dig chix /w beards :P) gender = MALE // barf (unless you're a dorf, dorfs dig chix /w beards :P)
shaved shaved
name = "Shaved" name = "Shaved"
icon_state = "bald" icon_state = "bald"
choose_female = 1 // shaved is the only facial hair on women because why would chicks have beards??? gender = NEUTER
watson watson
name = "Watson Mustache" name = "Watson Mustache"
@@ -348,9 +347,3 @@
dwarf dwarf
name = "Dwarf Beard" name = "Dwarf Beard"
icon_state = "facial_dwarf" icon_state = "facial_dwarf"

View File

@@ -24,7 +24,6 @@
del(animation) del(animation)
O.name = "monkey" O.name = "monkey"
O.UI = UI
O.dna = dna O.dna = dna
dna = null dna = null
O.dna.uni_identity = "00600200A00E0110148FC01300B009" O.dna.uni_identity = "00600200A00E0110148FC01300B009"
@@ -124,7 +123,6 @@
O.verbs += /mob/living/silicon/ai/proc/ai_roster O.verbs += /mob/living/silicon/ai/proc/ai_roster
O.job = "AI" O.job = "AI"
O.UI = UI
O.rename_self("ai",1) O.rename_self("ai",1)
. = O . = O
@@ -156,7 +154,6 @@
O.gender = gender O.gender = gender
O.invisibility = 0 O.invisibility = 0
O.UI = UI
if(mind) //TODO if(mind) //TODO
mind.transfer_to(O) mind.transfer_to(O)
@@ -203,7 +200,6 @@
new_xeno = new /mob/living/carbon/alien/humanoid/drone(loc) new_xeno = new /mob/living/carbon/alien/humanoid/drone(loc)
new_xeno.a_intent = "hurt" new_xeno.a_intent = "hurt"
new_xeno.UI = UI
new_xeno.key = key new_xeno.key = key
new_xeno << "<B>You are now an alien.</B>" new_xeno << "<B>You are now an alien.</B>"
@@ -240,7 +236,6 @@
else else
new_metroid = new /mob/living/carbon/metroid(loc) new_metroid = new /mob/living/carbon/metroid(loc)
new_metroid.a_intent = "hurt" new_metroid.a_intent = "hurt"
new_metroid.UI = UI
new_metroid.key = key new_metroid.key = key
new_metroid << "<B>You are now a Metroid. Skreee!</B>" new_metroid << "<B>You are now a Metroid. Skreee!</B>"
@@ -263,7 +258,6 @@
var/mob/living/simple_animal/corgi/new_corgi = new /mob/living/simple_animal/corgi (loc) var/mob/living/simple_animal/corgi/new_corgi = new /mob/living/simple_animal/corgi (loc)
new_corgi.a_intent = "hurt" new_corgi.a_intent = "hurt"
new_corgi.UI = UI
new_corgi.key = key new_corgi.key = key
new_corgi << "<B>You are now a Corgi. Yap Yap!</B>" new_corgi << "<B>You are now a Corgi. Yap Yap!</B>"
@@ -298,7 +292,6 @@
new_mob.key = key new_mob.key = key
new_mob.a_intent = "hurt" new_mob.a_intent = "hurt"
new_mob.UI = UI
new_mob << "You suddenly feel more... animalistic." new_mob << "You suddenly feel more... animalistic."
@@ -319,7 +312,6 @@
new_mob.key = key new_mob.key = key
new_mob.a_intent = "hurt" new_mob.a_intent = "hurt"
new_mob.UI = UI
new_mob << "You feel more... animalistic" new_mob << "You feel more... animalistic"
del(src) del(src)

View File

@@ -428,6 +428,8 @@ var/list/global_mutations = list() // list of hidden mutation things
#define CANSTUN 1 #define CANSTUN 1
#define CANWEAKEN 2 #define CANWEAKEN 2
#define CANPARALYSE 4 #define CANPARALYSE 4
#define CANPUSH 8
#define GODMODE 4096
#define FAKEDEATH 8192 //Replaces stuff like changeling.changeling_fakedeath #define FAKEDEATH 8192 //Replaces stuff like changeling.changeling_fakedeath
#define DISFIGURED 16384 //I'll probably move this elsewhere if I ever get wround to writing a bitflag mob-damage system #define DISFIGURED 16384 //I'll probably move this elsewhere if I ever get wround to writing a bitflag mob-damage system
#define XENO_HOST 32768 //Tracks whether we're gonna be a baby alien's mummy. #define XENO_HOST 32768 //Tracks whether we're gonna be a baby alien's mummy.
@@ -534,4 +536,79 @@ var/list/TAGGERLOCATIONS = list("Disposals",
#define HOSTILE_STANCE_ATTACKING 4 #define HOSTILE_STANCE_ATTACKING 4
#define HOSTILE_STANCE_TIRED 5 #define HOSTILE_STANCE_TIRED 5
#define ROUNDSTART_LOGOUT_REPORT_TIME 6000 //Amount of time (in deciseconds) after the rounds starts, that the player disconnect report is issued. #define ROUNDSTART_LOGOUT_REPORT_TIME 6000 //Amount of time (in deciseconds) after the rounds starts, that the player disconnect report is issued.
//Please don't edit these values without speaking to Errorage first ~Carn
//Admin Permissions
#define R_BUILDMODE 1
#define R_ADMIN 2
#define R_BAN 4
#define R_FUN 8
#define R_SERVER 16
#define R_DEBUG 32
#define R_POSSESS 64
#define R_PERMISSIONS 128
#define R_STEALTH 256
#define R_REJUVINATE 512
#define R_VAREDIT 1024
#define R_SOUNDS 2048
#define R_SPAWN 4096
#define R_MAXPERMISSION 4096 //This holds the maximum value for a permission. It is used in iteration, so keep it updated.
#define R_HOST 65535
//Preference toggles
#define SOUND_ADMINHELP 1
#define SOUND_MIDI 2
#define SOUND_AMBIENCE 4
#define SOUND_LOBBY 8
#define CHAT_OOC 16
#define CHAT_DEAD 32
#define CHAT_GHOSTEARS 64
#define CHAT_GHOSTSIGHT 128
#define CHAT_PRAYER 256
#define CHAT_RADIO 512
#define TOGGLES_DEFAULT (SOUND_ADMINHELP|SOUND_MIDI|SOUND_AMBIENCE|SOUND_LOBBY|CHAT_OOC|CHAT_DEAD|CHAT_GHOSTEARS|CHAT_PRAYER|CHAT_RADIO)
#define BE_TRAITOR 1
#define BE_OPERATIVE 2
#define BE_CHANGELING 4
#define BE_WIZARD 8
#define BE_MALF 16
#define BE_REV 32
#define BE_ALIEN 64
#define BE_PAI 128
#define BE_CULTIST 256
#define BE_MONKEY 512
#define BE_NINJA 1024
var/list/be_special_flags = list(
"Traitor" = BE_TRAITOR,
"Operative" = BE_OPERATIVE,
"Changeling" = BE_CHANGELING,
"Wizard" = BE_WIZARD,
"Malf AI" = BE_MALF,
"Revolutionary" = BE_REV,
"Xenomorph" = BE_ALIEN,
"pAI" = BE_PAI,
"Cultist" = BE_CULTIST,
"Monkey" = BE_MONKEY,
"Ninja" = BE_NINJA
)
#define AGE_MIN 17 //youngest a character can be
#define AGE_MAX 85 //oldest a character can be
//Languages!
#define LANGUAGE_HUMAN 1
#define LANGUAGE_ALIEN 2
#define LANGUAGE_DOG 4
#define LANGUAGE_CAT 8
#define LANGUAGE_BINARY 16
#define LANGUAGE_OTHER 32768
#define LANGUAGE_UNIVERSAL 65535

View File

@@ -213,7 +213,6 @@
#define FILE_DIR "interface" #define FILE_DIR "interface"
#define FILE_DIR "maps" #define FILE_DIR "maps"
#define FILE_DIR "maps/RandomZLevels" #define FILE_DIR "maps/RandomZLevels"
#define FILE_DIR "maps/RandomZLevels/backup"
#define FILE_DIR "sound" #define FILE_DIR "sound"
#define FILE_DIR "sound/AI" #define FILE_DIR "sound/AI"
#define FILE_DIR "sound/ambience" #define FILE_DIR "sound/ambience"
@@ -248,6 +247,7 @@
#include "code\__HELPERS\lists.dm" #include "code\__HELPERS\lists.dm"
#include "code\__HELPERS\logging.dm" #include "code\__HELPERS\logging.dm"
#include "code\__HELPERS\maths.dm" #include "code\__HELPERS\maths.dm"
#include "code\__HELPERS\mobs.dm"
#include "code\__HELPERS\names.dm" #include "code\__HELPERS\names.dm"
#include "code\__HELPERS\sanitize_values.dm" #include "code\__HELPERS\sanitize_values.dm"
#include "code\__HELPERS\text.dm" #include "code\__HELPERS\text.dm"