From d121b740d1d60c5bdfc4b81801676e849c40f2c7 Mon Sep 17 00:00:00 2001 From: cib Date: Sat, 4 Feb 2012 11:59:46 -0800 Subject: [PATCH 01/13] Added Erthilo's bone gel and bone setter sprites. --- .../objects/items/weapons/surgery_tools.dm | 8 ++++---- icons/obj/surgery.dmi | Bin 7129 -> 8130 bytes 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/code/game/objects/items/weapons/surgery_tools.dm b/code/game/objects/items/weapons/surgery_tools.dm index d0381bb464e..f3521476c42 100644 --- a/code/game/objects/items/weapons/surgery_tools.dm +++ b/code/game/objects/items/weapons/surgery_tools.dm @@ -1106,8 +1106,8 @@ CIRCULAR SAW /obj/item/weapon/surgical_tool/bonegel name = "bone gel" - icon = 'janitor.dmi' - icon_state = "cleaner" + icon = 'surgery.dmi' + icon_state = "bone gel" /obj/item/weapon/surgical_tool/bonegel/New() stage += 0 @@ -1130,8 +1130,8 @@ CIRCULAR SAW /obj/item/weapon/surgical_tool/bonesetter name = "bone setter" - icon = 'items.dmi' - icon_state = "wrench" + icon = 'surgery.dmi' + icon_state = "bone setter" /obj/item/weapon/surgical_tool/bonesetter/New() stage += 1 diff --git a/icons/obj/surgery.dmi b/icons/obj/surgery.dmi index 9a4f4fec1b338fccaa5a383231ecf317277050a2..a1fe77d1b63427b241ed331c7773c555450b48bb 100644 GIT binary patch literal 8130 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 literal 7129 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 From 7a4b21382e136bb8755f2a4c37c3c54e63f2ec28 Mon Sep 17 00:00:00 2001 From: SkyMarshal Date: Sat, 4 Feb 2012 14:17:17 -0700 Subject: [PATCH 02/13] Fixes for *custom v/h emotes Blood type is now a variable of the DNA datum Fixed runtime from blood Fixed the AI prompt being missed. Added breath holding. --- code/WorkInProgress/Cael_Aislinn/MultiZ.dm | 3 +- code/WorkInProgress/detective_work.dm | 7 ++- code/game/atom_procs.dm | 21 ++++---- code/game/gamemodes/game_mode.dm | 3 +- code/game/machinery/bots/mulebot.dm | 2 +- code/game/machinery/computer/Operating.dm | 2 +- code/game/machinery/computer/computer.dm | 8 +-- code/game/machinery/scanner.dm | 2 +- code/game/magic/cultist/ritual.dm | 10 ++-- code/game/objects/devices/scanners.dm | 3 +- code/modules/mob/living/carbon/human/emote.dm | 53 ++++++++++++++----- .../mob/living/carbon/human/examine.dm | 2 +- code/modules/mob/living/carbon/human/human.dm | 2 +- code/modules/mob/living/carbon/human/life.dm | 35 +++++++++--- code/modules/mob/living/silicon/ai/ai.dm | 10 ++-- code/modules/mob/transform_procs.dm | 6 +++ 16 files changed, 113 insertions(+), 56 deletions(-) diff --git a/code/WorkInProgress/Cael_Aislinn/MultiZ.dm b/code/WorkInProgress/Cael_Aislinn/MultiZ.dm index 19a3c65045b..1f3c9a95681 100644 --- a/code/WorkInProgress/Cael_Aislinn/MultiZ.dm +++ b/code/WorkInProgress/Cael_Aislinn/MultiZ.dm @@ -175,8 +175,7 @@ H.apply_damage(0.5*damage, BRUTE, "r_arm") var/obj/effect/decal/cleanable/blood/B = new(src.loc) - B.blood_DNA = H.dna.unique_enzymes - B.blood_type = H.b_type + B.blood_DNA = list(list(H.dna.unique_enzymes, H.dna.btype)) H:weakened = max(H:weakened,2) H:updatehealth() diff --git a/code/WorkInProgress/detective_work.dm b/code/WorkInProgress/detective_work.dm index de93933cc0a..424a23c2e41 100644 --- a/code/WorkInProgress/detective_work.dm +++ b/code/WorkInProgress/detective_work.dm @@ -714,8 +714,11 @@ turf/proc/add_bloody_footprints(mob/living/carbon/human/M,leaving,d,info) this.dir = d this.desc = "These bloody footprints appear to have been made by [info]." if(istype(M,/mob/living/carbon/human)) - this.blood_DNA.len++ - this.blood_DNA[this.blood_DNA.len] = list(M.dna.unique_enzymes,M.b_type) + if(this.blood_DNA.len) + this.blood_DNA.len++ + this.blood_DNA[this.blood_DNA.len] = list(M.dna.unique_enzymes,M.dna.b_type) + else + this.blood_DNA = list(list(M.dna.unique_enzymes,M.dna.b_type)) proc/get_tracks(mob/M) if(istype(M,/mob/living)) diff --git a/code/game/atom_procs.dm b/code/game/atom_procs.dm index cb0572d8451..b40b1ab18b4 100644 --- a/code/game/atom_procs.dm +++ b/code/game/atom_procs.dm @@ -148,12 +148,12 @@ I.Blend(new /icon('blood.dmi', "itemblood"),ICON_MULTIPLY) I.Blend(new /icon(src.icon, src.icon_state),ICON_UNDERLAY) src.icon = I - if(src.blood_DNA) + if(src.blood_DNA.len) src.blood_DNA.len++ - src.blood_DNA[src.blood_DNA.len] = list(M.dna.unique_enzymes,M.b_type) + src.blood_DNA[src.blood_DNA.len] = list(M.dna.unique_enzymes,M.dna.b_type) else var/list/blood_DNA_temp[1] - blood_DNA_temp[1] = list(M.dna.unique_enzymes, M.b_type) + blood_DNA_temp[1] = list(M.dna.unique_enzymes, M.dna.b_type) src.blood_DNA = blood_DNA_temp else if (istype(src, /turf/simulated)) var/turf/simulated/source2 = src @@ -172,22 +172,19 @@ this.viruses += newDisease newDisease.holder = this else if (istype(src, /mob/living/carbon/human)) - if(src.blood_DNA) + if(src.blood_DNA.len) src.blood_DNA.len++ - src.blood_DNA[src.blood_DNA.len] = list(M.dna.unique_enzymes,M.b_type) + src.blood_DNA[src.blood_DNA.len] = list(M.dna.unique_enzymes,M.dna.b_type) else var/list/blood_DNA_temp[1] - blood_DNA_temp[1] = list(M.dna.unique_enzymes, M.b_type) + blood_DNA_temp[1] = list(M.dna.unique_enzymes, M.dna.b_type) src.blood_DNA = blood_DNA_temp else return else - var/list/L = params2list(src.blood_DNA) - L -= M.dna.unique_enzymes - while(L.len >= 3) - L -= L[1] - L += M.dna.unique_enzymes - src.blood_DNA = list2params(L) + var/list/blood_DNA_temp[1] + blood_DNA_temp[1] = list(M.dna.unique_enzymes, M.dna.b_type) + src.blood_DNA = blood_DNA_temp return /atom/proc/add_vomit_floor(mob/living/carbon/M as mob, var/toxvomit = 0) diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm index 70e1d553f87..b2860af20c4 100644 --- a/code/game/gamemodes/game_mode.dm +++ b/code/game/gamemodes/game_mode.dm @@ -55,7 +55,6 @@ Devices and Tools; /obj/item/device/radio/headset/traitor:3:Headset with Binary Translator; /obj/item/weapon/plastique:2:C-4 (Destroys walls); /obj/item/weapon/syndie/c4explosive:4:Low Power Explosive Charge, with Detonator; -/obj/item/weapon/syndie/c4explosive/heavy:7:High (!) Power Explosive Charge, with Detonator; /obj/item/device/powersink:5:Powersink (DANGER!); /obj/machinery/singularity_beacon/syndicate:7:Singularity Beacon (DANGER!); Whitespace:Seperator; @@ -69,6 +68,8 @@ Badassery; /obj/item/toy/syndicateballoon:10:For showing that You Are The BOSS (Useless Balloon); Whitespace:Seperator;"} +//obj/item/weapon/syndie/c4explosive/heavy:7:High (!) Power Explosive Charge, with Detonator; + /datum/game_mode/proc/announce() //to be calles when round starts world << "Notice: [src] did not define announce()" diff --git a/code/game/machinery/bots/mulebot.dm b/code/game/machinery/bots/mulebot.dm index 441a7f06fbe..9e0b575c3f5 100644 --- a/code/game/machinery/bots/mulebot.dm +++ b/code/game/machinery/bots/mulebot.dm @@ -806,7 +806,7 @@ var/obj/effect/decal/cleanable/blood/B = new(src.loc) B.blood_DNA.len++ - B.blood_DNA[B.blood_DNA.len] = list(H.dna.unique_enzymes, H.b_type) + B.blood_DNA[B.blood_DNA.len] = list(H.dna.unique_enzymes, H.dna.b_type) bloodiness += 4 diff --git a/code/game/machinery/computer/Operating.dm b/code/game/machinery/computer/Operating.dm index e6516b74c33..8b37e8f6eef 100644 --- a/code/game/machinery/computer/Operating.dm +++ b/code/game/machinery/computer/Operating.dm @@ -33,7 +33,7 @@
Name: [src.victim.real_name]
Age: [!isnull(src.victim.age) ? src.victim.age : "Undetermined"]
-Blood Type: [src.victim.b_type]
+Blood Type: [src.victim.dna.b_type]

