mirror of
https://github.com/SPLURT-Station/S.P.L.U.R.T-Station-13.git
synced 2025-12-10 18:02:57 +00:00
Porting several quirks code updates.
This commit is contained in:
@@ -95,4 +95,22 @@ GLOBAL_VAR_INIT(cmp_field, "name")
|
|||||||
return sorttext(A.sample_object.name, B.sample_object.name)
|
return sorttext(A.sample_object.name, B.sample_object.name)
|
||||||
|
|
||||||
/proc/cmp_numbered_displays_name_dsc(datum/numbered_display/A, datum/numbered_display/B)
|
/proc/cmp_numbered_displays_name_dsc(datum/numbered_display/A, datum/numbered_display/B)
|
||||||
return sorttext(B.sample_object.name, A.sample_object.name)
|
return sorttext(B.sample_object.name, A.sample_object.name)
|
||||||
|
|
||||||
|
/proc/cmp_quirk_asc(datum/quirk/A, datum/quirk/B)
|
||||||
|
var/a_sign = num2sign(initial(A.value) * -1)
|
||||||
|
var/b_sign = num2sign(initial(B.value) * -1)
|
||||||
|
|
||||||
|
// Neutral traits go last.
|
||||||
|
if(a_sign == 0)
|
||||||
|
a_sign = 2
|
||||||
|
if(b_sign == 0)
|
||||||
|
b_sign = 2
|
||||||
|
|
||||||
|
var/a_name = initial(A.name)
|
||||||
|
var/b_name = initial(B.name)
|
||||||
|
|
||||||
|
if(a_sign != b_sign)
|
||||||
|
return a_sign - b_sign
|
||||||
|
else
|
||||||
|
return sorttext(b_name, a_name)
|
||||||
@@ -1548,4 +1548,12 @@ GLOBAL_DATUM_INIT(dview_mob, /mob/dview, new)
|
|||||||
|
|
||||||
/proc/CallAsync(datum/source, proctype, list/arguments)
|
/proc/CallAsync(datum/source, proctype, list/arguments)
|
||||||
set waitfor = FALSE
|
set waitfor = FALSE
|
||||||
return call(source, proctype)(arglist(arguments))
|
return call(source, proctype)(arglist(arguments))
|
||||||
|
|
||||||
|
/proc/num2sign(numeric)
|
||||||
|
if(numeric > 0)
|
||||||
|
return 1
|
||||||
|
else if(numeric < 0)
|
||||||
|
return -1
|
||||||
|
else
|
||||||
|
return 0
|
||||||
|
|||||||
@@ -12,27 +12,40 @@ PROCESSING_SUBSYSTEM_DEF(quirks)
|
|||||||
var/list/quirk_names_by_path = list()
|
var/list/quirk_names_by_path = list()
|
||||||
var/list/quirk_points = list() //Assoc. list of quirk names and their "point cost"; positive numbers are good traits, and negative ones are bad
|
var/list/quirk_points = list() //Assoc. list of quirk names and their "point cost"; positive numbers are good traits, and negative ones are bad
|
||||||
var/list/quirk_objects = list() //A list of all quirk objects in the game, since some may process
|
var/list/quirk_objects = list() //A list of all quirk objects in the game, since some may process
|
||||||
|
var/list/quirk_blacklist = list() //A list a list of quirks that can not be used with each other. Format: list(quirk1,quirk2),list(quirk3,quirk4)
|
||||||
|
|
||||||
/datum/controller/subsystem/processing/quirks/Initialize(timeofday)
|
/datum/controller/subsystem/processing/quirks/Initialize(timeofday)
|
||||||
if(!quirks.len)
|
if(!quirks.len)
|
||||||
SetupQuirks()
|
SetupQuirks()
|
||||||
|
quirk_blacklist = list(list("Blind","Nearsighted"),list("Jolly","Depression","Apathetic"),list("Ageusia","Deviant Tastes"),list("Ananas Affinity","Ananas Aversion"))
|
||||||
return ..()
|
return ..()
|
||||||
|
|
||||||
/datum/controller/subsystem/processing/quirks/proc/SetupQuirks()
|
/datum/controller/subsystem/processing/quirks/proc/SetupQuirks()
|
||||||
for(var/V in subtypesof(/datum/quirk))
|
// Sort by Positive, Negative, Neutral; and then by name
|
||||||
|
var/list/quirk_list = sortList(subtypesof(/datum/quirk), /proc/cmp_quirk_asc)
|
||||||
|
|
||||||
|
for(var/V in quirk_list)
|
||||||
var/datum/quirk/T = V
|
var/datum/quirk/T = V
|
||||||
quirks[initial(T.name)] = T
|
quirks[initial(T.name)] = T
|
||||||
quirk_points[initial(T.name)] = initial(T.value)
|
quirk_points[initial(T.name)] = initial(T.value)
|
||||||
quirk_names_by_path[T] = initial(T.name)
|
quirk_names_by_path[T] = initial(T.name)
|
||||||
|
|
||||||
/datum/controller/subsystem/processing/quirks/proc/AssignQuirks(mob/living/user, client/cli, spawn_effects, roundstart = FALSE, datum/job/job, silent = FALSE, mob/to_chat_target)
|
/datum/controller/subsystem/processing/quirks/proc/AssignQuirks(mob/living/user, client/cli, spawn_effects, roundstart = FALSE, datum/job/job, silent = FALSE, mob/to_chat_target)
|
||||||
GenerateQuirks(cli)
|
var/badquirk = FALSE
|
||||||
var/list/quirks = cli.prefs.character_quirks.Copy()
|
var/list/my_quirks = cli.prefs.all_quirks.Copy()
|
||||||
var/list/cut
|
var/list/cut
|
||||||
if(job && job.blacklisted_quirks)
|
if(job?.blacklisted_quirks)
|
||||||
cut = filter_quirks(quirks, job)
|
cut = filter_quirks(quirks, job)
|
||||||
for(var/V in quirks)
|
for(var/V in my_quirks)
|
||||||
user.add_quirk(V, spawn_effects)
|
var/datum/quirk/Q = quirks[V]
|
||||||
|
if(Q)
|
||||||
|
user.add_quirk(Q, spawn_effects)
|
||||||
|
else
|
||||||
|
stack_trace("Invalid quirk \"[V]\" in client [cli.ckey] preferences")
|
||||||
|
cli.prefs.all_quirks -= V
|
||||||
|
badquirk = TRUE
|
||||||
|
if(badquirk)
|
||||||
|
cli.prefs.save_character()
|
||||||
if(!silent && LAZYLEN(cut))
|
if(!silent && LAZYLEN(cut))
|
||||||
to_chat(to_chat_target || user, "<span class='boldwarning'>All of your non-neutral character quirks have been cut due to these quirks conflicting with your job assignment: [english_list(cut)].</span>")
|
to_chat(to_chat_target || user, "<span class='boldwarning'>All of your non-neutral character quirks have been cut due to these quirks conflicting with your job assignment: [english_list(cut)].</span>")
|
||||||
|
|
||||||
@@ -85,8 +98,3 @@ PROCESSING_SUBSYSTEM_DEF(quirks)
|
|||||||
quirks -= i
|
quirks -= i
|
||||||
|
|
||||||
return cut
|
return cut
|
||||||
|
|
||||||
/datum/controller/subsystem/processing/quirks/proc/GenerateQuirks(client/user)
|
|
||||||
if(user.prefs.character_quirks.len)
|
|
||||||
return
|
|
||||||
user.prefs.character_quirks = user.prefs.all_quirks
|
|
||||||
|
|||||||
@@ -384,8 +384,8 @@ SUBSYSTEM_DEF(ticker)
|
|||||||
captainless=0
|
captainless=0
|
||||||
if(player.mind.assigned_role != player.mind.special_role)
|
if(player.mind.assigned_role != player.mind.special_role)
|
||||||
SSjob.EquipRank(N, player.mind.assigned_role, 0)
|
SSjob.EquipRank(N, player.mind.assigned_role, 0)
|
||||||
if(CONFIG_GET(flag/roundstart_traits) && ishuman(N.new_character))
|
if(CONFIG_GET(flag/roundstart_traits) && ishuman(N.new_character))
|
||||||
SSquirks.AssignQuirks(N.new_character, N.client, TRUE, TRUE, SSjob.GetJob(player.mind.assigned_role), FALSE, N)
|
SSquirks.AssignQuirks(N.new_character, N.client, TRUE, TRUE, SSjob.GetJob(player.mind.assigned_role), FALSE, N)
|
||||||
CHECK_TICK
|
CHECK_TICK
|
||||||
if(captainless)
|
if(captainless)
|
||||||
for(var/mob/dead/new_player/N in GLOB.player_list)
|
for(var/mob/dead/new_player/N in GLOB.player_list)
|
||||||
|
|||||||
@@ -150,15 +150,6 @@
|
|||||||
if(9)
|
if(9)
|
||||||
setSanity(sanity+0.4, maximum=SANITY_GREAT)
|
setSanity(sanity+0.4, maximum=SANITY_GREAT)
|
||||||
|
|
||||||
if(HAS_TRAIT(owner, TRAIT_DEPRESSION))
|
|
||||||
if(prob(0.05))
|
|
||||||
add_event(null, "depression", /datum/mood_event/depression)
|
|
||||||
clear_event(null, "jolly")
|
|
||||||
if(HAS_TRAIT(owner, TRAIT_JOLLY))
|
|
||||||
if(prob(0.05))
|
|
||||||
add_event(null, "jolly", /datum/mood_event/jolly)
|
|
||||||
clear_event(null, "depression")
|
|
||||||
|
|
||||||
HandleNutrition(owner)
|
HandleNutrition(owner)
|
||||||
|
|
||||||
/datum/component/mood/proc/setSanity(amount, minimum=SANITY_INSANE, maximum=SANITY_NEUTRAL)//I'm sure bunging this in here will have no negative repercussions.
|
/datum/component/mood/proc/setSanity(amount, minimum=SANITY_INSANE, maximum=SANITY_NEUTRAL)//I'm sure bunging this in here will have no negative repercussions.
|
||||||
|
|||||||
@@ -255,7 +255,7 @@
|
|||||||
M.fields["alg_d"] = "No allergies have been detected in this patient."
|
M.fields["alg_d"] = "No allergies have been detected in this patient."
|
||||||
M.fields["cdi"] = "None"
|
M.fields["cdi"] = "None"
|
||||||
M.fields["cdi_d"] = "No diseases have been diagnosed at the moment."
|
M.fields["cdi_d"] = "No diseases have been diagnosed at the moment."
|
||||||
M.fields["notes"] = "No notes."
|
M.fields["notes"] = H.get_trait_string(medical)
|
||||||
medical += M
|
medical += M
|
||||||
|
|
||||||
//Security Record
|
//Security Record
|
||||||
|
|||||||
@@ -1398,3 +1398,29 @@
|
|||||||
var/mob/living/carbon/human/H = locate(href_list["copyoutfit"]) in GLOB.carbon_list
|
var/mob/living/carbon/human/H = locate(href_list["copyoutfit"]) in GLOB.carbon_list
|
||||||
if(istype(H))
|
if(istype(H))
|
||||||
H.copy_outfit()
|
H.copy_outfit()
|
||||||
|
else if(href_list["modquirks"])
|
||||||
|
if(!check_rights(R_SPAWN))
|
||||||
|
return
|
||||||
|
|
||||||
|
var/mob/living/carbon/human/H = locate(href_list["modquirks"]) in GLOB.mob_list
|
||||||
|
if(!istype(H))
|
||||||
|
to_chat(usr, "This can only be done to instances of type /mob/living/carbon/human")
|
||||||
|
return
|
||||||
|
|
||||||
|
var/list/options = list("Clear"="Clear")
|
||||||
|
for(var/x in subtypesof(/datum/quirk))
|
||||||
|
var/datum/quirk/T = x
|
||||||
|
var/qname = initial(T.name)
|
||||||
|
options[H.has_quirk(T) ? "[qname] (Remove)" : "[qname] (Add)"] = T
|
||||||
|
|
||||||
|
var/result = input(usr, "Choose quirk to add/remove","Quirk Mod") as null|anything in options
|
||||||
|
if(result)
|
||||||
|
if(result == "Clear")
|
||||||
|
for(var/datum/quirk/q in H.roundstart_quirks)
|
||||||
|
H.remove_quirk(q.type)
|
||||||
|
else
|
||||||
|
var/T = options[result]
|
||||||
|
if(H.has_quirk(T))
|
||||||
|
H.remove_quirk(T)
|
||||||
|
else
|
||||||
|
H.add_quirk(T,TRUE)
|
||||||
|
|||||||
@@ -8,12 +8,14 @@
|
|||||||
mob_trait = TRAIT_ALCOHOL_TOLERANCE
|
mob_trait = TRAIT_ALCOHOL_TOLERANCE
|
||||||
gain_text = "<span class='notice'>You feel like you could drink a whole keg!</span>"
|
gain_text = "<span class='notice'>You feel like you could drink a whole keg!</span>"
|
||||||
lose_text = "<span class='danger'>You don't feel as resistant to alcohol anymore. Somehow.</span>"
|
lose_text = "<span class='danger'>You don't feel as resistant to alcohol anymore. Somehow.</span>"
|
||||||
|
medical_record_text = "Patient demonstrates a high tolerance for alcohol."
|
||||||
|
|
||||||
/datum/quirk/apathetic
|
/datum/quirk/apathetic
|
||||||
name = "Apathetic"
|
name = "Apathetic"
|
||||||
desc = "You just don't care as much as other people. That's nice to have in a place like this, I guess."
|
desc = "You just don't care as much as other people. That's nice to have in a place like this, I guess."
|
||||||
value = 1
|
value = 1
|
||||||
mood_quirk = TRUE
|
mood_quirk = TRUE
|
||||||
|
medical_record_text = "Patient was administered the Apathy Evaluation Scale but did not bother to complete it."
|
||||||
|
|
||||||
/datum/quirk/apathetic/add()
|
/datum/quirk/apathetic/add()
|
||||||
var/datum/component/mood/mood = quirk_holder.GetComponent(/datum/component/mood)
|
var/datum/component/mood/mood = quirk_holder.GetComponent(/datum/component/mood)
|
||||||
@@ -42,6 +44,7 @@
|
|||||||
mob_trait = TRAIT_EMPATH
|
mob_trait = TRAIT_EMPATH
|
||||||
gain_text = "<span class='notice'>You feel in tune with those around you.</span>"
|
gain_text = "<span class='notice'>You feel in tune with those around you.</span>"
|
||||||
lose_text = "<span class='danger'>You feel isolated from others.</span>"
|
lose_text = "<span class='danger'>You feel isolated from others.</span>"
|
||||||
|
medical_record_text = "Patient is highly perceptive of and sensitive to social cues, or may possibly have ESP. Further testing needed."
|
||||||
|
|
||||||
/datum/quirk/freerunning
|
/datum/quirk/freerunning
|
||||||
name = "Freerunning"
|
name = "Freerunning"
|
||||||
@@ -50,6 +53,7 @@
|
|||||||
mob_trait = TRAIT_FREERUNNING
|
mob_trait = TRAIT_FREERUNNING
|
||||||
gain_text = "<span class='notice'>You feel lithe on your feet!</span>"
|
gain_text = "<span class='notice'>You feel lithe on your feet!</span>"
|
||||||
lose_text = "<span class='danger'>You feel clumsy again.</span>"
|
lose_text = "<span class='danger'>You feel clumsy again.</span>"
|
||||||
|
medical_record_text = "Patient scored highly on cardio tests."
|
||||||
|
|
||||||
/datum/quirk/friendly
|
/datum/quirk/friendly
|
||||||
name = "Friendly"
|
name = "Friendly"
|
||||||
@@ -59,6 +63,7 @@
|
|||||||
gain_text = "<span class='notice'>You want to hug someone.</span>"
|
gain_text = "<span class='notice'>You want to hug someone.</span>"
|
||||||
lose_text = "<span class='danger'>You no longer feel compelled to hug others.</span>"
|
lose_text = "<span class='danger'>You no longer feel compelled to hug others.</span>"
|
||||||
mood_quirk = TRUE
|
mood_quirk = TRUE
|
||||||
|
medical_record_text = "Patient demonstrates low-inhibitions for physical contact and well-developed arms. Requesting another doctor take over this case."
|
||||||
|
|
||||||
/datum/quirk/jolly
|
/datum/quirk/jolly
|
||||||
name = "Jolly"
|
name = "Jolly"
|
||||||
@@ -66,6 +71,11 @@
|
|||||||
value = 1
|
value = 1
|
||||||
mob_trait = TRAIT_JOLLY
|
mob_trait = TRAIT_JOLLY
|
||||||
mood_quirk = TRUE
|
mood_quirk = TRUE
|
||||||
|
medical_record_text = "Patient demonstrates constant euthymia irregular for environment. It's a bit much, to be honest."
|
||||||
|
|
||||||
|
/datum/quirk/jolly/on_process()
|
||||||
|
if(prob(0.05))
|
||||||
|
SEND_SIGNAL(quirk_holder, COMSIG_ADD_MOOD_EVENT, "jolly", /datum/mood_event/jolly)
|
||||||
|
|
||||||
/datum/quirk/light_step
|
/datum/quirk/light_step
|
||||||
name = "Light Step"
|
name = "Light Step"
|
||||||
@@ -74,6 +84,7 @@
|
|||||||
mob_trait = TRAIT_LIGHT_STEP
|
mob_trait = TRAIT_LIGHT_STEP
|
||||||
gain_text = "<span class='notice'>You walk with a little more litheness.</span>"
|
gain_text = "<span class='notice'>You walk with a little more litheness.</span>"
|
||||||
lose_text = "<span class='danger'>You start tromping around like a barbarian.</span>"
|
lose_text = "<span class='danger'>You start tromping around like a barbarian.</span>"
|
||||||
|
medical_record_text = "Patient's dexterity belies a strong capacity for stealth."
|
||||||
|
|
||||||
/datum/quirk/quick_step
|
/datum/quirk/quick_step
|
||||||
name = "Quick Step"
|
name = "Quick Step"
|
||||||
@@ -82,6 +93,7 @@
|
|||||||
mob_trait = TRAIT_SPEEDY_STEP
|
mob_trait = TRAIT_SPEEDY_STEP
|
||||||
gain_text = "<span class='notice'>You feel determined. No time to lose.</span>"
|
gain_text = "<span class='notice'>You feel determined. No time to lose.</span>"
|
||||||
lose_text = "<span class='danger'>You feel less determined. What's the rush, man?</span>"
|
lose_text = "<span class='danger'>You feel less determined. What's the rush, man?</span>"
|
||||||
|
medical_record_text = "Patient scored highly on racewalking tests."
|
||||||
|
|
||||||
/datum/quirk/musician
|
/datum/quirk/musician
|
||||||
name = "Musician"
|
name = "Musician"
|
||||||
@@ -90,6 +102,7 @@
|
|||||||
mob_trait = TRAIT_MUSICIAN
|
mob_trait = TRAIT_MUSICIAN
|
||||||
gain_text = "<span class='notice'>You know everything about musical instruments.</span>"
|
gain_text = "<span class='notice'>You know everything about musical instruments.</span>"
|
||||||
lose_text = "<span class='danger'>You forget how musical instruments work.</span>"
|
lose_text = "<span class='danger'>You forget how musical instruments work.</span>"
|
||||||
|
medical_record_text = "Patient brain scans show a highly-developed auditory pathway."
|
||||||
|
|
||||||
/datum/quirk/musician/on_spawn()
|
/datum/quirk/musician/on_spawn()
|
||||||
var/mob/living/carbon/human/H = quirk_holder
|
var/mob/living/carbon/human/H = quirk_holder
|
||||||
@@ -108,6 +121,7 @@
|
|||||||
mob_trait = TRAIT_PHOTOGRAPHER
|
mob_trait = TRAIT_PHOTOGRAPHER
|
||||||
gain_text = "<span class='notice'>You know everything about photography.</span>"
|
gain_text = "<span class='notice'>You know everything about photography.</span>"
|
||||||
lose_text = "<span class='danger'>You forget how photo cameras work.</span>"
|
lose_text = "<span class='danger'>You forget how photo cameras work.</span>"
|
||||||
|
medical_record_text = "Patient mentions photography as a stress-relieving hobby."
|
||||||
|
|
||||||
/datum/quirk/photographer/on_spawn()
|
/datum/quirk/photographer/on_spawn()
|
||||||
var/mob/living/carbon/human/H = quirk_holder
|
var/mob/living/carbon/human/H = quirk_holder
|
||||||
@@ -121,12 +135,14 @@
|
|||||||
desc = "You know your body well, and can accurately assess the extent of your wounds."
|
desc = "You know your body well, and can accurately assess the extent of your wounds."
|
||||||
value = 2
|
value = 2
|
||||||
mob_trait = TRAIT_SELF_AWARE
|
mob_trait = TRAIT_SELF_AWARE
|
||||||
|
medical_record_text = "Patient demonstrates an uncanny knack for self-diagnosis."
|
||||||
|
|
||||||
/datum/quirk/skittish
|
/datum/quirk/skittish
|
||||||
name = "Skittish"
|
name = "Skittish"
|
||||||
desc = "You can conceal yourself in danger. Ctrl-shift-click a closed locker to jump into it, as long as you have access."
|
desc = "You can conceal yourself in danger. Ctrl-shift-click a closed locker to jump into it, as long as you have access."
|
||||||
value = 2
|
value = 2
|
||||||
mob_trait = TRAIT_SKITTISH
|
mob_trait = TRAIT_SKITTISH
|
||||||
|
medical_record_text = "Patient demonstrates a high aversion to danger and has described hiding in containers out of fear."
|
||||||
|
|
||||||
/datum/quirk/spiritual
|
/datum/quirk/spiritual
|
||||||
name = "Spiritual"
|
name = "Spiritual"
|
||||||
@@ -135,6 +151,7 @@
|
|||||||
mob_trait = TRAIT_SPIRITUAL
|
mob_trait = TRAIT_SPIRITUAL
|
||||||
gain_text = "<span class='notice'>You feel a little more faithful to the gods today.</span>"
|
gain_text = "<span class='notice'>You feel a little more faithful to the gods today.</span>"
|
||||||
lose_text = "<span class='danger'>You feel less faithful in the gods.</span>"
|
lose_text = "<span class='danger'>You feel less faithful in the gods.</span>"
|
||||||
|
medical_record_text = "Patient reports a belief in a higher power."
|
||||||
|
|
||||||
/datum/quirk/tagger
|
/datum/quirk/tagger
|
||||||
name = "Tagger"
|
name = "Tagger"
|
||||||
@@ -143,6 +160,7 @@
|
|||||||
mob_trait = TRAIT_TAGGER
|
mob_trait = TRAIT_TAGGER
|
||||||
gain_text = "<span class='notice'>You know how to tag walls efficiently.</span>"
|
gain_text = "<span class='notice'>You know how to tag walls efficiently.</span>"
|
||||||
lose_text = "<span class='danger'>You forget how to tag walls properly.</span>"
|
lose_text = "<span class='danger'>You forget how to tag walls properly.</span>"
|
||||||
|
medical_record_text = "Patient was recently seen for possible paint huffing incident."
|
||||||
|
|
||||||
/datum/quirk/tagger/on_spawn()
|
/datum/quirk/tagger/on_spawn()
|
||||||
var/mob/living/carbon/human/H = quirk_holder
|
var/mob/living/carbon/human/H = quirk_holder
|
||||||
@@ -158,6 +176,7 @@
|
|||||||
mob_trait = TRAIT_VORACIOUS
|
mob_trait = TRAIT_VORACIOUS
|
||||||
gain_text = "<span class='notice'>You feel HONGRY.</span>"
|
gain_text = "<span class='notice'>You feel HONGRY.</span>"
|
||||||
lose_text = "<span class='danger'>You no longer feel HONGRY.</span>"
|
lose_text = "<span class='danger'>You no longer feel HONGRY.</span>"
|
||||||
|
medical_record_text = "Patient demonstrates a disturbing capacity for eating."
|
||||||
|
|
||||||
/datum/quirk/trandening
|
/datum/quirk/trandening
|
||||||
name = "High Luminosity Eyes"
|
name = "High Luminosity Eyes"
|
||||||
@@ -179,6 +198,7 @@
|
|||||||
mob_trait = TRAIT_HIGH_BLOOD
|
mob_trait = TRAIT_HIGH_BLOOD
|
||||||
gain_text = "<span class='notice'>You feel full of blood!</span>"
|
gain_text = "<span class='notice'>You feel full of blood!</span>"
|
||||||
lose_text = "<span class='notice'>You feel like your blood pressure went down.</span>"
|
lose_text = "<span class='notice'>You feel like your blood pressure went down.</span>"
|
||||||
|
medical_record_text = "Patient's blood tests report an abnormal concentration of red blood cells in their bloodstream."
|
||||||
|
|
||||||
/datum/quirk/bloodpressure/add()
|
/datum/quirk/bloodpressure/add()
|
||||||
var/mob/living/M = quirk_holder
|
var/mob/living/M = quirk_holder
|
||||||
|
|||||||
@@ -22,14 +22,19 @@
|
|||||||
value = -1
|
value = -1
|
||||||
gain_text = "<span class='danger'>You start feeling depressed.</span>"
|
gain_text = "<span class='danger'>You start feeling depressed.</span>"
|
||||||
lose_text = "<span class='notice'>You no longer feel depressed.</span>" //if only it were that easy!
|
lose_text = "<span class='notice'>You no longer feel depressed.</span>" //if only it were that easy!
|
||||||
medical_record_text = "Patient has a severe mood disorder causing them to experience sudden moments of sadness."
|
medical_record_text = "Patient has a severe mood disorder, causing them to experience acute episodes of depression."
|
||||||
mood_quirk = TRUE
|
mood_quirk = TRUE
|
||||||
|
|
||||||
|
/datum/quirk/depression/on_process()
|
||||||
|
if(prob(0.05))
|
||||||
|
SEND_SIGNAL(quirk_holder, COMSIG_ADD_MOOD_EVENT, "depression", /datum/mood_event/depression)
|
||||||
|
|
||||||
/datum/quirk/family_heirloom
|
/datum/quirk/family_heirloom
|
||||||
name = "Family Heirloom"
|
name = "Family Heirloom"
|
||||||
desc = "You are the current owner of an heirloom, passed down for generations. You have to keep it safe!"
|
desc = "You are the current owner of an heirloom, passed down for generations. You have to keep it safe!"
|
||||||
value = -1
|
value = -1
|
||||||
mood_quirk = TRUE
|
mood_quirk = TRUE
|
||||||
|
medical_record_text = "Patient demonstrates an unnatural attachment to a family heirloom."
|
||||||
var/obj/item/heirloom
|
var/obj/item/heirloom
|
||||||
var/where
|
var/where
|
||||||
|
|
||||||
@@ -143,6 +148,7 @@
|
|||||||
name = "Nyctophobia"
|
name = "Nyctophobia"
|
||||||
desc = "As far as you can remember, you've always been afraid of the dark. While in the dark without a light source, you instinctually act careful, and constantly feel a sense of dread."
|
desc = "As far as you can remember, you've always been afraid of the dark. While in the dark without a light source, you instinctually act careful, and constantly feel a sense of dread."
|
||||||
value = -1
|
value = -1
|
||||||
|
medical_record_text = "Patient demonstrates a fear of the dark. (Seriously?)"
|
||||||
|
|
||||||
/datum/quirk/nyctophobia/on_process()
|
/datum/quirk/nyctophobia/on_process()
|
||||||
var/mob/living/carbon/human/H = quirk_holder
|
var/mob/living/carbon/human/H = quirk_holder
|
||||||
@@ -163,7 +169,8 @@
|
|||||||
desc = "Bright lights irritate you. Your eyes start to water, your skin feels itchy against the photon radiation, and your hair gets dry and frizzy. Maybe it's a medical condition. If only Nanotrasen was more considerate of your needs..."
|
desc = "Bright lights irritate you. Your eyes start to water, your skin feels itchy against the photon radiation, and your hair gets dry and frizzy. Maybe it's a medical condition. If only Nanotrasen was more considerate of your needs..."
|
||||||
value = -1
|
value = -1
|
||||||
gain_text = "<span class='danger'>The safty of light feels off...</span>"
|
gain_text = "<span class='danger'>The safty of light feels off...</span>"
|
||||||
lose_text = "<span class='notice'>Enlighing.</span>"
|
lose_text = "<span class='notice'>Enlightening.</span>"
|
||||||
|
medical_record_text = "Despite my warnings, the patient refuses turn on the lights, only to end up rolling down a full flight of stairs and into the cellar."
|
||||||
|
|
||||||
/datum/quirk/lightless/on_process()
|
/datum/quirk/lightless/on_process()
|
||||||
var/turf/T = get_turf(quirk_holder)
|
var/turf/T = get_turf(quirk_holder)
|
||||||
@@ -373,7 +380,7 @@
|
|||||||
value = -4
|
value = -4
|
||||||
gain_text = "<span class='danger'>You can't see anything.</span>"
|
gain_text = "<span class='danger'>You can't see anything.</span>"
|
||||||
lose_text = "<span class='notice'>You miraculously gain back your vision.</span>"
|
lose_text = "<span class='notice'>You miraculously gain back your vision.</span>"
|
||||||
medical_record_text = "Subject has permanent blindness."
|
medical_record_text = "Patient has permanent blindness."
|
||||||
|
|
||||||
/datum/quirk/blindness/add()
|
/datum/quirk/blindness/add()
|
||||||
quirk_holder.become_blind(ROUNDSTART_TRAIT)
|
quirk_holder.become_blind(ROUNDSTART_TRAIT)
|
||||||
|
|||||||
@@ -16,6 +16,7 @@
|
|||||||
value = 0
|
value = 0
|
||||||
gain_text = "<span class='notice'>You feel an intense craving for pineapple.</span>"
|
gain_text = "<span class='notice'>You feel an intense craving for pineapple.</span>"
|
||||||
lose_text = "<span class='notice'>Your feelings towards pineapples seem to return to a lukewarm state.</span>"
|
lose_text = "<span class='notice'>Your feelings towards pineapples seem to return to a lukewarm state.</span>"
|
||||||
|
medical_record_text = "Patient demonstrates a pathological love of pineapple."
|
||||||
|
|
||||||
/datum/quirk/pineapple_liker/add()
|
/datum/quirk/pineapple_liker/add()
|
||||||
var/mob/living/carbon/human/H = quirk_holder
|
var/mob/living/carbon/human/H = quirk_holder
|
||||||
@@ -34,6 +35,7 @@
|
|||||||
value = 0
|
value = 0
|
||||||
gain_text = "<span class='notice'>You find yourself pondering what kind of idiot actually enjoys pineapples...</span>"
|
gain_text = "<span class='notice'>You find yourself pondering what kind of idiot actually enjoys pineapples...</span>"
|
||||||
lose_text = "<span class='notice'>Your feelings towards pineapples seem to return to a lukewarm state.</span>"
|
lose_text = "<span class='notice'>Your feelings towards pineapples seem to return to a lukewarm state.</span>"
|
||||||
|
medical_record_text = "Patient is correct to think that pineapple is disgusting."
|
||||||
|
|
||||||
/datum/quirk/pineapple_hater/add()
|
/datum/quirk/pineapple_hater/add()
|
||||||
var/mob/living/carbon/human/H = quirk_holder
|
var/mob/living/carbon/human/H = quirk_holder
|
||||||
@@ -52,6 +54,7 @@
|
|||||||
value = 0
|
value = 0
|
||||||
gain_text = "<span class='notice'>You start craving something that tastes strange.</span>"
|
gain_text = "<span class='notice'>You start craving something that tastes strange.</span>"
|
||||||
lose_text = "<span class='notice'>You feel like eating normal food again.</span>"
|
lose_text = "<span class='notice'>You feel like eating normal food again.</span>"
|
||||||
|
medical_record_text = "Patient demonstrates irregular nutrition preferences."
|
||||||
|
|
||||||
/datum/quirk/deviant_tastes/add()
|
/datum/quirk/deviant_tastes/add()
|
||||||
var/mob/living/carbon/human/H = quirk_holder
|
var/mob/living/carbon/human/H = quirk_holder
|
||||||
@@ -92,7 +95,7 @@
|
|||||||
value = 0
|
value = 0
|
||||||
gain_text = "<span class='notice'>You feel more prudish.</span>"
|
gain_text = "<span class='notice'>You feel more prudish.</span>"
|
||||||
lose_text = "<span class='notice'>You don't feel as prudish as before.</span>"
|
lose_text = "<span class='notice'>You don't feel as prudish as before.</span>"
|
||||||
medical_record_text = "Patient exhibits a special gene that makes them immune to Crocin and Hexacrocin."
|
medical_record_text = "Patient exhibits a special gene that makes them immune to aphrodisiacs."
|
||||||
|
|
||||||
/datum/quirk/libido
|
/datum/quirk/libido
|
||||||
name = "Nymphomania"
|
name = "Nymphomania"
|
||||||
@@ -134,6 +137,7 @@
|
|||||||
value = 0
|
value = 0
|
||||||
mob_trait = TRAIT_PHARMA
|
mob_trait = TRAIT_PHARMA
|
||||||
lose_text = "<span class='notice'>Your liver feels different.</span>"
|
lose_text = "<span class='notice'>Your liver feels different.</span>"
|
||||||
|
medical_record_text = "Non-invasive tests report that the patient's metabolism is indeed incompatible with a certain \"stimulants\"."
|
||||||
var/active = FALSE
|
var/active = FALSE
|
||||||
var/power = 0
|
var/power = 0
|
||||||
var/cachedmoveCalc = 1
|
var/cachedmoveCalc = 1
|
||||||
|
|||||||
@@ -170,12 +170,8 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
|||||||
var/prefered_security_department = SEC_DEPT_RANDOM
|
var/prefered_security_department = SEC_DEPT_RANDOM
|
||||||
var/custom_species = null
|
var/custom_species = null
|
||||||
|
|
||||||
//Quirk list
|
//Quirk list
|
||||||
var/list/positive_quirks = list()
|
|
||||||
var/list/negative_quirks = list()
|
|
||||||
var/list/neutral_quirks = list()
|
|
||||||
var/list/all_quirks = list()
|
var/list/all_quirks = list()
|
||||||
var/list/character_quirks = list()
|
|
||||||
|
|
||||||
//Job preferences 2.0 - indexed by job title , no key or value implies never
|
//Job preferences 2.0 - indexed by job title , no key or value implies never
|
||||||
var/list/job_preferences = list()
|
var/list/job_preferences = list()
|
||||||
@@ -1200,7 +1196,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
|||||||
dat += "<center><a href='?_src_=prefs;preference=trait;task=close'>Done</a></center>"
|
dat += "<center><a href='?_src_=prefs;preference=trait;task=close'>Done</a></center>"
|
||||||
dat += "<hr>"
|
dat += "<hr>"
|
||||||
dat += "<center><b>Current quirks:</b> [all_quirks.len ? all_quirks.Join(", ") : "None"]</center>"
|
dat += "<center><b>Current quirks:</b> [all_quirks.len ? all_quirks.Join(", ") : "None"]</center>"
|
||||||
dat += "<center>[positive_quirks.len] / [MAX_QUIRKS] max positive quirks<br>\
|
dat += "<center>[GetPositiveQuirkCount()] / [MAX_QUIRKS] max positive quirks<br>\
|
||||||
<b>Quirk balance remaining:</b> [GetQuirkBalance()]</center><br>"
|
<b>Quirk balance remaining:</b> [GetQuirkBalance()]</center><br>"
|
||||||
for(var/V in SSquirks.quirks)
|
for(var/V in SSquirks.quirks)
|
||||||
var/datum/quirk/T = SSquirks.quirks[V]
|
var/datum/quirk/T = SSquirks.quirks[V]
|
||||||
@@ -1231,12 +1227,12 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
|||||||
<font color='red'><b>LOCKED: [lock_reason]</b></font><br>"
|
<font color='red'><b>LOCKED: [lock_reason]</b></font><br>"
|
||||||
else
|
else
|
||||||
if(has_quirk)
|
if(has_quirk)
|
||||||
dat += "<b><font color='[font_color]'>[quirk_name]</font></b> - [initial(T.desc)] \
|
dat += "<a href='?_src_=prefs;preference=trait;task=update;trait=[quirk_name]'>[has_quirk ? "Remove" : "Take"] ([quirk_cost] pts.)</a> \
|
||||||
<a href='?_src_=prefs;preference=trait;task=update;trait=[quirk_name]'>[has_quirk ? "Lose" : "Take"] ([quirk_cost] pts.)</a><br>"
|
<b><font color='[font_color]'>[quirk_name]</font></b> - [initial(T.desc)]<br>"
|
||||||
else
|
else
|
||||||
dat += "<font color='[font_color]'>[quirk_name]</font> - [initial(T.desc)] \
|
dat += "<a href='?_src_=prefs;preference=trait;task=update;trait=[quirk_name]'>[has_quirk ? "Remove" : "Take"] ([quirk_cost] pts.)</a> \
|
||||||
<a href='?_src_=prefs;preference=trait;task=update;trait=[quirk_name]'>[has_quirk ? "Lose" : "Take"] ([quirk_cost] pts.)</a><br>"
|
<font color='[font_color]'>[quirk_name]</font> - [initial(T.desc)]<br>"
|
||||||
dat += "<br><center><a href='?_src_=prefs;preference=trait;task=reset'>Reset Traits</a></center>"
|
dat += "<br><center><a href='?_src_=prefs;preference=trait;task=reset'>Reset Quirks</a></center>"
|
||||||
|
|
||||||
var/datum/browser/popup = new(user, "mob_occupation", "<div align='center'>Quirk Preferences</div>", 900, 600) //no reason not to reuse the occupation window, as it's cleaner that way
|
var/datum/browser/popup = new(user, "mob_occupation", "<div align='center'>Quirk Preferences</div>", 900, 600) //no reason not to reuse the occupation window, as it's cleaner that way
|
||||||
popup.set_window_options("can_close=0")
|
popup.set_window_options("can_close=0")
|
||||||
@@ -1250,6 +1246,12 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
|||||||
bal -= initial(T.value)
|
bal -= initial(T.value)
|
||||||
return bal
|
return bal
|
||||||
|
|
||||||
|
/datum/preferences/proc/GetPositiveQuirkCount()
|
||||||
|
. = 0
|
||||||
|
for(var/q in all_quirks)
|
||||||
|
if(SSquirks.quirk_points[q] > 0)
|
||||||
|
.++
|
||||||
|
|
||||||
/datum/preferences/Topic(href, href_list, hsrc) //yeah, gotta do this I guess..
|
/datum/preferences/Topic(href, href_list, hsrc) //yeah, gotta do this I guess..
|
||||||
. = ..()
|
. = ..()
|
||||||
if(href_list["close"])
|
if(href_list["close"])
|
||||||
@@ -1315,43 +1317,30 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
|||||||
var/quirk = href_list["trait"]
|
var/quirk = href_list["trait"]
|
||||||
if(!SSquirks.quirks[quirk])
|
if(!SSquirks.quirks[quirk])
|
||||||
return
|
return
|
||||||
|
for(var/V in SSquirks.quirk_blacklist) //V is a list
|
||||||
|
var/list/L = V
|
||||||
|
for(var/Q in all_quirks)
|
||||||
|
if((quirk in L) && (Q in L) && !(Q == quirk)) //two quirks have lined up in the list of the list of quirks that conflict with each other, so return (see quirks.dm for more details)
|
||||||
|
to_chat(user, "<span class='danger'>[quirk] is incompatible with [Q].</span>")
|
||||||
|
return
|
||||||
var/value = SSquirks.quirk_points[quirk]
|
var/value = SSquirks.quirk_points[quirk]
|
||||||
if(value == 0)
|
var/balance = GetQuirkBalance()
|
||||||
if(quirk in neutral_quirks)
|
if(quirk in all_quirks)
|
||||||
neutral_quirks -= quirk
|
if(balance + value < 0)
|
||||||
all_quirks -= quirk
|
to_chat(user, "<span class='warning'>Refunding this would cause you to go below your balance!</span>")
|
||||||
else
|
return
|
||||||
neutral_quirks += quirk
|
all_quirks -= quirk
|
||||||
all_quirks += quirk
|
|
||||||
else
|
else
|
||||||
var/balance = GetQuirkBalance()
|
if(GetPositiveQuirkCount() >= MAX_QUIRKS)
|
||||||
if(quirk in positive_quirks)
|
to_chat(user, "<span class='warning'>You can't have more than [MAX_QUIRKS] positive quirks!</span>")
|
||||||
positive_quirks -= quirk
|
return
|
||||||
all_quirks -= quirk
|
if(balance - value < 0)
|
||||||
else if(quirk in negative_quirks)
|
to_chat(user, "<span class='warning'>You don't have enough balance to gain this quirk!</span>")
|
||||||
if(balance + value < 0)
|
return
|
||||||
to_chat(user, "<span class='warning'>Refunding this would cause you to go below your balance!</span>")
|
all_quirks += quirk
|
||||||
return
|
|
||||||
negative_quirks -= quirk
|
|
||||||
all_quirks -= quirk
|
|
||||||
else if(value > 0)
|
|
||||||
if(positive_quirks.len >= MAX_QUIRKS)
|
|
||||||
to_chat(user, "<span class='warning'>You can't have more than [MAX_QUIRKS] positive quirks!</span>")
|
|
||||||
return
|
|
||||||
if(balance - value < 0)
|
|
||||||
to_chat(user, "<span class='warning'>You don't have enough balance to gain this quirk!</span>")
|
|
||||||
return
|
|
||||||
positive_quirks += quirk
|
|
||||||
all_quirks += quirk
|
|
||||||
else
|
|
||||||
negative_quirks += quirk
|
|
||||||
all_quirks += quirk
|
|
||||||
SetQuirks(user)
|
SetQuirks(user)
|
||||||
if("reset")
|
if("reset")
|
||||||
all_quirks = list()
|
all_quirks = list()
|
||||||
positive_quirks = list()
|
|
||||||
negative_quirks = list()
|
|
||||||
neutral_quirks = list()
|
|
||||||
SetQuirks(user)
|
SetQuirks(user)
|
||||||
else
|
else
|
||||||
SetQuirks(user)
|
SetQuirks(user)
|
||||||
|
|||||||
@@ -112,7 +112,6 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
|
|||||||
if(current_version < 24 && S["feature_exhibitionist"])
|
if(current_version < 24 && S["feature_exhibitionist"])
|
||||||
var/datum/quirk/exhibitionism/E
|
var/datum/quirk/exhibitionism/E
|
||||||
var/quirk_name = initial(E.name)
|
var/quirk_name = initial(E.name)
|
||||||
neutral_quirks += quirk_name
|
|
||||||
all_quirks += quirk_name
|
all_quirks += quirk_name
|
||||||
|
|
||||||
/datum/preferences/proc/load_path(ckey,filename="preferences.sav")
|
/datum/preferences/proc/load_path(ckey,filename="preferences.sav")
|
||||||
@@ -386,9 +385,6 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
|
|||||||
|
|
||||||
//Quirks
|
//Quirks
|
||||||
S["all_quirks"] >> all_quirks
|
S["all_quirks"] >> all_quirks
|
||||||
S["positive_quirks"] >> positive_quirks
|
|
||||||
S["negative_quirks"] >> negative_quirks
|
|
||||||
S["neutral_quirks"] >> neutral_quirks
|
|
||||||
|
|
||||||
//Citadel code
|
//Citadel code
|
||||||
S["feature_genitals_use_skintone"] >> features["genitals_use_skintone"]
|
S["feature_genitals_use_skintone"] >> features["genitals_use_skintone"]
|
||||||
@@ -519,10 +515,6 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
|
|||||||
|
|
||||||
all_quirks = SANITIZE_LIST(all_quirks)
|
all_quirks = SANITIZE_LIST(all_quirks)
|
||||||
|
|
||||||
positive_quirks = SANITIZE_LIST(positive_quirks)
|
|
||||||
negative_quirks = SANITIZE_LIST(negative_quirks)
|
|
||||||
neutral_quirks = SANITIZE_LIST(neutral_quirks)
|
|
||||||
|
|
||||||
cit_character_pref_load(S)
|
cit_character_pref_load(S)
|
||||||
|
|
||||||
return 1
|
return 1
|
||||||
@@ -598,9 +590,6 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
|
|||||||
|
|
||||||
//Quirks
|
//Quirks
|
||||||
WRITE_FILE(S["all_quirks"] , all_quirks)
|
WRITE_FILE(S["all_quirks"] , all_quirks)
|
||||||
WRITE_FILE(S["positive_quirks"] , positive_quirks)
|
|
||||||
WRITE_FILE(S["negative_quirks"] , negative_quirks)
|
|
||||||
WRITE_FILE(S["neutral_quirks"] , neutral_quirks)
|
|
||||||
|
|
||||||
cit_character_pref_save(S)
|
cit_character_pref_save(S)
|
||||||
|
|
||||||
|
|||||||
@@ -41,7 +41,7 @@
|
|||||||
blood_type = B.data["blood_type"]
|
blood_type = B.data["blood_type"]
|
||||||
features = B.data["features"]
|
features = B.data["features"]
|
||||||
factions = B.data["factions"]
|
factions = B.data["factions"]
|
||||||
factions = B.data["quirks"]
|
quirks = B.data["quirks"]
|
||||||
contains_sample = TRUE
|
contains_sample = TRUE
|
||||||
visible_message("<span class='notice'>The [src] is injected with a fresh blood sample.</span>")
|
visible_message("<span class='notice'>The [src] is injected with a fresh blood sample.</span>")
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -858,6 +858,7 @@
|
|||||||
.["Make slime"] = "?_src_=vars;[HrefToken()];makeslime=[REF(src)]"
|
.["Make slime"] = "?_src_=vars;[HrefToken()];makeslime=[REF(src)]"
|
||||||
.["Toggle Purrbation"] = "?_src_=vars;[HrefToken()];purrbation=[REF(src)]"
|
.["Toggle Purrbation"] = "?_src_=vars;[HrefToken()];purrbation=[REF(src)]"
|
||||||
.["Copy outfit"] = "?_src_=vars;[HrefToken()];copyoutfit=[REF(src)]"
|
.["Copy outfit"] = "?_src_=vars;[HrefToken()];copyoutfit=[REF(src)]"
|
||||||
|
.["Add/Remove Quirks"] = "?_src_=vars;[HrefToken()];modquirks=[REF(src)]"
|
||||||
|
|
||||||
/mob/living/carbon/human/MouseDrop_T(mob/living/target, mob/living/user)
|
/mob/living/carbon/human/MouseDrop_T(mob/living/target, mob/living/user)
|
||||||
if(pulling == target && grab_state >= GRAB_AGGRESSIVE && stat == CONSCIOUS)
|
if(pulling == target && grab_state >= GRAB_AGGRESSIVE && stat == CONSCIOUS)
|
||||||
|
|||||||
@@ -140,24 +140,28 @@
|
|||||||
|
|
||||||
/////////////////////////////////// DISABILITIES ////////////////////////////////////
|
/////////////////////////////////// DISABILITIES ////////////////////////////////////
|
||||||
|
|
||||||
/mob/living/proc/add_quirk(quirk, spawn_effects) //separate proc due to the way these ones are handled
|
/mob/living/proc/add_quirk(quirktype, spawn_effects) //separate proc due to the way these ones are handled
|
||||||
if(HAS_TRAIT(src, quirk))
|
if(has_quirk(quirktype))
|
||||||
return
|
return
|
||||||
if(!SSquirks || !SSquirks.quirks[quirk])
|
var/datum/quirk/T = quirktype
|
||||||
|
var/qname = initial(T.name)
|
||||||
|
if(!SSquirks || !SSquirks.quirks[qname])
|
||||||
return
|
return
|
||||||
var/datum/quirk/T = SSquirks.quirks[quirk]
|
new quirktype (src, spawn_effects)
|
||||||
new T (src, spawn_effects)
|
|
||||||
return TRUE
|
return TRUE
|
||||||
|
|
||||||
/mob/living/proc/remove_quirk(quirk)
|
/mob/living/proc/remove_quirk(quirktype)
|
||||||
var/datum/quirk/T = roundstart_quirks[quirk]
|
for(var/datum/quirk/Q in roundstart_quirks)
|
||||||
if(T)
|
if(Q.type == quirktype)
|
||||||
qdel(T)
|
qdel(Q)
|
||||||
return TRUE
|
return TRUE
|
||||||
|
return FALSE
|
||||||
/mob/living/proc/has_quirk(quirk)
|
|
||||||
return roundstart_quirks[quirk]
|
|
||||||
|
|
||||||
|
/mob/living/proc/has_quirk(quirktype)
|
||||||
|
for(var/datum/quirk/Q in roundstart_quirks)
|
||||||
|
if(Q.type == quirktype)
|
||||||
|
return TRUE
|
||||||
|
return FALSE
|
||||||
/////////////////////////////////// TRAIT PROCS ////////////////////////////////////
|
/////////////////////////////////// TRAIT PROCS ////////////////////////////////////
|
||||||
|
|
||||||
/mob/living/proc/cure_blind(list/sources)
|
/mob/living/proc/cure_blind(list/sources)
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/datum/reagent/blood
|
/datum/reagent/blood
|
||||||
data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_HUMAN, "blood_type"= null,"resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null)
|
data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_HUMAN, "blood_type"= null,"resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null,"quirks"=null)
|
||||||
name = "Blood"
|
name = "Blood"
|
||||||
id = "blood"
|
id = "blood"
|
||||||
value = 1
|
value = 1
|
||||||
|
|||||||
Reference in New Issue
Block a user