Allows species to be blocked from ever being roundstart, can now choose your Halloween species

This commit is contained in:
KorPhaeron
2017-10-20 10:10:54 -05:00
committed by CitadelStationBot
parent 655478e014
commit e4f76a79a5
18 changed files with 62 additions and 49 deletions

View File

@@ -46,8 +46,8 @@
#define INIT_ORDER_DBCORE 18
#define INIT_ORDER_BLACKBOX 17
#define INIT_ORDER_SERVER_MAINT 16
#define INIT_ORDER_JOBS 15
#define INIT_ORDER_EVENTS 14
#define INIT_ORDER_EVENTS 15
#define INIT_ORDER_JOBS 14
#define INIT_ORDER_TICKER 13
#define INIT_ORDER_MAPPING 12
#define INIT_ORDER_ATOMS 11

View File

@@ -112,27 +112,7 @@ CONFIG_DEF(flag/show_game_type_odds) //if set this allows players to see the odd
CONFIG_DEF(flag/join_with_mutant_race) //players can choose their mutant race before joining the game
CONFIG_DEF(keyed_flag_list/roundstart_races) //races you can play as from the get go. If left undefined the game's roundstart var for species is used
var/first_edit = TRUE
/datum/config_entry/keyed_flag_list/roundstart_races/New()
for(var/I in subtypesof(/datum/species))
var/datum/species/S = I
if(initial(S.roundstart))
value[initial(S.id)] = TRUE
..()
/datum/config_entry/keyed_flag_list/roundstart_races/ValidateAndSet(str_val)
var/list/old_val
if(first_edit)
old_val = value
old_val = old_val.Copy()
. = ..()
if(first_edit)
if(!.)
value = old_val
else
first_edit = FALSE
CONFIG_DEF(keyed_flag_list/roundstart_races) //races you can play as from the get go.
CONFIG_DEF(flag/join_with_mutant_humans) //players can pick mutant bodyparts for humans before joining the game

View File

@@ -18,6 +18,7 @@ SUBSYSTEM_DEF(job)
SetupOccupations()
if(CONFIG_GET(flag/load_jobs_from_txt))
LoadJobs()
generate_selectable_species()
..()

View File

@@ -141,6 +141,7 @@ SUBSYSTEM_DEF(ticker)
GLOB.syndicate_code_phrase = generate_code_phrase()
if(!GLOB.syndicate_code_response)
GLOB.syndicate_code_response = generate_code_phrase()
..()
start_at = world.time + (CONFIG_GET(number/lobby_countdown) * 10)

View File

@@ -263,7 +263,7 @@
/mob/living/carbon/proc/create_dna()
dna = new /datum/dna(src)
if(!dna.species)
var/rando_race = pick(CONFIG_GET(keyed_flag_list/roundstart_races))
var/rando_race = pick(GLOB.roundstart_races)
dna.species = new rando_race()
//proc used to update the mob's appearance after its dna UI has been changed

View File

@@ -470,7 +470,7 @@
// species datums
R.fields["mrace"] = dna.species
else
var/datum/species/rando_race = pick(CONFIG_GET(keyed_flag_list/roundstart_races))
var/datum/species/rando_race = pick(GLOB.roundstart_races)
R.fields["mrace"] = rando_race.type
R.fields["ckey"] = mob_occupant.ckey

View File

@@ -598,7 +598,7 @@ What a mess.*/
active1.fields["age"] = t1
if("species")
if(istype(active1, /datum/data/record))
var/t1 = input("Select a species", "Species Selection") as null|anything in CONFIG_GET(keyed_flag_list/roundstart_races)
var/t1 = input("Select a species", "Species Selection") as null|anything in GLOB.roundstart_races
if(!canUseSecurityRecordsConsole(usr, t1, a1))
return
active1.fields["species"] = t1
@@ -766,7 +766,7 @@ What a mess.*/
if(6)
R.fields["m_stat"] = pick("*Insane*", "*Unstable*", "*Watch*", "Stable")
if(7)
R.fields["species"] = pick(CONFIG_GET(keyed_flag_list/roundstart_races))
R.fields["species"] = pick(GLOB.roundstart_races)
if(8)
var/datum/data/record/G = pick(GLOB.data_core.general)
R.fields["photo_front"] = G.fields["photo_front"]

View File

@@ -101,8 +101,7 @@
..()
/obj/structure/mirror/magic/lesser/New()
var/list/L = CONFIG_GET(keyed_flag_list/roundstart_races)
choosable_races = L.Copy()
choosable_races = GLOB.roundstart_races.Copy()
..()
/obj/structure/mirror/magic/badmin/New()

View File

@@ -1187,7 +1187,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
if("species")
var/result = input(user, "Select a species", "Species Selection") as null|anything in CONFIG_GET(keyed_flag_list/roundstart_races)
var/result = input(user, "Select a species", "Species Selection") as null|anything in GLOB.roundstart_races
if(result)
var/newtype = GLOB.species_list[result]

View File