Health: [src.victim.health]
Brute Damage: [src.victim.getBruteLoss()]
diff --git a/code/game/machinery/computer/computer.dm b/code/game/machinery/computer/computer.dm index 4d8d31c860a..91e6b8b9b73 100644 --- a/code/game/machinery/computer/computer.dm +++ b/code/game/machinery/computer/computer.dm @@ -404,7 +404,7 @@ Pod/Blast Doors computer G.fields["fingerprint"] = text("[]", md5(H.dna.uni_identity)) G.fields["p_stat"] = "Active" G.fields["m_stat"] = "Stable" - M.fields["b_type"] = text("[]", H.b_type) + M.fields["b_type"] = text("[]", H.dna.b_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." @@ -428,7 +428,7 @@ Pod/Blast Doors computer L.fields["age"] = H.age L.fields["id"] = md5("[H.real_name][H.mind.assigned_role]") L.fields["rank"] = H.mind.assigned_role - L.fields["b_type"] = H.b_type + L.fields["b_type"] = H.dna.b_type L.fields["b_dna"] = H.dna.unique_enzymes L.fields["enzymes"] = H.dna.struc_enzymes L.fields["identity"] = H.dna.uni_identity @@ -481,7 +481,7 @@ Pod/Blast Doors computer G.fields["fingerprint"] = text("[]", md5(H.dna.uni_identity)) G.fields["p_stat"] = "Active" G.fields["m_stat"] = "Stable" - M.fields["b_type"] = text("[]", H.b_type) + M.fields["b_type"] = text("[]", H.dna.b_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." @@ -505,7 +505,7 @@ Pod/Blast Doors computer L.fields["age"] = H.age L.fields["id"] = md5("[H.real_name][H.mind.assigned_role]") L.fields["rank"] = H.mind.assigned_role - L.fields["b_type"] = H.b_type + L.fields["b_type"] = H.dna.b_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/game/machinery/scanner.dm b/code/game/machinery/scanner.dm index 857ed1dbbfc..3488d1f610c 100644 --- a/code/game/machinery/scanner.dm +++ b/code/game/machinery/scanner.dm @@ -46,7 +46,7 @@ obj/machinery/scanner/attack_hand(mob/living/carbon/human/user) lastuser = user.real_name var/mname = user.real_name var/dna = user.dna.unique_enzymes - var/bloodtype = user.b_type + var/bloodtype = user.dna.b_type var/fingerprint = md5(user.dna.uni_identity) var/list/marks = list() var/age = user.age diff --git a/code/game/magic/cultist/ritual.dm b/code/game/magic/cultist/ritual.dm index 65e74484210..919c535d74d 100644 --- a/code/game/magic/cultist/ritual.dm +++ b/code/game/magic/cultist/ritual.dm @@ -555,8 +555,11 @@ var/engwords = list("travel", "blood", "join", "hell", "destroy", "technology", R.word2 = w2 R.word3 = w3 R.check_icon() - R.blood_DNA.len++ - R.blood_DNA[R.blood_DNA.len] = list(H.dna.unique_enzymes, H.b_type) + if(R.blood_DNA.len) + R.blood_DNA.len++ + R.blood_DNA[R.blood_DNA.len] = list(H.dna.unique_enzymes, H.dna.b_type) + else + R.blood_DNA = list(list(H.dna.unique_enzymes, H.dna.b_type)) return else user << "The book seems full of illegible scribbles. Is this a joke?" @@ -601,8 +604,7 @@ var/engwords = list("travel", "blood", "join", "hell", "destroy", "technology", var/obj/effect/rune/R = new /obj/effect/rune if(istype(user, /mob/living/carbon/human)) var/mob/living/carbon/human/H = user - R.blood_DNA.len++ - R.blood_DNA[R.blood_DNA.len] = list(H.dna.unique_enzymes, H.b_type) + R.blood_DNA = list(list(H.dna.unique_enzymes, H.dna.b_type)) switch(r) if("teleport") var/list/words = list("ire", "ego", "nahlizet", "certum", "veri", "jatkaa", "balaq", "mgar", "karazet", "geeri") diff --git a/code/game/objects/devices/scanners.dm b/code/game/objects/devices/scanners.dm index 01462387d29..2d3f8b6c6ae 100644 --- a/code/game/objects/devices/scanners.dm +++ b/code/game/objects/devices/scanners.dm @@ -119,6 +119,7 @@ MASS SPECTROMETER F.fingerprints = md5(M.dna.uni_identity) F.icon_state = "fingerprint1" F.name = text("FPrintC- '[M.name]'") + user << "\blue Done printing." user << text("\blue [M]'s Fingerprints: [md5(M.dna.uni_identity)]") if ( !(M.blood_DNA) ) @@ -126,7 +127,7 @@ MASS SPECTROMETER else user << "\blue Blood found on [M]. Analysing..." spawn(15) - for(var/i = 1, i < M.blood_DNA.len, i++) + for(var/i = 1, i <= M.blood_DNA.len, i++) var/list/templist = M.blood_DNA[i] user << "\blue Blood type: [templist[2]]\nDNA: [templist[1]]" return diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm index 6c906ea1b83..bb3507561d5 100644 --- a/code/modules/mob/living/carbon/human/emote.dm +++ b/code/modules/mob/living/carbon/human/emote.dm @@ -1,8 +1,8 @@ /mob/living/carbon/human/emote(var/act,var/m_type=1,var/message = null) var/param = null - if (findtext(act, "-", 1, null)) - var/t1 = findtext(act, "-", 1, null) + if (findtext(act, " ", 1, null)) + var/t1 = findtext(act, " ", 1, null) param = copytext(act, t1 + 1, length(act) + 1) act = copytext(act, 1, t1) @@ -50,22 +50,33 @@ m_type = 1 if ("custom") - var/input = input("Choose an emote to display.") as text|null - if (!input) - return - input = sanitize(input) - var/input2 = input("Is this a visible or hearable emote?") in list("Visible","Hearable") - if (input2 == "Visible") + m_type = 0 + if(copytext(param,1,2) == "v") m_type = 1 - else if (input2 == "Hearable") - if (src.miming) - return + else if(copytext(param,1,2) == "h") m_type = 2 else - alert("Unable to use this emote, must be either hearable or visible.") + var/input2 = input("Is this a visible or hearable emote?") in list("Visible","Hearable") + if (input2 == "Visible") + m_type = 1 + else if (input2 == "Hearable") + m_type = 2 + else + alert("Unable to use this emote, must be either hearable or visible.") + return + if(m_type) + param = trim(copytext(param,2)) + else + param = trim(param) + var/input + if(!param) + input = input("Choose an emote to display.") as text|null + else + input = param + if(input) + message = "[src] [input]" + else return - message = "[src] [input]" - if ("me") if(silent) return @@ -186,6 +197,20 @@ message = "[src] makes a weak noise." m_type = 2 + if ("breathe") + message = "[src] breathes." + m_type = 1 + holdbreath = 0 + + if ("stopbreath") + message = "[src] stops breathing..." + m_type = 1 + + if ("holdbreath") + message = "[src] stops breathing..." + m_type = 1 + holdbreath = 1 + if ("deathgasp") message = "[src] seizes up and falls limp, \his eyes dead and lifeless..." m_type = 1 diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 78ba4691420..dcd3740215a 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -121,7 +121,7 @@ if (src.stat == 1 || stat == 2) usr << "\red [name] doesn't seem to be responding to anything around [t_him], [t_his] eyes closed as though asleep." - if(health < 0 && distance <= 3) + if((!isbreathing || holdbreath) && distance <= 3) usr << "\red [name] does not appear to be breathing." if(istype(usr, /mob/living/carbon/human) && usr.stat == 0 && src.stat == 1 && distance <= 1) for(var/mob/O in viewers(usr.loc, null)) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 8781017873a..86cd2b9d4f0 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -21,7 +21,7 @@ var/b_eyes = 0.0 var/s_tone = 0.0 var/age = 30.0 - var/b_type +// var/b_type var/obj/item/clothing/suit/wear_suit = null var/obj/item/clothing/under/w_uniform = null diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 5a551dd5fd5..ec5db3871c3 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -10,6 +10,8 @@ // used to do some stuff only on every X life tick life_tick = 0 + isbreathing = 1 + holdbreath = 0 /mob/living/carbon/human/Life() set invisibility = 0 @@ -272,16 +274,37 @@ var/datum/air_group/breath // HACK NEED CHANGING LATER if(health < config.health_threshold_dead) - losebreath++ + isbreathing = 0 + spawn emote("stopbreath") - if(losebreath>0 && prob(90)) //Suffocating so do not take a breath - losebreath-- - if (prob(75)) //High chance of gasping for air - spawn emote("gasp") + if(holdbreath) + isbreathing = 0 + + if(isbreathing) + // are we running out of air in our lungs? + if(losebreath > 0) + // inaprovaline prevents the need to breathe for a while + if(reagents.has_reagent("inaprovaline")) + losebreath = 0 + else + // we're running out of air, gasp for it! + if (prob(25)) //High chance of gasping for air + spawn emote("gasp") + else if(health >= 0) + if(holdbreath) + // we're simply holding our breath, see if we can hold it longer + if(health < 30) + holdbreath = 0 + isbreathing = 1 + spawn emote("custom h inhales sharply.") + else + isbreathing = 1 + emote("breathe") + else if(istype(loc, /obj/)) var/obj/location_as_object = loc location_as_object.handle_internal_lifeform(src, 0) - else + if(isbreathing) //First, check for air from internal atmosphere (using an air tank and mask generally) breath = get_breath_from_internal(BREATH_VOLUME) // Super hacky -- TLE //breath = get_breath_from_internal(0.5) // Manually setting to old BREATH_VOLUME amount -- TLE diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index 9b267e58854..5833e5a6c43 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -51,15 +51,15 @@ src << "To use something, simply double-click it." src << "Currently right-click functions will not work for the AI (except examine), and will either be replaced with dialogs or won't be usable by the AI." src << "Remember to adjust your camera network if you are having difficulty navigating the camera networks with the arrow keys or clicking on certain objects.
" - src << "
IMPORTANT GAMEPLAY ASPECTS:" - src << "1.) Act like an AI. If someone is breaking into your upload, say something like \"Alert. Unauthorised Access Detected: AI Upload.\" not \"Help! Urist is trying to subvert me!\"" - src << "2.) Do not watch the traitor like a hawk alerting the station to his/her every move. This relates to 1." - src << "3.) You are theoretically omniscient, but you should not be Beepsky 5000, laying down the law left and right. That is security's job. Instead, try to keep the station productive and effective. (Feel free to report the location of major violence and crimes and all that, just do not be the evil thing looking over peoples shoulders)" - src << "
We want everyone to have a good time, so we, the admins, will try to correct you if you stray from these rules. Just try to keep it sensible." if (!(ticker && ticker.mode && (mind in ticker.mode.malf_ai))) show_laws() src << "These laws may be changed by other players, or by you being the traitor." + src << "
IMPORTANT GAMEPLAY ASPECTS:" + src << "1.) Act like an AI. If someone is breaking into your upload, say something like \"Alert. Unauthorised Access Detected: AI Upload.\" not \"Help! Urist is trying to subvert me!\"" + src << "2.) Do not watch the traitor like a hawk alerting the station to his/her every move. This relates to 1." + src << "3.) You are theoretically omniscient, but you should not be Beepsky 5000, laying down the law left and right. That is security's job. Instead, try to keep the station productive and effective. (Feel free to report the location of major violence and crimes and all that, just do not be the evil thing looking over peoples shoulders)" + src << "
We want everyone to have a good time, so we, the admins, will try to correct you if you stray from these rules. Just try to keep it sensible." job = "AI" spawn(0) diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm index 601f0cc256c..95aadff89b5 100644 --- a/code/modules/mob/transform_procs.dm +++ b/code/modules/mob/transform_procs.dm @@ -119,6 +119,12 @@ if (!(ticker && ticker.mode && (O.mind in ticker.mode.malf_ai))) O.show_laws() O << "These laws may be changed by other players, or by you being the traitor." + O << "
IMPORTANT GAMEPLAY ASPECTS:" + O << "1.) Act like an AI. If someone is breaking into your upload, say something like \"Alert. Unauthorised Access Detected: AI Upload.\" not \"Help! Urist is trying to subvert me!\"" + O << "2.) Do not watch the traitor like a hawk alerting the station to his/her every move. This relates to 1." + O << "3.) You are theoretically omniscient, but you should not be Beepsky 5000, laying down the law left and right. That is security's job. Instead, try to keep the station productive and effective. (Feel free to report the location of major violence and crimes and all that, just do not be the evil thing looking over peoples shoulders)" + O << "
We want everyone to have a good time, so we, the admins, will try to correct you if you stray from these rules. Just try to keep it sensible." + O.verbs += /mob/living/silicon/ai/proc/ai_call_shuttle O.verbs += /mob/living/silicon/ai/proc/show_laws_verb From 1d7b00a0fcd6e394ba3bced59f86f7a114c0be99 Mon Sep 17 00:00:00 2001 From: SkyMarshal Date: Sat, 4 Feb 2012 16:20:19 -0700 Subject: [PATCH 03/13] Bugfixes for adminhelp and the Power Offline event. --- baystation12.dme | 1 - code/WorkInProgress/detective_work.dm | 2 +- code/game/events/Events/PowerOffline.dm | 4 ++-- code/modules/admin/verbs/adminhelp.dm | 2 +- 4 files changed, 4 insertions(+), 5 deletions(-) diff --git a/baystation12.dme b/baystation12.dme index ad8fb0bba94..f55c6d2cf01 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -370,7 +370,6 @@ #include "code\game\syndicate_shuttle.dm" #include "code\game\syndicate_specops_shuttle.dm" #include "code\game\throwing.dm" -#include "code\game\topic.dm" #include "code\game\turf.dm" #include "code\game\vials.dm" #include "code\game\vote.dm" diff --git a/code/WorkInProgress/detective_work.dm b/code/WorkInProgress/detective_work.dm index 424a23c2e41..48e741c7295 100644 --- a/code/WorkInProgress/detective_work.dm +++ b/code/WorkInProgress/detective_work.dm @@ -757,7 +757,7 @@ proc/blood_incompatible(donor,receiver) afterattack(atom/A as obj|turf|area, mob/user as mob) if(istype(A)) - user.visible_message("[user] starts to wipe the prints off of [A] with \the [src]!") + user.visible_message("[user] starts to wipe the prints and blood off of [A] with \the [src]!") if(do_after(user,30)) user.visible_message("[user] finishes wiping away the evidence!") A.clean_blood() diff --git a/code/game/events/Events/PowerOffline.dm b/code/game/events/Events/PowerOffline.dm index a8e03dcacd0..c02518c1aba 100644 --- a/code/game/events/Events/PowerOffline.dm +++ b/code/game/events/Events/PowerOffline.dm @@ -1,8 +1,8 @@ /datum/event/power_offline Announce() for(var/obj/machinery/power/apc/a in world) - if(!a.crit) - if(istype(a.area, /area/engine)) + if(!a.crit && a.z == 1) + if(istype(a.area, /area/engine) || istype(a.area, /area/toxins/xenobiology)) continue a.eventoff = 1 a.update() diff --git a/code/modules/admin/verbs/adminhelp.dm b/code/modules/admin/verbs/adminhelp.dm index 686339aa6a6..412a8e497ad 100644 --- a/code/modules/admin/verbs/adminhelp.dm +++ b/code/modules/admin/verbs/adminhelp.dm @@ -23,7 +23,7 @@ for(var/rep in replacechars) msg = dd_replacetext(msg, rep, "") world << msg*/ - send2adminirc("#bs12admin","HELP: [src.key]: [msg]") + send2adminirc("#bs12admin","HELP: \"[src.key]: [msg]\"") if(tension_master) tension_master.new_adminhelp() return From 7077583d2ae2c024b2967e0bfd0e07c8af129c1f Mon Sep 17 00:00:00 2001 From: SkyMarshal Date: Sat, 4 Feb 2012 17:24:56 -0700 Subject: [PATCH 04/13] Fixed derp with DME. --- baystation12.dme | 1 + 1 file changed, 1 insertion(+) diff --git a/baystation12.dme b/baystation12.dme index f55c6d2cf01..ad8fb0bba94 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -370,6 +370,7 @@ #include "code\game\syndicate_shuttle.dm" #include "code\game\syndicate_specops_shuttle.dm" #include "code\game\throwing.dm" +#include "code\game\topic.dm" #include "code\game\turf.dm" #include "code\game\vials.dm" #include "code\game\vote.dm" From 2074313f7f155ca781e1aa19f658851482d6eabc Mon Sep 17 00:00:00 2001 From: SkyMarshal Date: Sat, 4 Feb 2012 18:24:22 -0700 Subject: [PATCH 05/13] Updates to cigarettes and cigars Tables can now be thrown past You can now put something in a disposal unit by throwing at it. --- code/defines/obj.dm | 1 + .../objects/items/weapons/cigs_lighters.dm | 20 ++++++------------- code/game/objects/tables_racks.dm | 2 +- code/modules/recycling/disposal.dm | 14 +++++++++++++ 4 files changed, 22 insertions(+), 15 deletions(-) diff --git a/code/defines/obj.dm b/code/defines/obj.dm index fee7d93abe2..4b3cd52c64a 100644 --- a/code/defines/obj.dm +++ b/code/defines/obj.dm @@ -677,6 +677,7 @@ density = 1 anchored = 1.0 layer = 2.8 + throwpass = 1 New() ..() diff --git a/code/game/objects/items/weapons/cigs_lighters.dm b/code/game/objects/items/weapons/cigs_lighters.dm index 08c45e86efd..c48b54bb2c4 100644 --- a/code/game/objects/items/weapons/cigs_lighters.dm +++ b/code/game/objects/items/weapons/cigs_lighters.dm @@ -153,17 +153,16 @@ ZIPPO var/turf/location = get_turf(src) src.smoketime-- if(src.smoketime < 1) - if (istype(src,/obj/item/clothing/mask/cigarette/cigar)) - var/obj/item/weapon/cigbutt/C = new /obj/item/weapon/cigarbutt - C.loc = location - else - var/obj/item/weapon/cigbutt/C = new /obj/item/weapon/cigbutt - C.loc = location + src.lit = -1 + src.damtype = "brute" + src.icon_state = icon_butt + src.item_state = icon_off + src.desc = "A [src.name] butt." + src.name = "[src.name] butt" if(ismob(src.loc)) var/mob/living/M = src.loc M << "\red Your [src.name] goes out." processing_objects.Remove(src) - del(src) return if(location) location.hotspot_expose(700, 5) @@ -232,13 +231,6 @@ ZIPPO throwforce = 1 -/obj/item/clothing/mask/cigarette/cigar/havanian/attackby(obj/item/weapon/W as obj, mob/user as mob) - if(istype(W, /obj/item/weapon/match) && (W:lit > 0)) - user << "\red The [src] straight out REFUSES to be lit by such uncivilized means." - else - ..() - - //////////// //CIG PACK// //////////// diff --git a/code/game/objects/tables_racks.dm b/code/game/objects/tables_racks.dm index 0af3685cbb6..68e77257a07 100644 --- a/code/game/objects/tables_racks.dm +++ b/code/game/objects/tables_racks.dm @@ -98,7 +98,7 @@ TABLE AND RACK OBJECT INTERATIONS /obj/structure/table/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) if(air_group || (height==0)) return 1 - if(istype(mover) && (mover.checkpass(PASSTABLE) || mover.checkpass(TABLEPASS))) //WTF do things hit tables like that? Jeez. + if(istype(mover) && mover.checkpass(PASSTABLE)) //WTF do things hit tables like that? Jeez. return 1 else return 0 diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm index 897f472a2da..0de55b026ed 100644 --- a/code/modules/recycling/disposal.dm +++ b/code/modules/recycling/disposal.dm @@ -438,6 +438,20 @@ H.vent_gas(loc) del(H) + CanPass(atom/movable/mover, turf/target, height=0, air_group=0) + if (istype(mover,/obj/item)) + var/obj/item/I = mover + if(prob(75)) + I.loc = src + for(var/mob/M in viewers(src)) + M.show_message("\the [I] lands in \the [src].", 3) + else + for(var/mob/M in viewers(src)) + M.show_message("\the [I] bounces off of \the [src]'s rim!", 3) + return 0 + else + return ..(mover, target, height, air_group) + //The toilet does not need to pressurized but can only handle small items. //You can also choke people by dunking them into the toilet. /obj/machinery/disposal/toilet From dcd0197a1af5116310f47a855e186435cc0e4625 Mon Sep 17 00:00:00 2001 From: SkyMarshal Date: Sat, 4 Feb 2012 19:43:00 -0700 Subject: [PATCH 06/13] Poor AI! --- code/game/events/Events/PowerOffline.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/events/Events/PowerOffline.dm b/code/game/events/Events/PowerOffline.dm index c02518c1aba..f71d9b4096e 100644 --- a/code/game/events/Events/PowerOffline.dm +++ b/code/game/events/Events/PowerOffline.dm @@ -2,7 +2,7 @@ Announce() for(var/obj/machinery/power/apc/a in world) if(!a.crit && a.z == 1) - if(istype(a.area, /area/engine) || istype(a.area, /area/toxins/xenobiology)) + if(istype(a.area, /area/engine) || istype(a.area, /area/toxins/xenobiology) || istype(a.area, /area/turret_protected/ai)) continue a.eventoff = 1 a.update() From 35ae4bd5f392925cf5d692063e7a171e72ec2879 Mon Sep 17 00:00:00 2001 From: Tastyfish Date: Sun, 5 Feb 2012 01:07:57 -0500 Subject: [PATCH 07/13] turns out things broke from abi's runtime fix because that proc shouldn't ever be called here --- code/FEA/FEA_system.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/FEA/FEA_system.dm b/code/FEA/FEA_system.dm index 8189919da78..576bed173ee 100644 --- a/code/FEA/FEA_system.dm +++ b/code/FEA/FEA_system.dm @@ -329,8 +329,8 @@ datum AG.process_group() process_singletons() - for(var/turf/simulated/T in active_singletons) - T.process_cell() + //for(var/turf/simulated/T in active_singletons) // this code shouldn't actually exist in the current version of FEA apparently, + // T.process_cell() // causes horrible gas variable glitching process_super_conductivity() for(var/turf/simulated/hot_potato in active_super_conductivity) From c11502eb531c6563a46a8b86a63cae4f7cb329c7 Mon Sep 17 00:00:00 2001 From: SkyMarshal Date: Sat, 4 Feb 2012 23:12:53 -0700 Subject: [PATCH 08/13] More fingerprint fixes --- code/WorkInProgress/detective_work.dm | 4 +++- code/defines/atom.dm | 2 +- code/game/magic/cultist/ritual.dm | 8 ++++++-- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/code/WorkInProgress/detective_work.dm b/code/WorkInProgress/detective_work.dm index 48e741c7295..c50e43b6c4a 100644 --- a/code/WorkInProgress/detective_work.dm +++ b/code/WorkInProgress/detective_work.dm @@ -718,7 +718,9 @@ turf/proc/add_bloody_footprints(mob/living/carbon/human/M,leaving,d,info) this.blood_DNA.len++ this.blood_DNA[this.blood_DNA.len] = list(M.dna.unique_enzymes,M.dna.b_type) else - this.blood_DNA = list(list(M.dna.unique_enzymes,M.dna.b_type)) + var/list/blood_DNA_temp[1] + blood_DNA_temp[1] = list(M.dna.unique_enzymes, M.dna.b_type) + this.blood_DNA = blood_DNA_temp proc/get_tracks(mob/M) if(istype(M,/mob/living)) diff --git a/code/defines/atom.dm b/code/defines/atom.dm index 5db2913830a..fde7511d3bb 100644 --- a/code/defines/atom.dm +++ b/code/defines/atom.dm @@ -5,7 +5,7 @@ var/list/fingerprints = list() var/list/fingerprintshidden = new/list() var/fingerprintslast = null - var/list/blood_DNA = null + var/list/blood_DNA = list() var/last_bumped = 0 var/pass_flags = 0 diff --git a/code/game/magic/cultist/ritual.dm b/code/game/magic/cultist/ritual.dm index 919c535d74d..990fb85e4e2 100644 --- a/code/game/magic/cultist/ritual.dm +++ b/code/game/magic/cultist/ritual.dm @@ -559,7 +559,9 @@ var/engwords = list("travel", "blood", "join", "hell", "destroy", "technology", R.blood_DNA.len++ R.blood_DNA[R.blood_DNA.len] = list(H.dna.unique_enzymes, H.dna.b_type) else - R.blood_DNA = list(list(H.dna.unique_enzymes, H.dna.b_type)) + var/list/blood_DNA_temp[1] + blood_DNA_temp[1] = list(H.dna.unique_enzymes, H.dna.b_type) + R.blood_DNA = blood_DNA_temp return else user << "The book seems full of illegible scribbles. Is this a joke?" @@ -604,7 +606,9 @@ var/engwords = list("travel", "blood", "join", "hell", "destroy", "technology", var/obj/effect/rune/R = new /obj/effect/rune if(istype(user, /mob/living/carbon/human)) var/mob/living/carbon/human/H = user - R.blood_DNA = list(list(H.dna.unique_enzymes, H.dna.b_type)) + var/list/blood_DNA_temp[1] + blood_DNA_temp[1] = list(H.dna.unique_enzymes, H.dna.b_type) + R.blood_DNA = blood_DNA_temp switch(r) if("teleport") var/list/words = list("ire", "ego", "nahlizet", "certum", "veri", "jatkaa", "balaq", "mgar", "karazet", "geeri") From 54abcd30115ca925bfb6499939bc689ac570a51e Mon Sep 17 00:00:00 2001 From: SkyMarshal Date: Sun, 5 Feb 2012 00:21:26 -0700 Subject: [PATCH 09/13] Added a very awesome player to the recipients of the certificates --- config/custom_items.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/config/custom_items.txt b/config/custom_items.txt index 4f8e10c2f18..3b481b98250 100644 --- a/config/custom_items.txt +++ b/config/custom_items.txt @@ -2,4 +2,5 @@ skymarshal: Phillip Oswald: /obj/item/weapon/coin/silver spaceman96: Trenna Seber: /obj/item/weapon/pen/multi, /obj/item/clothing/suit/storage/labcoat/pink asanadas: Book Berner: /obj/item/clothing/under/chameleon/psyche tastyfish: Cindy Robertson: /obj/item/weapon/wrapping_paper -eternal248: Maximilian Haynes: /obj/item/weapon/paper/certificate \ No newline at end of file +eternal248: Maximilian Haynes: /obj/item/weapon/paper/certificate +searif: Yuki Matsuda: /obj/item/weapon/paper/certificate \ No newline at end of file From 46d6cbdcd02b2d64dc322e6e03462929b827e318 Mon Sep 17 00:00:00 2001 From: Miniature Date: Sun, 5 Feb 2012 18:51:40 +1030 Subject: [PATCH 10/13] Fix for votes being none mode --- code/game/vote.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/vote.dm b/code/game/vote.dm index 54f52659c23..45176d7e8bb 100644 --- a/code/game/vote.dm +++ b/code/game/vote.dm @@ -56,11 +56,11 @@ M << browse(null, "window=vote") M.client.showvote = 0 + calcwin() + if(winner == "none") winner = "default" - calcwin() - if(mode == 2) var/wintext = capitalize(winner) world << "Result is [wintext]" From 34971bcd9990ecc1f2867d52ece2ab4d6017c83d Mon Sep 17 00:00:00 2001 From: Hawk-v3 Date: Sun, 5 Feb 2012 10:47:20 +0000 Subject: [PATCH 11/13] Should have fixed SUPERHEATED DOOM --- code/game/gamemodes/meteor/meteors.dm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/code/game/gamemodes/meteor/meteors.dm b/code/game/gamemodes/meteor/meteors.dm index bad0d4a1043..7c4a21676ed 100644 --- a/code/game/gamemodes/meteor/meteors.dm +++ b/code/game/gamemodes/meteor/meteors.dm @@ -3,8 +3,8 @@ /var/const/meteor_wave_delay = 625 //minimum wait between waves in tenths of seconds //set to at least 100 unless you want evarr ruining every round -/var/const/meteors_in_wave = 20 -/var/const/meteors_in_small_wave = 10 +/var/const/meteors_in_wave = 10 //THIS should be better, Spess. +/var/const/meteors_in_small_wave = 4 /proc/meteor_wave(var/number = meteors_in_wave) if(!ticker || wavesecret) @@ -97,8 +97,8 @@ /obj/effect/meteor/Move() var/turf/T = src.loc - if (istype(T, /turf)) - T.hotspot_expose(METEOR_TEMPERATURE, 1000) + /*if (istype(T, /turf)) + T.hotspot_expose(METEOR_TEMPERATURE, 1000) //FUCK YOU. FUCK YOU ALL. ~Hawk. */ ..() return From 36e51a9fd420667313cc78203ef90cc1dd2e0972 Mon Sep 17 00:00:00 2001 From: Hawk-v3 Date: Sun, 5 Feb 2012 13:04:03 +0000 Subject: [PATCH 12/13] ARGH METEORS --- code/game/gamemodes/meteor/meteors.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/game/gamemodes/meteor/meteors.dm b/code/game/gamemodes/meteor/meteors.dm index 7c4a21676ed..e0273fb85fd 100644 --- a/code/game/gamemodes/meteor/meteors.dm +++ b/code/game/gamemodes/meteor/meteors.dm @@ -97,8 +97,9 @@ /obj/effect/meteor/Move() var/turf/T = src.loc + //FUCK YOU. FUCK YOU ALL, METEORS. ~Hawk. /*if (istype(T, /turf)) - T.hotspot_expose(METEOR_TEMPERATURE, 1000) //FUCK YOU. FUCK YOU ALL. ~Hawk. */ + T.hotspot_expose(METEOR_TEMPERATURE, 1000) */ ..() return From ec77e9da196b1568d1d6fda3aa65b6eecdd4caa4 Mon Sep 17 00:00:00 2001 From: Albert Iordache Date: Sun, 5 Feb 2012 16:22:48 +0200 Subject: [PATCH 13/13] Revert "More fingerprint fixes" This reverts commit c11502eb531c6563a46a8b86a63cae4f7cb329c7 due to a bug where blood appears on objects when the blood_DNA variable is not null. --- code/WorkInProgress/detective_work.dm | 4 +--- code/defines/atom.dm | 2 +- code/game/magic/cultist/ritual.dm | 8 ++------ 3 files changed, 4 insertions(+), 10 deletions(-) diff --git a/code/WorkInProgress/detective_work.dm b/code/WorkInProgress/detective_work.dm index c50e43b6c4a..48e741c7295 100644 --- a/code/WorkInProgress/detective_work.dm +++ b/code/WorkInProgress/detective_work.dm @@ -718,9 +718,7 @@ turf/proc/add_bloody_footprints(mob/living/carbon/human/M,leaving,d,info) this.blood_DNA.len++ this.blood_DNA[this.blood_DNA.len] = list(M.dna.unique_enzymes,M.dna.b_type) else - var/list/blood_DNA_temp[1] - blood_DNA_temp[1] = list(M.dna.unique_enzymes, M.dna.b_type) - this.blood_DNA = blood_DNA_temp + this.blood_DNA = list(list(M.dna.unique_enzymes,M.dna.b_type)) proc/get_tracks(mob/M) if(istype(M,/mob/living)) diff --git a/code/defines/atom.dm b/code/defines/atom.dm index fde7511d3bb..5db2913830a 100644 --- a/code/defines/atom.dm +++ b/code/defines/atom.dm @@ -5,7 +5,7 @@ var/list/fingerprints = list() var/list/fingerprintshidden = new/list() var/fingerprintslast = null - var/list/blood_DNA = list() + var/list/blood_DNA = null var/last_bumped = 0 var/pass_flags = 0 diff --git a/code/game/magic/cultist/ritual.dm b/code/game/magic/cultist/ritual.dm index 990fb85e4e2..919c535d74d 100644 --- a/code/game/magic/cultist/ritual.dm +++ b/code/game/magic/cultist/ritual.dm @@ -559,9 +559,7 @@ var/engwords = list("travel", "blood", "join", "hell", "destroy", "technology", R.blood_DNA.len++ R.blood_DNA[R.blood_DNA.len] = list(H.dna.unique_enzymes, H.dna.b_type) else - var/list/blood_DNA_temp[1] - blood_DNA_temp[1] = list(H.dna.unique_enzymes, H.dna.b_type) - R.blood_DNA = blood_DNA_temp + R.blood_DNA = list(list(H.dna.unique_enzymes, H.dna.b_type)) return else user << "The book seems full of illegible scribbles. Is this a joke?" @@ -606,9 +604,7 @@ var/engwords = list("travel", "blood", "join", "hell", "destroy", "technology", var/obj/effect/rune/R = new /obj/effect/rune if(istype(user, /mob/living/carbon/human)) var/mob/living/carbon/human/H = user - var/list/blood_DNA_temp[1] - blood_DNA_temp[1] = list(H.dna.unique_enzymes, H.dna.b_type) - R.blood_DNA = blood_DNA_temp + R.blood_DNA = list(list(H.dna.unique_enzymes, H.dna.b_type)) switch(r) if("teleport") var/list/words = list("ire", "ego", "nahlizet", "certum", "veri", "jatkaa", "balaq", "mgar", "karazet", "geeri")