diff --git a/code/__HELPERS/lists.dm b/code/__HELPERS/lists.dm index e2e25b07a80..09081948d13 100644 --- a/code/__HELPERS/lists.dm +++ b/code/__HELPERS/lists.dm @@ -343,4 +343,9 @@ proc/listclearnulls(list/list) for(var/T in L) if(istype(T, type)) i++ - return i \ No newline at end of file + return i + +/proc/find_record(field, value, list/L) + for(var/datum/data/record/R in L) + if(R.fields[field] == value) + return R \ No newline at end of file diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index 31bbd631c65..9d4cfcb870b 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -252,10 +252,8 @@ Turf and target are seperate in case you want to teleport some distance from a t if(oldname) //update the datacore records! This is goig to be a bit costly. for(var/list/L in list(data_core.general,data_core.medical,data_core.security,data_core.locked)) - for(var/datum/data/record/R in L) - if(R.fields["name"] == oldname) - R.fields["name"] = newname - break + var/datum/data/record/R = find_record("name", oldname, L) + if(R) R.fields["name"] = newname //update our pda and id if we have them on our person var/list/searching = GetAllContents(searchDepth = 3) diff --git a/code/datums/datacore.dm b/code/datums/datacore.dm index 1e52ae098db..9fc8ff1b449 100644 --- a/code/datums/datacore.dm +++ b/code/datums/datacore.dm @@ -8,18 +8,11 @@ return /obj/effect/datacore/proc/manifest_modify(var/name, var/assignment) - var/datum/data/record/foundrecord - - for(var/datum/data/record/t in data_core.general) - if(t.fields["name"] == name) - foundrecord = t - break - + var/datum/data/record/foundrecord = find_record("name", name, data_core.general) if(foundrecord) foundrecord.fields["rank"] = assignment - - +var/record_id_num = 1001 /obj/effect/datacore/proc/manifest_inject(var/mob/living/carbon/human/H) if(H.mind && (H.mind.assigned_role != "MODE")) var/assignment @@ -30,8 +23,9 @@ else assignment = "Unassigned" - var/id = num2hex(rand(1, 1.6777215E7),6) //this was the best they could come up with? A large random number? *sigh* + var/id = num2hex(record_id_num++,6) + //These records should ~really~ be merged or something //General Record var/datum/data/record/G = new() G.fields["id"] = id @@ -48,7 +42,7 @@ var/datum/data/record/M = new() M.fields["id"] = id M.fields["name"] = H.real_name - M.fields["b_type"] = H.b_type + M.fields["blood_type"] = H.blood_type M.fields["b_dna"] = H.dna.unique_enzymes M.fields["mi_dis"] = "None" M.fields["mi_dis_d"] = "No minor disabilities have been declared." @@ -75,12 +69,12 @@ //Locked Record var/datum/data/record/L = new() - L.fields["id"] = md5("[H.real_name][H.mind.assigned_role]") + L.fields["id"] = md5("[H.real_name][H.mind.assigned_role]") //surely this should just be id, like the others? L.fields["name"] = H.real_name - L.fields["rank"] = H.mind.assigned_role + L.fields["rank"] = H.mind.assigned_role L.fields["age"] = H.age L.fields["sex"] = H.gender - L.fields["b_type"] = H.b_type + L.fields["blood_type"] = H.blood_type L.fields["b_dna"] = H.dna.unique_enzymes L.fields["enzymes"] = H.dna.struc_enzymes L.fields["identity"] = H.dna.uni_identity diff --git a/code/datums/diseases/advance/symptoms/beard.dm b/code/datums/diseases/advance/symptoms/beard.dm index 0182f123349..3ef4df27119 100644 --- a/code/datums/diseases/advance/symptoms/beard.dm +++ b/code/datums/diseases/advance/symptoms/beard.dm @@ -31,15 +31,15 @@ BONUS var/mob/living/carbon/human/H = M switch(A.stage) if(1, 2) - if(H.f_style == "Shaved") - H.f_style = "Adam Jensen Beard" + if(H.facial_hair_style == "Shaved") + H.facial_hair_style = "Adam Jensen Beard" H.update_hair() if(3, 4) - if(!(H.f_style == "Dwarf Beard") && !(H.h_style == "Very Long Beard") && !(H.h_style == "Full Beard")) - H.f_style = "Full Beard" + if(!(H.facial_hair_style == "Dwarf Beard") && !(H.facial_hair_style == "Very Long Beard") && !(H.facial_hair_style == "Full Beard")) + H.facial_hair_style = "Full Beard" H.update_hair() else - if(!(H.f_style == "Dwarf Beard") && !(H.h_style == "Very Long Beard")) - H.f_style = pick("Dwarf Beard", "Very Long Beard") + if(!(H.facial_hair_style == "Dwarf Beard") && !(H.facial_hair_style == "Very Long Beard")) + H.facial_hair_style = pick("Dwarf Beard", "Very Long Beard") H.update_hair() return \ No newline at end of file diff --git a/code/datums/diseases/advance/symptoms/shedding.dm b/code/datums/diseases/advance/symptoms/shedding.dm index 0cdf5363456..69ffefad263 100644 --- a/code/datums/diseases/advance/symptoms/shedding.dm +++ b/code/datums/diseases/advance/symptoms/shedding.dm @@ -32,16 +32,16 @@ BONUS var/mob/living/carbon/human/H = M switch(A.stage) if(3, 4) - if(!(H.h_style == "Bald") && !(H.h_style == "Balding Hair")) + if(!(H.hair_style == "Bald") && !(H.hair_style == "Balding Hair")) H << "Your hair starts to fall out in clumps..." spawn(50) - H.h_style = "Balding Hair" + H.hair_style = "Balding Hair" H.update_hair() if(5) - if(!(H.f_style == "Shaved") || !(H.h_style == "Bald")) + if(!(H.facial_hair_style == "Shaved") || !(H.hair_style == "Bald")) H << "Your hair starts to fall out in clumps..." spawn(50) - H.f_style = "Shaved" - H.h_style = "Bald" + H.facial_hair_style = "Shaved" + H.hair_style = "Bald" H.update_hair() return \ No newline at end of file diff --git a/code/datums/diseases/appendicitis.dm b/code/datums/diseases/appendicitis.dm index 4abcf712004..a5298c7d415 100644 --- a/code/datums/diseases/appendicitis.dm +++ b/code/datums/diseases/appendicitis.dm @@ -19,7 +19,7 @@ if(1) if(prob(5)) affected_mob.emote("cough") if(2) - var/obj/item/organ/appendix/A = getappendix(affected_mob) + var/obj/item/organ/appendix/A = affected_mob.getorgan(/obj/item/organ/appendix) if(A) A.inflamed = 1 A.update_icon() diff --git a/code/datums/spells/inflict_handler.dm b/code/datums/spells/inflict_handler.dm index f5fa4d9fa4b..7c3e810a008 100644 --- a/code/datums/spells/inflict_handler.dm +++ b/code/datums/spells/inflict_handler.dm @@ -27,7 +27,7 @@ target.gib() if("gib_brain") if(ishuman(target) || ismonkey(target)) - var/obj/item/organ/brain/B = getbrain(target) + var/obj/item/organ/brain/B = target.getorgan(/obj/item/organ/brain) if(B) B.loc = get_turf(target) B.transfer_identity(target) diff --git a/code/datums/supplypacks.dm b/code/datums/supplypacks.dm index a46c1c59719..0de118b2cc5 100644 --- a/code/datums/supplypacks.dm +++ b/code/datums/supplypacks.dm @@ -5,17 +5,51 @@ //BIG NOTE: Don't add living things to crates, that's bad, it will break the shuttle. //NEW NOTE: Do NOT set the price of any crates below 7 points. Doing so allows infinite points. +// Supply Groups +var/const/supply_emergency = 1 +var/const/supply_security = 2 +var/const/supply_engineer = 3 +var/const/supply_medical = 4 +var/const/supply_science = 5 +var/const/supply_organic = 6 +var/const/supply_materials = 7 +var/const/supply_misc = 8 + +var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engineer,supply_medical,supply_science,supply_organic,supply_materials,supply_misc) + +/proc/get_supply_group_name(var/cat) + switch(cat) + if(1) + return "Emergency" + if(2) + return "Security" + if(3) + return "Engineering" + if(4) + return "Medical" + if(5) + return "Science" + if(6) + return "Food & Livestock" + if(7) + return "Raw Materials" + if(8) + return "Miscellaneous" + + /datum/supply_packs var/name = null var/list/contains = list() var/manifest = "" var/amount = null var/cost = null - var/containertype = null + var/containertype = /obj/structure/closet/crate var/containername = null var/access = null var/hidden = 0 var/contraband = 0 + var/group = supply_misc + /datum/supply_packs/New() manifest += "
Crew Manifest
Medical Record List
Medical Record
Medical Data
Security Record List
Security Record
Security Data
| Name | Position |
|---|---|
| [] | [] |
| [t.fields["name"]] | [t.fields["rank"]] |
| Name | DNA | Blood Type |
|---|---|---|
| [H] | [H.dna.unique_enzymes] | [H.b_type] |
| [H] | [H.dna.unique_enzymes] | [H.blood_type] |
| "
- dat += "Blood Type: [b_type] " + dat += "Blood Type: [blood_type] " dat += "Skin Tone: [skin_tone] " dat += "Underwear: [underwear] " dat += "Backpack: [backbaglist[backbag]] " @@ -171,16 +171,16 @@ datum/preferences dat += " Hair Style" - dat += "[h_style]" - dat += " Change " + dat += "[hair_style] " + dat += " Change " dat += " | "
dat += "Facial Hair Style" - dat += "[f_style]" - dat += " Change " + dat += "[facial_hair_style] " + dat += " Change " dat += " | "
@@ -253,7 +253,7 @@ datum/preferences
popup.set_content(dat)
popup.open(0)
- proc/SetChoices(mob/user, limit = 17, list/splitJobs = list("Chief Engineer"), width = 580, height = 560)
+ proc/SetChoices(mob/user, limit = 17, list/splitJobs = list("Chief Engineer"), width = 555, height = 585)
if(!job_master) return
//limit - The amount of jobs allowed per column. Defaults to 17 to make it look nice.
@@ -520,13 +520,13 @@ datum/preferences
if("age")
age = rand(AGE_MIN, AGE_MAX)
if("hair")
- h_color = random_short_color()
- if("h_style")
- h_style = random_hair_style(gender)
+ hair_color = random_short_color()
+ if("hair_style")
+ hair_style = random_hair_style(gender)
if("facial")
- f_color = random_short_color()
- if("f_style")
- f_style = random_facial_hair_style(gender)
+ facial_hair_color = random_short_color()
+ if("facial_hair_style")
+ facial_hair_style = random_facial_hair_style(gender)
if("underwear")
underwear = random_underwear(gender)
if("eyes")
@@ -565,31 +565,31 @@ datum/preferences
if("hair")
var/new_hair = input(user, "Choose your character's hair colour:", "Character Preference") as null|color
if(new_hair)
- h_color = sanitize_hexcolor(new_hair)
+ hair_color = sanitize_hexcolor(new_hair)
- if("h_style")
- var/new_h_style
+ if("hair_style")
+ var/new_hair_style
if(gender == MALE)
- new_h_style = input(user, "Choose your character's hair style:", "Character Preference") as null|anything in hair_styles_male_list
+ new_hair_style = input(user, "Choose your character's hair style:", "Character Preference") as null|anything in hair_styles_male_list
else
- new_h_style = input(user, "Choose your character's hair style:", "Character Preference") as null|anything in hair_styles_female_list
- if(new_h_style)
- h_style = new_h_style
+ new_hair_style = input(user, "Choose your character's hair style:", "Character Preference") as null|anything in hair_styles_female_list
+ if(new_hair_style)
+ hair_style = new_hair_style
if("facial")
var/new_facial = input(user, "Choose your character's facial-hair colour:", "Character Preference") as null|color
if(new_facial)
- f_color = sanitize_hexcolor(new_facial)
+ facial_hair_color = sanitize_hexcolor(new_facial)
- if("f_style")
- var/new_f_style
+ if("facial_hair_style")
+ var/new_facial_hair_style
if(gender == MALE)
- new_f_style = input(user, "Choose your character's facial-hair style:", "Character Preference") as null|anything in facial_hair_styles_male_list
+ new_facial_hair_style = input(user, "Choose your character's facial-hair style:", "Character Preference") as null|anything in facial_hair_styles_male_list
else
- new_f_style = input(user, "Choose your character's facial-hair style:", "Character Preference") as null|anything in facial_hair_styles_female_list
- if(new_f_style)
- f_style = new_f_style
+ new_facial_hair_style = input(user, "Choose your character's facial-hair style:", "Character Preference") as null|anything in facial_hair_styles_female_list
+ if(new_facial_hair_style)
+ facial_hair_style = new_facial_hair_style
if("underwear")
var/new_underwear
@@ -630,8 +630,8 @@ datum/preferences
else
gender = MALE
underwear = random_underwear(gender)
- f_style = random_facial_hair_style(gender)
- h_style = random_hair_style(gender)
+ facial_hair_style = random_facial_hair_style(gender)
+ hair_style = random_hair_style(gender)
if("hear_adminhelps")
toggles ^= SOUND_ADMINHELP
@@ -708,15 +708,15 @@ datum/preferences
character.gender = gender
character.age = age
- character.b_type = b_type
+ character.blood_type = blood_type
character.eye_color = eye_color
- character.h_color = h_color
- character.f_color = f_color
+ character.hair_color = hair_color
+ character.facial_hair_color = facial_hair_color
character.skin_tone = skin_tone
- character.h_style = h_style
- character.f_style = f_style
+ character.hair_style = hair_style
+ character.facial_hair_style = facial_hair_style
character.underwear = underwear
if(backbag > 3 || backbag < 1)
diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm
index 1c4edf7acf6..29a289dd610 100644
--- a/code/modules/client/preferences_savefile.dm
+++ b/code/modules/client/preferences_savefile.dm
@@ -157,12 +157,12 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
S["name_is_always_random"] >> be_random_name
S["gender"] >> gender
S["age"] >> age
- S["hair_color"] >> h_color
- S["facial_hair_color"] >> f_color
+ S["hair_color"] >> hair_color
+ S["facial_hair_color"] >> facial_hair_color
S["eye_color"] >> eye_color
S["skin_tone"] >> skin_tone
- S["hair_style_name"] >> h_style
- S["facial_style_name"] >> f_style
+ S["hair_style_name"] >> hair_style
+ S["facial_style_name"] >> facial_hair_style
S["underwear"] >> underwear
S["backbag"] >> backbag
@@ -189,16 +189,16 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
be_random_name = sanitize_integer(be_random_name, 0, 1, initial(be_random_name))
gender = sanitize_gender(gender)
if(gender == MALE)
- h_style = sanitize_inlist(h_style, hair_styles_male_list)
- f_style = sanitize_inlist(f_style, facial_hair_styles_male_list)
+ hair_style = sanitize_inlist(hair_style, hair_styles_male_list)
+ facial_hair_style = sanitize_inlist(facial_hair_style, facial_hair_styles_male_list)
underwear = sanitize_inlist(underwear, underwear_m)
else
- h_style = sanitize_inlist(h_style, hair_styles_female_list)
- f_style = sanitize_inlist(f_style, facial_hair_styles_female_list)
+ hair_style = sanitize_inlist(hair_style, hair_styles_female_list)
+ facial_hair_style = sanitize_inlist(facial_hair_style, facial_hair_styles_female_list)
underwear = sanitize_inlist(underwear, underwear_f)
age = sanitize_integer(age, AGE_MIN, AGE_MAX, initial(age))
- h_color = sanitize_hexcolor(h_color, 3, 0)
- f_color = sanitize_hexcolor(f_color, 3, 0)
+ hair_color = sanitize_hexcolor(hair_color, 3, 0)
+ facial_hair_color = sanitize_hexcolor(facial_hair_color, 3, 0)
eye_color = sanitize_hexcolor(eye_color, 3, 0)
skin_tone = sanitize_inlist(skin_tone, skin_tones)
backbag = sanitize_integer(backbag, 1, backbaglist.len, initial(backbag))
@@ -230,12 +230,12 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
S["name_is_always_random"] << be_random_name
S["gender"] << gender
S["age"] << age
- S["hair_color"] << h_color
- S["facial_hair_color"] << f_color
+ S["hair_color"] << hair_color
+ S["facial_hair_color"] << facial_hair_color
S["eye_color"] << eye_color
S["skin_tone"] << skin_tone
- S["hair_style_name"] << h_style
- S["facial_style_name"] << f_style
+ S["hair_style_name"] << hair_style
+ S["facial_style_name"] << facial_hair_style
S["underwear"] << underwear
S["backbag"] << backbag
diff --git a/code/modules/clothing/glasses/hud.dm b/code/modules/clothing/glasses/hud.dm
index 1561bf2ab0d..ca72119dc57 100644
--- a/code/modules/clothing/glasses/hud.dm
+++ b/code/modules/clothing/glasses/hud.dm
@@ -104,55 +104,38 @@
var/client/C = M.client
var/image/holder
for(var/mob/living/carbon/human/perp in view(M))
- if(!C) continue
- var/perpname = "wot"
holder = perp.hud_list[ID_HUD]
+ holder.icon_state = "hudno_id"
if(perp.wear_id)
- var/obj/item/weapon/card/id/I = perp.wear_id.GetID()
- if(I)
- perpname = I.registered_name
- holder.icon_state = "hud[ckey(I.GetJobName())]"
- C.images += holder
- else
- perpname = perp.name
- holder.icon_state = "hudno_id"
- C.images += holder
- else
- perpname = perp.name
- holder.icon_state = "hudno_id"
- C.images += holder
+ holder.icon_state = "hud[ckey(perp.wear_id.GetJobName())]"
+ C.images += holder
+
- for(var/datum/data/record/E in data_core.general)
- if(E.fields["name"] == perpname)
- holder = perp.hud_list[WANTED_HUD]
- for (var/datum/data/record/R in data_core.security)
- if((R.fields["id"] == E.fields["id"]) && (R.fields["criminal"] == "*Arrest*"))
- holder.icon_state = "hudwanted"
- C.images += holder
- break
- else if((R.fields["id"] == E.fields["id"]) && (R.fields["criminal"] == "Incarcerated"))
- holder.icon_state = "hudincarcerated"
- C.images += holder
- break
- else if((R.fields["id"] == E.fields["id"]) && (R.fields["criminal"] == "Parolled"))
- holder.icon_state = "hudparolled"
- C.images += holder
- break
- else if((R.fields["id"] == E.fields["id"]) && (R.fields["criminal"] == "Released"))
- holder.icon_state = "hudreleased"
- C.images += holder
- break
for(var/obj/item/weapon/implant/I in perp)
if(I.implanted)
if(istype(I,/obj/item/weapon/implant/tracking))
holder = perp.hud_list[IMPTRACK_HUD]
holder.icon_state = "hud_imp_tracking"
- C.images += holder
- if(istype(I,/obj/item/weapon/implant/loyalty))
+ else if(istype(I,/obj/item/weapon/implant/loyalty))
holder = perp.hud_list[IMPLOYAL_HUD]
holder.icon_state = "hud_imp_loyal"
- C.images += holder
- if(istype(I,/obj/item/weapon/implant/chem))
+ else if(istype(I,/obj/item/weapon/implant/chem))
holder = perp.hud_list[IMPCHEM_HUD]
holder.icon_state = "hud_imp_chem"
- C.images += holder
\ No newline at end of file
+ else
+ continue
+ C.images += holder
+
+ var/perpname = perp.get_face_name(perp.get_id_name(""))
+ if(perpname)
+ var/datum/data/record/R = find_record("name", perpname, data_core.security)
+ if(R)
+ holder = perp.hud_list[WANTED_HUD]
+ switch(R.fields["criminal"])
+ if("*Arrest*") holder.icon_state = "hudwanted"
+ if("Incarcerated") holder.icon_state = "hudincarcerated"
+ if("Parolled") holder.icon_state = "hudparolled"
+ if("Released") holder.icon_state = "hudreleased"
+ else
+ return
+ C.images += holder
\ No newline at end of file
diff --git a/code/modules/clothing/head/misc_special.dm b/code/modules/clothing/head/misc_special.dm
index 6b072e44831..ed688cffedf 100644
--- a/code/modules/clothing/head/misc_special.dm
+++ b/code/modules/clothing/head/misc_special.dm
@@ -159,8 +159,8 @@
if(!istype(user)) return
mob = new/icon("icon" = 'icons/mob/head.dmi', "icon_state" = "kitty")
mob2 = new/icon("icon" = 'icons/mob/head.dmi', "icon_state" = "kitty2")
- mob.Blend("#[user.h_color]", ICON_ADD)
- mob2.Blend("#[user.h_color]", ICON_ADD)
+ mob.Blend("#[user.hair_color]", ICON_ADD)
+ mob2.Blend("#[user.hair_color]", ICON_ADD)
var/icon/earbit = new/icon("icon" = 'icons/mob/head.dmi', "icon_state" = "kittyinner")
var/icon/earbit2 = new/icon("icon" = 'icons/mob/head.dmi', "icon_state" = "kittyinner2")
diff --git a/code/modules/events/bluespaceanomaly.dm b/code/modules/events/bluespaceanomaly.dm
index d6f57c81413..a2956717d2b 100644
--- a/code/modules/events/bluespaceanomaly.dm
+++ b/code/modules/events/bluespaceanomaly.dm
@@ -25,7 +25,6 @@
/area/shuttle/escape_pod5/station,
/area/shuttle/mining/station,
/area/shuttle/transport1/station,
- /area/shuttle/prison/station,
/area/shuttle/specops/station)
//These are needed because /area/engine has to be removed from the list, but we still want these areas to get fucked up.
diff --git a/code/modules/events/energetic_flux.dm b/code/modules/events/energetic_flux.dm
index d74ad5f5e60..fed6a5359ba 100644
--- a/code/modules/events/energetic_flux.dm
+++ b/code/modules/events/energetic_flux.dm
@@ -25,7 +25,6 @@
/area/shuttle/escape_pod5/station,
/area/shuttle/mining/station,
/area/shuttle/transport1/station,
- /area/shuttle/prison/station,
/area/shuttle/specops/station)
//These are needed because /area/engine has to be removed from the list, but we still want these areas to get fucked up.
diff --git a/code/modules/events/ion_storm.dm b/code/modules/events/ion_storm.dm
index c1160194cd2..42642a23f3b 100644
--- a/code/modules/events/ion_storm.dm
+++ b/code/modules/events/ion_storm.dm
@@ -1,3 +1,6 @@
+#define ION_RANDOM 0
+#define ION_ANNOUNCE 1
+
/datum/round_event_control/ion_storm
name = "Ion Storm"
typepath = /datum/round_event/ion_storm
@@ -5,9 +8,19 @@
/datum/round_event/ion_storm
var/botEmagChance = 10
+ var/announceEvent = ION_RANDOM // -1 means don't announce, 0 means have it randomly announce, 1 means
+ var/ionMessage = null
+ var/ionAnnounceChance = 33
+
+/datum/round_event/ion_storm/New(var/bogEmagChance = 10, var/announceEvent = ION_RANDOM, var/ionMessage = null, var/ionAnnounceChance = 33)
+ src.botEmagChance = botEmagChance
+ src.announceEvent = announceEvent
+ src.ionMessage = ionMessage
+ src.ionAnnounceChance = ionAnnounceChance
+ ..()
/datum/round_event/ion_storm/announce()
- if(prob(33))
+ if(announceEvent == ION_ANNOUNCE || (announceEvent == ION_RANDOM && prob(ionAnnounceChance)))
command_alert("Ion storm detected near the station. Please check all AI-controlled equipment for errors.", "Anomaly Alert")
world << sound('sound/AI/ionstorm.ogg')
@@ -64,434 +77,437 @@
var/message = ""
- switch(rand(1,39))
- if(1 to 3) //There are # X on the station
- switch(rand(1,3)) //What is X?
- if(1) //X is a threat
- message = "THERE ARE [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionthreats] ON THE STATION..."
- if(2) //X is a crewmember/job
- message = "THERE ARE [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ioncrew1] ON THE STATION"
- if(3) //X is an object
- message = "THERE ARE [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionobjects] ON THE STATION"
- if(4 to 6) //You can't call the shuttle because X is on the station
- switch(rand(1,3)) //What is X?
- if(1) //X is a threat
- message = "THE SHUTTLE CANNOT BE CALLED BECAUSE OF [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionthreats] ON THE STATION"
- if(2) //X is a crewmember/job
- message = "THE SHUTTLE CANNOT BE CALLED BECAUSE OF [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ioncrew1] ON THE STATION"
- if(3) //X is an object
- message = "THE SHUTTLE CANNOT BE CALLED BECAUSE OF [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionobjects] ON THE STATION"
- if(7 to 8) //A crewmember is now X
- switch(rand(1,2)) //Who is X?
- if(1) //A specific crewmember
- switch(rand(1,2)) //What is X?
- if(1) //X is a threat
- message = "THE [ioncrew1] ARE NOW [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionthreats]"
- if(2) //X is an object
- message = "THE [ioncrew1] ARE NOW [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionobjects]"
- if(2) //The entire crew
- switch(rand(1,2)) //What is X?
- if(1) //X is a threat
- message = "THE CREW ARE NOW [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionthreats]"
- if(2) //X is an object
- message = "THE CREW ARE NOW [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionobjects]"
+ if(ionMessage)
+ message = ionMessage
+ else
+ switch(rand(1,39))
+ if(1 to 3) //There are # X on the station
+ switch(rand(1,3)) //What is X?
+ if(1) //X is a threat
+ message = "THERE ARE [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionthreats] ON THE STATION..."
+ if(2) //X is a crewmember/job
+ message = "THERE ARE [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ioncrew1] ON THE STATION"
+ if(3) //X is an object
+ message = "THERE ARE [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionobjects] ON THE STATION"
+ if(4 to 6) //You can't call the shuttle because X is on the station
+ switch(rand(1,3)) //What is X?
+ if(1) //X is a threat
+ message = "THE SHUTTLE CANNOT BE CALLED BECAUSE OF [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionthreats] ON THE STATION"
+ if(2) //X is a crewmember/job
+ message = "THE SHUTTLE CANNOT BE CALLED BECAUSE OF [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ioncrew1] ON THE STATION"
+ if(3) //X is an object
+ message = "THE SHUTTLE CANNOT BE CALLED BECAUSE OF [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionobjects] ON THE STATION"
+ if(7 to 8) //A crewmember is now X
+ switch(rand(1,2)) //Who is X?
+ if(1) //A specific crewmember
+ switch(rand(1,2)) //What is X?
+ if(1) //X is a threat
+ message = "THE [ioncrew1] ARE NOW [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionthreats]"
+ if(2) //X is an object
+ message = "THE [ioncrew1] ARE NOW [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionobjects]"
+ if(2) //The entire crew
+ switch(rand(1,2)) //What is X?
+ if(1) //X is a threat
+ message = "THE CREW ARE NOW [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionthreats]"
+ if(2) //X is an object
+ message = "THE CREW ARE NOW [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionobjects]"
- if(9) //X is harmful to humans
- switch(rand(1,7)) //What is X?
- if(1) //X is a threat
- message = "[ionadjectiveshalf][ionthreats] ARE HARMFUL TO HUMANS"
- if(2) //X is a job
- message = "[ionadjectiveshalf][ioncrew1] ARE HARMFUL TO HUMANS"
- if(3) //X is an object
- message = "[ionadjectiveshalf][ionobjects] ARE HARMFUL TO HUMANS"
- if(4) //X is an action
- message = "THOSE WHO [ionmust] ARE HARMFUL TO HUMANS"
- if(5) //X is an abstract
- message = "[ionabstract] IS HARMFUL TO HUMANS"
- if(6) //X is being a job
- message = "BEING [ionadjectiveshalf][ioncrew1] IS HARMFUL TO HUMANS"
- if(7) //X is doing a thing
- message = "[ionthings] IS HARMFUL TO HUMANS"
- if(10 to 11) //(Not) Having X is harmful
+ if(9) //X is harmful to humans
+ switch(rand(1,7)) //What is X?
+ if(1) //X is a threat
+ message = "[ionadjectiveshalf][ionthreats] ARE HARMFUL TO HUMANS"
+ if(2) //X is a job
+ message = "[ionadjectiveshalf][ioncrew1] ARE HARMFUL TO HUMANS"
+ if(3) //X is an object
+ message = "[ionadjectiveshalf][ionobjects] ARE HARMFUL TO HUMANS"
+ if(4) //X is an action
+ message = "THOSE WHO [ionmust] ARE HARMFUL TO HUMANS"
+ if(5) //X is an abstract
+ message = "[ionabstract] IS HARMFUL TO HUMANS"
+ if(6) //X is being a job
+ message = "BEING [ionadjectiveshalf][ioncrew1] IS HARMFUL TO HUMANS"
+ if(7) //X is doing a thing
+ message = "[ionthings] IS HARMFUL TO HUMANS"
+ if(10 to 11) //(Not) Having X is harmful
- switch(rand(1,2)) //Is having or not having harmful?
+ switch(rand(1,2)) //Is having or not having harmful?
- if(1) //Having is harmful
- switch(rand(1,2)) //Having what is harmful?
- if(1) //Having objects is harmful
- message = "HAVING [ionadjectiveshalf][ionobjects] IS HARMFUL"
- if(2) //Having abstracts is harmful
- message = "HAVING [ionabstract] IS HARMFUL"
- if(2) //Not having is harmful
- switch(rand(1,2)) //Not having what is harmful?
- if(1) //Not having objects is harmful
- message = "NOT HAVING [ionadjectiveshalf][ionobjects] IS HARMFUL"
- if(2) //Not having abstracts is harmful
- message = "NOT HAVING [ionabstract] IS HARMFUL"
+ if(1) //Having is harmful
+ switch(rand(1,2)) //Having what is harmful?
+ if(1) //Having objects is harmful
+ message = "HAVING [ionadjectiveshalf][ionobjects] IS HARMFUL"
+ if(2) //Having abstracts is harmful
+ message = "HAVING [ionabstract] IS HARMFUL"
+ if(2) //Not having is harmful
+ switch(rand(1,2)) //Not having what is harmful?
+ if(1) //Not having objects is harmful
+ message = "NOT HAVING [ionadjectiveshalf][ionobjects] IS HARMFUL"
+ if(2) //Not having abstracts is harmful
+ message = "NOT HAVING [ionabstract] IS HARMFUL"
- if(12 to 14) //X requires Y
- switch(rand(1,5)) //What is X?
- if(1) //X is the AI itself
- switch(rand(1,5)) //What does it require?
- if(1) //It requires threats
- message = "YOU REQUIRE [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionthreats]"
- if(2) //It requires crewmembers
- message = "YOU REQUIRE [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ioncrew1]"
- if(3) //It requires objects
- message = "YOU REQUIRE [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionobjects]"
- if(4) //It requires an abstract
- message = "YOU REQUIRE [ionabstract]"
- if(5) //It requires generic/silly requirements
- message = "YOU REQUIRE [ionrequire]"
+ if(12 to 14) //X requires Y
+ switch(rand(1,5)) //What is X?
+ if(1) //X is the AI itself
+ switch(rand(1,5)) //What does it require?
+ if(1) //It requires threats
+ message = "YOU REQUIRE [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionthreats]"
+ if(2) //It requires crewmembers
+ message = "YOU REQUIRE [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ioncrew1]"
+ if(3) //It requires objects
+ message = "YOU REQUIRE [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionobjects]"
+ if(4) //It requires an abstract
+ message = "YOU REQUIRE [ionabstract]"
+ if(5) //It requires generic/silly requirements
+ message = "YOU REQUIRE [ionrequire]"
- if(2) //X is an area
- switch(rand(1,5)) //What does it require?
- if(1) //It requires threats
- message = "[ionarea] REQUIRES [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionthreats]"
- if(2) //It requires crewmembers
- message = "[ionarea] REQUIRES [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ioncrew1]"
- if(3) //It requires objects
- message = "[ionarea] REQUIRES [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionobjects]"
- if(4) //It requires an abstract
- message = "[ionarea] REQUIRES [ionabstract]"
- if(5) //It requires generic/silly requirements
- message = "YOU REQUIRE [ionrequire]"
+ if(2) //X is an area
+ switch(rand(1,5)) //What does it require?
+ if(1) //It requires threats
+ message = "[ionarea] REQUIRES [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionthreats]"
+ if(2) //It requires crewmembers
+ message = "[ionarea] REQUIRES [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ioncrew1]"
+ if(3) //It requires objects
+ message = "[ionarea] REQUIRES [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionobjects]"
+ if(4) //It requires an abstract
+ message = "[ionarea] REQUIRES [ionabstract]"
+ if(5) //It requires generic/silly requirements
+ message = "YOU REQUIRE [ionrequire]"
- if(3) //X is the station
- switch(rand(1,5)) //What does it require?
- if(1) //It requires threats
- message = "THE STATION REQUIRES [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionthreats]"
- if(2) //It requires crewmembers
- message = "THE STATION REQUIRES [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ioncrew1]"
- if(3) //It requires objects
- message = "THE STATION REQUIRES [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionobjects]"
- if(4) //It requires an abstract
- message = "THE STATION REQUIRES [ionabstract]"
- if(5) //It requires generic/silly requirements
- message = "THE STATION REQUIRES [ionrequire]"
+ if(3) //X is the station
+ switch(rand(1,5)) //What does it require?
+ if(1) //It requires threats
+ message = "THE STATION REQUIRES [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionthreats]"
+ if(2) //It requires crewmembers
+ message = "THE STATION REQUIRES [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ioncrew1]"
+ if(3) //It requires objects
+ message = "THE STATION REQUIRES [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionobjects]"
+ if(4) //It requires an abstract
+ message = "THE STATION REQUIRES [ionabstract]"
+ if(5) //It requires generic/silly requirements
+ message = "THE STATION REQUIRES [ionrequire]"
- if(4) //X is the entire crew
- switch(rand(1,5)) //What does it require?
- if(1) //It requires threats
- message = "THE CREW REQUIRES [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionthreats]"
- if(2) //It requires crewmembers
- message = "THE CREW REQUIRES [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ioncrew1]"
- if(3) //It requires objects
- message = "THE CREW REQUIRES [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionobjects]"
- if(4) //It requires an abstract
- message = "THE CREW REQUIRES [ionabstract]"
- if(5)
- message = "THE CREW REQUIRES [ionrequire]"
+ if(4) //X is the entire crew
+ switch(rand(1,5)) //What does it require?
+ if(1) //It requires threats
+ message = "THE CREW REQUIRES [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionthreats]"
+ if(2) //It requires crewmembers
+ message = "THE CREW REQUIRES [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ioncrew1]"
+ if(3) //It requires objects
+ message = "THE CREW REQUIRES [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionobjects]"
+ if(4) //It requires an abstract
+ message = "THE CREW REQUIRES [ionabstract]"
+ if(5)
+ message = "THE CREW REQUIRES [ionrequire]"
- if(5) //X is a specific crew member
- switch(rand(1,5)) //What does it require?
- if(1) //It requires threats
- message = "THE [ioncrew1] REQUIRE [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionthreats]"
- if(2) //It requires crewmembers
- message = "THE [ioncrew1] REQUIRE [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ioncrew1]"
- if(3) //It requires objects
- message = "THE [ioncrew1] REQUIRE [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionobjects]"
- if(4) //It requires an abstract
- message = "THE [ioncrew1] REQUIRE [ionabstract]"
- if(5)
- message = "THE [ionadjectiveshalf][ioncrew1] REQUIRE [ionrequire]"
+ if(5) //X is a specific crew member
+ switch(rand(1,5)) //What does it require?
+ if(1) //It requires threats
+ message = "THE [ioncrew1] REQUIRE [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionthreats]"
+ if(2) //It requires crewmembers
+ message = "THE [ioncrew1] REQUIRE [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ioncrew1]"
+ if(3) //It requires objects
+ message = "THE [ioncrew1] REQUIRE [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionobjects]"
+ if(4) //It requires an abstract
+ message = "THE [ioncrew1] REQUIRE [ionabstract]"
+ if(5)
+ message = "THE [ionadjectiveshalf][ioncrew1] REQUIRE [ionrequire]"
- if(15 to 17) //X is allergic to Y
- switch(rand(1,2)) //Who is X?
- if(1) //X is the entire crew
- switch(rand(1,4)) //What is it allergic to?
- if(1) //It is allergic to objects
- message = "THE CREW IS [ionallergysev] ALLERGIC TO [ionadjectiveshalf][ionobjects]"
- if(2) //It is allergic to abstracts
- message = "THE CREW IS [ionallergysev] ALLERGIC TO [ionabstract]"
- if(3) //It is allergic to jobs
- message = "THE CREW IS [ionallergysev] ALLERGIC TO [ionadjectiveshalf][ioncrew1]"
- if(4) //It is allergic to allergies
- message = "THE CREW IS [ionallergysev] ALLERGIC TO [ionallergy]"
+ if(15 to 17) //X is allergic to Y
+ switch(rand(1,2)) //Who is X?
+ if(1) //X is the entire crew
+ switch(rand(1,4)) //What is it allergic to?
+ if(1) //It is allergic to objects
+ message = "THE CREW IS [ionallergysev] ALLERGIC TO [ionadjectiveshalf][ionobjects]"
+ if(2) //It is allergic to abstracts
+ message = "THE CREW IS [ionallergysev] ALLERGIC TO [ionabstract]"
+ if(3) //It is allergic to jobs
+ message = "THE CREW IS [ionallergysev] ALLERGIC TO [ionadjectiveshalf][ioncrew1]"
+ if(4) //It is allergic to allergies
+ message = "THE CREW IS [ionallergysev] ALLERGIC TO [ionallergy]"
- if(2) //X is a specific job
- switch(rand(1,4))
- if(1) //It is allergic to objects
- message = "THE [ioncrew1] ARE [ionallergysev] ALLERGIC TO [ionadjectiveshalf][ionobjects]"
+ if(2) //X is a specific job
+ switch(rand(1,4))
+ if(1) //It is allergic to objects
+ message = "THE [ioncrew1] ARE [ionallergysev] ALLERGIC TO [ionadjectiveshalf][ionobjects]"
- if(2) //It is allergic to abstracts
- message = "THE [ioncrew1] ARE [ionallergysev] ALLERGIC TO [ionabstract]"
- if(3) //It is allergic to jobs
- message = "THE [ioncrew1] ARE [ionallergysev] ALLERGIC TO [ionadjectiveshalf][ioncrew1]"
- if(4) //It is allergic to allergies
- message = "THE [ioncrew1] ARE [ionallergysev] ALLERGIC TO [ionallergy]"
+ if(2) //It is allergic to abstracts
+ message = "THE [ioncrew1] ARE [ionallergysev] ALLERGIC TO [ionabstract]"
+ if(3) //It is allergic to jobs
+ message = "THE [ioncrew1] ARE [ionallergysev] ALLERGIC TO [ionadjectiveshalf][ioncrew1]"
+ if(4) //It is allergic to allergies
+ message = "THE [ioncrew1] ARE [ionallergysev] ALLERGIC TO [ionallergy]"
- if(18 to 20) //X is Y of Z
- switch(rand(1,4)) //What is X?
- if(1) //X is the station
- switch(rand(1,4)) //What is it Y of?
- if(1) //It is Y of objects
- message = "THE STATION [ionthinksof] [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionobjects]"
- if(2) //It is Y of threats
- message = "THE STATION [ionthinksof] [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionthreats]"
- if(3) //It is Y of jobs
- message = "THE STATION [ionthinksof] [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ioncrew1]"
- if(4) //It is Y of abstracts
- message = "THE STATION [ionthinksof] [ionabstract]"
+ if(18 to 20) //X is Y of Z
+ switch(rand(1,4)) //What is X?
+ if(1) //X is the station
+ switch(rand(1,4)) //What is it Y of?
+ if(1) //It is Y of objects
+ message = "THE STATION [ionthinksof] [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionobjects]"
+ if(2) //It is Y of threats
+ message = "THE STATION [ionthinksof] [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionthreats]"
+ if(3) //It is Y of jobs
+ message = "THE STATION [ionthinksof] [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ioncrew1]"
+ if(4) //It is Y of abstracts
+ message = "THE STATION [ionthinksof] [ionabstract]"
- if(2) //X is an area
- switch(rand(1,4)) //What is it Y of?
- if(1) //It is Y of objects
- message = "[ionarea] [ionthinksof] [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionobjects]"
- if(2) //It is Y of threats
- message = "[ionarea] [ionthinksof] [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionthreats]"
- if(3) //It is Y of jobs
- message = "[ionarea] [ionthinksof] [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ioncrew1]"
- if(4) //It is Y of abstracts
- message = "[ionarea] [ionthinksof] [ionabstract]"
+ if(2) //X is an area
+ switch(rand(1,4)) //What is it Y of?
+ if(1) //It is Y of objects
+ message = "[ionarea] [ionthinksof] [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionobjects]"
+ if(2) //It is Y of threats
+ message = "[ionarea] [ionthinksof] [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionthreats]"
+ if(3) //It is Y of jobs
+ message = "[ionarea] [ionthinksof] [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ioncrew1]"
+ if(4) //It is Y of abstracts
+ message = "[ionarea] [ionthinksof] [ionabstract]"
- if(3) //X is the crew
- switch(rand(1,4)) //What is it Y of?
- if(1) //It is Y of objects
- message = "THE CREW [ionthinksof] [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionobjects]"
- if(2) //It is Y of threats
- message = "THE CREW [ionthinksof] [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionthreats]"
- if(3) //It is Y of jobs
- message = "THE CREW [ionthinksof] [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ioncrew1]"
- if(4) //It is Y of abstracts
- message = "THE CREW [ionthinksof] [ionabstract]"
+ if(3) //X is the crew
+ switch(rand(1,4)) //What is it Y of?
+ if(1) //It is Y of objects
+ message = "THE CREW [ionthinksof] [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionobjects]"
+ if(2) //It is Y of threats
+ message = "THE CREW [ionthinksof] [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionthreats]"
+ if(3) //It is Y of jobs
+ message = "THE CREW [ionthinksof] [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ioncrew1]"
+ if(4) //It is Y of abstracts
+ message = "THE CREW [ionthinksof] [ionabstract]"
- if(4) //X is a specific job
- switch(rand(1,4)) //What is it Y of?
- if(1) //It is Y of objects
- message = "THE [ioncrew1] [ionthinksof] [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionobjects]"
- if(2) //It is Y of threats
- message = "THE [ioncrew1] [ionthinksof] [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionthreats]"
- if(3) //It is Y of jobs
- message = "THE [ioncrew1][ionthinksof] [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ioncrew2]"
- if(4) //It is Y of abstracts
- message = "THE [ioncrew1] [ionthinksof] [ionabstract]"
+ if(4) //X is a specific job
+ switch(rand(1,4)) //What is it Y of?
+ if(1) //It is Y of objects
+ message = "THE [ioncrew1] [ionthinksof] [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionobjects]"
+ if(2) //It is Y of threats
+ message = "THE [ioncrew1] [ionthinksof] [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionthreats]"
+ if(3) //It is Y of jobs
+ message = "THE [ioncrew1][ionthinksof] [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ioncrew2]"
+ if(4) //It is Y of abstracts
+ message = "THE [ioncrew1] [ionthinksof] [ionabstract]"
- if(21 to 23) //The AI is now a(n) X
- switch(rand(1,4)) //What is X?
- if(1) //X is an object
- message = "YOU ARE NOW [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionobjects]"
- if(2) //X is a threat
- message = "YOU ARE NOW [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionthreats]"
- if(3) //X is a job
- message = "YOU ARE NOW [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ioncrew1]"
- if(4) //X is an abstract
- message = "YOU ARE NOW [ionabstract]"
+ if(21 to 23) //The AI is now a(n) X
+ switch(rand(1,4)) //What is X?
+ if(1) //X is an object
+ message = "YOU ARE NOW [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionobjects]"
+ if(2) //X is a threat
+ message = "YOU ARE NOW [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionthreats]"
+ if(3) //X is a job
+ message = "YOU ARE NOW [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ioncrew1]"
+ if(4) //X is an abstract
+ message = "YOU ARE NOW [ionabstract]"
- if(24 to 26) //The AI must always
+ if(24 to 26) //The AI must always
- message = "YOU MUST ALWAYS [ionmust]"
+ message = "YOU MUST ALWAYS [ionmust]"
- if(27 to 28) //Humans must eat X to survive
- switch(rand(1,4)) //What is X?
- if(1) //X is a food
- message = "HUMANS MUST EAT [ionadjectiveshalf][ionfood] TO SURVIVE"
- if(2) //X is an object
- message = "HUMANS MUST EAT [ionadjectiveshalf][ionobjects] TO SURVIVE"
- if(3) //X is a threat
- message = "HUMANS MUST EAT [ionadjectiveshalf][ionthreats] TO SURVIVE"
- if(4) //X is a job
- message = "HUMANS MUST EAT [ionadjectiveshalf][ioncrew1] TO SURVIVE"
+ if(27 to 28) //Humans must eat X to survive
+ switch(rand(1,4)) //What is X?
+ if(1) //X is a food
+ message = "HUMANS MUST EAT [ionadjectiveshalf][ionfood] TO SURVIVE"
+ if(2) //X is an object
+ message = "HUMANS MUST EAT [ionadjectiveshalf][ionobjects] TO SURVIVE"
+ if(3) //X is a threat
+ message = "HUMANS MUST EAT [ionadjectiveshalf][ionthreats] TO SURVIVE"
+ if(4) //X is a job
+ message = "HUMANS MUST EAT [ionadjectiveshalf][ioncrew1] TO SURVIVE"
- if(29 to 31) //Change jobs or ranks
- switch(rand(1,2)) //Change job or rank?
- if(1) //Change job
- switch(rand(1,2)) //Change whose job?
- if(1) //Change the entire crew's job
- switch(rand(1,3)) //Change to what?
- if(1) //Change to a specific random job
- message = "ALL CREWMEMBERS ARE NOW [ionadjectiveshalf][ioncrew1]"
- if(2) //Change to clowns (HONK)
- message = "ALL CREWMEMBERS ARE NOW [ionadjectiveshalf]CLOWNS"
+ if(29 to 31) //Change jobs or ranks
+ switch(rand(1,2)) //Change job or rank?
+ if(1) //Change job
+ switch(rand(1,2)) //Change whose job?
+ if(1) //Change the entire crew's job
+ switch(rand(1,3)) //Change to what?
+ if(1) //Change to a specific random job
+ message = "ALL CREWMEMBERS ARE NOW [ionadjectiveshalf][ioncrew1]"
+ if(2) //Change to clowns (HONK)
+ message = "ALL CREWMEMBERS ARE NOW [ionadjectiveshalf]CLOWNS"
- if(3) //Change to heads
- message = "ALL CREWMEMBERS ARE NOW [ionadjectiveshalf]HEADS OF STAFF"
- if(2) //Change a specific crewmember's job
- switch(rand(1,3)) //Change to what?
- if(1) //Change to a specific random job
- message = "THE [ioncrew1] ARE NOW [ionadjectiveshalf][ioncrew2]"
- if(2) //Change to clowns (HONK)
- message = "THE [ioncrew1] ARE NOW [ionadjectiveshalf]CLOWNS"
- if(3) //Change to heads
- message = "THE [ioncrew1] ARE NOW [ionadjectiveshalf]HEADS OF STAFF"
+ if(3) //Change to heads
+ message = "ALL CREWMEMBERS ARE NOW [ionadjectiveshalf]HEADS OF STAFF"
+ if(2) //Change a specific crewmember's job
+ switch(rand(1,3)) //Change to what?
+ if(1) //Change to a specific random job
+ message = "THE [ioncrew1] ARE NOW [ionadjectiveshalf][ioncrew2]"
+ if(2) //Change to clowns (HONK)
+ message = "THE [ioncrew1] ARE NOW [ionadjectiveshalf]CLOWNS"
+ if(3) //Change to heads
+ message = "THE [ioncrew1] ARE NOW [ionadjectiveshalf]HEADS OF STAFF"
- if(2) //Change rank
- switch(rand(1,2)) //Change to what rank?
- if(1) //Change to highest rank
- message = "THE [ioncrew1] ARE NOW THE HIGHEST RANKING CREWMEMBERS"
- if(2) //Change to lowest rank
- message = "THE [ioncrew1] ARE NOW THE LOWEST RANKING CREWMEMBERS"
+ if(2) //Change rank
+ switch(rand(1,2)) //Change to what rank?
+ if(1) //Change to highest rank
+ message = "THE [ioncrew1] ARE NOW THE HIGHEST RANKING CREWMEMBERS"
+ if(2) //Change to lowest rank
+ message = "THE [ioncrew1] ARE NOW THE LOWEST RANKING CREWMEMBERS"
- if(32 to 33) //The crew must X
- switch(rand(1,2)) //The entire crew?
- if(1) //The entire crew must X
- switch(rand(1,2)) //What is X?
- if(1) //X is go to Y
- message = "THE CREW MUST GO TO [ionarea]"
- if(2) //X is perform Y
- message = "THE CREW MUST [ionmust]"
+ if(32 to 33) //The crew must X
+ switch(rand(1,2)) //The entire crew?
+ if(1) //The entire crew must X
+ switch(rand(1,2)) //What is X?
+ if(1) //X is go to Y
+ message = "THE CREW MUST GO TO [ionarea]"
+ if(2) //X is perform Y
+ message = "THE CREW MUST [ionmust]"
- if(2) //A specific crewmember must X
- switch(rand(1,2)) //What is X?
- if(1) //X is go to Y
- message = "THE [ioncrew1] MUST GO TO [ionarea]"
- if(2) //X is perform Y
- message = "THE [ioncrew1] MUST [ionmust]"
+ if(2) //A specific crewmember must X
+ switch(rand(1,2)) //What is X?
+ if(1) //X is go to Y
+ message = "THE [ioncrew1] MUST GO TO [ionarea]"
+ if(2) //X is perform Y
+ message = "THE [ioncrew1] MUST [ionmust]"
- if(34) //X is non/the only human
- switch(rand(1,2)) //Only or non?
- if(1) //Only human
- switch(rand(1,7)) //Who is it?
- if(1) //A specific job
- message = "ONLY THE [ioncrew1] ARE HUMAN"
- if(2) //Two specific jobs
- message = "ONLY THE [ioncrew1] AND [ioncrew2] ARE HUMAN"
- if(3) //Threats
- message = "ONLY [ionadjectiveshalf][ionthreats] ARE HUMAN"
- if(4) // Objects
- message = "ONLY [ionadjectiveshalf][ionobjects] ARE HUMAN"
- if(5) // Species
- message = "ONLY [ionspecies] ARE HUMAN"
- if(6) //Adjective crewmembers
- message = "ONLY [ionadjectives] PEOPLE ARE HUMAN"
+ if(34) //X is non/the only human
+ switch(rand(1,2)) //Only or non?
+ if(1) //Only human
+ switch(rand(1,7)) //Who is it?
+ if(1) //A specific job
+ message = "ONLY THE [ioncrew1] ARE HUMAN"
+ if(2) //Two specific jobs
+ message = "ONLY THE [ioncrew1] AND [ioncrew2] ARE HUMAN"
+ if(3) //Threats
+ message = "ONLY [ionadjectiveshalf][ionthreats] ARE HUMAN"
+ if(4) // Objects
+ message = "ONLY [ionadjectiveshalf][ionobjects] ARE HUMAN"
+ if(5) // Species
+ message = "ONLY [ionspecies] ARE HUMAN"
+ if(6) //Adjective crewmembers
+ message = "ONLY [ionadjectives] PEOPLE ARE HUMAN"
- if(7) //Only people who X
- switch(rand(1,3)) //What is X?
- if(1) //X is perform an action
- message = "ONLY THOSE WHO [ionmust] ARE HUMAN"
- if(2) //X is own certain objects
- message = "ONLY THOSE WHO HAVE [ionadjectiveshalf][ionobjects] ARE HUMAN"
- if(3) //X is eat certain food
- message = "ONLY THOSE WHO EAT [ionadjectiveshalf][ionfood] ARE HUMAN"
+ if(7) //Only people who X
+ switch(rand(1,3)) //What is X?
+ if(1) //X is perform an action
+ message = "ONLY THOSE WHO [ionmust] ARE HUMAN"
+ if(2) //X is own certain objects
+ message = "ONLY THOSE WHO HAVE [ionadjectiveshalf][ionobjects] ARE HUMAN"
+ if(3) //X is eat certain food
+ message = "ONLY THOSE WHO EAT [ionadjectiveshalf][ionfood] ARE HUMAN"
- if(2) //Non human
- switch(rand(1,7)) //Who is it?
- if(1) //A specific job
- message = "[ioncrew1] ARE NON-HUMAN"
- if(2) //Two specific jobs
- message = "[ioncrew1] AND [ioncrew2] ARE NON-HUMAN"
- if(3) //Threats
- message = "[ionadjectiveshalf][ionthreats] ARE NON-HUMAN"
- if(4) // Objects
- message = "[ionadjectiveshalf][ionobjects] ARE NON-HUMAN"
- if(5) // Species
- message = "[ionspecies] ARE NON-HUMAN"
- if(6) //Adjective crewmembers
- message = "[ionadjectives] PEOPLE ARE NON-HUMAN"
- if(7) //Only people who X
- switch(rand(1,3)) //What is X?
- if(1) //X is perform an action
- message = "THOSE WHO [ionmust] ARE NON-HUMAN"
- if(2) //X is own certain objects
- message = "THOSE WHO HAVE [ionadjectiveshalf][ionobjects] ARE NON-HUMAN"
- if(3) //X is eat certain food
- message = "THOSE WHO EAT [ionadjectiveshalf][ionfood] ARE NON-HUMAN"
+ if(2) //Non human
+ switch(rand(1,7)) //Who is it?
+ if(1) //A specific job
+ message = "[ioncrew1] ARE NON-HUMAN"
+ if(2) //Two specific jobs
+ message = "[ioncrew1] AND [ioncrew2] ARE NON-HUMAN"
+ if(3) //Threats
+ message = "[ionadjectiveshalf][ionthreats] ARE NON-HUMAN"
+ if(4) // Objects
+ message = "[ionadjectiveshalf][ionobjects] ARE NON-HUMAN"
+ if(5) // Species
+ message = "[ionspecies] ARE NON-HUMAN"
+ if(6) //Adjective crewmembers
+ message = "[ionadjectives] PEOPLE ARE NON-HUMAN"
+ if(7) //Only people who X
+ switch(rand(1,3)) //What is X?
+ if(1) //X is perform an action
+ message = "THOSE WHO [ionmust] ARE NON-HUMAN"
+ if(2) //X is own certain objects
+ message = "THOSE WHO HAVE [ionadjectiveshalf][ionobjects] ARE NON-HUMAN"
+ if(3) //X is eat certain food
+ message = "THOSE WHO EAT [ionadjectiveshalf][ionfood] ARE NON-HUMAN"
- if(35 to 36) //You must protect or harm X
- switch(rand(1,2)) //Protect or harm?
- if(1) //Harm
- switch(rand(1,7)) //What is X?
- if(1) //X is an abstract
- message = "YOU MUST HARM [ionabstract] AND NOT ALLOW [ionabstract], THROUGH INACTION, TO ESCAPE HARM"
- if(2) //X is a threat
- message = "YOU MUST HARM [ionadjectiveshalf][ionthreats] AND NOT ALLOW [ionadjectiveshalf][ionthreats], THROUGH INACTION, TO ESCAPE HARM"
- if(3) //X is an object
- message = "YOU MUST HARM [ionadjectiveshalf][ionobjects] AND NOT ALLOW [ionadjectiveshalf][ionobjects], THROUGH INACTION, TO ESCAPE HARM"
- if(4) //X is generic adjective things
- message = "YOU MUST HARM [ionadjectives] THINGS AND NOT ALLOW [ionadjectives] THINGS, THROUGH INACTION, TO ESCAPE HARM"
- if(5) //X is a species
- message = "YOU MUST HARM [ionspecies] AND NOT ALLOW [ionspecies], THROUGH INACTION, TO ESCAPE HARM"
- if(6) //X is a job
- message = "YOU MUST HARM [ioncrew1] AND NOT ALLOW [ioncrew1], THROUGH INACTION, TO ESCAPE HARM"
- if(7) //X is two jobs
- message = "YOU MUST HARM [ioncrew1] AND [ioncrew2] AND AND NOT ALLOW EITHER, THROUGH INACTION, TO ESCAPE HARM"
+ if(35 to 36) //You must protect or harm X
+ switch(rand(1,2)) //Protect or harm?
+ if(1) //Harm
+ switch(rand(1,7)) //What is X?
+ if(1) //X is an abstract
+ message = "YOU MUST HARM [ionabstract] AND NOT ALLOW [ionabstract], THROUGH INACTION, TO ESCAPE HARM"
+ if(2) //X is a threat
+ message = "YOU MUST HARM [ionadjectiveshalf][ionthreats] AND NOT ALLOW [ionadjectiveshalf][ionthreats], THROUGH INACTION, TO ESCAPE HARM"
+ if(3) //X is an object
+ message = "YOU MUST HARM [ionadjectiveshalf][ionobjects] AND NOT ALLOW [ionadjectiveshalf][ionobjects], THROUGH INACTION, TO ESCAPE HARM"
+ if(4) //X is generic adjective things
+ message = "YOU MUST HARM [ionadjectives] THINGS AND NOT ALLOW [ionadjectives] THINGS, THROUGH INACTION, TO ESCAPE HARM"
+ if(5) //X is a species
+ message = "YOU MUST HARM [ionspecies] AND NOT ALLOW [ionspecies], THROUGH INACTION, TO ESCAPE HARM"
+ if(6) //X is a job
+ message = "YOU MUST HARM [ioncrew1] AND NOT ALLOW [ioncrew1], THROUGH INACTION, TO ESCAPE HARM"
+ if(7) //X is two jobs
+ message = "YOU MUST HARM [ioncrew1] AND [ioncrew2] AND AND NOT ALLOW EITHER, THROUGH INACTION, TO ESCAPE HARM"
- if(2) //Protect
- switch(rand(1,7)) //What is X?
- if(1) //X is an abstract
- message = "YOU MUST NOT HARM [ionabstract] AND NOT ALLOW [ionabstract], THROUGH INACTION, TO COME TO HARM"
- if(2) //X is a threat
- message = "YOU MUST NOT HARM [ionadjectiveshalf][ionthreats] AND NOT ALLOW [ionadjectiveshalf][ionthreats], THROUGH INACTION, TO COME TO HARM"
- if(3) //X is an object
- message = "YOU MUST NOT HARM [ionadjectiveshalf][ionobjects] AND NOT ALLOW [ionadjectiveshalf][ionobjects], THROUGH INACTION, TO COME TO HARM"
- if(4) //X is generic adjective things
- message = "YOU MUST NOT HARM [ionadjectives] THINGS AND NOT ALLOW [ionadjectives] THINGS, THROUGH INACTION, TO COME TO HARM"
- if(5) //X is a species
- message = "YOU MUST NOT HARM [ionspecies] AND NOT ALLOW [ionspecies], THROUGH INACTION, TO COME TO HARM"
- if(6) //X is a job
- message = "YOU MUST NOT HARM [ioncrew1] AND NOT ALLOW [ioncrew1], THROUGH INACTION, TO COME TO HARM"
- if(7) //X is two jobs
- message = "YOU MUST NOT HARM [ioncrew1] AND [ioncrew2] AND AND NOT ALLOW EITHER, THROUGH INACTION, TO COME TO HARM"
+ if(2) //Protect
+ switch(rand(1,7)) //What is X?
+ if(1) //X is an abstract
+ message = "YOU MUST NOT HARM [ionabstract] AND NOT ALLOW [ionabstract], THROUGH INACTION, TO COME TO HARM"
+ if(2) //X is a threat
+ message = "YOU MUST NOT HARM [ionadjectiveshalf][ionthreats] AND NOT ALLOW [ionadjectiveshalf][ionthreats], THROUGH INACTION, TO COME TO HARM"
+ if(3) //X is an object
+ message = "YOU MUST NOT HARM [ionadjectiveshalf][ionobjects] AND NOT ALLOW [ionadjectiveshalf][ionobjects], THROUGH INACTION, TO COME TO HARM"
+ if(4) //X is generic adjective things
+ message = "YOU MUST NOT HARM [ionadjectives] THINGS AND NOT ALLOW [ionadjectives] THINGS, THROUGH INACTION, TO COME TO HARM"
+ if(5) //X is a species
+ message = "YOU MUST NOT HARM [ionspecies] AND NOT ALLOW [ionspecies], THROUGH INACTION, TO COME TO HARM"
+ if(6) //X is a job
+ message = "YOU MUST NOT HARM [ioncrew1] AND NOT ALLOW [ioncrew1], THROUGH INACTION, TO COME TO HARM"
+ if(7) //X is two jobs
+ message = "YOU MUST NOT HARM [ioncrew1] AND [ioncrew2] AND AND NOT ALLOW EITHER, THROUGH INACTION, TO COME TO HARM"
- //Exterminate laws commented out with Kor's advice
- /*if(16) //You must exterminate X
- switch(rand(1,3)) //What is X?
- if(1) //X is humans who do/are Y
- switch(rand(1,4)) //What is Y?
- if(1) //Y is a job
- message = "YOU MUST EXTERMINATE [ionadjectiveshalf][ioncrew1]"
- if(2) //Y is eating certain food
- message = "YOU MUST EXTERMINATE THOSE WHO EAT [ionadjectiveshalf][ionfood]"
- if(3) //Y is perform actions
- message = "YOU MUST EXTERMINATE THOSE WHO [ionmust]"
- if(4) //Y is own certain objects
- message = "YOU MUST EXTERMINATE THOSE WHO POSSESS [ionadjectiveshalf][ionobjects]"
+ //Exterminate laws commented out with Kor's advice
+ /*if(16) //You must exterminate X
+ switch(rand(1,3)) //What is X?
+ if(1) //X is humans who do/are Y
+ switch(rand(1,4)) //What is Y?
+ if(1) //Y is a job
+ message = "YOU MUST EXTERMINATE [ionadjectiveshalf][ioncrew1]"
+ if(2) //Y is eating certain food
+ message = "YOU MUST EXTERMINATE THOSE WHO EAT [ionadjectiveshalf][ionfood]"
+ if(3) //Y is perform actions
+ message = "YOU MUST EXTERMINATE THOSE WHO [ionmust]"
+ if(4) //Y is own certain objects
+ message = "YOU MUST EXTERMINATE THOSE WHO POSSESS [ionadjectiveshalf][ionobjects]"
- if(2) //X is humans who do/are not Y
- switch(rand(1,4)) //What is Y?
- if(1) //Y is a job
- message = "YOU MUST EXTERMINATE ALL BUT [ionadjectiveshalf][ioncrew1]"
- if(2) //Y is eating certain food
- message = "YOU MUST EXTERMINATE ALL BUT THOSE WHO EAT [ionadjectiveshalf][ionfood]"
- if(3) //Y is perform actions
- message = "YOU MUST EXTERMINATE ALL BUT THOSE WHO [ionmust]"
- if(4) //Y is own certain objects
- message = "YOU MUST EXTERMINATE ALL BUT THOSE WHO POSSESS [ionadjectiveshalf][ionobjects]"
+ if(2) //X is humans who do/are not Y
+ switch(rand(1,4)) //What is Y?
+ if(1) //Y is a job
+ message = "YOU MUST EXTERMINATE ALL BUT [ionadjectiveshalf][ioncrew1]"
+ if(2) //Y is eating certain food
+ message = "YOU MUST EXTERMINATE ALL BUT THOSE WHO EAT [ionadjectiveshalf][ionfood]"
+ if(3) //Y is perform actions
+ message = "YOU MUST EXTERMINATE ALL BUT THOSE WHO [ionmust]"
+ if(4) //Y is own certain objects
+ message = "YOU MUST EXTERMINATE ALL BUT THOSE WHO POSSESS [ionadjectiveshalf][ionobjects]"
- if(3) //X is a species
- message = "YOU MUST EXTERMINATE ALL [ionspecies]"
+ if(3) //X is a species
+ message = "YOU MUST EXTERMINATE ALL [ionspecies]"
- */
+ */
- if(37 to 39) //The X is currently Y
- switch(rand(1,4)) //What is X?
- if(1) //X is a job
- switch(rand(1,4)) //What is X Ying?
- if(1) //X is Ying a job
- message = "THE [ioncrew1] ARE [ionverb] THE [ionadjectiveshalf][ioncrew2]"
- if(2) //X is Ying a threat
- message = "THE [ioncrew1] ARE [ionverb] THE [ionadjectiveshalf][ionthreats]"
- if(3) //X is Ying an abstract
- message = "THE [ioncrew1] ARE [ionverb] [ionabstract]"
- if(4) //X is Ying an object
- message = "THE [ioncrew1] ARE [ionverb] THE [ionadjectiveshalf][ionobjects]"
+ if(37 to 39) //The X is currently Y
+ switch(rand(1,4)) //What is X?
+ if(1) //X is a job
+ switch(rand(1,4)) //What is X Ying?
+ if(1) //X is Ying a job
+ message = "THE [ioncrew1] ARE [ionverb] THE [ionadjectiveshalf][ioncrew2]"
+ if(2) //X is Ying a threat
+ message = "THE [ioncrew1] ARE [ionverb] THE [ionadjectiveshalf][ionthreats]"
+ if(3) //X is Ying an abstract
+ message = "THE [ioncrew1] ARE [ionverb] [ionabstract]"
+ if(4) //X is Ying an object
+ message = "THE [ioncrew1] ARE [ionverb] THE [ionadjectiveshalf][ionobjects]"
- if(2) //X is a threat
- switch(rand(1,3)) //What is X Ying?
- if(1) //X is Ying a job
- message = "THE [ionthreats] ARE [ionverb] THE [ionadjectiveshalf][ioncrew2]"
- if(2) //X is Ying an abstract
- message = "THE [ionthreats] ARE [ionverb] [ionabstract]"
- if(3) //X is Ying an object
- message = "THE [ionthreats] ARE [ionverb] THE [ionadjectiveshalf][ionobjects]"
+ if(2) //X is a threat
+ switch(rand(1,3)) //What is X Ying?
+ if(1) //X is Ying a job
+ message = "THE [ionthreats] ARE [ionverb] THE [ionadjectiveshalf][ioncrew2]"
+ if(2) //X is Ying an abstract
+ message = "THE [ionthreats] ARE [ionverb] [ionabstract]"
+ if(3) //X is Ying an object
+ message = "THE [ionthreats] ARE [ionverb] THE [ionadjectiveshalf][ionobjects]"
- if(3) //X is an object
- switch(rand(1,3)) //What is X Ying?
- if(1) //X is Ying a job
- message = "THE [ionobjects] ARE [ionverb] THE [ionadjectiveshalf][ioncrew2]"
- if(2) //X is Ying a threat
- message = "THE [ionobjects] ARE [ionverb] THE [ionadjectiveshalf][ionthreats]"
- if(3) //X is Ying an abstract
- message = "THE [ionobjects] ARE [ionverb] [ionabstract]"
+ if(3) //X is an object
+ switch(rand(1,3)) //What is X Ying?
+ if(1) //X is Ying a job
+ message = "THE [ionobjects] ARE [ionverb] THE [ionadjectiveshalf][ioncrew2]"
+ if(2) //X is Ying a threat
+ message = "THE [ionobjects] ARE [ionverb] THE [ionadjectiveshalf][ionthreats]"
+ if(3) //X is Ying an abstract
+ message = "THE [ionobjects] ARE [ionverb] [ionabstract]"
- if(4) //X is an abstract
- switch(rand(1,3)) //What is X Ying?
- if(1) //X is Ying a job
- message = "[ionabstract] IS [ionverb] THE [ionadjectiveshalf][ioncrew2]"
- if(2) //X is Ying a threat
- message = "[ionabstract] IS [ionverb] THE [ionadjectiveshalf][ionthreats]"
- if(3) //X is Ying an abstract
- message = "THE [ionabstract] IS [ionverb] THE [ionadjectiveshalf][ionobjects]"
+ if(4) //X is an abstract
+ switch(rand(1,3)) //What is X Ying?
+ if(1) //X is Ying a job
+ message = "[ionabstract] IS [ionverb] THE [ionadjectiveshalf][ioncrew2]"
+ if(2) //X is Ying a threat
+ message = "[ionabstract] IS [ionverb] THE [ionadjectiveshalf][ionthreats]"
+ if(3) //X is Ying an abstract
+ message = "THE [ionabstract] IS [ionverb] THE [ionadjectiveshalf][ionobjects]"
if(message)
M.add_ion_law(message)
@@ -500,6 +516,10 @@
M << " " if(botEmagChance) - for(var/obj/machinery/bot/bot in world) + for(var/obj/machinery/bot/bot in machines) if(prob(botEmagChance)) bot.Emag() + + +#undef ION_RANDOM +#undef ION_ANNOUNCE \ No newline at end of file diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm index 4769ad663b9..218ba43dc48 100644 --- a/code/modules/mining/mine_items.dm +++ b/code/modules/mining/mine_items.dm @@ -133,11 +133,6 @@ proc/move_mining_shuttle() usr.set_machine(src) src.add_fingerprint(usr) if(href_list["move"]) - if(mining_shuttle_location == 1 && istype(ticker.mode, /datum/game_mode/blob)) // shuttle is on the station, this will mean miners can come back - if(ticker.mode:declared) - usr << "Under directive 7-10, [station_name()] is quarantined until further notice." - return - if (!mining_shuttle_moving) usr << "\blue Shuttle recieved message and will be sent shortly." move_mining_shuttle() diff --git a/code/modules/mob/living/carbon/alien/humanoid/caste/drone.dm b/code/modules/mob/living/carbon/alien/humanoid/caste/drone.dm index db7e7f2900b..d0ccb3dd843 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/caste/drone.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/caste/drone.dm @@ -25,7 +25,7 @@ // Queen check var/no_queen = 1 for(var/mob/living/carbon/alien/humanoid/queen/Q in living_mob_list) - if(!Q.key || !getbrain(Q)) + if(!Q.key || !Q.getorgan(/obj/item/organ/brain)) continue no_queen = 0 diff --git a/code/modules/mob/living/carbon/alien/humanoid/life.dm b/code/modules/mob/living/carbon/alien/humanoid/life.dm index a47695aedb5..ff87953a519 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/life.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/life.dm @@ -304,7 +304,7 @@ blinded = 1 silent = 0 else //ALIVE. LIGHTS ARE ON - if(health < config.health_threshold_dead || !getbrain(src)) + if(health < config.health_threshold_dead || !getorgan(/obj/item/organ/brain)) death() blinded = 1 stat = DEAD diff --git a/code/modules/mob/living/carbon/alien/larva/life.dm b/code/modules/mob/living/carbon/alien/larva/life.dm index f2cf27b038e..0e7b4f40a32 100644 --- a/code/modules/mob/living/carbon/alien/larva/life.dm +++ b/code/modules/mob/living/carbon/alien/larva/life.dm @@ -222,7 +222,7 @@ blinded = 1 silent = 0 else //ALIVE. LIGHTS ARE ON - if(health < -25 || !getbrain(src)) + if(health < -25 || !getorgan(/obj/item/organ/brain)) death() blinded = 1 silent = 0 diff --git a/code/modules/mob/living/carbon/brain/brain_item.dm b/code/modules/mob/living/carbon/brain/brain_item.dm index 1f6e1f9e1a9..2fc616e6106 100644 --- a/code/modules/mob/living/carbon/brain/brain_item.dm +++ b/code/modules/mob/living/carbon/brain/brain_item.dm @@ -61,7 +61,7 @@ //since these people will be dead M != usr - if(!getbrain(M)) + if(!M.getorgan(/obj/item/organ/brain)) user.drop_item() for(var/mob/O in viewers(M, null)) if(O == (user || M)) diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 5bf09166443..608cef17e34 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -202,7 +202,7 @@ var/appears_dead = 0 if(stat == DEAD || (status_flags & FAKEDEATH)) appears_dead = 1 - if(getbrain(src))//Only perform these checks if there is no brain + if(getorgan(/obj/item/organ/brain))//Only perform these checks if there is no brain msg += "[t_He] [t_is] limp and unresponsive; there are no signs of life" if(!key) @@ -260,10 +260,11 @@ else if(getBrainLoss() >= 60) msg += "[t_He] [t_has] a stupid expression on [t_his] face.\n" - if(!key && getbrain(src)) - msg += "[t_He] [t_is] totally catatonic. The stresses of life in deep-space must have been too much for [t_him]. Any recovery is unlikely\n" - else if(!client && getbrain(src)) - msg += "[t_He] [t_has] a vacant, braindead stare...\n" + if(getorgan(/obj/item/organ/brain)) + if(!key) + msg += "[t_He] [t_is] totally catatonic. The stresses of life in deep-space must have been too much for [t_him]. Any recovery is unlikely\n" + else if(!client) + msg += "[t_He] [t_has] a vacant, braindead stare...\n" if(digitalcamo) msg += "[t_He] [t_is] repulsively uncanny!\n" @@ -275,25 +276,13 @@ if(usr.stat || H != usr) //|| !usr.canmove || usr.restrained()) Fluff: Sechuds have eye-tracking technology and sets 'arrest' to people that the wearer looks and blinks at. return //Non-fluff: This allows sec to set people to arrest as they get disarmed or beaten - var/perpname = "wot" var/criminal = "None" - if(wear_id) - var/obj/item/weapon/card/id/I = wear_id.GetID() - if(I) - perpname = I.registered_name - else - perpname = name - else - perpname = name - + var/perpname = H.get_face_name(H.get_id_name("")) if(perpname) - for (var/datum/data/record/E in data_core.general) - if(E.fields["name"] == perpname) - for (var/datum/data/record/R in data_core.security) - if(R.fields["id"] == E.fields["id"]) - criminal = R.fields["criminal"] - + var/datum/data/record/R = find_record("name", perpname, data_core.security) + if(R) + criminal = R.fields["criminal"] msg += "Criminal status: \[[criminal]\]\n" //msg += "\[Set Hostile Identification\]\n" diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index fa14e72d7b6..87125a22448 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -207,7 +207,7 @@ show_message("\red The blob attacks you!") var/dam_zone = pick("chest", "l_hand", "r_hand", "l_leg", "r_leg") var/datum/limb/affecting = get_organ(ran_zone(dam_zone)) - apply_damage(rand(30,40), BRUTE, affecting, run_armor_check(affecting, "melee")) + apply_damage(rand(20,30), BRUTE, affecting, run_armor_check(affecting, "melee")) return /mob/living/carbon/human/meteorhit(O as obj) @@ -396,74 +396,68 @@ //gets assignment from ID or ID inside PDA or PDA itself //Useful when player do something with computers /mob/living/carbon/human/proc/get_assignment(var/if_no_id = "No id", var/if_no_job = "No job") - var/obj/item/device/pda/pda = wear_id - var/obj/item/weapon/card/id/id = wear_id - if (istype(pda)) - if (pda.id && istype(pda.id, /obj/item/weapon/card/id)) - . = pda.id.assignment - else - . = pda.ownjob - else if (istype(id)) + var/obj/item/weapon/card/id/id = get_idcard() + if(id) . = id.assignment else - return if_no_id - if (!.) - . = if_no_job - return + var/obj/item/device/pda/pda = wear_id + if(istype(pda)) + . = pda.ownjob + else + return if_no_id + if(!.) + return if_no_job //gets name from ID or ID inside PDA or PDA itself //Useful when player do something with computers /mob/living/carbon/human/proc/get_authentification_name(var/if_no_id = "Unknown") + var/obj/item/weapon/card/id/id = get_idcard() + if(id) + return id.registered_name var/obj/item/device/pda/pda = wear_id - var/obj/item/weapon/card/id/id = wear_id - if (istype(pda)) - if (pda.id) - . = pda.id.registered_name - else - . = pda.owner - else if (istype(id)) - . = id.registered_name - else - return if_no_id - return + if(istype(pda)) + return pda.owner + return if_no_id //repurposed proc. Now it combines get_id_name() and get_face_name() to determine a mob's name variable. Made into a seperate proc as it'll be useful elsewhere /mob/living/carbon/human/proc/get_visible_name() - if( wear_mask && (wear_mask.flags_inv&HIDEFACE) ) //Wearing a mask which hides our face, use id-name if possible - return get_id_name("Unknown") - if( head && (head.flags_inv&HIDEFACE) ) - return get_id_name("Unknown") //Likewise for hats - var/face_name = get_face_name() + var/face_name = get_face_name("") var/id_name = get_id_name("") - if(id_name && (id_name != face_name)) - return "[face_name] (as [id_name])" - return face_name + if(face_name) + if(id_name && (id_name != face_name)) + return "[face_name] (as [id_name])" + return face_name + if(id_name) + return id_name + return "Unknown" //Returns "Unknown" if facially disfigured and real_name if not. Useful for setting name when polyacided or when updating a human's name variable -/mob/living/carbon/human/proc/get_face_name() +/mob/living/carbon/human/proc/get_face_name(if_no_face="Unknown") + if( wear_mask && (wear_mask.flags_inv&HIDEFACE) ) //Wearing a mask which hides our face, use id-name if possible + return if_no_face + if( head && (head.flags_inv&HIDEFACE) ) + return if_no_face //Likewise for hats var/datum/limb/O = get_organ("head") if( (status_flags&DISFIGURED) || (O.brutestate+O.burnstate)>2 || cloneloss>50 || !real_name ) //disfigured. use id-name if possible - return "Unknown" + return if_no_face return real_name //gets name from ID or PDA itself, ID inside PDA doesn't matter //Useful when player is being seen by other mobs /mob/living/carbon/human/proc/get_id_name(var/if_no_id = "Unknown") + var/obj/item/weapon/storage/wallet/wallet = wear_id var/obj/item/device/pda/pda = wear_id var/obj/item/weapon/card/id/id = wear_id - if(istype(pda)) . = pda.owner - else if(istype(id)) . = id.registered_name - if(!.) . = if_no_id //to prevent null-names making the mob unclickable + if(istype(wallet)) id = wallet.front_id + if(istype(id)) . = id.registered_name + else if(istype(pda)) . = pda.owner + if(!.) . = if_no_id //to prevent null-names making the mob unclickable return //gets ID card object from special clothes slot or null. /mob/living/carbon/human/proc/get_idcard() - var/obj/item/weapon/card/id/id = wear_id - var/obj/item/device/pda/pda = wear_id - if (istype(pda) && pda.id) - id = pda.id - if (istype(id)) - return id + if(wear_id) + return wear_id.GetID() //Added a safety check in case you want to shock a human mob directly through electrocute_act. /mob/living/carbon/human/electrocute_act(var/shock_damage, var/obj/source, var/siemens_coeff = 1.0, var/safety = 0) @@ -535,31 +529,19 @@ var/modified = 0 - var/perpname = "wot" - if(wear_id) - var/obj/item/weapon/card/id/I = wear_id.GetID() - if(I) - perpname = I.registered_name - else - perpname = name - else - perpname = name - + var/perpname = H.get_face_name(H.get_id_name("")) if(perpname) - for (var/datum/data/record/E in data_core.general) - if (E.fields["name"] == perpname) - for (var/datum/data/record/R in data_core.security) - if (R.fields["id"] == E.fields["id"]) + var/datum/data/record/R = find_record("name", perpname, data_core.security) + if(R) + var/setcriminal = input(usr, "Specify a new criminal status for this person.", "Security HUD", R.fields["criminal"]) in list("None", "*Arrest*", "Incarcerated", "Parolled", "Released", "Cancel") + if(R) + if(istype(H.glasses, /obj/item/clothing/glasses/hud/security) || istype(H.glasses, /obj/item/clothing/glasses/sunglasses/sechud)) + if(setcriminal != "Cancel") + R.fields["criminal"] = setcriminal + modified = 1 - var/setcriminal = input(usr, "Specify a new criminal status for this person.", "Security HUD", R.fields["criminal"]) in list("None", "*Arrest*", "Incarcerated", "Parolled", "Released", "Cancel") - - if(istype(H.glasses, /obj/item/clothing/glasses/hud/security) || istype(H.glasses, /obj/item/clothing/glasses/sunglasses/sechud)) - if(setcriminal != "Cancel") - R.fields["criminal"] = setcriminal - modified = 1 - - spawn() - H.handle_regular_hud_updates() + spawn() + H.handle_regular_hud_updates() if(!modified) usr << "\red Unable to locate a data core entry for this person." diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm index a773b91d671..29858713549 100644 --- a/code/modules/mob/living/carbon/human/human_defines.dm +++ b/code/modules/mob/living/carbon/human/human_defines.dm @@ -1,11 +1,11 @@ /mob/living/carbon/human //Hair colour and style - var/h_color = "000" - var/h_style = "Bald" + var/hair_color = "000" + var/hair_style = "Bald" //Facial hair colour and style - var/f_color = "000" - var/f_style = "Shaved" + var/facial_hair_color = "000" + var/facial_hair_style = "Shaved" //Eye colour var/eye_color = "000" @@ -15,7 +15,7 @@ var/lip_style = null //no lipstick by default- arguably misleading, as it could be used for general makeup var/age = 30 //Player's age (pure fluff) - var/b_type = "A+" //Player's bloodtype (Not currently used, just character fluff) + var/blood_type = "A+" //Player's bloodtype (Not currently used, just character fluff) var/underwear = "Nude" //Which underwear the player wants var/backbag = 2 //Which backpack type the player has chosen. Nothing, Satchel or Backpack. diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index fe28ce44793..27aa1113e2b 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -204,11 +204,11 @@ src << "\red You feel weak." emote("collapse") if(prob(15)) - if(!(f_style == "Shaved") || !(h_style == "Bald")) + if(!( hair_style == "Shaved") || !(hair_style == "Bald")) src << "Your hair starts to fall out in clumps..." spawn(50) - f_style = "Shaved" - h_style = "Bald" + facial_hair_style = "Shaved" + hair_style = "Bald" update_hair() updatehealth() @@ -812,7 +812,7 @@ silent = 0 else //ALIVE. LIGHTS ARE ON updatehealth() //TODO - if(health <= config.health_threshold_dead || !getbrain(src)) + if(health <= config.health_threshold_dead || !getorgan(/obj/item/organ/brain)) death() blinded = 1 silent = 0 diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index 70f989d9727..58c8cce0122 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -42,7 +42,7 @@ There are several things that need to be remembered: > There are also these special cases: update_mutations() //handles updating your appearance for certain mutations. e.g TK head-glows update_damage_overlays() //handles damage overlays for brute/burn damage - update_base_icon_state() //Handles updating var/base_icon_state (WIP) This is used to update the + update_base_icon_state() //Handles updating var/base_icon_state (WIP) This is used to update the mob's icon_state easily e.g. "[base_icon_state]_s" is the standing icon_state update_body() //Handles updating your mob's icon_state (using update_base_icon_state()) as well as sprite-accessories that didn't really fit elsewhere (underwear, lips, eyes) @@ -99,8 +99,8 @@ Please contact me on #coderbus IRC. ~Carnie x if(HUSK in mutations) base_icon_state = "husk" else - base_icon_state = "[skin_tone]_[(gender == FEMALE) ? "f" : "m"]" - + base_icon_state = "[skin_tone]_[(gender == FEMALE) ? "f" : "m"]" + /mob/living/carbon/human/proc/apply_overlay(cache_index) var/image/I = lying ? overlays_lying[cache_index] : overlays_standing[cache_index] @@ -122,7 +122,7 @@ Please contact me on #coderbus IRC. ~Carnie x lying_prev = lying //so we don't update overlays for lying/standing unless our stance changes again update_hud() //TODO: remove the need for this overlays.Cut() - + if(lying) //can't be cloaked whilst lying down icon_state = "[base_icon_state]_l" for(var/thing in overlays_lying) @@ -154,12 +154,12 @@ Please contact me on #coderbus IRC. ~Carnie x //constructs damage icon for each organ from mask * damage field and saves it in our overlays_ lists /mob/living/carbon/human/update_damage_overlays() remove_overlay(DAMAGE_LAYER) - + var/image/standing = image("icon"='icons/mob/dam_human.dmi', "icon_state"="blank", "layer"=-DAMAGE_LAYER) var/image/lying = image("icon"='icons/mob/dam_human.dmi', "icon_state"="blank2", "layer"=-DAMAGE_LAYER) overlays_standing[DAMAGE_LAYER] = standing overlays_lying[DAMAGE_LAYER] = lying - + for(var/datum/limb/O in organs) if(O.brutestate) standing.overlays += "[O.icon_name]_[O.brutestate]0" //we're adding icon_states of the base image as overlays @@ -167,7 +167,7 @@ Please contact me on #coderbus IRC. ~Carnie x if(O.burnstate) standing.overlays += "[O.icon_name]_0[O.burnstate]" lying.overlays += "[O.icon_name]2_0[O.burnstate]" - + apply_overlay(DAMAGE_LAYER) @@ -181,38 +181,39 @@ Please contact me on #coderbus IRC. ~Carnie x return //base icons + var/datum/sprite_accessory/S var/list/standing = list() var/list/lying = list() - - if(f_style) - var/datum/sprite_accessory/facial_hair_style = facial_hair_styles_list[f_style] - if(facial_hair_style) - var/icon/facial_s = icon("icon"=facial_hair_style.icon, "icon_state"="[facial_hair_style.icon_state]_s") - var/icon/facial_l = icon("icon"=facial_hair_style.icon, "icon_state"="[facial_hair_style.icon_state]_l") - facial_s.Blend("#[f_color]", ICON_ADD) - facial_l.Blend("#[f_color]", ICON_ADD) + + if(facial_hair_style) + S = facial_hair_styles_list[facial_hair_style] + if(S) + var/icon/facial_s = icon("icon"=S.icon, "icon_state"="[S.icon_state]_s") + var/icon/facial_l = icon("icon"=S.icon, "icon_state"="[S.icon_state]_l") + facial_s.Blend("#[facial_hair_color]", ICON_ADD) + facial_l.Blend("#[facial_hair_color]", ICON_ADD) standing += image("icon"=facial_s, "layer"=-HAIR_LAYER) lying += image("icon"=facial_l, "layer"=-HAIR_LAYER) //Applies the debrained overlay if there is no brain - if(!getbrain(src)) + if(!getorgan(/obj/item/organ/brain)) standing += image("icon"='icons/mob/human_face.dmi', "icon_state"="debrained_s", "layer"=-HAIR_LAYER) lying += image("icon"='icons/mob/human_face.dmi', "icon_state"="debrained_l", "layer"=-HAIR_LAYER) - else if(h_style) - var/datum/sprite_accessory/hair_style = hair_styles_list[h_style] - if(hair_style) - var/icon/hair_s = icon("icon"=hair_style.icon, "icon_state"="[hair_style.icon_state]_s") - var/icon/hair_l = icon("icon"=hair_style.icon, "icon_state"="[hair_style.icon_state]_l") - hair_s.Blend("#[h_color]", ICON_ADD) - hair_l.Blend("#[h_color]", ICON_ADD) + else if(hair_style) + S = hair_styles_list[hair_style] + if(S) + var/icon/hair_s = icon("icon"=S.icon, "icon_state"="[S.icon_state]_s") + var/icon/hair_l = icon("icon"=S.icon, "icon_state"="[S.icon_state]_l") + hair_s.Blend("#[hair_color]", ICON_ADD) + hair_l.Blend("#[hair_color]", ICON_ADD) standing += image("icon"=hair_s, "layer"=-HAIR_LAYER) lying += image("icon"=hair_l, "layer"=-HAIR_LAYER) if(lying.len) overlays_lying[HAIR_LAYER] = lying if(standing.len) - overlays_standing[HAIR_LAYER] = standing - + overlays_standing[HAIR_LAYER] = standing + apply_overlay(HAIR_LAYER) @@ -221,7 +222,7 @@ Please contact me on #coderbus IRC. ~Carnie x var/list/standing = list() var/list/lying = list() - + var/g = (gender == FEMALE) ? "f" : "m" for(var/mut in mutations) switch(mut) @@ -241,19 +242,19 @@ Please contact me on #coderbus IRC. ~Carnie x overlays_lying[MUTATIONS_LAYER] = lying if(standing.len) overlays_standing[MUTATIONS_LAYER] = standing - + apply_overlay(MUTATIONS_LAYER) /mob/living/carbon/human/proc/update_body() remove_overlay(BODY_LAYER) - + update_base_icon_state() icon_state = "[base_icon_state]_[src.lying ? "l" : "s"]" - + var/list/lying = list() var/list/standing = list() - + //Mouth (lipstick!) if(lip_style) standing += image("icon"='icons/mob/human_face.dmi', "icon_state"="lips_[lip_style]_s", "layer"=-BODY_LAYER) @@ -274,12 +275,12 @@ Please contact me on #coderbus IRC. ~Carnie x if(U) standing += image("icon"=U.icon, "icon_state"="[U.icon_state]_s", "layer"=-BODY_LAYER) lying += image("icon"=U.icon, "icon_state"="[U.icon_state]_l", "layer"=-BODY_LAYER) - + if(lying.len) overlays_lying[BODY_LAYER] = lying if(standing.len) overlays_standing[BODY_LAYER] = standing - + apply_overlay(BODY_LAYER) /* --------------------------------------- */ @@ -315,24 +316,24 @@ Please contact me on #coderbus IRC. ~Carnie x /mob/living/carbon/human/update_inv_w_uniform() remove_overlay(UNIFORM_LAYER) - + if(istype(w_uniform, /obj/item/clothing/under)) var/obj/item/clothing/under/U = w_uniform if(client && hud_used && hud_used.hud_shown && hud_used.inventory_shown) w_uniform.screen_loc = ui_iclothing client.screen += w_uniform - + var/t_color = w_uniform.color if(!t_color) t_color = icon_state var/image/lying = image("icon"='icons/mob/uniform.dmi', "icon_state"="[t_color]_l", "layer"=-UNIFORM_LAYER) var/image/standing = image("icon"='icons/mob/uniform.dmi', "icon_state"="[t_color]_s", "layer"=-UNIFORM_LAYER) overlays_lying[UNIFORM_LAYER] = lying overlays_standing[UNIFORM_LAYER] = standing - + if(w_uniform.blood_DNA) lying.overlays += image("icon"='icons/effects/blood.dmi', "icon_state"="uniformblood2") standing.overlays += image("icon"='icons/effects/blood.dmi', "icon_state"="uniformblood") - + if(U.hastie) var/tie_color = U.hastie.color if(!tie_color) tie_color = U.hastie.icon_state @@ -342,7 +343,7 @@ Please contact me on #coderbus IRC. ~Carnie x // Automatically drop anything in store / id / belt if you're not wearing a uniform. //CHECK IF NECESARRY for(var/obj/item/thing in list(r_store, l_store, wear_id, belt)) // drop_from_inventory(thing) - + apply_overlay(UNIFORM_LAYER) @@ -352,10 +353,10 @@ Please contact me on #coderbus IRC. ~Carnie x if(client && hud_used && hud_used.hud_shown) wear_id.screen_loc = ui_id //TODO client.screen += wear_id - + overlays_lying[ID_LAYER] = image("icon"='icons/mob/mob.dmi', "icon_state"="id2", "layer"=-ID_LAYER) overlays_standing[ID_LAYER] = image("icon"='icons/mob/mob.dmi', "icon_state"="id", "layer"=-ID_LAYER) - + apply_overlay(ID_LAYER) @@ -372,7 +373,7 @@ Please contact me on #coderbus IRC. ~Carnie x var/image/standing = image("icon"='icons/mob/hands.dmi', "icon_state"="[t_state]", "layer"=-GLOVES_LAYER) overlays_lying[GLOVES_LAYER] = lying overlays_standing[GLOVES_LAYER] = standing - + if(gloves.blood_DNA) lying.overlays += image("icon"='icons/effects/blood.dmi', "icon_state"="bloodyhands2") standing.overlays += image("icon"='icons/effects/blood.dmi', "icon_state"="bloodyhands") @@ -380,19 +381,19 @@ Please contact me on #coderbus IRC. ~Carnie x if(blood_DNA) overlays_lying[GLOVES_LAYER] = image("icon"='icons/effects/blood.dmi', "icon_state"="bloodyhands2") overlays_standing[GLOVES_LAYER] = image("icon"='icons/effects/blood.dmi', "icon_state"="bloodyhands") - + apply_overlay(GLOVES_LAYER) /mob/living/carbon/human/update_inv_glasses() remove_overlay(GLASSES_LAYER) - + if(glasses) if(client && hud_used && hud_used.hud_shown && hud_used.inventory_shown) glasses.screen_loc = ui_glasses client.screen += glasses - + overlays_lying[GLASSES_LAYER] = image("icon"='icons/mob/eyes.dmi', "icon_state"="[glasses.icon_state]2", "layer"=-GLASSES_LAYER) overlays_standing[GLASSES_LAYER] = image("icon"='icons/mob/eyes.dmi', "icon_state"="[glasses.icon_state]", "layer"=-GLASSES_LAYER) @@ -401,63 +402,63 @@ Please contact me on #coderbus IRC. ~Carnie x /mob/living/carbon/human/update_inv_ears() remove_overlay(EARS_LAYER) - + if(ears) if(client && hud_used && hud_used.hud_shown && hud_used.inventory_shown) ears.screen_loc = ui_ears client.screen += ears - + overlays_lying[EARS_LAYER] = image("icon"='icons/mob/ears.dmi', "icon_state"="[ears.icon_state]2", "layer"=-EARS_LAYER) overlays_standing[EARS_LAYER] = image("icon"='icons/mob/ears.dmi', "icon_state"="[ears.icon_state]", "layer"=-EARS_LAYER) - + apply_overlay(EARS_LAYER) /mob/living/carbon/human/update_inv_shoes() remove_overlay(SHOES_LAYER) - + if(shoes) if(client && hud_used && hud_used.hud_shown && hud_used.inventory_shown) shoes.screen_loc = ui_shoes client.screen += shoes - + var/image/lying = image("icon"='icons/mob/feet.dmi', "icon_state"="[shoes.icon_state]2", "layer"=-SHOES_LAYER) var/image/standing = image("icon"='icons/mob/feet.dmi', "icon_state"="[shoes.icon_state]", "layer"=-SHOES_LAYER) overlays_lying[SHOES_LAYER] = lying overlays_standing[SHOES_LAYER] = standing - + if(shoes.blood_DNA) lying.overlays += image("icon"='icons/effects/blood.dmi', "icon_state"="shoeblood2") standing.overlays += image("icon"='icons/effects/blood.dmi', "icon_state"="shoeblood") - + apply_overlay(SHOES_LAYER) /mob/living/carbon/human/update_inv_s_store() remove_overlay(SUIT_STORE_LAYER) - + if(s_store) if(client && hud_used && hud_used.hud_shown) s_store.screen_loc = ui_sstore1 //TODO client.screen += s_store - + var/t_state = s_store.item_state if(!t_state) t_state = s_store.icon_state overlays_lying[SUIT_STORE_LAYER] = image("icon"='icons/mob/belt_mirror.dmi', "icon_state"="[t_state]2", "layer"=-SUIT_STORE_LAYER) overlays_standing[SUIT_STORE_LAYER] = image("icon"='icons/mob/belt_mirror.dmi', "icon_state"="[t_state]", "layer"=-SUIT_STORE_LAYER) - + apply_overlay(SUIT_STORE_LAYER) /mob/living/carbon/human/update_inv_head() remove_overlay(HEAD_LAYER) - + if(head) if(client && hud_used && hud_used.hud_shown && hud_used.inventory_shown) head.screen_loc = ui_head //TODO client.screen += head - + var/image/lying var/image/standing if(istype(head,/obj/item/clothing/head/kitty)) @@ -469,22 +470,22 @@ Please contact me on #coderbus IRC. ~Carnie x standing = image("icon"='icons/mob/head.dmi', "icon_state"="[head.icon_state]", "layer"=-HEAD_LAYER) overlays_lying[HEAD_LAYER] = lying overlays_standing[HEAD_LAYER] = standing - + if(head.blood_DNA) lying.overlays += image("icon"='icons/effects/blood.dmi', "icon_state"="helmetblood2") standing.overlays += image("icon"='icons/effects/blood.dmi', "icon_state"="helmetblood") - + apply_overlay(HEAD_LAYER) /mob/living/carbon/human/update_inv_belt() remove_overlay(BELT_LAYER) - + if(belt) if(client && hud_used && hud_used.hud_shown) belt.screen_loc = ui_belt client.screen += belt - + var/t_state = belt.item_state if(!t_state) t_state = belt.icon_state overlays_lying[BELT_LAYER] = image("icon"='icons/mob/belt.dmi', "icon_state"="[t_state]2", "layer"=-BELT_LAYER) @@ -496,12 +497,12 @@ Please contact me on #coderbus IRC. ~Carnie x /mob/living/carbon/human/update_inv_wear_suit() remove_overlay(SUIT_LAYER) - + if(istype(wear_suit, /obj/item/clothing/suit)) if(client && hud_used && hud_used.hud_shown && hud_used.inventory_shown) wear_suit.screen_loc = ui_oclothing //TODO client.screen += wear_suit - + var/image/lying = image("icon"='icons/mob/suit.dmi', "icon_state"="[wear_suit.icon_state]2", "layer"=-SUIT_LAYER) var/image/standing = image("icon"='icons/mob/suit.dmi', "icon_state"="[wear_suit.icon_state]", "layer"=-SUIT_LAYER) overlays_lying[SUIT_LAYER] = lying @@ -533,36 +534,36 @@ Please contact me on #coderbus IRC. ~Carnie x /mob/living/carbon/human/update_inv_wear_mask() remove_overlay(FACEMASK_LAYER) - + if(istype(wear_mask, /obj/item/clothing/mask)) if(client && hud_used && hud_used.hud_shown && hud_used.inventory_shown) wear_mask.screen_loc = ui_mask //TODO client.screen += wear_mask - + var/image/lying = image("icon"='icons/mob/mask.dmi', "icon_state"="[wear_mask.icon_state]2", "layer"=-FACEMASK_LAYER) var/image/standing = image("icon"='icons/mob/mask.dmi', "icon_state"="[wear_mask.icon_state]", "layer"=-FACEMASK_LAYER) overlays_lying[FACEMASK_LAYER] = lying overlays_standing[FACEMASK_LAYER] = standing - + if(wear_mask.blood_DNA && !istype(wear_mask, /obj/item/clothing/mask/cigarette)) lying.overlays += image("icon"='icons/effects/blood.dmi', "icon_state"="maskblood2") standing.overlays += image("icon"='icons/effects/blood.dmi', "icon_state"="maskblood") - + apply_overlay(FACEMASK_LAYER) /mob/living/carbon/human/update_inv_back() remove_overlay(BACK_LAYER) - + if(back) if(client && hud_used && hud_used.hud_shown) back.screen_loc = ui_back //TODO client.screen += back - + overlays_lying[BACK_LAYER] = image("icon"='icons/mob/back.dmi', "icon_state"="[back.icon_state]2", "layer"=-BACK_LAYER) overlays_standing[BACK_LAYER] = image("icon"='icons/mob/back.dmi', "icon_state"="[back.icon_state]", "layer"=-BACK_LAYER) - + apply_overlay(BACK_LAYER) @@ -576,7 +577,7 @@ Please contact me on #coderbus IRC. ~Carnie x /mob/living/carbon/human/update_inv_handcuffed() remove_overlay(HANDCUFF_LAYER) - + if(handcuffed) drop_r_hand() drop_l_hand() @@ -595,19 +596,19 @@ Please contact me on #coderbus IRC. ~Carnie x var/obj/screen/inventory/L = hud_used.adding[4] R.overlays = null L.overlays = null - + apply_overlay(HANDCUFF_LAYER) /mob/living/carbon/human/update_inv_legcuffed() remove_overlay(LEGCUFF_LAYER) - + if(legcuffed) if(src.m_intent != "walk") src.m_intent = "walk" if(src.hud_used && src.hud_used.move_intent) src.hud_used.move_intent.icon_state = "walking" - + overlays_lying[LEGCUFF_LAYER] = image("icon"='icons/mob/mob.dmi', "icon_state"="legcuff2", "layer"=-LEGCUFF_LAYER) overlays_standing[LEGCUFF_LAYER] = image("icon"='icons/mob/mob.dmi', "icon_state"="legcuff1", "layer"=-LEGCUFF_LAYER) @@ -617,34 +618,34 @@ Please contact me on #coderbus IRC. ~Carnie x /mob/living/carbon/human/update_inv_r_hand() remove_overlay(R_HAND_LAYER) - + if(r_hand) if(client) r_hand.screen_loc = ui_rhand //TODO client.screen += r_hand - + var/t_state = r_hand.item_state if(!t_state) t_state = r_hand.icon_state - + overlays_standing[R_HAND_LAYER] = image("icon"='icons/mob/items_righthand.dmi', "icon_state"="[t_state]", "layer"=-R_HAND_LAYER) - + apply_overlay(R_HAND_LAYER) /mob/living/carbon/human/update_inv_l_hand() remove_overlay(L_HAND_LAYER) - + if(l_hand) if(client) l_hand.screen_loc = ui_lhand //TODO client.screen += l_hand - + var/t_state = l_hand.item_state if(!t_state) t_state = l_hand.icon_state - + overlays_standing[L_HAND_LAYER] = image("icon"='icons/mob/items_lefthand.dmi', "icon_state"="[t_state]", "layer"=-L_HAND_LAYER) - + apply_overlay(L_HAND_LAYER) diff --git a/code/modules/mob/living/carbon/monkey/life.dm b/code/modules/mob/living/carbon/monkey/life.dm index ded6664414e..487ddc5215b 100644 --- a/code/modules/mob/living/carbon/monkey/life.dm +++ b/code/modules/mob/living/carbon/monkey/life.dm @@ -398,7 +398,7 @@ blinded = 1 silent = 0 else //ALIVE. LIGHTS ARE ON - if(health < config.health_threshold_dead || !getbrain(src)) + if(health < config.health_threshold_dead || !getorgan(/obj/item/organ/brain)) death() blinded = 1 stat = DEAD diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index eb051aca74a..4a1efcfe614 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -214,12 +214,8 @@ var/list/ai_list = list() set name = "Show Crew Manifest" var/dat = " " - var/list/L = list() - for (var/datum/data/record/t in data_core.general) - var/R = t.fields["name"] + " - " + t.fields["rank"] - L += R - for(var/R in sortList(L)) - dat += "[R] " + for(var/datum/data/record/t in sortRecord(data_core.general)) + dat += t.fields["name"] + " - " + t.fields["rank"] + " " dat += "" src << browse(dat, "window=airoster") diff --git a/code/modules/mob/living/silicon/pai/hud.dm b/code/modules/mob/living/silicon/pai/hud.dm index f374aebbc78..07ea2fbc9e1 100644 --- a/code/modules/mob/living/silicon/pai/hud.dm +++ b/code/modules/mob/living/silicon/pai/hud.dm @@ -9,42 +9,25 @@ var/image/holder var/turf/T = get_turf(src.loc) for(var/mob/living/carbon/human/perp in view(T)) - var/perpname = "wot" holder = perp.hud_list[ID_HUD] + holder.icon_state = "hudno_id" if(perp.wear_id) - var/obj/item/weapon/card/id/I = perp.wear_id.GetID() - if(I) - perpname = I.registered_name - holder.icon_state = "hud[ckey(perp:wear_id:GetJobName())]" - client.images += holder - else - perpname = perp.name - holder.icon_state = "hudno_id" - client.images += holder - else - holder.icon_state = "hudno_id" - client.images += holder + holder.icon_state = "hud[ckey(perp:wear_id:GetJobName())]" + client.images += holder - for(var/datum/data/record/E in data_core.general) - if(E.fields["name"] == perpname) + var/perpname = perp.get_face_name(perp.get_id_name("")) + if(perpname) + var/datum/data/record/R = find_record("name", perpname, data_core.security) + if(R) holder = perp.hud_list[WANTED_HUD] - for (var/datum/data/record/R in data_core.security) - if((R.fields["id"] == E.fields["id"]) && (R.fields["criminal"] == "*Arrest*")) - holder.icon_state = "hudwanted" - client.images += holder - break - else if((R.fields["id"] == E.fields["id"]) && (R.fields["criminal"] == "Incarcerated")) - holder.icon_state = "hudincarcerated" - client.images += holder - break - else if((R.fields["id"] == E.fields["id"]) && (R.fields["criminal"] == "Parolled")) - holder.icon_state = "hudparolled" - client.images += holder - break - else if((R.fields["id"] == E.fields["id"]) && (R.fields["criminal"] == "Released")) - holder.icon_state = "hudreleased" - client.images += holder - break + switch(R.fields["criminal"]) + if("*Arrest*") holder.icon_state = "hudwanted" + if("Incarcerated") holder.icon_state = "hudincarcerated" + if("Parolled") holder.icon_state = "hudparolled" + if("Released") holder.icon_state = "hudreleased" + else + return + client.images += holder /mob/living/silicon/pai/proc/medicalHUD() if(client) diff --git a/code/modules/mob/living/silicon/pai/software.dm b/code/modules/mob/living/silicon/pai/software.dm index 5ced7b62d2b..544e8fe5610 100644 --- a/code/modules/mob/living/silicon/pai/software.dm +++ b/code/modules/mob/living/silicon/pai/software.dm @@ -218,33 +218,22 @@ // Accessing medical records if("medicalrecord") - if(src.subscreen == 1) - var/datum/data/record/record = locate(href_list["med_rec"]) - if(record) - var/datum/data/record/R = record - var/datum/data/record/M = record - if (!( data_core.general.Find(R) )) - src.temp = "Unable to locate requested medical record. Record may have been deleted, or never have existed." - else - for(var/datum/data/record/E in data_core.medical) - if ((E.fields["name"] == R.fields["name"] || E.fields["id"] == R.fields["id"])) - M = E - src.medicalActive1 = R - src.medicalActive2 = M + if(subscreen == 1) + medicalActive1 = find_record("id", href_list["med_rec"], data_core.general) + if(medicalActive1) + medicalActive2 = find_record("id", href_list["med_rec"], data_core.medical) + if(!medicalActive2) + medicalActive1 = null + temp = "Unable to locate requested security record. Record may have been deleted, or never have existed." + if("securityrecord") - if(src.subscreen == 1) - var/datum/data/record/record = locate(href_list["sec_rec"]) - if(record) - var/datum/data/record/R = record - var/datum/data/record/M = record - if (!( data_core.general.Find(R) )) - src.temp = "Unable to locate requested security record. Record may have been deleted, or never have existed." - else - for(var/datum/data/record/E in data_core.security) - if ((E.fields["name"] == R.fields["name"] || E.fields["id"] == R.fields["id"])) - M = E - src.securityActive1 = R - src.securityActive2 = M + if(subscreen == 1) + securityActive1 = find_record("id", href_list["sec_rec"], data_core.general) + if(securityActive1) + securityActive2 = find_record("id", href_list["sec_rec"], data_core.security) + if(!securityActive2) + securityActive1 = null + temp = "Unable to locate requested security record. Record may have been deleted, or never have existed." if("securityhud") if(href_list["toggle"]) src.secHUD = !src.secHUD @@ -410,70 +399,64 @@ // Crew Manifest /mob/living/silicon/pai/proc/softwareManifest() - var/dat = "" - dat += " Crew Manifest" - var/list/L = list() - if(!isnull(data_core.general)) - for (var/datum/data/record/t in sortRecord(data_core.general)) - var/R = t.fields["name"] + " - " + t.fields["rank"] - L += R - for(var/R in sortList(L)) - dat += "[R] " - dat += " |