@@ -294,12 +294,11 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
//Species
var/species_id
S["species"] >> species_id
var/list/roundstart_races = CONFIG_GET(keyed_flag_list/roundstart_races)
if(species_id && (species_id in roundstart_races) && CONFIG_GET(flag/join_with_mutant_race))
if(species_id && (species_id in GLOB.roundstart_races) && CONFIG_GET(flag/join_with_mutant_race))
var/newtype = GLOB.species_list[species_id]
pref_species = new newtype()
else if (roundstart_races.len)
var/rando_race = pick(roundstart_races)
else if (GLOB.roundstart_races.len)
var/rando_race = pick(GLOB.roundstart_races)
if (rando_race)
pref_species = new rando_race()

View File

@@ -11,11 +11,6 @@
for(var/mob/living/carbon/human/H in GLOB.mob_list)
var/obj/item/storage/backpack/b = locate() in H.contents
new /obj/item/storage/spooky(b)
if(ishuman(H) || islizard(H))
if(prob(50))
H.set_species(/datum/species/skeleton)
else
H.set_species(/datum/species/zombie)
for(var/mob/living/simple_animal/pet/dog/corgi/Ian/Ian in GLOB.mob_list)
Ian.place_on_head(new /obj/item/bedsheet(Ian))

View File

@@ -14,7 +14,7 @@
facial_hair_color = hair_color
eye_color = random_eye_color()
if(!pref_species)
var/rando_race = pick(CONFIG_GET(keyed_flag_list/roundstart_races))
var/rando_race = pick(GLOB.roundstart_races)
pref_species = new rando_race()
features = random_features()
age = rand(AGE_MIN,AGE_MAX)

View File

@@ -19,7 +19,7 @@
/mob/living/brain/proc/create_dna()
stored_dna = new /datum/dna/stored(src)
if(!stored_dna.species)
var/rando_race = pick(CONFIG_GET(keyed_flag_list/roundstart_races))
var/rando_race = pick(GLOB.roundstart_races)
stored_dna.species = new rando_race()
/mob/living/brain/Destroy()

View File

@@ -1,5 +1,7 @@
// This code handles different species in the game.
GLOBAL_LIST_EMPTY(roundstart_races)
#define HEAT_DAMAGE_LEVEL_1 2
#define HEAT_DAMAGE_LEVEL_2 3
#define HEAT_DAMAGE_LEVEL_3 8
@@ -12,7 +14,6 @@
var/id // if the game needs to manually check your race to do something not included in a proc here, it will use this
var/limbs_id //this is used if you want to use a different species limb sprites. Mainly used for angels as they look like humans.
var/name // this is the fluff name. these will be left generic (such as 'Lizardperson' for the lizard race) so servers can change them to whatever
var/roundstart = 0 // can this mob be chosen at roundstart? (assuming the config option is checked?)
var/default_color = "#FFF" // if alien colors are disabled, this is the color that will be used by that race
var/sexes = 1 // whether or not the race has sexual characteristics. at the moment this is only 0 for skeletons and shadows
@@ -92,6 +93,20 @@
..()
/proc/generate_selectable_species()
for(var/I in subtypesof(/datum/species))
var/datum/species/S = new I
if(S.check_roundstart_eligible())
GLOB.roundstart_races += S.id
qdel(S)
if(!GLOB.roundstart_races.len)
GLOB.roundstart_races += "human"
/datum/species/proc/check_roundstart_eligible()
if(id in (CONFIG_GET(keyed_flag_list/roundstart_races)))
return TRUE
return FALSE
/datum/species/proc/random_name(gender,unique,lastname)
if(unique)
return random_unique_name(gender)

View File

@@ -24,6 +24,10 @@
else if (light_amount < SHADOW_SPECIES_LIGHT_THRESHOLD) //heal in the dark
H.heal_overall_damage(1,1)
/datum/species/shadow/check_roundstart_eligible()
if(SSevents.holidays && SSevents.holidays[HALLOWEEN])
return TRUE
return ..()
/datum/species/shadow/nightmare
name = "Nightmare"
@@ -60,7 +64,8 @@
return -1
return 0
/datum/species/shadow/nightmare/check_roundstart_eligible()
return FALSE
//Organs

View File

@@ -10,4 +10,13 @@
mutanttongue = /obj/item/organ/tongue/bone
damage_overlay_type = ""//let's not show bloody wounds or burns over bones.
disliked_food = NONE
<<<<<<< HEAD
liked_food = NONE
=======
liked_food = GROSS | MEAT | RAW
/datum/species/skeleton/check_roundstart_eligible()
if(SSevents.holidays && SSevents.holidays[HALLOWEEN])
return TRUE
return ..()
>>>>>>> dcddc79... Allows species to be blocked from ever being roundstart, can now choose your Halloween species (#31877)

View File

@@ -14,6 +14,11 @@
disliked_food = NONE
liked_food = NONE
/datum/species/zombie/check_roundstart_eligible()
if(SSevents.holidays && SSevents.holidays[HALLOWEEN])
return TRUE
return ..()
/datum/species/zombie/infectious
name = "Infectious Zombie"
id = "memezombies"
@@ -24,6 +29,10 @@
mutanteyes = /obj/item/organ/eyes/night_vision/zombie
var/regen_cooldown = 0
/datum/species/zombie/infectious/check_roundstart_eligible()
return FALSE
/datum/species/zombie/infectious/spec_stun(mob/living/carbon/human/H,amount)
. = min(2, amount)