From 06e151c1ad7d765e6039f3bc6afc7de7e4834f42 Mon Sep 17 00:00:00 2001 From: Kelenius Date: Thu, 3 Apr 2014 11:39:04 +0400 Subject: [PATCH 001/185] Making them talk and reply (test version) --- .../modules/mob/living/carbon/metroid/life.dm | 168 ++++++++++++++---- .../mob/living/carbon/metroid/metroid.dm | 8 +- .../mob/living/carbon/metroid/powers.dm | 9 +- code/modules/mob/living/say.dm | 10 ++ 4 files changed, 152 insertions(+), 43 deletions(-) diff --git a/code/modules/mob/living/carbon/metroid/life.dm b/code/modules/mob/living/carbon/metroid/life.dm index aec12755d58..d98348d8eaf 100644 --- a/code/modules/mob/living/carbon/metroid/life.dm +++ b/code/modules/mob/living/carbon/metroid/life.dm @@ -370,10 +370,6 @@ if(Victim) return // if it's eating someone already, continue eating! - - if(prob(1)) - emote(pick("bounce","sway","light","vibrate","jiggle")) - if(AIproc && SStun) return @@ -398,28 +394,18 @@ if(starving && !client) // if a slime is starving, it starts losing its friends if(Friends.len > 0 && prob(1)) var/mob/nofriend = pick(Friends) - Friends -= nofriend + --Friends[nofriend] if(!Target) var/list/targets = list() - if(hungry || starving) //Only add to the list if we need to + if((hungry && !Leader) || starving) //Only add to the list if we need to for(var/mob/living/L in view(7,src)) //Ignore other slimes, dead mobs and simple_animals - if(isslime(L) || L.stat != CONSCIOUS || isanimal(L)) + if(isslime(L) || L.stat == DEAD || isanimal(L) || issilicon(L)) continue - if(issilicon(L)) - if(!is_adult) //Non-starving diciplined adult slimes wont eat things - if(!starving && Discipline > 0) - continue - - if(tame) //Tame slimes ignore electronic life - continue - - targets += L //Possible target found! - else if(iscarbon(L)) if(istype(L, /mob/living/carbon/human)) //Ignore slime(wo)men @@ -435,7 +421,7 @@ if(L in Friends) //No eating friends! continue - if(tame && ishuman(L)) //Tame slimes dont eat people. + if(tame && ishuman(L)) //Tame slimes don't eat people. continue if(!L.canmove) //Only one slime can latch on at a time. @@ -449,37 +435,141 @@ targets += L //Possible target found! - - if((hungry || starving) && targets.len > 0) - if(!is_adult) - if(!starving) - for(var/mob/living/carbon/C in targets) - if(!Discipline && prob(5)) - if(ishuman(C)) - Target = C - break - if(isalienadult(C)) - Target = C - break + if(!starving) + for(var/mob/living/carbon/C in targets) + if(!Discipline && prob(5)) + if(ishuman(C)) + Target = C + break + if(isalienadult(C)) + Target = C + break - if(islarva(C)) - Target = C - break - if(ismonkey(C)) - Target = C - break - else - Target = targets[1] + if(islarva(C)) + Target = C + break + if(ismonkey(C)) + Target = C + break else - Target = targets[1] // closest target + Target = targets[1] if(targets.len > 0) if(attacked > 0 || rabid) Target = targets[1] //closest mob probably attacked it, so override Target and attack the nearest! + if (speech_buffer.len > 0) + var/who = speech_buffer[1] // Who said it? + var/phrase = speech_buffer[2] // What did they say? + if ((findtext(phrase, number) || findtext(phrase, "Slimes"))) // Talking to us + if (findtext(phrase, "Friend")) // Debug + ++Friends[who] + if (findtext(phrase, "Hello") || findtext(phrase, "Hi")) + say (pick("Hello...", "Hi...")) + if (findtext(phrase, "Follow")) + if (Leader) + if (Leader == who) // Already following him + say (pick("Yes...", "Lead...")) + else if (Friends[who] > Friends[Leader]) // VIVA + Leader = who + say ("Yes... I follow [who]...") + else + say ("No... I follow [Leader]...") + else + if (Friends[who] > 2) + Leader = who + say ("I follow...") + else // Not friendly enough + say ("No...") + if (findtext(phrase, "Stop")) + if (Victim) // We are asked to stop feeding + if (Friends[who] > 4) + Victim = null + if (Friends[who] < 7) + --Friends[who] + say ("Grrr...") // I'm angry but I do it + else + say ("Fine...") + else if (Leader) // We are asked to stop following + if (Leader == who) + say ("Yes... I'll stay...") + Leader = null + else + if (Friends[who] > Friends[Leader]) + Leader = null + say ("Yes... I'll stop...") + else + say ("No... I'll keep following...") + if (findtext(phrase, "Kill")) // Will remove later + if (Friends[who] > 5) + rabid = 1 + speech_buffer = list() + if(prob(1)) + emote(pick("bounce","sway","light","vibrate","jiggle")) + else + var/t = 10 + var/slimes_near = -1 // Don't count itself + var/friends_near = list() + for (var/mob/living/carbon/M in view(7,src)) + if (isslime(M)) + slimes_near += 1 + if (M in Friends) + t += 20 + friends_near += M + if (hungry) t += 10 + if (starving) t += 20 + if (prob(100) && prob(t)) + var/phrases = list() + if (Target) phrases += "[Target]... looks tasty..." + if (starving) + phrases += "So... hungry..." + phrases += "Very... hungry..." + phrases += "Need... food..." + phrases += "Must... eat..." + if (hungry) + phrases += "Hungry..." + phrases += "Where is the food?" + phrases += "I want to eat..." + //phrases += "Rawr..." + //phrases += "Blop..." + if (rabid) + phrases += "Hrr..." + phrases += "Nhuu..." + phrases += "Unn..." + if (tame) + phrases += "Purr..." + if (attacked) + phrases += "Grrr..." + if (getToxLoss() > 30) + phrases += "Cold..." + if (getToxLoss() > 60) + phrases += "So... cold..." + phrases += "Very... cold..." + if (getToxLoss() > 90) + phrases += "..." + phrases += "C... c..." + if (amount_grown > 8 && !is_adult) phrases += "Soon I'll evolve..." + if (powerlevel > 3) phrases += "Bzzz..." + if (powerlevel > 5) phrases += "Zap..." + if (powerlevel > 8) phrases += "Zap... Bzz..." + if (slimes_near) phrases += "Brother..." + if (slimes_near > 1) phrases += "Brothers..." + if (!slimes_near) + phrases += "Lonely..." + for (var/M in friends_near) + phrases += "[M]... friend... [Friends[M]]..." // Debug info + if (hungry) + phrases += "[M]... I'm hungry..." + if (Friends.len > 0) phrases += "Friends are not food..." + + say (pick(phrases)) if(!Target) + if (Leader) + if(canmove && isturf(loc)) + step_to(src, Leader) + if(hungry || starving) if(canmove && isturf(loc) && prob(50)) step(src, pick(cardinal)) diff --git a/code/modules/mob/living/carbon/metroid/metroid.dm b/code/modules/mob/living/carbon/metroid/metroid.dm index ab479dffe30..4b862e328ce 100644 --- a/code/modules/mob/living/carbon/metroid/metroid.dm +++ b/code/modules/mob/living/carbon/metroid/metroid.dm @@ -30,16 +30,19 @@ var/amount_grown = 0 // controls how long the slime has been overfed, if 10, grows into an adult // if adult: if 10: reproduces + var/number = 0 // Used to understand when someone is talking to it var/mob/living/Victim = null // the person the slime is currently feeding on var/mob/living/Target = null // AI variable - tells the slime to hunt this down + var/mob/living/Leader = null // AI variable - tells the slime to follow this person var/attacked = 0 // determines if it's been attacked recently. Can be any number, is a cooloff-ish variable var/tame = 0 // if set to 1, the slime will not eat humans ever, or attack them var/rabid = 0 // if set to 1, the slime will attack and eat anything it comes in contact with var/list/Friends = list() // A list of potential friends - var/list/FriendsWeight = list() // A list containing values respective to Friends. This determines how many times a slime "likes" something. If the slime likes it more than 2 times, it becomes a friend + + var/list/speech_buffer = list() // List of phrases said near it // slimes pass on genetic data, so all their offspring have the same "Friends", @@ -52,7 +55,8 @@ /mob/living/carbon/slime/New() create_reagents(100) spawn (0) - name = "[colour] [is_adult ? "adult" : "baby"] slime ([rand(1, 1000)])" + number = rand(1, 1000) + name = "[colour] [is_adult ? "adult" : "baby"] slime ([number])" icon_state = "[colour] [is_adult ? "adult" : "baby"] slime" real_name = name slime_mutation = mutation_table(colour) diff --git a/code/modules/mob/living/carbon/metroid/powers.dm b/code/modules/mob/living/carbon/metroid/powers.dm index 771fc56eae1..b892f5364a2 100644 --- a/code/modules/mob/living/carbon/metroid/powers.dm +++ b/code/modules/mob/living/carbon/metroid/powers.dm @@ -139,7 +139,11 @@ if(Victim.LAssailant && Victim.LAssailant != Victim) if(prob(50)) if(!(Victim.LAssailant in Friends)) - Friends.Add(Victim.LAssailant) // no idea why i was using the |= operator + Friends[Victim.LAssailant] = 1 + //Friends.Add(Victim.LAssailant) // no idea why i was using the |= operator + else + ++Friends[Victim.LAssailant] + if(M.client && istype(src, /mob/living/carbon/human)) if(prob(85)) @@ -211,6 +215,7 @@ if(ckey) M.nutrition = new_nutrition //Player slimes are more robust at spliting. Once an oversight of poor copypasta, now a feature! M.powerlevel = new_powerlevel if(i != 1) step_away(M,src) + M.Friends = Friends.Copy() babies += M feedback_add_details("slime_babies_born","slimebirth_[replacetext(M.colour," ","_")]") @@ -225,4 +230,4 @@ else src << "I am not ready to reproduce yet..." else - src << "I am not old enough to reproduce yet..." + src << "I am not old enough to reproduce yet..." \ No newline at end of file diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index 27aaae5e1a0..a43b70ca992 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -287,6 +287,16 @@ var/list/department_radio_keys = list( P.speech_buffer.Remove(pick(P.speech_buffer)) P.speech_buffer.Add(html_decode(message)) + if(isslime(A)) //Slimes answering to people + if (A == src) + continue + + var/mob/living/carbon/slime/S = A + if (src in S.Friends) + S.speech_buffer = list() + S.speech_buffer.Add(src) + S.speech_buffer.Add(html_decode(message)) + if(istype(A, /obj/)) //radio in pocket could work, radio in backpack wouldn't --rastaf0 var/obj/O = A spawn (0) From ae1939167b4e59e1e1d64847c311580e024bb693 Mon Sep 17 00:00:00 2001 From: Kelenius Date: Fri, 4 Apr 2014 19:41:06 +0400 Subject: [PATCH 002/185] Can talk to specific slimes --- code/modules/mob/living/carbon/metroid/life.dm | 16 ++++++++-------- code/modules/mob/living/carbon/metroid/powers.dm | 2 +- code/modules/mob/living/say.dm | 2 +- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/code/modules/mob/living/carbon/metroid/life.dm b/code/modules/mob/living/carbon/metroid/life.dm index d98348d8eaf..610a33ee7b3 100644 --- a/code/modules/mob/living/carbon/metroid/life.dm +++ b/code/modules/mob/living/carbon/metroid/life.dm @@ -462,12 +462,12 @@ if (speech_buffer.len > 0) var/who = speech_buffer[1] // Who said it? var/phrase = speech_buffer[2] // What did they say? - if ((findtext(phrase, number) || findtext(phrase, "Slimes"))) // Talking to us - if (findtext(phrase, "Friend")) // Debug + if ((findtext(phrase, num2text(number)) || findtext(phrase, "slimes"))) // Talking to us + if (findtext(phrase, "friend")) // Debug ++Friends[who] - if (findtext(phrase, "Hello") || findtext(phrase, "Hi")) + if (findtext(phrase, "hello") || findtext(phrase, "hi")) say (pick("Hello...", "Hi...")) - if (findtext(phrase, "Follow")) + else if (findtext(phrase, "follow")) if (Leader) if (Leader == who) // Already following him say (pick("Yes...", "Lead...")) @@ -482,7 +482,7 @@ say ("I follow...") else // Not friendly enough say ("No...") - if (findtext(phrase, "Stop")) + else if (findtext(phrase, "stop")) if (Victim) // We are asked to stop feeding if (Friends[who] > 4) Victim = null @@ -501,7 +501,7 @@ say ("Yes... I'll stop...") else say ("No... I'll keep following...") - if (findtext(phrase, "Kill")) // Will remove later + else if (findtext(phrase, "kill")) // Will remove later if (Friends[who] > 5) rabid = 1 speech_buffer = list() @@ -531,8 +531,8 @@ phrases += "Hungry..." phrases += "Where is the food?" phrases += "I want to eat..." - //phrases += "Rawr..." - //phrases += "Blop..." + phrases += "Rawr..." + phrases += "Blop..." if (rabid) phrases += "Hrr..." phrases += "Nhuu..." diff --git a/code/modules/mob/living/carbon/metroid/powers.dm b/code/modules/mob/living/carbon/metroid/powers.dm index b892f5364a2..da6b0bbff2f 100644 --- a/code/modules/mob/living/carbon/metroid/powers.dm +++ b/code/modules/mob/living/carbon/metroid/powers.dm @@ -183,7 +183,7 @@ maxHealth = 200 amount_grown = 0 regenerate_icons() - name = text("[colour] [is_adult ? "adult" : "baby"] slime ([rand(1, 1000)])") + name = text("[colour] [is_adult ? "adult" : "baby"] slime ([number])") else src << "I am not ready to evolve yet..." else diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index a43b70ca992..0357d03574a 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -295,7 +295,7 @@ var/list/department_radio_keys = list( if (src in S.Friends) S.speech_buffer = list() S.speech_buffer.Add(src) - S.speech_buffer.Add(html_decode(message)) + S.speech_buffer.Add(lowertext(html_decode(message))) if(istype(A, /obj/)) //radio in pocket could work, radio in backpack wouldn't --rastaf0 var/obj/O = A From 1be7f9e8d712be1f91ca32f41e36939702ea8b0a Mon Sep 17 00:00:00 2001 From: Kelenius Date: Sat, 5 Apr 2014 20:46:24 +0400 Subject: [PATCH 003/185] Faces and refactoring --- .../modules/mob/living/carbon/metroid/life.dm | 250 ++++++++++-------- .../mob/living/carbon/metroid/metroid.dm | 5 + 2 files changed, 140 insertions(+), 115 deletions(-) diff --git a/code/modules/mob/living/carbon/metroid/life.dm b/code/modules/mob/living/carbon/metroid/life.dm index 610a33ee7b3..820493077bc 100644 --- a/code/modules/mob/living/carbon/metroid/life.dm +++ b/code/modules/mob/living/carbon/metroid/life.dm @@ -5,8 +5,6 @@ var/Discipline = 0 // if a slime has been hit with a freeze gun, or wrestled/attacked off a human, they become disciplined and don't attack anymore for a while var/SStun = 0 // stun variable - - /mob/living/carbon/slime/Life() set invisibility = 0 set background = BACKGROUND_ENABLED @@ -24,12 +22,13 @@ handle_targets() + if (!ckey) + handle_speech_and_mood() var/datum/gas_mixture/environment if(src.loc) environment = loc.return_air() - //Apparently, the person who wrote this code designed it so that //blinded get reset each cycle and then get activated later in the //code. Very ugly. I dont care. Moving this stuff here so its easy @@ -46,8 +45,6 @@ //Status updates, death etc. handle_regular_status_updates() - - /mob/living/carbon/slime/proc/AIprocess() // the master AI process //world << "AI proc started." @@ -221,7 +218,6 @@ if(reagents) reagents.metabolize(src) - src.updatehealth() return //TODO: DEFERRED @@ -357,7 +353,6 @@ if(prob(10)) Discipline-- - if(!client) if(!canmove) return @@ -372,7 +367,6 @@ if(AIproc && SStun) return - var/hungry = 0 // determines if the slime is hungry var/starving = 0 // determines if the slime is starving-hungry if(is_adult) // 1200 max nutrition @@ -402,7 +396,7 @@ if((hungry && !Leader) || starving) //Only add to the list if we need to for(var/mob/living/L in view(7,src)) - //Ignore other slimes, dead mobs and simple_animals + //Ignore other slimes, dead mobs, simple_animals and silicons if(isslime(L) || L.stat == DEAD || isanimal(L) || issilicon(L)) continue @@ -459,112 +453,6 @@ if(attacked > 0 || rabid) Target = targets[1] //closest mob probably attacked it, so override Target and attack the nearest! - if (speech_buffer.len > 0) - var/who = speech_buffer[1] // Who said it? - var/phrase = speech_buffer[2] // What did they say? - if ((findtext(phrase, num2text(number)) || findtext(phrase, "slimes"))) // Talking to us - if (findtext(phrase, "friend")) // Debug - ++Friends[who] - if (findtext(phrase, "hello") || findtext(phrase, "hi")) - say (pick("Hello...", "Hi...")) - else if (findtext(phrase, "follow")) - if (Leader) - if (Leader == who) // Already following him - say (pick("Yes...", "Lead...")) - else if (Friends[who] > Friends[Leader]) // VIVA - Leader = who - say ("Yes... I follow [who]...") - else - say ("No... I follow [Leader]...") - else - if (Friends[who] > 2) - Leader = who - say ("I follow...") - else // Not friendly enough - say ("No...") - else if (findtext(phrase, "stop")) - if (Victim) // We are asked to stop feeding - if (Friends[who] > 4) - Victim = null - if (Friends[who] < 7) - --Friends[who] - say ("Grrr...") // I'm angry but I do it - else - say ("Fine...") - else if (Leader) // We are asked to stop following - if (Leader == who) - say ("Yes... I'll stay...") - Leader = null - else - if (Friends[who] > Friends[Leader]) - Leader = null - say ("Yes... I'll stop...") - else - say ("No... I'll keep following...") - else if (findtext(phrase, "kill")) // Will remove later - if (Friends[who] > 5) - rabid = 1 - speech_buffer = list() - if(prob(1)) - emote(pick("bounce","sway","light","vibrate","jiggle")) - else - var/t = 10 - var/slimes_near = -1 // Don't count itself - var/friends_near = list() - for (var/mob/living/carbon/M in view(7,src)) - if (isslime(M)) - slimes_near += 1 - if (M in Friends) - t += 20 - friends_near += M - if (hungry) t += 10 - if (starving) t += 20 - if (prob(100) && prob(t)) - var/phrases = list() - if (Target) phrases += "[Target]... looks tasty..." - if (starving) - phrases += "So... hungry..." - phrases += "Very... hungry..." - phrases += "Need... food..." - phrases += "Must... eat..." - if (hungry) - phrases += "Hungry..." - phrases += "Where is the food?" - phrases += "I want to eat..." - phrases += "Rawr..." - phrases += "Blop..." - if (rabid) - phrases += "Hrr..." - phrases += "Nhuu..." - phrases += "Unn..." - if (tame) - phrases += "Purr..." - if (attacked) - phrases += "Grrr..." - if (getToxLoss() > 30) - phrases += "Cold..." - if (getToxLoss() > 60) - phrases += "So... cold..." - phrases += "Very... cold..." - if (getToxLoss() > 90) - phrases += "..." - phrases += "C... c..." - if (amount_grown > 8 && !is_adult) phrases += "Soon I'll evolve..." - if (powerlevel > 3) phrases += "Bzzz..." - if (powerlevel > 5) phrases += "Zap..." - if (powerlevel > 8) phrases += "Zap... Bzz..." - if (slimes_near) phrases += "Brother..." - if (slimes_near > 1) phrases += "Brothers..." - if (!slimes_near) - phrases += "Lonely..." - for (var/M in friends_near) - phrases += "[M]... friend... [Friends[M]]..." // Debug info - if (hungry) - phrases += "[M]... I'm hungry..." - if (Friends.len > 0) phrases += "Friends are not food..." - - say (pick(phrases)) - if(!Target) if (Leader) if(canmove && isturf(loc)) @@ -580,3 +468,135 @@ else if(!AIproc) spawn() AIprocess() + +/mob/living/carbon/slime/proc/handle_speech_and_mood() + //Mood starts here + var/newmood = "" + if (rabid) newmood = "angry" + else if (Target) newmood = "mischevous" + + if (!newmood) + if (prob(1)) + newmood = pick("sad", ":3", "pout") + + if (mood == "sad" || mood == ":3" || mood == "pout" && !newmood) + if (prob(75)) newmood = mood + + if (newmood != mood) // This is so we don't redraw them every time + mood = newmood + regenerate_icons() + + //Speech understanding starts here + var/to_say + if (speech_buffer.len > 0) + var/who = speech_buffer[1] // Who said it? + var/phrase = speech_buffer[2] // What did they say? + if ((findtext(phrase, num2text(number)) || findtext(phrase, "slimes"))) // Talking to us + if (findtext(phrase, "friend")) // Debug + ++Friends[who] + if (findtext(phrase, "hello") || findtext(phrase, "hi")) + to_say = pick("Hello...", "Hi...") + else if (findtext(phrase, "follow")) + if (Leader) + if (Leader == who) // Already following him + to_say = pick("Yes...", "Lead...", "Following...") + else if (Friends[who] > Friends[Leader]) // VIVA + Leader = who + to_say = "Yes... I follow [who]..." + else + to_say = "No... I follow [Leader]..." + else + if (Friends[who] > 2) + Leader = who + to_say = "I follow..." + else // Not friendly enough + to_say = pick("No...", "I won't follow...") + else if (findtext(phrase, "stop")) + if (Victim) // We are asked to stop feeding + if (Friends[who] > 4) + Victim = null + if (Friends[who] < 7) + --Friends[who] + to_say = "Grrr..." // I'm angry but I do it + else + to_say = "Fine..." + else if (Leader) // We are asked to stop following + if (Leader == who) + to_say = "Yes... I'll stay..." + Leader = null + else + if (Friends[who] > Friends[Leader]) + Leader = null + to_say = "Yes... I'll stop..." + else + to_say = "No... I'll keep following..." + else if (findtext(phrase, "kill")) // Will remove later + if (Friends[who] > 5) + rabid = 1 + speech_buffer = list() + + //Speech starts here + if (to_say) + say (to_say) + else if(prob(1)) + emote(pick("bounce","sway","light","vibrate","jiggle")) + else + var/t = 10 + var/slimes_near = -1 // Don't count itself + var/friends_near = list() + for (var/mob/living/carbon/M in view(7,src)) + if (isslime(M)) + slimes_near += 1 + if (M in Friends) + t += 20 + friends_near += M + if (nutrition < 800) t += 10 + if (nutrition < 300) t += 20 + if (prob(100) && prob(t)) + var/phrases = list() + if (Target) phrases += "[Target]... looks tasty..." + if (nutrition < 300) + phrases += "So... hungry..." + phrases += "Very... hungry..." + phrases += "Need... food..." + phrases += "Must... eat..." + else if (nutrition < 800) + phrases += "Hungry..." + phrases += "Where is the food?" + phrases += "I want to eat..." + phrases += "Rawr..." + phrases += "Blop..." + if (rabid) + phrases += "Hrr..." + phrases += "Nhuu..." + phrases += "Unn..." + if (tame || mood == ":3") + phrases += "Purr..." + if (attacked) + phrases += "Grrr..." + if (getToxLoss() > 30) + phrases += "Cold..." + if (getToxLoss() > 60) + phrases += "So... cold..." + phrases += "Very... cold..." + if (getToxLoss() > 90) + phrases += "..." + phrases += "C... c..." + if (Victim) + phrases += "Nom..." + phrases += "Tasty..." + if (amount_grown > 8 && !is_adult) phrases += "Soon I'll evolve..." + if (powerlevel > 3) phrases += "Bzzz..." + if (powerlevel > 5) phrases += "Zap..." + if (powerlevel > 8) phrases += "Zap... Bzz..." + if (mood == "sad") phrases += "Bored..." + if (slimes_near) phrases += "Brother..." + if (slimes_near > 1) phrases += "Brothers..." + if (!slimes_near) + phrases += "Lonely..." + for (var/M in friends_near) + phrases += "[M]... friend... [Friends[M]]..." // Debug info + if (nutrition < 750) + phrases += "[M]... I'm hungry..." + if (Friends.len > 0) phrases += "Friends are not food..." + say (pick(phrases)) \ No newline at end of file diff --git a/code/modules/mob/living/carbon/metroid/metroid.dm b/code/modules/mob/living/carbon/metroid/metroid.dm index 4b862e328ce..72fba526d39 100644 --- a/code/modules/mob/living/carbon/metroid/metroid.dm +++ b/code/modules/mob/living/carbon/metroid/metroid.dm @@ -44,6 +44,8 @@ var/list/speech_buffer = list() // List of phrases said near it + var/mood = "" // To show its face + // slimes pass on genetic data, so all their offspring have the same "Friends", ///////////TIME FOR SUBSPECIES @@ -66,6 +68,9 @@ /mob/living/carbon/slime/regenerate_icons() icon_state = "[colour] [is_adult ? "adult" : "baby"] slime" + overlays.Cut() + if (mood) + overlays += image('icons/mob/slimes.dmi', icon_state = "aslime-[mood]") ..() /mob/living/carbon/slime/movement_delay() From 3b67f683a80bffb5f5cbd61a9fe97eab44cbe0ba Mon Sep 17 00:00:00 2001 From: Kelenius Date: Mon, 7 Apr 2014 16:15:47 +0400 Subject: [PATCH 004/185] Stay command (untested) --- .../modules/mob/living/carbon/metroid/life.dm | 32 +++++++++++++++++-- .../mob/living/carbon/metroid/metroid.dm | 1 + 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/code/modules/mob/living/carbon/metroid/life.dm b/code/modules/mob/living/carbon/metroid/life.dm index 820493077bc..ad48bb267fd 100644 --- a/code/modules/mob/living/carbon/metroid/life.dm +++ b/code/modules/mob/living/carbon/metroid/life.dm @@ -456,15 +456,25 @@ if(!Target) if (Leader) if(canmove && isturf(loc)) - step_to(src, Leader) + if (holding_still) + holding_still = max(holding_still - 1, 0) + else + step_to(src, Leader) if(hungry || starving) if(canmove && isturf(loc) && prob(50)) - step(src, pick(cardinal)) + if (holding_still) + holding_still = max(holding_still - 1, 0) + if (starving) holding_still = max(holding_still - 1, 0) // Getting impatient twice as fast + else + step(src, pick(cardinal)) else if(canmove && isturf(loc) && prob(33)) - step(src, pick(cardinal)) + if (holding_still) + holding_still = max(holding_still - 1, 0) + else + step(src, pick(cardinal)) else if(!AIproc) spawn() AIprocess() @@ -530,6 +540,22 @@ to_say = "Yes... I'll stop..." else to_say = "No... I'll keep following..." + else if (findtext(phrase, "stay")) + if (Leader) + if (Leader == who) + holding_still = Friends[who] * 10 + to_say = "Yes... Staying..." + else if (Friends[who] > Friends[Leader]) + holding_still = (Friends[who] - Friends[Leader]) * 10 + to_say = "Yes... Staying..." + else + to_say = "No... I'll keep following..." + else + if (Friends[who] > 2) + holding_still = Friends[who] * 10 + to_say = "Yes... Staying..." + else + to_say = "No... I won't stay..." else if (findtext(phrase, "kill")) // Will remove later if (Friends[who] > 5) rabid = 1 diff --git a/code/modules/mob/living/carbon/metroid/metroid.dm b/code/modules/mob/living/carbon/metroid/metroid.dm index 72fba526d39..1f15086f8b2 100644 --- a/code/modules/mob/living/carbon/metroid/metroid.dm +++ b/code/modules/mob/living/carbon/metroid/metroid.dm @@ -39,6 +39,7 @@ var/attacked = 0 // determines if it's been attacked recently. Can be any number, is a cooloff-ish variable var/tame = 0 // if set to 1, the slime will not eat humans ever, or attack them var/rabid = 0 // if set to 1, the slime will attack and eat anything it comes in contact with + var/holding_still = 0 // AI variable, cooloff-ish for how long it's going to stay in one place var/list/Friends = list() // A list of potential friends From b0b1e5aff7152874a2acdc31b0c0499964b6e765 Mon Sep 17 00:00:00 2001 From: Daniel Date: Wed, 9 Apr 2014 22:30:45 +0200 Subject: [PATCH 005/185] Added custom colorable sofas --- .../structures/stool_bed_chair_nest/chairs.dm | 29 ++++++++++++------ icons/obj/objects.dmi | Bin 119702 -> 121137 bytes 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm index 66e23e3518a..7fc4bded134 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm @@ -96,25 +96,36 @@ /obj/structure/stool/bed/chair/comfy name = "comfy chair" desc = "It looks comfy." + icon_state = "comfychair" + var/chaircolor = rgb(255,255,255) + +/obj/structure/stool/bed/chair/comfy/New() + overlays += icon("icons/obj/objects.dmi", "comfychair_feet") + + var/icon/I = new("icons/obj/objects.dmi", "comfychair") + I.Blend(chaircolor, ICON_MULTIPLY) + src.icon = I + + return ..() /obj/structure/stool/bed/chair/comfy/brown - icon_state = "comfychair_brown" + chaircolor = rgb(255,113,0) /obj/structure/stool/bed/chair/comfy/beige - icon_state = "comfychair_beige" + chaircolor = rgb(255,253,195) /obj/structure/stool/bed/chair/comfy/teal - icon_state = "comfychair_teal" + chaircolor = rgb(0,255,255) + +/obj/structure/stool/bed/chair/comfy/black + chaircolor = rgb(167,164,153) + +/obj/structure/stool/bed/chair/comfy/lime + chaircolor = rgb(255,251,0) /obj/structure/stool/bed/chair/office anchored = 0 -/obj/structure/stool/bed/chair/comfy/black - icon_state = "comfychair_black" - -/obj/structure/stool/bed/chair/comfy/lime - icon_state = "comfychair_lime" - /obj/structure/stool/bed/chair/office/Move() ..() handle_rotation() diff --git a/icons/obj/objects.dmi b/icons/obj/objects.dmi index c2c03c7a2d76bd9c65fe425825664fc1351177c7..3942c3275e815dca57b7bcc41358409191b712e2 100644 GIT binary patch delta 25713 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%0Dv1`X{CjH)BwY*}@blSys6@~&$@R~4Gq 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 delta 24290 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 Date: Thu, 10 Apr 2014 15:34:57 +0200 Subject: [PATCH 006/185] Added armrest overlay --- .../structures/stool_bed_chair_nest/bed.dm | 7 +++++++ .../structures/stool_bed_chair_nest/chairs.dm | 19 +++++++++++++++++- icons/obj/objects.dmi | Bin 121137 -> 116538 bytes 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/code/game/objects/structures/stool_bed_chair_nest/bed.dm b/code/game/objects/structures/stool_bed_chair_nest/bed.dm index f4467c80ed2..deb4d1ba432 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/bed.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/bed.dm @@ -39,6 +39,9 @@ buckle_mob(M, user) return +/obj/structure/stool/bed/proc/afterbuckle(mob/M as mob) // Called after somebody buckled / unbuckled + return + /obj/structure/stool/bed/proc/unbuckle() if(buckled_mob) if(buckled_mob.buckled == src) //this is probably unneccesary, but it doesn't hurt @@ -46,6 +49,8 @@ buckled_mob.anchored = initial(buckled_mob.anchored) buckled_mob.update_canmove() buckled_mob = null + + afterbuckle(null) return /obj/structure/stool/bed/proc/manual_unbuckle(mob/user as mob) @@ -104,6 +109,8 @@ M.update_canmove() src.buckled_mob = M src.add_fingerprint(user) + + afterbuckle(M) return /* diff --git a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm index 7fc4bded134..2d9c7d8c67e 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm @@ -98,16 +98,33 @@ desc = "It looks comfy." icon_state = "comfychair" var/chaircolor = rgb(255,255,255) + var/image/armrest = null /obj/structure/stool/bed/chair/comfy/New() - overlays += icon("icons/obj/objects.dmi", "comfychair_feet") + //Base icon var/icon/I = new("icons/obj/objects.dmi", "comfychair") I.Blend(chaircolor, ICON_MULTIPLY) src.icon = I + //Armrest + var/icon/armrest_icon = new("icons/obj/objects.dmi", "comfychair_armrest") + armrest_icon.Blend(chaircolor, ICON_MULTIPLY) + + armrest = new(armrest_icon) + armrest.layer = MOB_LAYER + 0.1 + + //Feet + overlays += icon("icons/obj/objects.dmi", "comfychair_feet") + return ..() +/obj/structure/stool/bed/chair/comfy/afterbuckle() + if(buckled_mob) + overlays += armrest + else + overlays -= armrest + /obj/structure/stool/bed/chair/comfy/brown chaircolor = rgb(255,113,0) diff --git a/icons/obj/objects.dmi b/icons/obj/objects.dmi index 3942c3275e815dca57b7bcc41358409191b712e2..e37b64b9d9cce109a4191c891247c926d57b73ab 100644 GIT binary patch delta 21195 zcmZU4bwCu~_x9}4y_9rHhop47BHai`OQQ%93KBzyqI7p7-AE%KEuctCNlJ%w>~HwI z-~Zl!W@qot+?~1S+*8kUs%x;CKVe1R17S0C?;>Jwtb-jhmILgNwU^ z^D6-GOfN`Ocb?Vy*QB-)So~moiHxoz8XH=w&XJm3<_LMe+ z_3_pMM{-#8H>nc0-J>&Bd7QlN*de@cQjeyUc}E(hy&Q}MJHdAkLx1eEfAe~6IP~`| z{n&@5L!Ek#d+d+$dM1dmB1z#V@!<0`6Rc68GK%A6isD^mTPzi^3Uh~O$xfD^5>{l& z52cgLu!s0D)JIuINSXv=N{8?1)N{|Jtv|%q-3V#T8P^ZW))d4jS$2`@V8{Yvs@CVI zJ+1!j;Qsqmadh9rEP(CYDM7%HpmiMKmD2V>B8$BAxe;=>QZJ9xU6I{ewg;pSHAsqD z;JO~WY`0&VZB?D0$R;zox#z-7BW8F1)stzjj2)TW@5HQ(86!B6WMf-LBae0NhrvE( zS9;A2zRKcxlc>IvnrVe4cJ(~|oEnc;w>J`%)$^m_x^t3y%R~E~O*LWPR?C&i#%YjB zanXI+6m6;L*E^m1lZOUMp}Jo|+0TsgBq4S8?eW}$=*SzNdp63O9?j(ax~x1Jg5_wtQjYI(%F#kU6^y{-CutnXCJ(; z0)o%ZJ748^9xh`R}HzJVh>!9f4d}d z-5nm<+MhXmmdw$|yN#DWro}?1dDvtV#Yc3fJSaS@P;q)8@<8gKzwpMta2T-%sGV_< z+mYD3rdc`JaKdFg&23xi2qyTAt~s8kbMmeQw#l)vi}% z{mfdQ@2I?VTV60RKhbj9So)^a4_v%GJv$#UsOYx#E29y8)${EG1q{Fsspf zvsQH0Zuxwj&c6#VA1?=-GA(TO&^WQ)?(_LBxM2=LhjVF7UeVqf9ku(xyr*MlF{-B@ zn`D3`9J|ryD9&^DWQv$DjGdGUt_1)(gFfox7L=HP;h+zn%_XAi^H)wL#rqh+**?ZO z2n-}G+(!vRDvQz?13X|(dyP7F3fPo6qRlkDtrzIy;=6I1ZJ29x#TiWt zc5?(Jde6qeR$%dz{W6Aj`l6C>z&w}CMU4~ zLDRlt1|MLMC|f8-;ai_fs1`@?P!eBWb2GKwXy#+MoQKg&{BpQQ>dm!nB7n^(7Y&f2 zMOrd9<6GcZ?4M{Rs&--q7&SX36C(mmR0AFFOFax>(+6I8{)y=PA*|uw*+UJ)al-v< zFw+MdXEl#OP+~X?hkkLzKMF9^zJg125}hSl(m(X76OHt%xp{WkFJ&&3iI3^k;fnSMy#01GZIt{l?y z#f57t24jj^t{7!c&e{+${wx{wDF@AfHHlXa0v9mM6d)&8ulqR1?HZ{R7fQu}&NMLm zK8Y7j*-6ruFZ-FqV*fbG1Hr;P#IMF*i%Xy;(GKfI3d4uT;7cC=Xf!Xk&hrBZ8J>HN zQ`<`JQQsdtoa6OBTkz&fA~?7o`2XJd+our0uiWXM zc&mkm_<+F%-_aTPxwrWhL5KneFKAO^|WU3klW4*R~I=531q?u{%euG=HfE>i}NeQD@BUI(4QPCDoQ3*L z;5}fC$9V6<@`fy`>FUt{EBtcPB1ioIj~A@|llLmneE0}F{9tZzakQpXpdtNa{YWenRzwfO5tc~-2Zu>z9-|&`btMj5vX-5aBhE(9EMEd!)mjY^uSpF$k!3cqI z;nIxQ_Q(FJJDf$UmE%MKpi<`uMkgcnN4Qqi9J5WTt?RD{EqE}~+#*829}8XG3Z^v& z_|yF?3eEbo)3$(ml93AdC8OFt`%Y{%x3$fG$1k4sY{b#qT59TQ+0S}_X2G^GtoZ6I zW@D`Bx?^P(BSF5zK9H#MWg}3y@MzGI&Cs6oJmJCJTfGc4-#G$_XvO@=xt~JH#ti9O zNeS-m?k)!(UtgT2Ohl#MN$GU0UDUp-KE_vQ7q%n@w6;o-QA8EOGGF4!sZdcUAS3Lh zh0chzo1T^7FvVK%6O()60x+!}*#^D>VI|J1kZg20{({e`{{mR#$P$KMW8QaqC(rla zb|lc0A{GNvv!a+I711M6x{IHE!449j;Qmo+D)rRL?ZI+)T*Dz+34V3s;=nDNq+Ow5 z!`d6*RK))X?e2`n;fly)!l?*z;mhkh)x8B?AOwrvlQFvi1}x#3pTm>Ild$`rT(7^S z$2Hkf%|3~AdS`NWX+B!IvIZ@H#GR?8a0jLQJim_KvzcoT8+qt08+#;+x)@y<%X#!g z%9Sc;V5qpb3>~;$WtV;ZA{(EOFt?+Fp}V`g`15CZO--V3Y;J=JWc%pjZ6Gq@kVx!? z8|D8w9mtsQW)MnKz{asamtz1B*r{~gi+K)#`rgJkjP|MPEPzggKk|Kea(HuaHkh0t zDOV!!&mmPL*CCZmAz2|@hI4Hv7icZ@>1-ghMss{9opJ^?Z}~5r&QxF~mzM=~7Ncdq z%i8pt`o6xQj*&iaPwoM+)@juk+X1)ft#yCOlI-l!e(SNuzmpS7mYB}iKzP0mr~BKt zd3AMUUo8+B85w~8`}aRq9aIyialsUo@7wJ0#}>}cd`PjKSkS@YZ@e);KtRAwO+&Mt zEUtodLe}ZCOZNtoBnny>-~1I+Z7+66jsA%*?oQ|*pBqAJoq7}(HselZ}*72wZVO~$5J>+tvK)m2J)G6sq zCFYfbJ^v)Ld(ER`zai!Cz0N1Zcus*M1LnVt0ddmnF!S~j41O`O@P!34QHu6U8cNE} zwV@N@-F`J*Ar#%!NUXF19W^PxW zQK*3iOqpS&4YZ|i*2cgfj-vb;Za?O|S@iTc&}JwLKWgVU+4*F^zBul|by}y}(M`(hu>k*shXstUln1C&~hIwKPEIp@#) zQOsvWnT2iJ9`oNT;6krZmkr`7YusKB8K8H(-8VZknjasJ)Bj`eWxJxqmUX4!a_;xU z`TW~O-#?#=GE2sVchenGBa~PKvmItJfr)5-`S1X3t^ywGbvPVD-WsN)GSEFN)idl% z?Qma1Vwr=ujkDk-+E|4Hb^G}@zRZKcQ6-pXcN~cr-GH|nFkFv*U=8;7%sepGKNs}) zr|Wc0`ACAjbH0;T8UPppWu&~GyH>Dl<|g|iVd{)(TWRuEwxtj`joSoX*)ZB(D;aEA z<1hQ|R~o`1B9p}0lK%2cNHy$gYLac1e1D{9_8>N?p&;W@;&p;fU_=4q55;UDk|Q)G zB$34xb!3ugIsBma3-}KB%LA-LU6i8__l(OJtH?D+cdNCh31B|yKItU|?WXuETo?MD zS4R$AmmoUvC?1@v+={P8KOz)A{}37)N;>i)BfiEU=pKekp?-toun9pnt(;+vQE^-* zx)o*c7X-5+Qkz*Yf^#rZ!&c*=h=>NGUq~bm@T5pNoqzt!542do79%LsVY_}R{EYsK zbk+7DnC#xN%y;{T4-Vx9jdp8GN%v8-uKi45L|BkX)ZCe^FV&d(S8V-B@Yo2j1in=T zq3C2)sVx)nCCT_lhJ9mMx3t2-$BN>K?HwEj)*t@&uy+SHZDLCq#q`%jz%nBg$cLl{A8RyxWi8){P3YutWL8x zF|{y1@Tj5LN$8>HI{^8#qip9ee*hG<3i$)CZ`k zskeYNcYhsEH3X8(mCT^HmFgbGPjImi@w}VLwihQ|Yk)un7M#+QY=}sH zgh}I{ant`W0EslsV(gMXW_!iqU=MIh;Uo{A@r@#-9mz{pH9~P^`pZwrs6q z`rq>m^ltu0Dbp!#Xy$NXV4~0=5s$MA|A9*?5%&d}51LL*3ZexvX2e41<96i`(&Mz?oZ{rRrG0%aSaYrkG%&AHco&D=Nc8~8dfN1`45}PWPk9l1-mt)5@%9PGA*vd#J>N+6{AB)b-A0Bj&QFyC?bGOL0!M&j!b$eGq zqkpo@uh;6FoOx81l1wkeS(okyzZ^lK<8@Y;w&;<6qz?M%LHx@JaCj`;{sNwLXs z0CVNA2eANKjT$EmN>>#cT)-Ii3+@?b)IcX?Uq=(Fo%G<|j}MUdkg#jXQN*s+P383v3c!5*<0uH8&dn)1u6GC422xduckix|-5! zgHyo`8Y;76jtx&Gdl;B=b(p#0`SCizeo?2j`<%g)nEWgSJ3{KZNaXxewqMl0FAMYV z>lvgxs~$A6-tG2bvPVwrRaOb16KNjl;*S1USBQQZf>AS2mu`gi;SP~$(mmT~BgNy) zCp^IP%|YY60@t|jhc+*6`#6Bnhtd=g;n>e?Uhw*FCwsNT3o`UD4b-HksKP+8PcCd~ zF^`L$6=>t%MQlyIy}iv)=|lGBujY1o+wn7CN}02f zR9hzK5v0dT@w1=&w(v2r8MUHQf^-I%5rYxMn$)(DR1*r}nhvQ?U#8kdhmT0#{2TXh zWUV;jFI|XV`zrkXnfiFe3vg|6m)hY%;$Ji@kG6pbo=l~H9nI(upke)v?#qyT`(P0C0mNLE(+1r?9o}cJ%r{W8`UOgQ2`j_eXj2s+*SCRVmjSspvzC%y zuYPZJz^k;35%2Y;rt~bIIEiOUH+~sP-7n_t`yhMmy*+`V`@)m}`>dDzH3>O! zX5)k9Q?T=3Qt(I%Gdore23R~tz*hUml^?TB7kb%ZhO0&t2d79D#J53fXrF33B>LG` z>agX=sqY&#v~F(i1pqm!xF_v{--b_b(S#mNdGsmA!q}p-b-IOBmdLEMrYaqtDU8=C zSAr6r1N?ONgycssp{RC}K=ikN7=s^WsO1tAhtZiZ>0C0V#OKm*4D(9U%Vyv zhfE~4P?Ez~#f0+Wt11{%k03J_7G*3I{|-rzLiD4~;O1s*{BA-5mg&KOcoH6QAb@K? zkU>tA*oi^`AE10`Z(rP^|68J0pdu$H2h^x)AnTOK__s?!61yfiZ4|YW&|dqGJs08s zyh!ngKZbJBBgTCd4s8Q$z&0U1ohUmkrExo-NQo0mS&PUY=g7m<9M>YlA$2ap$=`;g z#^k=_uOBm*)d|3rlmAzY^73++B((xdaCW|RLofo;>jVU|xylTIg(NWn|M3!7TG{@r z4@=ytPww%x`Q^`~>}`pX($YR3hL4Jtl$d_kD-6bRr(^*adU9kJl}5Fg0CWK%oy4la znNdK+HsD|XVhS#2207M}>gv}c-13jFjT>Id+t{$u_8C*?sJOp*)4W?#fIVCU&+Rui zeF6QTks+}L-FGzgb5i7(jmrur37@zy7y?OpAs6|B+cA)DQwESf5PuOjH`*El#MR&sg1 z_3j#=8C5+!mqy70_KuG4fqtv?X9y8^KYOkqur^X6mKBa0i~tkako0n#z{PNSY%H1r zHlEy|@OKts5)~YO)7~$%aU@s8}0mO-5tzc44dwct*lw+1v6@bP)XM?m@EtY~!kT04PpOMH_#=D~7eQJA|zWFfq znW^qI2Q%KQwdo8J1U@dC5Ps*8(=sJXPDm?eQ4Wa+N@P@3Z-L)dck*=E z9AlytbLl*ai|pfO{JYc$$pM6}aH#YWQ26L}cMABowzi5dhOMvLs$vH~0xe_(fxT*8 z)Ok@M0xB;doB-S&W@cudj zT^7d7g+LZCa$!be@#kA77gAZT^Ao=h9{ZyZZ5_(06r@OkuSa4vW|1es%v|bW8YNh3 zOyb*@CU6bJSmP*}DIirJsw0H3k~v2`9=q%XfDWm!STeZ%X9ROc zeSN+0xbTN?E{_}{k_bm7GXfVqN84W3i$Z1)WB+ZDX4XjEw!^Z%T>Hg$XN{Rt$;FFL zmAK)}dqgx9?U#-~CsgkA`RmMeWN_g3cD0|_d=+j*9&LX8heEgE=6XYRzZ9NZan&7K zQo;pv{>XdcyK5i~_I&(A{1VVIs>KBu-yhHKFJ3Q`8fnA-;0&4WM)l(X{)QAlPe278 zc0{VcB+zj%E623u%mFzq-|)6WdVdA;t23G~@PccQyP~VURON?z1tQJvM;{~(ykNic zU~;pko0oFMD{{8Si>({PFCd@x2M3R4Pg(O8K)iHt03-O_fKC;F7>JHuLm$NYk{ZCw zNtMcGkxDYWo=hmE>?()!Lh8X0q&ZnByv%S)7(79!mXm49K|%6ScJbieM%g43uDONR z{icemjeSBd_YLTZZSpS|u5~(S&qz?65eda?B-`;JrX9c zWTu8&Ma#k1-v-VMmT#-+W_}$ChZheC3%fGq^qWghvvrGhT&VkONG=|#!%{T<8kH4S zRD{~_-rfwV<@AHi7pQN1egUK4?QuIN$T-d^{efHo+k8XT#E^fz_TAElKmS_rR_3k* zLoGU)P;XjAD0}w8=n3v3~eh;EA=`S}dL9siE{^pLv2gjCV{t>kk>DJPl`DNdXAc-IsMF!kYZ zD;d`>B7EE6PN)j}>e8HPhZaaJYy!C+EY66Iq9NFF;TG{MR3?r!RIaW#_J9icg(|0N zL42x1YM1c$==UO3s0%6`S8*W&ej#Pfgo!A`JaAXGkClK)pcwF+ie~{yt82z z$OgM_+Rn%Zt6d2wH?0k+-*%7eH@bRW-I&c{X) zpZ}UOjS6HX!L(G%bsj&**VrWXRg0xbxb9<<7sK)Fp;SP(NZZn{XLcRsJt;fw2C^T8 zVe+c+ltf@)>wzka_6lzCxP-V&Di++_Rt@xeV%f|_Z+{O10r~M4D^GU{My?#0kkiMe z$tk4;@%%G92`{+`S+D_&0^#nhOZ^(A(Rz3lL#K|)nT!}bsDzK*Qil_;PklgsW(fFKv)MDY z;Ye@?!g$)&Oa9XElAJ%BBslYtuDV)w#;_GawJ_X1wdj^M&w3*hh$M4SI30xfhvUNh zQ*@ibiZfMCJpEHy?}zyOLjtJig&m&}bNXP8klp+#w1e1jLVSGd5cK$;x~8TC-TW?>{~S!fn-krvIza2}H$T3fzJ8N7 zm7l!IUlMN{n}TCWH(qr>aX@wsDV}v)8BfoI4#le!D81Cj1}%s(i=1q6r3OLm|(nQH1Mf-qND3v|BHl(?b?g9`C|*xZT^^OKpvaR z!WN;M%%}uJTT2*UkYS=(JOD`597-k{T8<1j!wXh%tSm6|N#WSuSIk7iHt1W-H3b50 z0sfe=*rddN$+T_AaPqj1;AuNJRp5QP_dsNfB)N0xJ}oQDVpGweg4WXSqN@9D&p7Ow z(Xa>&Q=+{^6o9s;AtfaxIBe$o-Lf?I!tI6MGoa4t}Te93>oK zvu+0KHYcf@`)~{PKTS3vC>bGLC;6BC**7M{Bo8;eP=S@cwxrVga~d&}2b|2zAC4K& zcfPz+AIH_}XAsJ(s2~iriEjOY7;J{LuzDI%3W)cb$tOo$Ah_;-ZuSXS~P?4(k)B-9v z+sTE%-nhGeIh)4gV@j9tofXYB+j)&zu`o)+=;nux`&MUQ?4r*IYHz*;jjNR}?jlL& zQt{UZ={=B^r?UZWn3#}Iy>D0`9^o12=`_rJkQF6ky=z#&#FPlzy$$_SASCbHX-Mi` zer&4!SiDPS$eii2>R;+M)1u7&i;kJDpD!x94i1cU^IOyCY6MVUwMpyKrerPBnpyMX z@A=0gnDZjRr|(C1$SYf%_|?#pPZ#6?#^jgNHv)1}m;68Kezct^vE;_%ewf(?`5!vG zW6&CI4gQK@VUoyWDM5^1NL%l?$()OsY3(9|V+o_Jf=tBP`6lAalYtcKL8hOd7!ir_ znBo1ddzwFa?S)l6akAUn7aScO2TMqR4Hy>S+--UJ>%ltb zuf?*K>N8f>yoLEKx9>GN!Z)X6lf0D&k1HtfnlNC~rCTGX$A&wW{u#R)?DNzqyfxw| z`94rjS^@c}YX6nOIMOBlfCHyxb+1l~MID_o6o**_5H4fJP8MGlri1gtzjzl2Ks#e z9|9aUEOcJn7~hUf<*?~^JfeDH*ACM zM%d2He+vbipv_bp`|+SF1aGfI$QZfBZuagk>rjgXeTPmaUMsqZzW&;~Kio&(pWf?) z?qLA04+WfV&!bRcFJ`bOu0bV>3|ZM`m6I2@a}PXnZf)rzN?gN-(6p!~-zSk-flEh# zipn3vH#ju>YZ3p>r`h?$>{tXeGG1PF8#dra=iZ~-l!NLzW#676l)i1NTFxmzzf_fW zkJ8Pgg9+H-5gdfs(cz&X2>EUoY1I70mR^S)IrWoOQ{Hh#|NKjQi|N;8AG$5|ikuT; zSNwUb6T4m1)`m%t&s_g8fDvD%QeTPD1tSm|=m9H8>?oqIRV(95gQAv!5JL9{ohx34 z5Kms-xPcPT0i0%(&mZt= zZc#%Lb&AT!;8#-lyDj$XI!g0#`hzF_XP|4v5uMjl38O@tkB66Gra=GMh4aF3cme$_ z`1KQIE?VAHQk`O3$C^J<{mCH*j&%S_0?uVGbELO=_Qj8|vX)5-dCVc-#lXANR?nCg zQGb3^B(gFwd2B_pnjf?{C6m#5@=*T^XAN#;LuTJ+5w!Yu)1pm~bi(Yta1%C`d{9doD1Cd@- z23w%Kb}w}~LBJJtk4dz>C#WO;Q# ziW|y^#exi*r|0*HBLbK~%WMYA9mu3+RvpYdTtncXF&Vvg;rBNtxp#SmCYN|5qOAQP zjk#1y`&qDL1JdQ#HSIc7ap#GnrM>%$POg?&18(`dy}<`M3c=g#=B-xN63xkBz!Mz6 z@yAM-Jus7jlG7#de4aYmW<4mSbX* z>78N8WsTd#gW>NUs=Mv)>h;H8mzI|LYGz2LoqNk#oqqW6!S3;`U+^+i-z5BD@BTA+ zPmXcv)*%&&-9uZmZvPc=*30fw2(p4q!TX=x>`32j*nKg3{ra%1e=&-`wW8vI5~olq zsz5dAPi@xCOEWjO+Wq571a7ESv^l`V$b<7h9w&j(1SG>GM;sj=#bj-~I8+AmxEE7x z9)`2?#K-qQC4=5`bkDQA$6b_enGBozL{=VSY}Xa-@;wixzlHY3Rq4NZSXNVd=(z1A z<=(e{AsD(Y9c4%~f9UO5f6_YFVNgi@Xs1hZbBhKYC?jOc;03^#j~AmKkj%hX-!NNk ze6%neRQ9b9Hy>nTLgH#I`?)B+eR;%CFZv)@jwM%!SlQMeJpi4oItm+`ikMi4dFxUN z{r3|j8?iDoHB+ukVgpe}ykNHA4X2R`@xdycix3(YyBre-EBd#BxKGK`F?_+lgue$r z>iray$8CP!DVV<`Sgf+UDj_~zbR)nt)bK`m3Ov-d(WoP3v<%(}?~noRBY)*NJZnMZ z&aK2n-+O;<`yQ&5dd?2|rrdeL0BP^jyQ-;}`z9jyhyAS2!4G?~ANIeT8X<0$c-kTj z4Gr3Ye!L|m73aP8*Ea`UvhJJFrRdhoXHYcq3dU%+<939p(<7?uv*(tT*5GQ+HVw9U zzg@c6$m;v7TlAY2&HQ4}fUQnfxk|5PBMbB!SwA~G&T^m!AWiUGZmh3wQjueGZE0=> zihyXoQdyEb3aPscYa@CTwrkU*1hO8e|IIdf0G5)HWf{9Vl&Xka`V6;rV4O&+9LH2O!4nW6ISXaypg;#dGB&rac+A;pwu zQKvj$oFd-4M1p{SnvsB@t^#DHW%0QWfmuj8HYan5G~>{x3^0jbeLVJMZ!jAW z01+mZIfx)&=PY7!a#F(f6NxsBfD;B&uN)3BMt*!ZP^6~2?xjnDmUj=w_;#~BKd-7s zUAH%b>|3J7J09k(PL?^f@yL>EOvqdG-LW^&k$U&bKYlf4&G)@|i4qd3eH;w4Wn)4{ zAmT+A_#A|_qi4b9?D%-8PC1HBWf-xWD`6eU4=kX}wB?O@8s0R2B+dZH79`3UopmSj z2BN^SH}Euo>))uPqU@t%DCJ;h zL8ag?1PlB9fl7IXEpK-7Z{9^+QQa19&E@KeyYtmbvPhW=w`wU;3d+;}9QUjm|1#Xi#-9rkLvqytANj)XK&~V76t0KB(c9 z7sjoHIu4W}XZsrQb$#Wx)_Ni~z56aNEC|-q^85is-P^{z-JjTyE*v@+U2RBV0_QjS z_ou-#4XmeAi7hIf=#j-q`V4o&baV*diC+65QNt-En}dKBsTK^&vE{0e7s=ia5p{Hpauy4 zxS9WiKtw}@vqkWsorYrZiVzH*EQj=4s-H6JhQdM94T&}U4bu!SAw;H>7fH3@uxO=k zB?*5VPncW1+|KVNA&;fbfNR|%4OYzziHA0h2K#0QG|sKdFHCN&=WVlCf&Xy{f+b`~ z8U1mPt5_phvQYs6FoRFA+h7LhjM)W!>3M!TA%8Z4QhSg8eF9$XeYU3uC28&Pf?nqb z%aNnoo0|t7w^vu)_I(^UwEJn++Hac~XjIYmx)+J~{xztYo{MhWw7*q!nd(~+n+fcxBOaD74E9u6TJT0J9Pf_aJXUv)D%tpGc&F%7GUPq z3#Jn-Yl{AiTtyW%q03FB+t_*E?s5RO$X64(P#D30&AAY-uNhcAHNk^xK z4B4i`Xnvn}v#f^~PJmXWH)F=hswO%2>3vHSY|~?S-dTlH)?!^xRrP~0MrC#NVbAzS zO$a`ewO=E37CZ)v(%p_CiqlhCu>0*8f6dOOj(N11Pn{5RvZ`|O?k}`3!c528yiTDq zlo_BLWV{&3cqE@utm<3+x(+w1ZNf4?J)w!4K~4sTD=fGLeqRA9iJ=3V&Bm3TrWbL# zIb*dp#8&HOlC6loh)r65Jzw9Ox>C@YB=bfm~>kH`Khqj|+fekLU z)UcHq>@St}{}d!B>DXr%eGPF@HgwTsi=95Jw;_D0_?l&Rdb#@duBUVIzwMZ217hkFSss z7Gd6UaCA)7f*af?!1^8}4fOWEeR`GvJeC*vN*x-*%*<{StykdhB>09Flj@~_8@o`c zVFrW&i#!r~*I;!;Iny|?_~wtu?@$Oqmf*BW(=A#e4Md6t#3G8V2Vk59reJ=5gkZFe z!jwl5bMD?HW0f_(g}{);lMDZ^yUEL5{Q;ehTrClF*-5PY3h! zJMXxOkpA?fud}c%dsaV4P(S!oq!r>68-xU6K*kvkl_NP5u5Pa{j@x@Li-JUPGz+;c zI^1BZ>)`S_3N&t_U3?3M^N?1a-o-7Nx0f7yi|^*sv6Xfi&P*SCJ0t3lzJHwd@2j_WBWa|tD<&{r*e)vNQ@7>}9xK?s z4n{VWw6~iPuZRPEA&8EO@rEZ6J>dg|oCU%lL<(l=VI*c%8?VdfGD2Wx29;T@JLWjPL7hMpOO#1UR6hD)mI%bYMMy`sA;zT;tS2*5GV;X4f^mCo;r0)Sa(^jb}F8uPQsFS0+%N zWE2#Sq^~6E_C^L;|TvB-*|jzN@L|5s^ID>pJMOUA^y}AM$~Fty|RmpjUZA@=KGtU<*$1$x1eCH zJVotO;JZy|DOx6`AsdMH@#9C>2|{Pl#)>sDF3U{D|C;;aveNyc|LEF0(yTRiG)q<1 zZ@^6H;`lWR4NB`BIy}KU(iKhw=@Bv$k*hOa=Qu9>u$#Zca;laHjUzl98(WwsBvNt) zJ#WNO+L2Omqx{lN2flhqHH;3C8HlF`-g6~;6*#0m1WI7>q}qn#b#U8}BppIxZ4+!_ zA$6g_VcU%24}rx(uBDk!F(=KIXD-H^y82QZ38ER}rj3nsvE4qO_B&-_hB4U(qYDT@9D|jYb|XO*+vm@3c59hs0DFj! z;dF=+SvoES;r|v+i053(f}~q%wO)Mu z_9(fx(hYqP@j0y9B@6F^aj zSaFF(ELBLaM*$)-WFT@igC_0R?~C-+=|X(uU%k4Q)Wc*#UfJh22SWo4b49a6rw~Eq zhoilHGR1{o!}ozKudHKf6a-5{xn{byR2##x-G|4wYJD*TGkBb`b7$aBUVmCw!9>q_-+bSrEUcNk`IvGHG735#kTAh0LQ^Tp{xtFbt zKe?W_$1Q~nO8IWu!FY6N_dsmV?t}oM1bFsO-OInrf7!1o7opAs?$VYP@2=PCqWo%>HLC5Vh;bSRHU@DVjW6`u@LwHM+_Iu0G~h@-eZ+MwN? z{vkpwylb2v(U#G*$!=+(xw#=7ve(eZVl=%v>_ZEXn>kdP1=(A4J5;V)fH%k9D_%^BOdhH@(z%|_8% zXlQM9l;rAkw^roUZ?P3O8Qh-Q*DH#@e*FT@T};N?eXq*qoIB`%v4w?CD}7OX2jQ-U z!~N6nXz-BS=k)S~a_2o0E&dnlR)v4dxjY_=L)nDxZ7bW12F{bOua}I<5WdsIJZJTw zvut%<11&4-Ylv4f{pH5d;=$y5^~??{xl!3xj3vyaD|5_DpP#p_e=(PC*#r2{q@CMB z3Z~4X1_xE}$tlIAFSA}5EFUOFMn?MB^8lu%<9*c?vuAGCeg&q84Ot0Em(A2Qw>=?t z(3OK^m`wc708`kvs7P}E+gpB2Qh_oM;R_XZ?$hFD=d*l*#@=%!GI6xL)=p%mP5%N) zQ~WlR3Kn`o@Un?55;-w3eO7B#Y=2Ah!jvoYJCRfaN8RBaQ>cC|A+OXKL3F*$_RGD; z<)}D-=0lk6?(o?I-xbJ%8DEu66UMA{l4u8xsM+KtrC;*j&MQvV`U5MFHdq64pMi z5(a<9++4U_bZU@_WvhGomc4m?rIru~Sse_BLj049VtcZ@&j4(1zyn;arw!xIdex2R zMgB%R1g78hu^2YH=j!Ip>QGas7H=x%{g`?G%>BG7M%E%qya;`jpHA>8(Dl{-(e19M z6My(TkuDBD;3qdwN)!U9o5Rv7yj~z&3CTsa?<;*hc{Kb z0_6YWD?s(4YrC8}tFj06z>=JFqAqaEQB3dX2 z?_0qR6NOikB(LvqA=pt4Nf^KcjM1@N!N@4(YQALF3`mf3a_uT@q_Z$)Y*p!TAC!Ci z_*?SC-s0^d7=+qr;XNN{XZUka{dNp8!G~1fVJ2$ASxZ}cc`u{X4M?Nq=JHEC^nkpL zP)O2wkq+i{r-B62Iu9W3qZjiOc92?^K;bQAX$f%zj?tnpCS_2jc)%;38oJR}M%o|m zKyR0ShgjubC~ux@WDFpdMK!|p* z^pO3z<*o!>(JVd?GOca=2{JEtw+T|c)z&7KkdQdgTr>&L^!Y;y_`9KPjCpwQ`5goy zUbUS(?J1+glxf1>Abcs$mC$vy-w{Q$vZA04K4e!WJ2^=*PAsZ! zXx7xO1Dy3rEQUWB|2n5J0e&=Wd_@OjmzVSA$^3FWJFo5*^V{KXKdLu9zm1da?2|dI z<{Xvu*`YgYb((8jUn>1OUF1Vs971Urb8TtL>PVfI)HWKMb zDD7-L?e#W%_gz2QIV)@8@rY=mnH%|-Z8ij5?auFpQyo%q@RUzJPU$XY z9kqH)Rb;tj3Z`wWjuO1T?jvn8Ans2jsnXI2k5TGrtC*aeG5Wbq!_X_RQN^F^jt6l{ z9uXhJob{1}G5ctzC!PMLdm#*&vz^$*m)Y?Vpzl8Am)Eb1r}07y7pcD#*iwnejztSx z5D*eFQ{pqzN8NSaLal#&P+#=xizAydlO~cFiEBzpWQ^USG83E$o7ju8SLp0JbPpzjeewsU?G`_n0qz4D?+>)Ku50bL9F z^}bwR1L^d^yhP;7t)3(HfXR(TIPvqT_bE zIU#p1uJsoAeJB zpi}^1pBO+DPePZ#8v3~}n0>~egZ(jbsl)g1!+Fxpl|XvU4J+;u)RM+78!=@D(k;7q zK3!36yhN2c@8UqsFGId!oJSqM9KiOgH%osRc4}-((K#wlr-eK+=<2Pv{IgRw_r zl65fe@q6F*^ZxOEKIf0~`J8jF*L7d_b=}|ZbxRC|aRIQ%NWRI3)FG+UCAK3UN z)j(@?`#1b)$(Ox$q0GEIW+3y;hCIY(5cM7{G^QT(B*^#^m{0u_h&Ej2-uKSa{hapR zwEybb+QHwpN{?+WyNNTZj$c&EADCNuTN0Vd2C0GG18Oi3OMN*r0b(#iMG3cf*rI$G zoz$oOS{6PRw~Z*AcjEh6^ke)(8-Qncp}VX0+(6pCDRctjr3#yVy#E&PI69%-fyDiv z34x+o)}vkFEg}-;bC>I_Wmod-c~ z42)UakR|}2Q$JhnaU_OcNTAO5``$}Vi7p)Gs6xcDJ?+NH$XH=#M&N8TlCW(G=ncdO z)b1vYZS@{g%Rm|?J&g9fp@%sf6-p8V!b>o|8o>TpN9Ts^40vn)oG;|8b=mS|YUE@* z_S)8xerjF2)*~e>=ZzGnw=T4K=5b*?chPFB4t%mUq~=KodHU23Vr(io5cqEOiAn)FBW&p1#G1GE#F>=I?h+shS)MSd*W$QVLb%*&VGet z_Xx;=diNLX!zV^2t*@tS%Q69m+h5+?9k)qmS<<2@4DB{VI7QFE0=9WRbw; zNmCHYYwzsr49Y5lwPxx>r565-jfuIh{ZFqIZ9Rl6*y3NppH*1M0b#CJJU!2CY%uzF zhyVH1+0BjNN3jF0xVTtN5K3retIP-;^CkVs)OFQtW2RncyjhC4-=*;tLxE$;LFDew znb_=XIOHex#~wk4WPxpEKE2i_pq#q2IlZp;i>5 zvsUmA?*cyyH-US;IyehoCa;}|)G4|%NjI_z3jPJeK?Jac1)yPqn(h0 zSgRQ`kG~+kvCl;ze(F6kHy>Sc^eZODvP%iu1a3YhF6OZ}_PMbGrN%eqvQuLP&R7KX zg34kc#CryolDmml<>aGWJv>-+baec!7@*bUKx20L<$>MZMUVYJ*3j@*a(is(AcXpu z#kE`E4+u&dEI#-0x-d)cZHOB`{igIQQ3^QEE`V42@Tt=z!SWO2P)XRqYlDM%0o4l& zDRftIxadA_csUj^obsldj`9aseuMu6;Np_)FiFRLl}SLR;BeZ_;dv-~yRC4Kol2!b zTh0^i*9*N@F4nwo=kuPA?1xmJfV83{=&Yl_+hVW7yDX*P>59*5)2^TcQg^xq{o@qQ zVFkcz$*!W1>6)83WOTnu88s*}C6PZup+s#Wy^So#o^~@!Z8P%Kh<@5u{UMVBT+*z~ zYGMQkhcHA^76QYC0}oaI4>exCuJ|x!{FwRaV7BTVY*vCaM;u2M^fn$9Xn*iIveyPjl=X}Wy0CHuI4_aI*fN4mdgL-Xuz`in|g+iCY#oiLM-K_QQuLCwxbazO9 zEEJ$oZ=8@axQ7$c0@*XGssw6?nEH}sunJ@@x%F#S8{_=Dfrgz~yNbv3=^S3}hz!Ov zb_|~u!4=x!CC>IsG+4_qa6;StsZklX9S_^L&L6gwF)iD^*6%4e9J7S&Wlx-sFM9UJ z`PJCUSMiNsZ(N&s=b?0$DaQwVt>4DC&7D8=CH?l>|m9D>h|%-W>or!j0}&{?WjV z%a*?=b1ascp6*7cSA1Czz*GA%+5*JL`90mX(82S&=#5TL>#(#Y$3vUd4|VOs`oosc zN0R>Rdz7JGU3<$V+13)wu5K4uY2lj;wKVf2=Op=8(k2dlhZmggXYrKdV0jp9gE*4q@@B8 zDLkd+UiGHsKg|^yajW?!NeqUZKafbH4lIBZZ_7_o>M~<+d&ff<@8uyal znO>4>l1QZtSii|unOd`|OdVHA?lX>cR7fh|C0wMWk=c5%ApW{6+(jWPTfVCj@r|g= zTTxekdi}x>iWWJSfG|gFotX1aIie#Nl8IcJz#d-V{vogim>QDgR4kj&G(l~1V0l8*qJ#b)e0k*QTCdlPeC^%EUUyieK6G>T5u5OB^mipO# zfBs`)7!W?ssL8t3*L}D}T@#T#RJ5+j;6l6X%zBL|0)?}mInedF#q(>euC+&B{yIm& zOKMy3Id)W3yQ^cQmSr=Vg-}g9f~LABmk9(yDS;64<%{Wb>O}3upN~1hYuN!{r4+0i z$2q9^q3>@a^b=_v9nbH{^K&C?L|QH(5ZFHOSL)EZ9nJ5eFgQTjl5@9O6 z-i8y`&{|~^NIQA4J>M=#jNbXTdN!%J@U!Ei9f?>=GsSAtg9@?Lv%Fckp3h1mT+4(n zm|Rg3RFC&g_86FQ=a(FL5AIRPDzc)vS4>qSkZM(1>vN(M;W9sROH6~y~Yp{6MC~i$*8ir`UT|K z1Ou7Z7qYp5f>^qWggx)QZC4i;1EeVO6-sA2;0S#bcoA?wirdq-q9SOvD_7*GHb>cj!#Krgg@NQ$5z{Pbh59AVXSGaueD*THE&v$ z%OUPFU9!ut1t6wPDKblt?$aa|fl{Q>}3 z{prO7FNkO!)`TaMO=gc4mtqeSukFsG_TWJa2V}xY4rMpVdMAf#y%rs4{O_BFdy~?L zT{Kqe?AnvNIEfAYqXe0YH3YnID9pkF9PUagP1^6D1eN2L&K^YRG);_;r_4@F*j6$4 zHBOPy$Ojd+g~i1#9v(eoG#C#Ng@>TaXA5als;a6^A^)IfILp5@&+_)0QabrW+|xr| zA4f{&j8N{dG_q=M9Sa@lykOanj81@YF z4YM97T8Gr|lhkb0CQPWZbN#rZY+AOtw7W(tV4c6%vH53!hN~k*7TJ7P0(o8RZtzL@ z7ajcI4`xpBt(_Vr{2)RX`B7ql+4G9xAko*S8v(Q|`v5Ae1B1Hd@pS@aHCI9>)8Q+! zt9LZIN-kZxlndJmm0JsJ1~&zX;Uv1w+o$~p&`G4 z5`e{G4Y2=RNK=8>l8|7FW8a zMPonJjWf;})Y%(d5cLgEx337%)#TwxXrXV3Lf`zfX;sS2W4>Jm_~qYGs3NcyS6SFW zMK0O^wcn?vrq<8aj+*+)!Lvu5=;m(M2hc%1({!erGpOImubE0=gu_qURIar6B{W$E z4j3AK*S2SFiF#b;!%_IT=Bud;MreV;#|}KM6DQQyA8*`%M%hZ=B4;vunss4D{Zt?t zBrSQ>9Ks!RHq|vXdrxOTyo|j?AD)19tFVP0`51ajOFCeCd%G)yQgL8uIZ`kfd0uKz z^k(S8_#$~W!}>Z7RUV#^b_570M=JxCmgWjcUuR|x7JWKc==vWS(Ku1qkM)5H4HO^Q{Z?nJQI4hA9=Oem4}|2@!^uo{=w|v8O%61; z^*>e3y>-gaO)L||533zj$3n7X)PqGE!r%0|6;!7tmIt9Q0^~^3cD`ZmqVB4uyF{4Y z*~EE%Jvh9)Qw>m-<&D0sZVgN;mqlYeR$L%aDDo*JLSpRQ1qD*P^`-BHY7ug<0Wh~j-=u*@A_c=Y6rZM*ac z%XG9vYDrbKZGjawIfo&e+3xp;+gU@SYkMDp%#<(LKHzr={or%yU7yWp8W*Nsl4{nv z`f*kDON>U3|EBb@50i*`;lt^5hkU3ZZN>LT%$iR*z;C^V``(u)vXXNc!aRKhj7d3% zBBcQI3VZKmRZ>FLbv7h>~>0=y>0|HTvidMro?Au?s6Irf9*x*%0r z;wfoeIM#<3E+2;P?SIF%l;a}}!x0Sd;v=ObCOE#CT0K=>qWkml``~myy8lCr=Y>U| zR?u#q$`EEv6N!+5KyEqfSk;pW&WtEI+@XsGt9&Y8MQk`t;q%jbr*GcMg|r>YM+RCpBA`x zFxsh#eLfEn|9l=V&hRHDu&^z?W&K*%`>i)4(Xhs*>2bQ>>fujWm7rFP+Exq*u?P4% z{^CpP&;HDlInRDAQS}|>KVQF7kxY9}!CZP@319}V0vSe(to9Ti%-fKM=fNSN;<3kK z#mPCVd{k=~)C_g8v8m?#5OJ#RU@TZK{1IdwF8Z2;m|Z4eS5v*X&Ol4WPy|i{{!BIa0l<=M$g^$S?5+l;P>t>7SM#c+1K!E zx!P-d0vrsZu7}wsMxJZRJiPuzv=4IxZ}+*=3L&@fsoU#CeN2(-+V{-mvIkuorL`@d zWB4k!lIlO_f=iZ<9#NTUAHGO<^~&Yk=%jYanUv3=`l%u+mKa6CA)!j{oRXuoYX@sl|jnvrTgJ~X(DYPj*d-d^rd z92jKcmm*?r_gy@byuQ5H_%Sz^re?{55CfvLp4+Ejckls7tvz3k8x>r)pjg>#F09}z zJHyX#4>==z=m?${$MOjVSodtG0hMzq{jufz<+aVqU4c`_M^|HruwvQ^+a|6j*&gV{kCOGOraBE2InBZR*+c!xwpW1q#*SGbu zw&=&FUe7BbP=~xIi^1XH746JRorTsPGcyKh26wxkSP%UovMU1r%uYk8A2gGpJby0G zC#hx0PyQJ|xHN(h z!j4T@CFf3$q((-bSZ}kL1tGb$H~3gsp*a$;E!t%R?fXR-C)2jJ?_PF0exP+5&DO{M z8OS$0@IH|TgAz&oJttEaR=#qb3=5RAqzZ*uJo}Tr6U`zb6vj4#o=4j-G z6v|uTd@1OW? zw%(PxUMA9h#Tya~{QC3A|Ga}C_g0fL0`Y*ByB6QSeyvQ$==X#3cy3hhz0A(;2%2bB z_Scukw%=-Meg)vrBR3?^MBi>3F81jYpDYuBb@{E!Pu|_p*VfjiB8LeJ3+I=Xs&fF- zmjK_qToWVM&9jB+ z7odUPw*t{L2apdowa3m_eBYd+_^s6tjB}{HpDle2^t8099@sh?bsf+`50?U$?>9GM z0EMd>zw1-eYyMCXe}eDB`FFHV@LhrTgpk!pCf#yM^rWsW5?i%igG`M}dJWesPa~K9 z`sMYt#QMg@kDot7+uCG;JIp1HN1mKtZ%BPY$3b3~dONJPqmAJ_2~6}$v9VFCg$z+( zL}{txGFixdi%q^4e!uvmFjJ=lrK%iZDHZ~_|7)05g@aJ5kAvwx1g>gZsLd`z!uVck z9fsXe+nhzy*!l;I7};}v%i><#Kz*X92lWES`N_|S3L#Mp(atm9IO1QU+VOcUAK$~x ze-$>rVs+K)IcQOF+h7QpG6&*u%F*8{td{cX+{c{=o9rh`$?DPJ8t=`b-y6jc2(Z+_ zaLboeKZ<)_`k%0!p01jOire*>LkDdh+h1#452Qebzd@{DER(Tv>4SWKhO@cXHp|`Y zYa+kjPagRk-ya%I|2}Z-{mp3#4YqbFzH8ZM4GavJ+1cS$RaH%WvnB2B?v|FT+o|l= zq&xWH0SMS#KN&jblw#B)$$HtWAyCB;90jZcsu(~(*0k{T%M|t(>CRjbsM=T>wsawJ z6sSl-O!^}XPFCxSqbU4NNo{OhNG(b59zpuS@R}~R`aKO%?{W)0h!-O z^c6fnG6$f^c~=Or8msSTO5OT2@EmFa027~a`9sYioo*BydO z3sLWGZ*6Uvty2;c!hf8IZN6p~s*Gcr-PYL9Kb%d;g>ej8S(Wk=jOjm-M!w#@*CxT? z_{t(7na2t{Ksu0{`Mr2wH-MlNeEF;ha%p}h(n9Pr4I_@jcOn_C882ImX#-VcZe>L1 zTv_-p#q56WtNLLJ+(i}WK)74+8<@dYp#bNDb9_^O4-a8<7Sh6p6hNi>E8!oy;CJ5r zU4N`3Fe9JMoPrlkaRTx~GVP9QlXVo_uHcYIi8*CQLuuxy(jtbeIHUtR)sY&XoV`4Z zk3INd@4$9ay@|5^%M=0-Py)t)ZgXGw&TGd*oPf}9+o3200wf2}Vb^kDt=AUw^09jCl(nQ$hTJ^C4dR+}UqgKX6KM+EU!d^Jtb(g>Gy93cNIw&%2F~B#ovcg_j zSt&3%-?H}cq23tI)ZhT}G%`cuNdA7lng%1o<(MZFe=qog`|_m%NUcBP8vcP7g`7=i z&HG&$k9{>4M+3E;n;=Lj8~_j#7r$~Em5O5JSRj$T?zVJWuymu9p5yx%M`M~oV1-_O zp~7n7Uu}Oms*NcKsnLuHIjZ9FCz|l}lrl$Ybtik%e)LXfZvDY=m;h&x6R&6v7XDKXXC z7aM_(%DqR3dWbZxA}@Bft%b?hH@AUD_j25+fi`fD+N=YEkHE~RGB|iABCH39rriFx zx37J#gc=LE>vU#yZH-S@Y<0c{)J5|^vtrE1bjlE}=wyT>zqng_?Qq`LVlNB&t{O&S zG#x)UczRA{MC~2=;b+2=4MKLtM%Tl6KES-aGJw-3%GxvB?QzXwj7d z;tTt1Z=L;-_`FSs7u*y*v`rCa3Do2lAbJi)f9H^(%T&-~>T~gaiNSj{di>4F)YJ?8 zaMR^T@xA-X-Gk{OdBuMk_Zo`!m)|k$jR@_2vrP$CWECi}otXe;n9Kv=IA4{N>l2c< zadj}6@sUk&68!@kN#0s4jzhNhXj#52Dstce1a>K*Xo%Z9%+tzd!_Q*3wp|R9 zJ36bTbBA2{$PYP;*RIQgnHQ?2=&X-JOo)+0EZZ3Z*ORtr3?_@B#2Oc9hb9o5z@&p%&b9 zea!oZ=+nS2tqnH`dS0(&Q(X+N^?_vR-qt`o&it%EGvWw^tF%Qrt-jZU1_a0g|LHP* zH*o|X!m4-OApO{z&q^igMiIZH$AtRleiH#`^Ol>dvp2s}=wk=? zt!^J9tN_CD52$nrm6VqW1dU`afywvSRNS*Li9c_|5sP^pn2GLx{?};nIPVkxu=&<8 zduDo<7!CrY1)i;NSsnD6YtiXR!r}rxNnYCE07<#9F(K`uJGLp<%zUIZ7q|=I_Fjwh9a-O;mdPHl5kb>NvT%U^^Hdu=oax zTt`y|i#!g~n;c;yGy}=c#uRE>3uOFa@Du_ju_z4;jIj^ECajZ^KU3c!3$kv^+(nyz z)({r4!5A4BAnXi88rhdarsh9sJ%|eXokS-0TiEyY!BSfcZhd283)<5&6?McBr_&Z4URI_zXfF>+IJy{so1?9*n0#m}} z(yIi1a0lI^RJ_Lo@5+wrKtG|cFN)4ZFKC5Ei-blW^1T)pw3oBIC&MR#nUASSxI~M9 zWv_Nvx~PtQ`?4lAd*kp9+QIjc(|A$@{!EgDh^e z2^~yU)=XO2TUq%c!JP7?Y?zMcE6FKBDqO8T5AM}hvSC~R=#Z#|w?+sb0f5o)=KLXT zIVe*w>lX;&3R7Cq8s) z{>&agN02MW{47shbPYh!K!0v_6`ndw3L)1p8E^w+P57r6MUu^S2Xk_JIR+z}JJg z0Q+@`C6(1WJ3yr$7TINAX3tGUfK9B1$MmaH2&cQLO#vOSNq%e^C7hqNqQINTg#{D7 zBMM-j^-Hsy4q;Y;v^loObhtkt4G3n(k|$RVC?Uew*-~Fy4ZxVz!}BMF1{b#){0+vw z#j%xM@^M}C9hs%9Q>cwC^bYt6j~2G&3s2#849Nh1O}n~(oWq%wdhcC~P9deNy0&gw zgg4L(_~S2qE8T7(q&i#%8GKu6@<&@+B@ViDO%FGkHzr&)){@RNP&Wr(7Elc6dgFOl zRUg*=Dx=-fY86Q0egZrQP`lm7 z0AN)ij1O^1m`3jh9puFE5n$%p%0?mJ7`Z}i18M_vxMoRhE1(@W00V-i*;%fr#5Pke z>rv^z!W!HcA3+Gkg8-yKxQtIT)C&dL*v+i4!&1ZYqm$pEv!ZO+8}x$e7qJ~tx#qZd z813xZV>(zL(#vLgVqqnIiyRp7m{*FiM8H_{d-)<19(~}?znT={`D|otsdAIh*Q(h0L78Mm)|qW^bKoG?f^+CDWSFr3!WEwDF3OgscOd`lf@M6 z10j*dvsu+8IDo{>KwoQK=IxdFHs<~!CcyVj;m28Dc+7W+%i2W>c@O1G}5R)@tz0%C9mGIhY~`@WV!^eSnAh8=csu zFX2PR;1?Ql=E$0F=2I#Jcrte&q+(*sd<2a`QD$5?TFT|CaOezcza8*Z?wcMiKcN{r zb%f^}t5cui#}5i$=>n@gfST>>{rIRT?#YflAE>6!;49`rtdXVSXbBZoD-YuVaaRaj zNDT}Is??NAvHAK2d_6|FKrsU6MlqKyO>Nj9v2sBk^-{ zti;q-3Z&RnPMB__RutnGDrRaHLYUQea*g1YmfLcL841K|jttxP%w(D*ZDgqtG@ z9>|_#i;lD7LOeUgJwgxAcI9DbsoixCj>m8AVvNypUb2;WqQgm<7?zElo!H196Bsha zs08gRdg&OJcOtOG7QiFOi%oaUAf52h*!D$LTV!6;A%M$dknH`gO`%c2fCoXS z4l^st4aY_l#;xr~dSece1Ve3765_PfVF8bb*^DgF% zPgEocoLQ+FC?S>AIXgT1WS3$^`~%zgx1ih?x|lNH5qovlMQHd>?zi5;r`sy5B>0i& zB9O=GoIC=YP`E`r-e8PJcx`@ERFpY}F6P{jbaNbm z8Y!O|Y<-~7Rk#;ItV{fiMOrnO!>R@h!!--WC9|^9mUWs8_IxkRKQTXC@pBg9@Fq-X zXP~!Y^%<5XCK|~Zeb;(EE$JnGPi9is+R5l;%KD|ETp7+0E-VcP5;F)Fd^eqO?a3_G zHBf;@XOU=}bI%bgmyTqX2_j>V#PlSW!#ssVHVjT|K-j_hru{RX60QtfHV7=W=OZB1 z`l38GqAIt6Ok&dP*-SS(bwhcM#pNB)S^#2rJQ2r1spoDSm@;Ofv2ZSW0IUm_N)&)Y z69i!uzaR(i{tt~&_`+I!c6lv+qz;olJP3AdOb6bFS(^rhL-VH?Qzs~3R0S^9c|SNG z#6aJ-3K%L%@xvBTN_dR{%lkaCpA#3WUY8XfCX_cUT~he4Je7byTP_JVqP&Cb!TuAm zBguGQB*9o5*^d*C+_>ELvmHZApHw(P;Ie3(kD28D+{liZIYJskx+J~R<`b_Fh9G_i zpSIYGLOe*{VXZG?zW1ZyY-Lgl9>HOdPmr+=7P!J1!e|kZ3@$D%O4a8l>S_ncF;^gV z5(BRjxnTTZtPMHcy|K=5uZ#-IFoy>oFka;_qSlmU37Es33jQ1mKJ6E9(ymfFFsU@f zJ2Wk2?PQGkoj@(+^+jUk;lwm_pY6(`mjSR-9V>>6U`YFQh~)H;rG?2cSBHY;fa2Lq zEsyh~t6(|?kuhb2>qM$F2{KK2$<1IhQp^}D6{5N|V&3jxr68UJ=^?vNsVVVM8>3FH z?^7C33D{9aek75Y2)ql8$t|{8zc{`a?;Q9F%!I%Pb8XedCLapAHO7&!r>e!gvXemA zWecTF+~mc_49HWB&&6RZ;ey4lGg#6>mDB(QVKsXZg0K3@_4l!)qgxYy&%c+hk3+0g zA`J~Y3a+TB!Z%vYu(FKYp0Dn+`P4FNK43Ge=RW9(;`j zIkYba%AJVizczI2*L>=8d!&caCu}W$Yx3m{7siKE0RF6pV;Ub5AO=gY04w#a21&LY zqayT1JWQ`$t$T0p?T`j}uuWikwg~n?nsLKZ`}CvsfjQt&9iwVoC+-(IZ?f(B3|8@@WF$%4y*b zEt3G&I$hbB8k*^gAZt3E*SIF$KwtQps;s;3W!?LYw~T_j`Y0ouV$r6x1e`&w&j| zB8$j@N>8ZUn$aPv(^|5AatH>;89Aopir4d=fEbP%K?rvqNR!K*I4y;#3`JaoyqsC@ z1S6u&L(8>fd(;51$Fc?Lus!85v*SDfJ0UeUG6IzEFm?`*4^^I`zYG6iaBq@npR%xG z0KG=Ds)f_eu2WK|ldK5PNXo>Oc0t8|;X25n4{=#sO2m8@aUlUn3r|0ba;261b`CnF zu4^g{FQH+mmGHxdvSTxceOiya4+;4)pT2y_M~^@8Vtvy(lDYDw%ED1W%N@V6G=!g; z?Q1XI3-2SMN)F7ess_n0BSZzixIu2p&V9;InDOM>T2t>eIi-4BshhKo=f1N(JFbTe zuDx1bm&so#X;M48FRxKWA=1JL7i}PEjlC#CO3H5C#ZxIQpZ|5RjC;Rh3wtBmkwCd$ zBkJ_1Ip=ZEUm#~o?b5MuT}kGD5d3&DOM>Fv-lDUgJJ&%_EHWPJT1j{U(rg{@$%&_! zN>gn{UTp$E4lvD5@G#|k16V`g6CtV(=`Pt7lksT40TM_qoj5K88cXOafgLs$TAmBD zrd41id8QoFwKF8uqn4r!bCE1FccG))U{gs_#|q*Y+bVd#Z1?Mkpp>178}a1S{h9T> zhcV19i7~M>k(HXS^x(KE%9wJNqQlmb)mhK(c*X9M!PXTnY1Qm`Q-FE8T^+4dao7*X z<;!SLDvEuZkpyG6vVlWU^bX?~p*O8X8C?w? zY6X6FsHrK|pC$I~=wEEU%;V?N8O?YRb^V}_h!bAq^?dJ}KNwD3enSh*U8Gr!U(=QC z-0m?o@EA!Q;*46-$;oDw&YFY-Kzt47t-btwGG|b4%bKN{THG~)sZD#``Y}d76TeB$ zElp(CZkvVhnE?BB!_$rYtt6T&b%h&YziAQG07(kF-DvRBqw>VLL45g9xf)MZIT(nr z(zT!$-i`0z;Zp{F2=_rm;j@hVR2|Fpvh!Dde)__e*9RORRz~9%s4dw)TStxm3WB z9SyQL_Js)K-Lv!xedP>b)xb&=|GVxGw@h|U%(;WBS}o0Kkn#Jx`dHlMKBgoOS8A<8 zwIoJn_AfAul6b8lJQ?8{2Y$k=JJLahFwL{gMBL5i&(ltD?2<3i1V8CN6;0w(i{(cvU8|^#Qnm$Pv!(xay{LdRmkW7s)A&Zn_hO8g4abZM6L=;@(_=-0g z#h);A3LgA#hW~A6s2iyD$jgf2<;z&K;jZJh_63pjsU5DHjnMzw7W`|>e$Sz(Sw~)a zY!q$jRL{9B6=uCOiE53413(i+tszck`p`a>OISi)2>dm$D?1`;HI7-(aC-4gep{nu zGh5U(nukPAXq`z(KKL~-=Bbs5=Du^2MTZ7WB??5RB_ zt^MA~=?%*p)Og@qEs5qxw<&iAiKAC^TI>>-uWjnnrs*)rZ~bQ;0Y> z9C~f(wdT7)8_c}QPRskJzIVv}HRpCSEun3te(hS{&*6u;4I(G1bMzmw;^9(MCKpc7 z9NhXzz^1T&?)meUMiInSk`{)mO#RF~)v=GZDK-DFNd%;65;xywO@uEYQR-pZ&x_Tr zHv_nhi`ACD7Fb29(y70Q<1} z6R?pzcv1_vcB!Wvo@>i@NeIvHK4}7V82J_C(EADU{K1J{b63|xglGh%6z0FWeh2dL zV`qiO_F6y#N|(UDz!!op<;?Bu?4G%zsdPU>kwiS+KXqpp=`>^)zOnF|o3I|fuj_KvvM1xex^=F z#4~H+oV0_Vi`MoZw&%-AxrCWYqAo!x{Kxk%@X(up_?*BYDAV^RhCKA=&x1f!)LV4o zk3fumhhCmX>BMS5B?^*g}UKB&RXS4T5rcgyrrbPZ){%Yy3vll!Fd~L8wao;kBED< zAA-JI9UNYXE@-$poxO5u*kpGPi%jaiL}+i*TbHj1t%~B9$>J)L5EFE`OF*dIjo+1S zql<>$zr$F?#h8zXjWgLt!r<-i<=o?^os}N0zyT;W&>8$B?ajQ0UgnB!81WAT0>MaZ zt=sTj0^bEK1|Zkg(4W~mkQIYOXW1IWD5@rbxoJ^a?RZmD+nI`S-A*mF1FCm#9VxA{ zn1C}c6aB3^Lr=@^6#woI{7;AJW1YhAi-p67uTHq?nlWU0T32Fmo}d>;ELzJoMs;pI zIN2Gn(d%Q7e!dn6zO)9?&api@sZeSf$9Zz^DWbnxm z0=U{itn}FDaZFdWQ(V7(@F5;D1+(SQjtTJ-xd^J1g8T$5tITspP(IQKOmv(X$lF?< z4xTsu^v>LR{(E*@o@!D@uI;Y}b88v>e1e(GVLWDb)=3?5;|g*|T8Bai_A$QCPu&$c zCT5@saRQquqU#1S_7npRv5pC;y2yN9S ztdE`m*a6Jo7H%`Lh4VS2tS9B#PDI{gl!NxG!#gFaieqBXd;U=?!kVzS4rt1l(kChh z+C;6$d`;yC=laq9!CQATJwH8jU^bHE`bl$y-o@7EYh_gagK(eDZ|1}*TQPf@EVE5K7 z%!`W(RA#@+G--S%-?DBklkTH+FlQhllYH~(ssA6_Gs-UZ_O&XDW`0!edPp#X90z@r ze&}5W;}^Gi?NIc6vn^fuUFX*j%AtnK{2vE2<>3d0kdaS2^U48};_%$L3Cz=45m1m> zWV08ImTH5^TBEgYi3LBU=IZn05a2V#XjPKQt!QN#u#|Ma{%#0O!7?j&g{DOLcAdlv z_ayI_&2h9{MZ_KQSgF%Xc=1)^nV{*A#jnPnJQX<>w>DZ9`HmPwCv`}lB_%(_&9};` zX>FDIynPv0y6vW=oSDB+b%Q+1%5ZIdofRKrbZ3D(S+`^ibT$?g?NR8sbea7dU~#Z zyS-Vew!0~w%i>=AyRRN)7rYW$yUJ_$C6&3opr9az27)eiEYKQ`hzKyE;B^&oi7yC$ z|4z?|sd7SChPQX;-`4-ECmj}AktQ~9nq;1gxI0uq#R)pTP(zQ#*WYSOG$K+XZ04_m zG$oo`@uN#hVLnP$WxCsmmJ~XNvvipflv)ukO)HHnH`A*e%tC{sG!WaA$C0@?-v<@G z?cK=Srw2{yLwcT1LYrBSkT2G2OgCEP%di08FNKZ+gqpka9RWKOE&DNAkr+vdT263Q z+1xmaFj9bxIU1LsL-9M(7=|DSg{P1QP(GZd#Q~VNcK7!g7{65P?d@TyEZJp$p4_3s zjAB}>*b@QBFsGsRlnOCnX;v}af zu@DwU`$_Zrx%HPfYiuAdq_!p$zvjXGMuIZZgctGHY0o=PG8oncUdlS-N9z2@vrG3siqm0{`hR|OAzBiSUCq-ldifg`zb z`;>KOVKth8hta9x&U?NVC{j8=>(FBqZEJn-F_@r3zd*Bhe|y{Q*S;N<31B8Y$}0H% z>J{qWOplr7q{rOb$w7QF_+70-tWFbPg>m3fMi@H>n<8Au96Y=Gdtbw?UMn=rMk^|e z^qVMbGXYhja6yWib2(em%T6ikRHZ}nYSQQz9*jUUZ~`O`+)7}Y3H0Yff;}Fng`r@X zc-Eieqb=F5-i%v~RtxS?P{19XPm zV@{BhHOhWM%0tz;2Hdcx*I8Tmy|bg!=|zp?k`2rBu<;d+vUK^kmf)qF#gOG#oEEig zSRLFVG>jzI)?gHjqY%88mMitz>S5Bf&{Ps83k7j>Ch-q0w07sG5FwhA;kpnr4?sgG ze+J^{mw-PWqgAD-wH`;gd5V>hvgi{z7;~iq$wQKxn{EQ+Yo=hPV7~CqG&pna_T{jU znr~PAy*ZCbWBs+KUw=r>rsRzg6MJK2Wm1iXL6Xq0iWOuI3PZy*CRsFq<0ARNqc%n& zJ3>I5vx@&zlK6%I$pxsN_507wcyE6(Mme3cEf@Hiv~#^tYcZ^0SWa-mlG>Mepp$I! ze{b-YYbHB{fbBdRc>W9CM)?AF2R=VIs=E9`e+15+b_6W z9i|eaXOr!S=7#TaM-2tO+ue`yeEOIil>lI)b7J;tt)L$zHY15qle-@J3bJ7^#h&?5ixZgZVPl!BV3Z)P@9x!y+59FtfK!w;#LzN#18s)99HSmn%g zW&QIiJ-Jj|3YORu4HeCQP)GWou*gv&gOqcQ(al99KA8csaJ3*E*cV@;R?T;M#JInv zKShRsBWTtViw8lz>1DiUBD?3i237d}ez>)=?4<5*FBLoA(IpI9ub$g)bkl!#g$8(R zi>;h8?w_{rZXIx9SKFYRJa&4X;Pcn`d`EQy-T>XQ07JCqj6&=gKxHW ztH-)OuRge3{8-_ErLZ=c`Qutt{T-{wHui6e9VY!P5YG%ho@fMI=xJb5GMdLEb$Bxr zRJvW)eDw267!lCW&~S;?im(8o00C)q+W-$h9Wsws{v717vMjsDm}ky~5&PwdbP{!4 zV!)fbJgsGDd1X-Y%c0?YtP#~LY%6xFQjbEWb+bGf^^QHxM+L6rd+*oJd{zT%{%9px z4|88sbIJR2tZ;AK;CSrQHQwU-m0cJAwg+#IGRy2Pat6#r_oecE7kxVtN3O1e`BF~3!&Q^Dr#@tYkpX(hvQ%qRrl3@IE0f_!2e_#50@kQnZFGJ_buw?q# z9L+YVmrpkJk5ZJ0<`8n!gRkJfBo}xT5pI}%b&ge`T%{AQw~`aJUR0kK9qW1aA~dGrGB8XgR}e$Gf|0Got6=qZDTPu!DsoyZXEdvHkck z5Uo7U&RA>lyL!IkCgHlOh$}rh{q1yjRu5K&jmXHz7{8KoSwg<|Lp^@{m}(z|48RO% zLD8kAM%m!6jPqlPKNML$PgO+kL!U(ssyFW4;>$q*L^I8p3N3vDn%^IdM?5*(ua#_= zxP9w6Ha|zV2+n*PIeNlK!!svB!ii*B-s8-^s+t&l1B}-_xD81RleYi3#%e z3SW}~ z=V}~j3=9qb#AaTz9-N_m(U2zjUc9M$ea5gf$&0!Jl)ub}{fQO~lk#J)Zhh`xFkZ)H z0?9|p`1;<@4nqxz?+2G|+ninVbXxFJh6e2WpEXiwO3IsYki+F~4Qpp+(25hZ zpxH*VBN3~i6cea%oW%xoe}FbZ(-RZAm2CN8sD|y*j!;4xEtLo^MGk%mi8Qe?qxVQH zPR94w6U|Oj<&b;oX}EUhm1gLx07OCp1taooKa}~RNb1D&$^6;kOS-y^fRTzaa9T^b z&7y*n3{f>^%Zs#Yn>L$S$|KHVtKWiuD3Qdv|J;Ym49PxUVpwYd4re@WStVku-bc@% z^T*exuUC7BxfBIXIT`(N4Is}}Tdjxb7ky2_HIL@1tcifE!otGUjghgjmoTPs$JvLb zhd5C)=z4#0xig&f_vU6rAnVIAj9>4v{!V+g#__0mBOX_H*m1Uo;}x5W{LV}x18#)W zi5h-6=`D~=76`sHMIC-=??iGw1D?}dV4kL7>SDA@;#W?ku=7c_9K4W*eq%0I#%09Z z-3@3CGFr`~NR;$ET3Y#=OjYy8jR+bfz6S{QiGfu?ZB3%F%*%P&X|hRB}{Eo=;AB|DQzCp{t_kiXsf zz(a!`3GZ?n4g-NIq&M%lSm#@9ZAT@A!~!2q>Jy!w*U#qPyB&5L!x zt4H$7j=)dikDPvJM3;p=jK4+>@B7FIoSK??WW>yVb!==bDI;S@`2BIlcu8vJMB2#=T??07a9sWbFva^{@b04IO zkDZ-dZubkm>tbFKEm{>Zp7i@WWA)s(y@#%UpCI~X_^0tSDmhDWfuBEr9 zponZ9-k-}tE9ejY;+`(>RCKD=In!gcCwl8|%s7&{$5Uw8kdZ-O6gA}|stnAVguLBv zrKQK^U^999r;B`cV+kFDpKEAnoS?PLe5MK6@N&UEoZ|K{n9jW0Vo1?kl8- zT^tV+6M4FOJ3B08Ix08?o|lK5dS?HNcl-tOErs}U&#j_&sCjC!exf5@4R5#K)oBQ* zL$!qV+$1WwxYv=XaP%=>gv|F82yK0*oicp33&5VJbpa4cqX?& z6@T*6b%2mQPBc7U-z*AZiQ~PIkdX)wf-tRRUtw-j&`xlFYNH@O#PS zf0#=8`|YR5?rxZ>n()_(*UTP9j?M;)!F#6Z$kT`ttWW7p%CFx z^bY$2nl_w&n6)KQ{P&#{Ppo9>mTvwh`VBvJt1^NiZq8ygp2@mxKExTFjvx77du>%+ zd5y?zPKNyB%iW@Ai12Dt;jcD4ZbJV7Ga-o->SCCu)?=qSP9-1}F(2;r{%!vR)<_xt z@?`7n$wxQI3$Rxsp@inM52^_I6MZNzc?NguhA53rX2aK=b*3G@kq4O)#UZq(=JWHX zj))+I6Jmtd@QE#Ax}*A#IC!+;Q3}#d{|gnyZteIFn`N)KAqCX06&9lyGXk79jhUDL zBsV6wEGsLd<>IUbUAd*(p zVr{EEFAMk4eYT~ZXqKPNXA7y%JY06GColags%vY%HaF9u@rMjIMTg(n{M{*uIFD^d z`QjO93g%P?_bH? z-|n@Js`EfE4dfy?>}Og*b}>oNMVzX>xY!hLLa3>(;y`Vu$OSp`>k@O>UtDiSeIY~q zhac-Pi3TfYUlM;K`E{>@YY|O7Fo`UCg%7KFntagK-(S0**=IGMz-1^ko3ynsF8JD) zJMg*eUv8|CIErM69VMIcYtDNkJ%AI^CG-nc=>4g2Za{;oH$*EQp4b%iO26fm@tzfL z#S8B7i3#Dw`FUfy2!*?GedPEe7k5X=HqdwnAB=nZ!M2lB=ZOAH@K{^H^|KCJCtF$8 z8E+23$?-At_7;-eW2&w){&U>o0Y47#Lc0oE!ru3(oxL4X9$ROWpQIU?kf#hD@@egi zH=rkGt}f;3_6{)lFgpp|yw&4B&q1G}RiFJ!DXChnL!sEbfAanOP2bDJw2Hufe43jB znGlnvwPmo;n=*?7m3e$diYkzT77&HeY+LH9ev z{Vs(NJHr!dcqzF|)Dh1;JUrNR-%8#mQ@&mMosw8|p;>AlDEs8elV__8a#RaFVd=)1 zYNb~7bF{owu~ z5i|bcV+AHxjZDdO1E8k@P%(h16E9l4M(g0AzpylWLG*3`9bia&@uBq`|LxW6;?SdE zV;rKt{p?@8IfM3K$=}LYE)&&}_~S=!-zR8m2EX5+emXC9cE51~6*}N9En5<~LmHo} zr`3<`zp!`a{mL&YeKIz~j*bA2u4YAkT+laX@ky&=Asu^D#%jp-*xh;mG&W;wiM_;- zUy1a+6RN|p9KY;7o&LU-%i_6{_sMK(fhp&>mvW6^f>`Mx33m5RJ!jX~>@A#Hw&ec# zUF+8c+i1PL%^&<#@cT+~@E)6gtsWzAfrCD;r&&n$dSmFn`tp1yJ~MmQYAX>>I3s2^ zAt$ovU;v4DtoQWKec`iqzK_LpK=T2~Yt6qW6;F4jV?B({ZW;R*$zXNgb%$AK<_M#e zbz}=Q(jG;0?_dI72RaBRL`MEElF1Q z|Hn2b?noKdb8Hmq+@Lq{Pa~je;3i%7_2!I0q41Ru6 z21cxW|CATAts{^o-o3de?R9y4>&zD zL5Gh{fQgtT{lov=m)Fst2>;{9=`mkd8x~s|F_({zg?>S9iRu3Y0`p}480dc5ncfUHcIFnK?op(UX&&vM5+*a z3lK=|c>e3$bwAz@=X{!3leK2e{_-4( z!BZCm2QRY=SlO^Vk-rDfid(e_)kI{>8&5Qt73{n@bADCWO5s=qaR^P~-nYH$B`-sh z{qX9q#g$jQMr5CxFQjuICK?5ZS8{d(;P7~e!xT3S`s)lSS5@${{x>udFpD%_gn!`} zj=IfFl`R9kjr{Q7=1f-D(#!iLP#>#?latf_gL-7xYQs1bA!W==(l1Bh1q0NdTIX>* zk>NWe`sWFLYPm8`iX^9gb9hdU-u=ns{k^=q!7i9r@Rf|>Fs}k_?Yq40R$N8*!wPQ7 zRHQsL8b_Jnj}SG>9D=pKw3m)q59;DbcI@7{so!M}gKdMe7L9>xY7LLbjzVAyyJ!1G zpZwF#?m(FT7wcWE582XWdfon_uvkm3;pnp~3{;@OvT zEi+NvbA{^X?xq*np$xoWZEfx2dN^q%$A`)iw@nRad8Z+c%@2h^Imq5u5^29W^|%np zOAfFagAqqv5&K zwP6HdZ1u_m=A8BFbfi8afA|WI0p^z}yt!Y}5IiCl`Hw5!&HvFNp*-CA`4Ke(4-Gv% zy#wSU4lUZh8iq??cy4Zk?*H-1YVdRA-L^TUWO6*w>u)i`3ne`GHIN*dgM{?T!8K8}(B%AM}n@pOFld{EO8IZ+kpYl=et{XvfdO7tL%OMLvv zJ#lqhP`X5B82+Yj|5fnDb{h)SZ)tFHQB)VPd@gyuFG;<36KI+}KjHfI+8Bn_mWUb* z6id)nY3jZXIeCpLaEbYmV6OERG3?fZ;yb>AlMtsNmf-s0X^P`&olcQtUR+$ zsT4qE-7ij=jWK-=l%`9Berls|>3LF@1iv$aHXDk`8VUW=uHh`%7$kj-_3rRh znv?z;+yHSsj(dkOR(7%1&#U;F10+T9TJb-?XT)a6fT>mKk*L{|7hXD|dos()AF*%p z0(7oW*b_C{NXa%tDC_*Y2>yhsf<9$FrJ&sbR1fn`^t!uLA=%DuI;e8+cl^4{tJ77F zvJWAY^z{>1)~)y}OOl12!0{ADjXmUS7gOda){Ef>XO$pCNtgYPU%#X?L;rKq-CxZe zj;%&f#648cFpo)B^e>1*tbRZGC!>dPZ#LCdk6?%h!T^~vHwiP6}} z`Y9v$CtM-yxYG3c1>221(Z=A)5>{Y*ya*gA*Lj%gH?%!_hu?dq^mo$Jz+5Gl2v^}t zB@fJy8)0y2174Yp)R$xvzP7QAoO2|ZVHKy;v^0sS3U@AHVPWH66WNz#WP*HlPESu$ zBs|xl%PHmRU-cThm%|3XAv+%nG2cx#U*eio91)nf%ACl0??1*!u$BU1U>2=qc=6Wk zSlmo~%{s~-kQ1eiJj|avjv~1M`L$@(C8?)#m@QJQy9s*u} zir}d$fJbwn!}Y`S^t3dHQTJ#kTH}D@yzO877h~UiG=0i+Jm9JpZDx0){6Kax8zP?A zPP7(A3N({FeEl)J@KP{Dt21;Mwfv4C0%}B`ufIlT&&QHjT^qu{%5s6$Y;0gL zDWZ41OI}zCzqjqXxTTJ+up{yU_823U1wmIP@KnzOESqA@){E^UNb-DYB|*L3P^s8& z+E9;(r$Eb-ZPLmpMe9!N+t?Z8x!BHk&EplM2ry-L0QnA(>QX^*@rBOLPDtma%fwJM z782y43dmaSg1Q$|a1~9rRuw~!tdUiDl5)hIPDZmOj>Nyp9*|g&<-u)KtdzgQWVy{$ zZ778${3vXe2!cHLPCx-H^4 z#z^N>kRhez@zTNhv#vTN+qH95iA%2<%Y?D9E@a=ltUBC0bI~)^7n+Y+$*)J(mFN)H z4bLZy@aK4Q>aFKj0yc1V^{lBDJyT8xVS~6pu5wF!=jfT zg018Vnp_;9!tB{8Uxvc8%Z*!mE<)3Dk(#6h* z%D)mKGh`<-4~SNw#JP(L@1mjz;hCpI8J+26*p#K|vZwm%IjV?Zvf!S%G;;IiAaPs% z0qfS_urQw0p*(W`cY!S&kZw!x6%eJo(r-uf8{O_oFG@p((JI&5#@S3-BdY^QhkL2V zW`P`~9x-d0Y7G}5F3=KS zKt;>zwY|B(!NX$zGb6X?++-VsT&Y!q)Qx{)Uk~M375(XUta8*UQz(_&qux;DcuxTx zF3?)fl_cFg3;9e%z15^X2C+|XPQwMMcIBW|B7D5P%rT!0qH}p_FZkFi?CeH=i__1M zRyh{7)q8z(Uq*y_v`GHLzN(UKn4rIfme%omnH#N-0DvvwuP{M7D2KNqiI zwb756!Q69sB8UdYIJTAa^z`zZo^vqy#JC@E1RCx`eFm^Qp)?5=Iim}fzkT=LJOj8R z#P?|t4Z)8!Afc3DBZ0je zBN*!%7&9>eiXOK@0xhu}`e#kABd>s!xw;8#jDRPtuK~ltUv|Q4zcGJ4R5!Gb zQuUuWp;|@71h1LEo;6BZnKB*EnexSN5s}6%Y<+Ll58g&5`qwmiq24HcPOy7U)^a?m z%hJZl(-kUThN*+!=QvNtaztHUIp^SxQaC!4v@%Q5ce8C{S6AY-+aa1I;pS7HZi9#` z2Tw6piwII5t^eQie~4#X%hwiin9SCe*7qu-b;ISwy!?9@Hxj@V>Zd@ zG#vNrv?owU_*L*?s{GDl>K#%8oY?O5+Le#g_mcVHn=_NDN?weCBTv^2eO0Q}xXuyd z^3Fk_7tu$)eb1tQF>FOLY~8x71hTj+L^eGM(L7E6Cv=f#>MI`;obv&d%E$ZeK00J$ z4Bat$Jd4N7i{Ip`oge=5q*wjP_IXvvBx=0E#@+ea=>Ez5?^~_gaJXG4ay5KzH5@*= z*e+VpA~06xGRWmtXGuX8rd)L+($75PN4F}0mq@_1yXqnkt)4(fNM35xl23$guMR zN4Ju>Bp*bg#|7UdDg5Mp9Wg08B^FpBwP}aDlU#H zhEELb+GN;#9=thzl)YTiFcFjKm~dRu#WTeykom#=G^gAbdx|f0{lkeIrY?I- zn~ot*?uyFDUZfgXq@qsTim;5GvMb^W1$n|uapNl2tGMmgVRKoUJzZ;eegX%_-fJzK6wb4khWlm zz_c;#DcjOmhJ;oB+3UxC2{0X3GD*ZSBU$4uGH)#?^3tscR7%6;sD{+YZHfG?n>(IBmf^O{NrHL$$(_KSrW(nFdmt2+}0%Jn|0kmYrTDkS`buJB{cqloVJ!XJOH}O(g9079ybvdwKbS z{X~f6KVG<+I_Sc}XE1PVNZ}tqa^TnrDNKDhcER3a6M1x?MHgD}gIij9jlGo|T{_GW zv@wL?*YdJaMG)eug&NII)sT#FJmhM`{#77i1{J&*D!L{!)o}}Ib+5E6dzL7n99&)V0 zmN#!Dp}PKTZN>F3XYf|N$Rn?uzUp?P{GpljZMh`wa4ziFl-t-y@cTzu+0Pa>v^IQ- zSXbt_Q$@cj9yOPa#0VBjy#FF}q}<68Ic>-1QQKxvxX2r!d{vKn0Q^}A%b6O8P_qAA z%^c{-h5ZNJ=EWVL#0$x=Q7$q9wEg`_>_A2u3De=-@YGX|+qGflcHwD68^~0Ig6&1g z+$BhG?qo;dTx8|sJcxnw!%bzT%TujoT!MD{qsZ7Ut23^LTPXQMj)oW@ z03aR6w%tmyJf(Br=jZ2NS<|6FA=h-XC_qRlQ6p}+#qHC(1Qp~76WLE@8vhrob1;?+r)6_ z3(vsNaEIH$6?GB*$OVB7A1vk_|069$nmW*W%mb`vt;8(;)ewBcAmOk%UDq=-)V(yn zs|$kAhxYXLwkLu)F^~I6wEb(pxap|6R$0pM!$-;Sz!yWV7g<^H9UU6kdcr#>4x!;v zx1)}Q1p(-2M6U(J-2(<(Wa3)6n9}}vWzoBln3l$nkD?_UZFWu_DI3uh{yHP0S!!WO(vfG-?i-E@LNgvR8Ub`L!I zlAfgp3K}q`Ei8=C+`P#`+o1j3x!X=zksecOHP!H~tc89=6{r34$xsr@3o=1acaxv@ z_6+#^`Q@&zuBdkQHrNitgI!8do!Q<$!R`jX$joFLy=3H1iFT76gN0{|7vbuAkwKiv zhq#l3H$HDFBp*`%0G(nVFYmR}bi@vfkANjVyBtPgUs`o(63CsZp;n~Q>^rQWs<0av zhYqJX%MWi6AB*9BaR4yq23EzoWh9dIXnAfJOS9bdG_r^bueG=^@Oy`F4(&=^Wis|; ztsW3~KOD!&&COCxG&Llnh&V&jwDfdsr8cy)V0Ri!wR#v+?ySmPHAA(B!x(HUs9wmM znoDn;L4fivnws7SRk+2dQ3tm=$x({#qt%HZc2BN&`k|-tSf46*c&=Q~6l5_aJT5+s zCi(AZ14VbveE+r1-h~f;DfqEo$%$1x3!Dzjw!-pnDU~s7S;+5+oGeCO8b5$}kj6bo z@%#vd-@6(WlgTG1Czas?Fr#V)U=f=fFDqHsidOtwQGlQI)!DY|D-R97ZnLfV&YkQN zE^>0&@P1nF*dy={bN#LWP>Qkkl+a5g&Zr;5_TJ`<&P~x!2m(Iv05sE>K^-w}udmW+ zO0Mqk-}bfbZAO_eM<32%OKdV5krv*Jf*+n;!Fl<})U`WkAL z@?3oSnrS@1sU)sm-yr;yzR{VX+fz`%*PKR-W@bEYn$+!1GOsivY5M`3iF7a^!TrE2 zni~`+8=0L=QKt?)m!uK|XjXtyZHhZwMAsSPPs1;`_;%%_&(F_GxIlMiN1;VwJ~B=o zo^Q}0{)nDbBOT11!BHW@wAsw1z{8-xllGzjD2_Y8A0G#Q`;;Si=?Bc75p*~HR|E~M zj0-=U2l zW`U8_dk+SvAkwl-a^g7MuAyBX_b{7x|_Kg_? z5->YEzTcCnEy^Y;^+>@GNq|}e0mx_V8f9L(Z;)zVy2IsH*W~+D^d&0qQuU~R-P;#) z*r@@|IAQjxwgTpD2Gl;&Sx#!QLJ)%4>SmIZbeQ7aU6ZpTaZ6(4S9mi6W(f6)t_He^ zPe*>+ayvCCn4#(xjy~;unm(9PFl#KV0DB6s>c<_4C8uc7uyR}l?7@ZE>wV&ioH@F4 zgip}8xDxtfuQA#-2hl@b(bG+eARn~AmcFF7F5q8&zw&C$poKj=~K`RQ*TcB$&h zz2OyQ6_3m0=I1v9_2-xUVmSkfe{!?+hn;W9532yvQTB>)r zqmD{J0OLTTTvni$*YoVC+COY(sBt)rK@WY2gL zg*&=%UEl-E*a1?!gjSqMoPxGefydiYCIDf07ExZ_!r~p)J*86l=Y( z0;oK4ril7_hxnWCJl#D3e)e}^0KQK&@~E-!r#E*AbFhtHLwJwsNf#$?2Z<$?h!;%w zxgBP{;)?cB_3+P0M8U(`4ySsCArhjenViPp@6$HR5o~kACfX;28ay8ts4?$^d4YR;z|3+K~`-p=BvO{ zX)dPmb(F3wxS1<0{*hUloT%V^^%8P)H&`*8Gcp&-5YbX>>J@Lk&)-Mkb`te_hDdsg%7 zTaDF}o-df?Vx-lj(86^az(nPWsYL zga=SOi6@v!qrX=X&9^CZx|DzozHeU;Yke^u`nqGd!>c}cllRC+6cJYva^fFJ)OHwk zj@<8D3vkqDZ;RPwF|5yTtKd*oEuivUH9&-)rKceC&%^U6!A-P@IQAWxEOlfFmixxX zW%E2>BxDE39omU4xn*M~@m(6OEfk%#u6VLG!Z9gslN4NcTX0SE+RFRo#k6lS*T=6T z^;A9F3r*C2;njaFzbamR>_*b-aH(fdOlC0>rYS?{1Y5I^W{xvsGT9IS_qY~Z)ByMce>U}TAMIjQt|$DG<$BQ(?#+4~4w!4;MS4W-yec#CB|9;ScigzaTL7s9s-QErU5Bn_~3f7^I0qLNX zu+FK_DSg>8ZTuSM*!fHAYY3PH_z}ki-yJn9j)dFp={6v4t-ct-WubT>LizbG>eWEx z`;*z?Y@!fe#rXE&O`HE%Z5G1UU`cQl7^P!V*OE9oKK$>GzY!nOg Date: Thu, 10 Apr 2014 15:35:58 +0200 Subject: [PATCH 007/185] Removed unneeded argument --- code/game/objects/structures/stool_bed_chair_nest/bed.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/game/objects/structures/stool_bed_chair_nest/bed.dm b/code/game/objects/structures/stool_bed_chair_nest/bed.dm index deb4d1ba432..7473c706c4d 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/bed.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/bed.dm @@ -39,7 +39,7 @@ buckle_mob(M, user) return -/obj/structure/stool/bed/proc/afterbuckle(mob/M as mob) // Called after somebody buckled / unbuckled +/obj/structure/stool/bed/proc/afterbuckle() // Called after somebody buckled / unbuckled return /obj/structure/stool/bed/proc/unbuckle() @@ -50,7 +50,7 @@ buckled_mob.update_canmove() buckled_mob = null - afterbuckle(null) + afterbuckle() return /obj/structure/stool/bed/proc/manual_unbuckle(mob/user as mob) @@ -110,7 +110,7 @@ src.buckled_mob = M src.add_fingerprint(user) - afterbuckle(M) + afterbuckle() return /* From 192b1d91a822d40008509ed5855323561df7a20d Mon Sep 17 00:00:00 2001 From: Daniel Date: Thu, 10 Apr 2014 15:43:03 +0200 Subject: [PATCH 008/185] Readded argument, cleaned up rollerbed code --- .../structures/stool_bed_chair_nest/bed.dm | 40 +++++++------------ 1 file changed, 15 insertions(+), 25 deletions(-) diff --git a/code/game/objects/structures/stool_bed_chair_nest/bed.dm b/code/game/objects/structures/stool_bed_chair_nest/bed.dm index 7473c706c4d..04111c673d7 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/bed.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/bed.dm @@ -39,7 +39,7 @@ buckle_mob(M, user) return -/obj/structure/stool/bed/proc/afterbuckle() // Called after somebody buckled / unbuckled +/obj/structure/stool/bed/proc/afterbuckle(mob/M as mob) // Called after somebody buckled / unbuckled return /obj/structure/stool/bed/proc/unbuckle() @@ -48,9 +48,11 @@ buckled_mob.buckled = null buckled_mob.anchored = initial(buckled_mob.anchored) buckled_mob.update_canmove() + + var/M = buckled_mob buckled_mob = null - afterbuckle() + afterbuckle(M) return /obj/structure/stool/bed/proc/manual_unbuckle(mob/user as mob) @@ -110,7 +112,7 @@ src.buckled_mob = M src.add_fingerprint(user) - afterbuckle() + afterbuckle(M) return /* @@ -123,30 +125,18 @@ anchored = 0 var/const/buckled_pixel_y_offset = 6 //Mobs buckled will have their pixel_y offset by this much +/obj/structure/stool/bed/roller/afterbuckle(mob/M as mob) + if(buckled_mob) + density = 1 + icon_state = "up" + M.pixel_y += buckled_pixel_y_offset + else + density = 0 + icon_state = "down" + M.pixel_y -= buckled_pixel_y_offset + /obj/structure/stool/bed/roller/Move() ..() if(buckled_mob) if(buckled_mob.buckled == src) buckled_mob.loc = src.loc - -/obj/structure/stool/bed/roller/buckle_mob(mob/M as mob, mob/user as mob) - if ( !ismob(M) || (get_dist(src, user) > 1) || (M.loc != src.loc) || user.restrained() || user.lying || user.stat || M.buckled || istype(usr, /mob/living/silicon/pai) ) - return - M.pixel_y += buckled_pixel_y_offset - density = 1 - icon_state = "up" - ..() - return - -/obj/structure/stool/bed/roller/manual_unbuckle(mob/user as mob) - if(buckled_mob) - if(buckled_mob.buckled == src) //this is probably unneccesary, but it doesn't hurt - buckled_mob.pixel_y -= buckled_pixel_y_offset - buckled_mob.anchored = initial(buckled_mob.anchored) - buckled_mob.buckled = null - buckled_mob.update_canmove() - buckled_mob = null - density = 0 - icon_state = "down" - ..() - return \ No newline at end of file From 9e1b89baa10234a47d3ea0470de21be735e404f2 Mon Sep 17 00:00:00 2001 From: Daniel Date: Thu, 10 Apr 2014 17:01:07 +0200 Subject: [PATCH 009/185] Cleaned up and simplified the code. --- .../structures/stool_bed_chair_nest/chairs.dm | 27 +++++++------------ 1 file changed, 10 insertions(+), 17 deletions(-) diff --git a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm index 2d9c7d8c67e..59f0a53d30d 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm @@ -97,25 +97,18 @@ name = "comfy chair" desc = "It looks comfy." icon_state = "comfychair" - var/chaircolor = rgb(255,255,255) + color = rgb(255,255,255) var/image/armrest = null /obj/structure/stool/bed/chair/comfy/New() - - //Base icon - var/icon/I = new("icons/obj/objects.dmi", "comfychair") - I.Blend(chaircolor, ICON_MULTIPLY) - src.icon = I - //Armrest - var/icon/armrest_icon = new("icons/obj/objects.dmi", "comfychair_armrest") - armrest_icon.Blend(chaircolor, ICON_MULTIPLY) - - armrest = new(armrest_icon) + armrest = new() + armrest.icon = "icons/obj/objects.dmi" + armrest.icon_state = "comfychair_armrest" armrest.layer = MOB_LAYER + 0.1 //Feet - overlays += icon("icons/obj/objects.dmi", "comfychair_feet") + overlays += image("icons/obj/objects.dmi", icon_state = "comfychair_feet") return ..() @@ -126,19 +119,19 @@ overlays -= armrest /obj/structure/stool/bed/chair/comfy/brown - chaircolor = rgb(255,113,0) + color = rgb(255,113,0) /obj/structure/stool/bed/chair/comfy/beige - chaircolor = rgb(255,253,195) + color = rgb(255,253,195) /obj/structure/stool/bed/chair/comfy/teal - chaircolor = rgb(0,255,255) + color = rgb(0,255,255) /obj/structure/stool/bed/chair/comfy/black - chaircolor = rgb(167,164,153) + color = rgb(167,164,153) /obj/structure/stool/bed/chair/comfy/lime - chaircolor = rgb(255,251,0) + color = rgb(255,251,0) /obj/structure/stool/bed/chair/office anchored = 0 From d8a1dc637f4155de9818e666af3ebd97ce326483 Mon Sep 17 00:00:00 2001 From: Daniel Date: Thu, 10 Apr 2014 19:19:06 +0200 Subject: [PATCH 010/185] Minor cleanup --- code/game/objects/structures/stool_bed_chair_nest/chairs.dm | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm index 59f0a53d30d..0a7aad031eb 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm @@ -102,9 +102,7 @@ /obj/structure/stool/bed/chair/comfy/New() //Armrest - armrest = new() - armrest.icon = "icons/obj/objects.dmi" - armrest.icon_state = "comfychair_armrest" + armrest = icon("icons/obj/objects.dmi", "comfychair_armrest") armrest.layer = MOB_LAYER + 0.1 //Feet From 4b2679264bea961d668870442a4ef3952b4892f3 Mon Sep 17 00:00:00 2001 From: Daniel Date: Thu, 10 Apr 2014 19:22:04 +0200 Subject: [PATCH 011/185] Removed the separate feet icon It did nothing anyways --- .../structures/stool_bed_chair_nest/chairs.dm | 4 ---- icons/obj/objects.dmi | Bin 116538 -> 113685 bytes 2 files changed, 4 deletions(-) diff --git a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm index 0a7aad031eb..4f29b5083af 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm @@ -101,13 +101,9 @@ var/image/armrest = null /obj/structure/stool/bed/chair/comfy/New() - //Armrest armrest = icon("icons/obj/objects.dmi", "comfychair_armrest") armrest.layer = MOB_LAYER + 0.1 - //Feet - overlays += image("icons/obj/objects.dmi", icon_state = "comfychair_feet") - return ..() /obj/structure/stool/bed/chair/comfy/afterbuckle() diff --git a/icons/obj/objects.dmi b/icons/obj/objects.dmi index e37b64b9d9cce109a4191c891247c926d57b73ab..99650ce656c0887c76a490b9931418dc719cda36 100644 GIT binary patch literal 113685 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 DV9j+h literal 116538 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 From e5899926087eb31b3d85a005dfe97a978179666f Mon Sep 17 00:00:00 2001 From: AstralSerpent Date: Mon, 21 Apr 2014 12:02:22 +1000 Subject: [PATCH 012/185] NAR-SIE HAS RISEN gets accompanied by that I'M HERE hallucination sound. --- code/modules/power/singularity/singularity.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/power/singularity/singularity.dm b/code/modules/power/singularity/singularity.dm index 20c29977d45..612d7df168d 100644 --- a/code/modules/power/singularity/singularity.dm +++ b/code/modules/power/singularity/singularity.dm @@ -492,6 +492,7 @@ var/global/list/uneatable = list( /obj/machinery/singularity/narsie/large/New() ..() world << "NAR-SIE HAS RISEN" + world << pick(sound('sound/hallucinations/im_here1.ogg'), sound('sound/hallucinations/im_here2.ogg')) if(emergency_shuttle) emergency_shuttle.incall(0.3) // Cannot recall From 4d8160ab14d2ac60f7dccff73dbda63b06e4d92f Mon Sep 17 00:00:00 2001 From: Cheridan Date: Tue, 22 Apr 2014 12:16:02 -0500 Subject: [PATCH 013/185] meteorhit() is kill --- code/game/atoms.dm | 3 --- code/game/gamemodes/meteor/meteors.dm | 2 +- code/game/machinery/atmoalter/canister.dm | 5 ----- code/game/machinery/bots/bots.dm | 4 ---- .../machinery/computer/HolodeckControl.dm | 4 ---- code/game/machinery/computer/computer.dm | 9 --------- code/game/machinery/deployable.dm | 12 ----------- code/game/machinery/doors/door.dm | 4 ---- code/game/machinery/hologram.dm | 4 ---- code/game/machinery/shieldgen.dm | 20 ------------------- code/game/machinery/turrets.dm | 4 ---- code/game/mecha/mecha.dm | 4 ---- code/game/objects/structures.dm | 12 +---------- .../structures/crates_lockers/closets.dm | 6 ------ .../crates_lockers/closets/statue.dm | 6 ------ code/game/objects/structures/displaycase.dm | 6 ------ code/game/objects/structures/grille.dm | 4 ---- code/game/objects/structures/lamarr_cage.dm | 6 ------ code/game/objects/structures/safe.dm | 5 ----- code/game/objects/structures/tables_racks.dm | 3 --- code/game/objects/structures/window.dm | 6 ------ code/game/turfs/simulated/walls.dm | 11 +--------- code/modules/events/dust.dm | 2 +- code/modules/events/immovable_rod.dm | 2 +- code/modules/events/ninja.dm | 5 ----- .../living/carbon/alien/humanoid/humanoid.dm | 14 ------------- .../mob/living/carbon/alien/larva/larva.dm | 12 ----------- code/modules/mob/living/carbon/human/human.dm | 16 --------------- .../mob/living/carbon/metroid/metroid.dm | 11 ---------- .../mob/living/carbon/monkey/monkey.dm | 13 ------------ code/modules/mob/living/silicon/ai/ai.dm | 13 +----------- .../modules/mob/living/silicon/robot/robot.dm | 12 ----------- code/modules/power/apc.dm | 7 +------ code/modules/power/gravitygenerator.dm | 3 --- .../power/singularity/containment_field.dm | 2 -- code/modules/power/singularity/emitter.dm | 2 -- .../particle_accelerator.dm | 11 ---------- code/modules/power/solar.dm | 12 ----------- .../modules/projectiles/projectile/special.dm | 2 +- code/modules/reagents/Chemistry-Machinery.dm | 8 -------- code/modules/research/circuitprinter.dm | 3 --- code/modules/research/destructive_analyzer.dm | 3 --- code/modules/research/server.dm | 4 ---- 43 files changed, 8 insertions(+), 289 deletions(-) diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 8b7dc07052f..45193079a06 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -80,9 +80,6 @@ */ -/atom/proc/meteorhit(obj/meteor as obj) - return - /atom/proc/allow_drop() return 1 diff --git a/code/game/gamemodes/meteor/meteors.dm b/code/game/gamemodes/meteor/meteors.dm index 4f790db04fe..fb5e7ed1a03 100644 --- a/code/game/gamemodes/meteor/meteors.dm +++ b/code/game/gamemodes/meteor/meteors.dm @@ -95,7 +95,7 @@ /obj/effect/meteor/Bump(atom/A) if (A) - A.meteorhit(src) + A.ex_act(2) playsound(src.loc, 'sound/effects/meteorimpact.ogg', 40, 1) if (--src.hits <= 0) diff --git a/code/game/machinery/atmoalter/canister.dm b/code/game/machinery/atmoalter/canister.dm index 4c2c0bfbde1..152b25fd4ff 100644 --- a/code/game/machinery/atmoalter/canister.dm +++ b/code/game/machinery/atmoalter/canister.dm @@ -204,11 +204,6 @@ update_flag healthcheck() ..() -/obj/machinery/portable_atmospherics/canister/meteorhit(var/obj/O as obj) - src.health = 0 - healthcheck() - return - /obj/machinery/portable_atmospherics/canister/ex_act(severity) switch(severity) if(1.0) diff --git a/code/game/machinery/bots/bots.dm b/code/game/machinery/bots/bots.dm index f957a2d3a46..617a9d97d05 100644 --- a/code/game/machinery/bots/bots.dm +++ b/code/game/machinery/bots/bots.dm @@ -107,10 +107,6 @@ healthcheck() return -/obj/machinery/bot/meteorhit() - src.explode() - return - /obj/machinery/bot/blob_act() src.health -= rand(20,40)*fire_dam_coeff healthcheck() diff --git a/code/game/machinery/computer/HolodeckControl.dm b/code/game/machinery/computer/HolodeckControl.dm index e4c6e621fee..9d055fac863 100644 --- a/code/game/machinery/computer/HolodeckControl.dm +++ b/code/game/machinery/computer/HolodeckControl.dm @@ -140,10 +140,6 @@ emergencyShutdown() ..() -/obj/machinery/computer/HolodeckControl/meteorhit(var/obj/O as obj) - emergencyShutdown() - ..() - /obj/machinery/computer/HolodeckControl/emp_act(severity) emergencyShutdown() diff --git a/code/game/machinery/computer/computer.dm b/code/game/machinery/computer/computer.dm index 738def55fe9..99c19755b5c 100644 --- a/code/game/machinery/computer/computer.dm +++ b/code/game/machinery/computer/computer.dm @@ -21,15 +21,6 @@ return 0 return 1 -/obj/machinery/computer/meteorhit(var/obj/O as obj) - verbs.Cut() - set_broken() - var/datum/effect/effect/system/harmless_smoke_spread/smoke = new /datum/effect/effect/system/harmless_smoke_spread() - smoke.set_up(5, 0, src) - smoke.start() - return - - /obj/machinery/computer/emp_act(severity) if(prob(20/severity)) set_broken() ..() diff --git a/code/game/machinery/deployable.dm b/code/game/machinery/deployable.dm index 9a96425c488..0f772a4baba 100644 --- a/code/game/machinery/deployable.dm +++ b/code/game/machinery/deployable.dm @@ -106,14 +106,6 @@ for reference: qdel(src) return - meteorhit() - visible_message("\red The barricade is smashed apart!") - new /obj/item/stack/sheet/mineral/wood(get_turf(src)) - new /obj/item/stack/sheet/mineral/wood(get_turf(src)) - new /obj/item/stack/sheet/mineral/wood(get_turf(src)) - qdel(src) - return - blob_act() src.health -= 25 if (src.health <= 0) @@ -235,10 +227,6 @@ for reference: anchored = !anchored icon_state = "barrier[src.locked]" - meteorhit() - src.explode() - return - blob_act() src.health -= 25 if (src.health <= 0) diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index d71b255df22..352231c2116 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -92,10 +92,6 @@ else flick("door_deny", src) return -/obj/machinery/door/meteorhit(obj/M as obj) - src.open() - return - /obj/machinery/door/attack_ai(mob/user as mob) return src.attack_hand(user) diff --git a/code/game/machinery/hologram.dm b/code/game/machinery/hologram.dm index c1b0248ac3c..6222d05dd32 100644 --- a/code/game/machinery/hologram.dm +++ b/code/game/machinery/hologram.dm @@ -174,10 +174,6 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/ qdel(src) return -/obj/machinery/hologram/meteorhit() - qdel(src) - return - /obj/machinery/hologram/holopad/Destroy() if(hologram) clear_holo() diff --git a/code/game/machinery/shieldgen.dm b/code/game/machinery/shieldgen.dm index 855ca45dc7b..439ae820cb1 100644 --- a/code/game/machinery/shieldgen.dm +++ b/code/game/machinery/shieldgen.dm @@ -52,21 +52,8 @@ opacity = 1 spawn(20) if(src) opacity = 0 - ..() -/obj/machinery/shield/meteorhit() - src.health -= max_health*0.75 //3/4 health as damage - - if(src.health <= 0) - visible_message("\blue The [src] dissapates") - qdel(src) - return - - opacity = 1 - spawn(20) if(src) opacity = 0 - return - /obj/machinery/shield/bullet_act(var/obj/item/projectile/Proj) health -= Proj.damage ..() @@ -194,13 +181,6 @@ update_icon() return -/obj/machinery/shieldgen/meteorhit(obj/O as obj) - src.health -= max_health*0.25 //A quarter of the machine's health - if (prob(5)) - src.malfunction = 1 - src.checkhp() - return - /obj/machinery/shieldgen/ex_act(severity) switch(severity) if(1.0) diff --git a/code/game/machinery/turrets.dm b/code/game/machinery/turrets.dm index a035d061161..ed5b1f7356d 100644 --- a/code/game/machinery/turrets.dm +++ b/code/game/machinery/turrets.dm @@ -503,10 +503,6 @@ /obj/machinery/gun_turret/emp_act() //Can't emp an mechanical turret. return -/obj/machinery/gun_turret/meteorhit() - die() - return - /obj/machinery/gun_turret/update_icon() if(state > 2 || state < 0) //someone fucked up the vars so fix them take_damage(0) diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index e0c2c72e051..50409ca1998 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -613,10 +613,6 @@ take_damage(30, "brute") return -//TODO -/obj/mecha/meteorhit() - return ex_act(rand(1,3))//should do for now - /obj/mecha/emp_act(severity) if(get_charge()) use_power((cell.charge/2)/severity) diff --git a/code/game/objects/structures.dm b/code/game/objects/structures.dm index dc81ffab22d..8952a88a1b5 100644 --- a/code/game/objects/structures.dm +++ b/code/game/objects/structures.dm @@ -15,14 +15,4 @@ obj/structure/ex_act(severity) qdel(src) return if(3.0) - return - -obj/structure/meteorhit(obj/O as obj) - qdel(src) - - - - - - - + return \ No newline at end of file diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index 5083689c6c4..97d55bedaab 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -163,12 +163,6 @@ A.loc = src.loc qdel(src) -/obj/structure/closet/meteorhit(obj/O as obj) - if(O.icon_state == "flaming") - for(var/mob/M in src) - M.meteorhit(O) - src.dump_contents() - qdel(src) /obj/structure/closet/attackby(obj/item/weapon/W as obj, mob/user as mob) if(src.opened) diff --git a/code/game/objects/structures/crates_lockers/closets/statue.dm b/code/game/objects/structures/crates_lockers/closets/statue.dm index 31aff82fff5..04c1f737b46 100644 --- a/code/game/objects/structures/crates_lockers/closets/statue.dm +++ b/code/game/objects/structures/crates_lockers/closets/statue.dm @@ -121,12 +121,6 @@ for(var/mob/M in src) shatter(M) -/obj/structure/closet/statue/meteorhit(obj/O as obj) - if(O.icon_state == "flaming") - for(var/mob/M in src) - M.meteorhit(O) - shatter(M) - /obj/structure/closet/statue/attackby(obj/item/I as obj, mob/user as mob) health -= I.force visible_message("\red [user] strikes [src] with [I].") diff --git a/code/game/objects/structures/displaycase.dm b/code/game/objects/structures/displaycase.dm index 74f79c2a49c..27ada72e69d 100644 --- a/code/game/objects/structures/displaycase.dm +++ b/code/game/objects/structures/displaycase.dm @@ -45,12 +45,6 @@ qdel(src) -/obj/structure/displaycase/meteorhit(obj/O as obj) - new /obj/item/weapon/shard( src.loc ) - new /obj/item/weapon/gun/energy/laser/captain( src.loc ) - qdel(src) - - /obj/structure/displaycase/proc/healthcheck() if (src.health <= 0) if (!( src.destroyed )) diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm index 4e503a71961..ff59707bbed 100644 --- a/code/game/objects/structures/grille.dm +++ b/code/game/objects/structures/grille.dm @@ -18,10 +18,6 @@ /obj/structure/grille/blob_act() qdel(src) -/obj/structure/grille/meteorhit(var/obj/M) - qdel(src) - - /obj/structure/grille/Bumped(atom/user) if(ismob(user)) shock(user, 70) diff --git a/code/game/objects/structures/lamarr_cage.dm b/code/game/objects/structures/lamarr_cage.dm index 8c136774de3..0981a3cb4e6 100644 --- a/code/game/objects/structures/lamarr_cage.dm +++ b/code/game/objects/structures/lamarr_cage.dm @@ -40,12 +40,6 @@ qdel(src) -/obj/structure/lamarr/meteorhit(obj/O as obj) - new /obj/item/weapon/shard( src.loc ) - Break() - qdel(src) - - /obj/structure/lamarr/proc/healthcheck() if (src.health <= 0) if (!( src.destroyed )) diff --git a/code/game/objects/structures/safe.dm b/code/game/objects/structures/safe.dm index 4eadae15d4e..1b917b2a436 100644 --- a/code/game/objects/structures/safe.dm +++ b/code/game/objects/structures/safe.dm @@ -163,15 +163,10 @@ FLOOR SAFES obj/structure/safe/blob_act() return - obj/structure/safe/ex_act(severity) return -obj/structure/safe/meteorhit(obj/O as obj) - return - - //FLOOR SAFES /obj/structure/safe/floor name = "floor safe" diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index 0bcdb347658..0337f2b382c 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -726,9 +726,6 @@ Destroy type values: if(W && W.loc) W.loc = src.loc return 1 -/obj/structure/rack/meteorhit(obj/O as obj) - qdel(src) - /obj/structure/rack/attack_hand(mob/user) if(HULK in user.mutations) diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index 9b4191a5282..3a8975c6fe6 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -50,12 +50,6 @@ qdel(src) -/obj/structure/window/meteorhit() - //world << "glass at [x],[y],[z] Mhit" - new /obj/item/weapon/shard( loc ) - if(reinf) new /obj/item/stack/rods( loc) - qdel(src) - /obj/structure/window/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) if(istype(mover) && mover.checkpass(PASSGLASS)) return 1 diff --git a/code/game/turfs/simulated/walls.dm b/code/game/turfs/simulated/walls.dm index a8333d377b6..7748f742940 100644 --- a/code/game/turfs/simulated/walls.dm +++ b/code/game/turfs/simulated/walls.dm @@ -299,13 +299,4 @@ spawn(100) if(O) qdel(O) // F.sd_LumReset() //TODO: ~Carn - return - -/turf/simulated/wall/meteorhit(obj/M as obj) - if (prob(15)) - dismantle_wall() - else if(prob(70)) - ChangeTurf(/turf/simulated/floor/plating) - else - ReplaceWithLattice() - return 0 \ No newline at end of file + return \ No newline at end of file diff --git a/code/modules/events/dust.dm b/code/modules/events/dust.dm index cde70335756..5c2ecf1b6c0 100644 --- a/code/modules/events/dust.dm +++ b/code/modules/events/dust.dm @@ -86,7 +86,7 @@ playsound(src.loc, 'sound/effects/meteorimpact.ogg', 40, 1) if(ismob(A)) - A.meteorhit(src)//This should work for now I guess + A.ex_act(strength) else if(!istype(A,/obj/machinery/power/emitter) && !istype(A,/obj/machinery/field/generator)) //Protect the singularity from getting released every round! A.ex_act(strength) //Changing emitter/field gen ex_act would make it immune to bombs and C4 diff --git a/code/modules/events/immovable_rod.dm b/code/modules/events/immovable_rod.dm index c418e498812..8b1a178b77d 100644 --- a/code/modules/events/immovable_rod.dm +++ b/code/modules/events/immovable_rod.dm @@ -89,7 +89,7 @@ In my current plan for it, 'solid' will be defined as anything with density == 1 else if (istype(clong, /mob)) if(clong.density || prob(10)) - clong.meteorhit(src) + clong.ex_act(2) else qdel(src) diff --git a/code/modules/events/ninja.dm b/code/modules/events/ninja.dm index 0e26fc11d69..722b75d40bf 100644 --- a/code/modules/events/ninja.dm +++ b/code/modules/events/ninja.dm @@ -2740,11 +2740,6 @@ It is possible to destroy the net by the occupant or someone else. healthcheck() return - meteorhit() - health-=50 - healthcheck() - return - hitby(AM as mob|obj) ..() for(var/mob/O in viewers(src, null)) diff --git a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm index f3bd6e95c7c..ebe2a488d4f 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm @@ -94,25 +94,11 @@ if(shielded) damage /= 4 - show_message("\red The blob attacks!") - adjustFireLoss(damage) - return -/mob/living/carbon/alien/humanoid/meteorhit(O as obj) - for(var/mob/M in viewers(src, null)) - if ((M.client && !( M.blinded ))) - M.show_message(text("\red [] has been hit by []", src, O), 1) - if (health > 0) - adjustFireLoss((istype(O, /obj/effect/meteor/small) ? 10 : 25)) - adjustFireLoss(30) - - updatehealth() - return - /mob/living/carbon/alien/humanoid/attack_paw(mob/living/carbon/monkey/M as mob) if(!ismonkey(M)) return//Fix for aliens receiving double messages when attacking other aliens. diff --git a/code/modules/mob/living/carbon/alien/larva/larva.dm b/code/modules/mob/living/carbon/alien/larva/larva.dm index 2e2c464a30c..12b3713d6df 100644 --- a/code/modules/mob/living/carbon/alien/larva/larva.dm +++ b/code/modules/mob/living/carbon/alien/larva/larva.dm @@ -113,17 +113,6 @@ /mob/living/carbon/alien/larva/attack_ui(slot_id) return -/mob/living/carbon/alien/larva/meteorhit(O as obj) - for(var/mob/M in viewers(src, null)) - if ((M.client && !( M.blinded ))) - M.show_message(text("\red [] has been hit by []", src, O), 1) - if (health > 0) - adjustBruteLoss((istype(O, /obj/effect/meteor/small) ? 10 : 25)) - adjustFireLoss(30) - - updatehealth() - return - /mob/living/carbon/alien/larva/attack_animal(mob/living/simple_animal/M as mob) if(M.melee_damage_upper == 0) M.emote("[M.friendly] [src]") @@ -136,7 +125,6 @@ updatehealth() - /mob/living/carbon/alien/larva/attack_paw(mob/living/carbon/monkey/M as mob) if(!(istype(M, /mob/living/carbon/monkey))) return//Fix for aliens receiving double messages when attacking other aliens. diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 50a03307add..23cb9f43723 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -204,22 +204,6 @@ apply_damage(rand(20,30), BRUTE, affecting, run_armor_check(affecting, "melee")) return -/mob/living/carbon/human/meteorhit(O as obj) - for(var/mob/M in viewers(src, null)) - if ((M.client && !( M.blinded ))) - M.show_message("\red [src] has been hit by [O]", 1) - if (health > 0) - var/obj/item/organ/limb/affecting = get_organ(pick("chest", "chest", "chest", "head")) - if(!affecting) return - if (istype(O, /obj/effect/immovablerod)) - if(affecting.take_damage(101, 0)) - update_damage_overlays(0) - else - if(affecting.take_damage((istype(O, /obj/effect/meteor/small) ? 10 : 25), 30)) - update_damage_overlays(0) - updatehealth() - return - /mob/living/carbon/human/attack_animal(mob/living/simple_animal/M as mob) if(M.melee_damage_upper == 0) diff --git a/code/modules/mob/living/carbon/metroid/metroid.dm b/code/modules/mob/living/carbon/metroid/metroid.dm index ab479dffe30..082f3bbbac1 100644 --- a/code/modules/mob/living/carbon/metroid/metroid.dm +++ b/code/modules/mob/living/carbon/metroid/metroid.dm @@ -248,17 +248,6 @@ /mob/living/carbon/slime/attack_ui(slot) return -/mob/living/carbon/slime/meteorhit(O as obj) - for(var/mob/M in viewers(src, null)) - if ((M.client && !( M.blinded ))) - M.show_message(text(" [] has been hit by []", src, O), 1) - if (health > 0) - adjustBruteLoss((istype(O, /obj/effect/meteor/small) ? 10 : 25)) - adjustFireLoss(30) - - updatehealth() - return - /mob/living/carbon/slime/attack_slime(mob/living/carbon/slime/M as mob) if (!ticker) diff --git a/code/modules/mob/living/carbon/monkey/monkey.dm b/code/modules/mob/living/carbon/monkey/monkey.dm index dfea7361533..828a07547ef 100644 --- a/code/modules/mob/living/carbon/monkey/monkey.dm +++ b/code/modules/mob/living/carbon/monkey/monkey.dm @@ -68,19 +68,6 @@ now_pushing = null -/mob/living/carbon/monkey/meteorhit(obj/O as obj) - for(var/mob/M in viewers(src, null)) - M.show_message(text("\red [] has been hit by []", src, O), 1) - if (health > 0) - var/shielded = 0 - adjustBruteLoss(30) - if ((O.icon_state == "flaming" && !( shielded ))) - adjustFireLoss(40) - health = 100 - getOxyLoss() - getToxLoss() - getFireLoss() - getBruteLoss() - return - -//mob/living/carbon/monkey/bullet_act(var/obj/item/projectile/Proj)taken care of in living - /mob/living/carbon/monkey/attack_paw(mob/M as mob) ..() diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index 93f82ae1399..6be9cb97360 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -376,27 +376,16 @@ var/list/ai_list = list() usr << "Target is not on or near any active cameras on the station. We'll check again in 5 seconds (unless you use the cancel-camera verb)." sleep(40) continue - return - return -/mob/living/silicon/ai/meteorhit(obj/O as obj) - for(var/mob/M in viewers(src, null)) - M.show_message(text("\red [] has been hit by []", src, O), 1) - //Foreach goto(19) - if (health > 0) - adjustBruteLoss(30) - if ((O.icon_state == "flaming")) - adjustFireLoss(40) - updatehealth() - return /mob/living/silicon/ai/bullet_act(var/obj/item/projectile/Proj) ..(Proj) updatehealth() return 2 + /mob/living/silicon/ai/attack_alien(mob/living/carbon/alien/humanoid/M as mob) if (!ticker) M << "You cannot attack people before the game has started." diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 54c38fcb787..9354918ac99 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -336,21 +336,9 @@ if(3.0) if (stat != 2) adjustBruteLoss(30) - return -/mob/living/silicon/robot/meteorhit(obj/O as obj) - for(var/mob/M in viewers(src, null)) - M.show_message(text("\red [src] has been hit by [O]"), 1) - //Foreach goto(19) - if (health > 0) - adjustBruteLoss(30) - if ((O.icon_state == "flaming")) - adjustFireLoss(40) - updatehealth() - return - /mob/living/silicon/robot/bullet_act(var/obj/item/projectile/Proj) ..(Proj) diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index 9735c4fbaa4..f119cecd678 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -1183,13 +1183,8 @@ obj/machinery/power/apc/proc/autoset(var/val, var/on) return val + // damage and destruction acts - -/obj/machinery/power/apc/meteorhit(var/obj/O as obj) - - set_broken() - return - /obj/machinery/power/apc/emp_act(severity) if(cell) cell.emp_act(severity) diff --git a/code/modules/power/gravitygenerator.dm b/code/modules/power/gravitygenerator.dm index f0e7168ad13..60cb90c256b 100644 --- a/code/modules/power/gravitygenerator.dm +++ b/code/modules/power/gravitygenerator.dm @@ -32,9 +32,6 @@ var/const/GRAV_NEEDS_WRENCH = 3 if(severity == 1) // Very sturdy. set_broken() -/obj/machinery/gravity_generator/meteorhit() - return - /obj/machinery/gravity_generator/update_icon() ..() icon_state = "[get_status()]_[sprite_number]" diff --git a/code/modules/power/singularity/containment_field.dm b/code/modules/power/singularity/containment_field.dm index ca45409875b..56dcd502414 100644 --- a/code/modules/power/singularity/containment_field.dm +++ b/code/modules/power/singularity/containment_field.dm @@ -36,8 +36,6 @@ /obj/machinery/field/containment/ex_act(severity) return 0 -/obj/machinery/field/containment/meteorhit() - return 0 /obj/machinery/field/containment/Crossed(atom/movable/mover) if(isliving(mover)) diff --git a/code/modules/power/singularity/emitter.dm b/code/modules/power/singularity/emitter.dm index b249672db3f..e571a4bbf9b 100644 --- a/code/modules/power/singularity/emitter.dm +++ b/code/modules/power/singularity/emitter.dm @@ -88,8 +88,6 @@ src.use_power = 1 */ return 1 -/obj/machinery/field/containment/meteorhit() - return 0 /obj/machinery/power/emitter/process() if(stat & (BROKEN)) diff --git a/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm b/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm index 2e037f8e76e..f4751450a1d 100644 --- a/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm +++ b/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm @@ -163,11 +163,6 @@ So, hopefully this is helpful if any more icons are to be added/changed/wonderin return -/obj/structure/particle_accelerator/meteorhit() - if(prob(50)) - qdel(src) - return - /obj/structure/particle_accelerator/update_icon() switch(construction_state) if(0,1) @@ -350,12 +345,6 @@ So, hopefully this is helpful if any more icons are to be added/changed/wonderin return -/obj/machinery/particle_accelerator/meteorhit() - if(prob(50)) - qdel(src) - return - - /obj/machinery/particle_accelerator/proc/update_state() return 0 diff --git a/code/modules/power/solar.dm b/code/modules/power/solar.dm index 1de1a7b55a4..344100e978d 100644 --- a/code/modules/power/solar.dm +++ b/code/modules/power/solar.dm @@ -138,13 +138,6 @@ var/list/solars_list = list() return -/obj/machinery/power/solar/meteorhit() - if(stat & !BROKEN) - broken() - else - qdel(src) - - /obj/machinery/power/solar/ex_act(severity) switch(severity) if(1.0) @@ -458,11 +451,6 @@ var/list/solars_list = list() update_icon() -/obj/machinery/power/solar_control/meteorhit() - broken() - return - - /obj/machinery/power/solar_control/ex_act(severity) switch(severity) if(1.0) diff --git a/code/modules/projectiles/projectile/special.dm b/code/modules/projectiles/projectile/special.dm index c5ffc4bf95f..afe46c110e3 100644 --- a/code/modules/projectiles/projectile/special.dm +++ b/code/modules/projectiles/projectile/special.dm @@ -62,7 +62,7 @@ if(src)//Do not add to this if() statement, otherwise the meteor won't delete them if(A) - A.meteorhit(src) + A.ex_act(2) playsound(src.loc, 'sound/effects/meteorimpact.ogg', 40, 1) for(var/mob/M in range(10, src)) diff --git a/code/modules/reagents/Chemistry-Machinery.dm b/code/modules/reagents/Chemistry-Machinery.dm index cf33cbb7529..8d67ce63f4d 100644 --- a/code/modules/reagents/Chemistry-Machinery.dm +++ b/code/modules/reagents/Chemistry-Machinery.dm @@ -64,10 +64,6 @@ if (prob(50)) qdel(src) -/obj/machinery/chem_dispenser/meteorhit() - qdel(src) - return - /** * The ui_interact proc is used to open and update Nano UIs * If ui_interact is not used then the UI will not update correctly @@ -276,10 +272,6 @@ if (prob(50)) qdel(src) -/obj/machinery/chem_master/meteorhit() - qdel(src) - return - /obj/machinery/chem_master/power_change() if(powered()) stat &= ~NOPOWER diff --git a/code/modules/research/circuitprinter.dm b/code/modules/research/circuitprinter.dm index 0b131f0d37e..e5588ca946f 100644 --- a/code/modules/research/circuitprinter.dm +++ b/code/modules/research/circuitprinter.dm @@ -43,9 +43,6 @@ using metal and glass, it uses glass and reagents (usually sulfuric acis). if (prob(50)) qdel(src) -/obj/machinery/r_n_d/circuit_imprinter/meteorhit() - qdel(src) - return /obj/machinery/r_n_d/circuit_imprinter/proc/check_mat(datum/design/being_built, var/M) switch(M) diff --git a/code/modules/research/destructive_analyzer.dm b/code/modules/research/destructive_analyzer.dm index 3649c8ba438..b13964fbe88 100644 --- a/code/modules/research/destructive_analyzer.dm +++ b/code/modules/research/destructive_analyzer.dm @@ -28,9 +28,6 @@ Note: Must be placed within 3 tiles of the R&D Console T += S.rating decon_mod = T -/obj/machinery/r_n_d/destructive_analyzer/meteorhit() - qdel(src) - return /obj/machinery/r_n_d/destructive_analyzer/proc/ConvertReqString2List(var/list/source_list) var/list/temp_list = params2list(source_list) diff --git a/code/modules/research/server.dm b/code/modules/research/server.dm index bf53508cb38..8abbae4220c 100644 --- a/code/modules/research/server.dm +++ b/code/modules/research/server.dm @@ -74,10 +74,6 @@ produce_heat(heat_gen) delay = initial(delay) -/obj/machinery/r_n_d/server/meteorhit(var/obj/O as obj) - griefProtection() - ..() - /obj/machinery/r_n_d/server/emp_act(severity) griefProtection() From f83f1932b263e5bb56d10ce4c7045442bbca0b0c Mon Sep 17 00:00:00 2001 From: Cheridan Date: Wed, 23 Apr 2014 01:37:44 -0500 Subject: [PATCH 014/185] Meteor code uses OOP principles a little better now Adds new types of meteors with different effects. Meteors drop some ore when they hit. --- code/game/gamemodes/meteor/meteors.dm | 190 ++++++++++++------ .../objects/effects/decals/Cleanable/misc.dm | 12 +- code/modules/events/dust.dm | 2 +- code/modules/events/meteor_wave.dm | 2 +- icons/obj/meteor.dmi | Bin 11700 -> 11786 bytes tgstation.dme | 1 + 6 files changed, 134 insertions(+), 73 deletions(-) diff --git a/code/game/gamemodes/meteor/meteors.dm b/code/game/gamemodes/meteor/meteors.dm index fb5e7ed1a03..dc21aae8919 100644 --- a/code/game/gamemodes/meteor/meteors.dm +++ b/code/game/gamemodes/meteor/meteors.dm @@ -1,10 +1,13 @@ /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 = 50 -/var/const/meteors_in_small_wave = 10 +/var/list/meteorsA = list(/obj/effect/meteor/dust=3, /obj/effect/meteor/medium=8, /obj/effect/meteor/big=3, \ + /obj/effect/meteor/flaming=1, /obj/effect/meteor/irradiated=3) -/proc/meteor_wave(var/number = meteors_in_wave) +/var/list/meteorsB = list(/obj/effect/meteor/meaty=5, /obj/effect/meteor/meaty/xeno=1) + + +/proc/meteor_wave(var/number = 50) //this proc's unused now. if(!ticker || wavesecret) return @@ -15,12 +18,13 @@ spawn(meteor_wave_delay) wavesecret = 0 -/proc/spawn_meteors(var/number = meteors_in_small_wave) + +/proc/spawn_meteors(var/number = 10, var/list/meteortypes) for(var/i = 0; i < number; i++) spawn(0) - spawn_meteor() + spawn_meteor(meteortypes) -/proc/spawn_meteor() +/proc/spawn_meteor(var/list/meteortypes) var/startx var/starty @@ -30,7 +34,6 @@ var/turf/pickedgoal var/max_i = 10//number of tries to spawn meteor. - do switch(pick(1,2,3,4)) if(1) //NORTH @@ -58,90 +61,143 @@ pickedgoal = locate(endx, endy, 1) max_i-- if(max_i<=0) return - while (!istype(pickedstart, /turf/space) || pickedstart.loc.name != "Space" ) //FUUUCK, should never happen. - var/obj/effect/meteor/M - switch(rand(1, 100)) - - if(1 to 10) - M = new /obj/effect/meteor/big( pickedstart ) - if(11 to 75) - M = new /obj/effect/meteor( pickedstart ) - if(76 to 100) - M = new /obj/effect/meteor/small( pickedstart ) + var/Me = pickweight(meteortypes) + var/obj/effect/meteor/M = new Me(pickedstart) M.dest = pickedgoal spawn(0) walk_towards(M, M.dest, 1) - return + + /obj/effect/meteor - name = "meteor" + name = "the concept of meteor" + desc = "You should probably run instead of gawking at this." icon = 'icons/obj/meteor.dmi' - icon_state = "flaming" + icon_state = "small" density = 1 - anchored = 1.0 - var/hits = 1 + anchored = 1 + var/hits = 4 var/dest pass_flags = PASSTABLE + var/heavy = 0 + var/meteorsound = 'sound/effects/meteorimpact.ogg' -/obj/effect/meteor/small - name = "small meteor" - icon_state = "smallf" + var/meteordrop = /obj/item/weapon/ore/iron + var/dropamt = 2 + +/obj/effect/meteor/dust + name = "space dust" + icon_state = "dust" pass_flags = PASSTABLE | PASSGRILLE + hits = 1 + meteorsound = 'sound/weapons/throwtap.ogg' + meteordrop = /obj/item/weapon/ore/glass -/obj/effect/meteor/Bump(atom/A) - if (A) - A.ex_act(2) - playsound(src.loc, 'sound/effects/meteorimpact.ogg', 40, 1) - if (--src.hits <= 0) - - //Prevent meteors from blowing up the singularity's containment. - //Changing emitter and generator ex_act would result in them being bomb and C4 proof. - if(!istype(A,/obj/machinery/power/emitter) && \ - !istype(A,/obj/machinery/field/generator) && \ - prob(15)) - explosion(src.loc, 4, 5, 6, 7, 0) - qdel(src) - - -/obj/effect/meteor/ex_act(severity) - if (severity < 4) - qdel(src) - return +/obj/effect/meteor/medium + name = "meteor" + dropamt = 3 /obj/effect/meteor/big name = "big meteor" - hits = 5 + icon_state = "large" + hits = 7 + heavy = 1 + dropamt = 4 - ex_act(severity) - return +/obj/effect/meteor/flaming + name = "flaming meteor" + icon_state = "flaming" + hits = 3 + heavy = 1 + meteorsound = 'sound/effects/bamf.ogg' + meteordrop = /obj/item/weapon/ore/plasma - Bump(atom/A) - //Prevent meteors from blowing up the singularity's containment. - //Changing emitter and generator ex_act would result in them being bomb and C4 proof - if(!istype(A,/obj/machinery/power/emitter) && \ - !istype(A,/obj/machinery/field/generator)) - if(--src.hits <= 0) - qdel(src) //Dont blow up singularity containment if we get stuck there. +/obj/effect/meteor/irradiated + name = "glowing meteor" + icon_state = "glowing" + hits = 4 + heavy = 1 + meteordrop = /obj/item/weapon/ore/uranium - if (A) - for(var/mob/M in player_list) - var/turf/T = get_turf(M) - if(!T || T.z != src.z) - continue - var/dist = get_dist(M.loc, src.loc) - shake_camera(M, dist > 20 ? 3 : 5, dist > 20 ? 1 : 3) - M.playsound_local(src.loc, 'sound/effects/meteorimpact.ogg', 50, 1, get_rand_frequency(), 10) - explosion(src.loc, 0, 1, 2, 3, 0) +/obj/effect/meteor/meaty + name = "meateor" + icon_state = "meateor" + desc = "Just... don't think too hard about where this thing came from." + hits = 2 + heavy = 1 + meteorsound = 'sound/effects/blobattack.ogg' + meteordrop = /obj/item/weapon/reagent_containers/food/snacks/meat + var/meteorgibs = /obj/effect/gibspawner/generic + +/obj/effect/meteor/meaty/xeno + color = "#5EFF00" + meteordrop = /obj/item/weapon/reagent_containers/food/snacks/xenomeat + meteorgibs = /obj/effect/gibspawner/xeno + + +/obj/effect/meteor/Bump(atom/A) + if(A) + A.ex_act(2) + playsound(src.loc, meteorsound, 40, 1) + if(--src.hits <= 0) + make_debris() + meteor_effect(heavy) + qdel(src) + + +/obj/effect/meteor/ex_act() + return + + +/obj/effect/meteor/proc/meteor_effect(var/sound=1) + if(sound) + for(var/mob/M in player_list) + var/turf/T = get_turf(M) + if(!T || T.z != src.z) + continue + var/dist = get_dist(M.loc, src.loc) + shake_camera(M, dist > 20 ? 3 : 5, dist > 20 ? 1 : 3) + M.playsound_local(src.loc, meteorsound, 50, 1, get_rand_frequency(), 10) + + +/obj/effect/meteor/medium/meteor_effect() + ..(heavy) + explosion(src.loc, 1, 2, 3, 4, 0) + + +/obj/effect/meteor/big/meteor_effect() + ..(heavy) + explosion(src.loc, 0, 1, 2, 3, 0) + + +/obj/effect/meteor/flaming/meteor_effect() + ..(heavy) + explosion(src.loc, 0, 1, 2, 3, 0, 0, 5) + + +/obj/effect/meteor/irradiated/meteor_effect() + ..(heavy) + explosion(src.loc, 0, 0, 4, 3, 0) + new /obj/effect/decal/cleanable/greenglow(get_turf(src)) + for(var/mob/living/L in view(5, src)) + L.apply_effect(40, IRRADIATE) + + + +/obj/effect/meteor/proc/make_debris() + for(var/throws = dropamt, throws > 0, throws--) + var/obj/item/O = new meteordrop(get_turf(src)) + O.throw_at(dest, 5, 10) + +/obj/effect/meteor/meaty/make_debris() + ..() + new meteorgibs(get_turf(src)) - if (--src.hits <= 0) - if(prob(15) && !istype(A, /obj/structure/grille)) - explosion(src.loc, 1, 2, 3, 4, 0) - qdel(src) /obj/effect/meteor/attackby(obj/item/weapon/W as obj, mob/user as mob) if(istype(W, /obj/item/weapon/pickaxe)) diff --git a/code/game/objects/effects/decals/Cleanable/misc.dm b/code/game/objects/effects/decals/Cleanable/misc.dm index 2a1f13e2340..2ea991543fa 100644 --- a/code/game/objects/effects/decals/Cleanable/misc.dm +++ b/code/game/objects/effects/decals/Cleanable/misc.dm @@ -17,11 +17,15 @@ anchored = 1 /obj/effect/decal/cleanable/greenglow + name = "green glow" - New() - ..() - spawn(1200)// 2 minutes - qdel(src) +/obj/effect/decal/cleanable/greenglow/New() + ..() + spawn(1200)// 2 minutes + qdel(src) + +/obj/effect/decal/cleanable/greenglow/ex_act() + return /obj/effect/decal/cleanable/dirt name = "dirt" diff --git a/code/modules/events/dust.dm b/code/modules/events/dust.dm index 5c2ecf1b6c0..4091d60f1eb 100644 --- a/code/modules/events/dust.dm +++ b/code/modules/events/dust.dm @@ -1,7 +1,7 @@ /datum/round_event_control/dust name = "Minor Space Dust" typepath = /datum/round_event/dust - weight = 600 + weight = 300 max_occurrences = 10000 earliest_start = 0 diff --git a/code/modules/events/meteor_wave.dm b/code/modules/events/meteor_wave.dm index 8357f36834d..b77c50b716b 100644 --- a/code/modules/events/meteor_wave.dm +++ b/code/modules/events/meteor_wave.dm @@ -15,4 +15,4 @@ /datum/round_event/meteor_wave/tick() if(IsMultiple(activeFor, 3)) - spawn_meteors(5) \ No newline at end of file + spawn_meteors(5, meteorsA) //meteor list types defined in gamemode/meteor/meteors.dm \ No newline at end of file diff --git a/icons/obj/meteor.dmi b/icons/obj/meteor.dmi index 123a5bdf86e55167b5aaabba0447077b867c0f0d..84faabcc18817abe79524e1abecb573f5a915db6 100644 GIT binary patch literal 11786 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 literal 11700 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 BhbsU8 diff --git a/tgstation.dme b/tgstation.dme index 47e969ea308..ae86e4be4bf 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -832,6 +832,7 @@ #include "code\modules\events\immovable_rod.dm" #include "code\modules\events\ion_storm.dm" #include "code\modules\events\mass_hallucination.dm" +#include "code\modules\events\meateor_wave.dm" #include "code\modules\events\meteor_wave.dm" #include "code\modules\events\ninja.dm" #include "code\modules\events\prison_break.dm" From dd454959e22753e2475c68e349416499edee8206 Mon Sep 17 00:00:00 2001 From: Cheridan Date: Wed, 23 Apr 2014 01:42:05 -0500 Subject: [PATCH 015/185] Adds new event. --- code/modules/events/meateor_wave.dm | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 code/modules/events/meateor_wave.dm diff --git a/code/modules/events/meateor_wave.dm b/code/modules/events/meateor_wave.dm new file mode 100644 index 00000000000..2303b69b664 --- /dev/null +++ b/code/modules/events/meateor_wave.dm @@ -0,0 +1,14 @@ +/datum/round_event_control/meteor_wave/meaty + name = "Meateor Wave" + typepath = /datum/round_event/meteor_wave/meaty + weight = 1 + max_occurrences = 1 + +/datum/round_event/meteor_wave/meaty/announce() + command_alert("Meateors have been detected on collision course with the station.", "Oh Crap, Get The Mop.") + world << sound('sound/AI/meteors.ogg') + + +/datum/round_event/meteor_wave/meaty/tick() + if(IsMultiple(activeFor, 3)) + spawn_meteors(5, meteorsB) //meteor list types defined in gamemode/meteor/meteors.dm \ No newline at end of file From 2d547d4d827ec536f6d75e8ee984020a26fc9bda Mon Sep 17 00:00:00 2001 From: Cheridan Date: Wed, 23 Apr 2014 15:01:19 -0500 Subject: [PATCH 016/185] Refactors space dust Meteors spin renames meateors --- code/__HELPERS/matrices.dm | 14 ++++ code/game/gamemodes/meteor/meteors.dm | 12 ++- code/game/turfs/space/space.dm | 6 +- code/modules/events/dust.dm | 113 +++----------------------- code/modules/events/meateor_wave.dm | 4 +- 5 files changed, 41 insertions(+), 108 deletions(-) diff --git a/code/__HELPERS/matrices.dm b/code/__HELPERS/matrices.dm index 9a308d3f9c7..edb3113fa78 100644 --- a/code/__HELPERS/matrices.dm +++ b/code/__HELPERS/matrices.dm @@ -1,3 +1,17 @@ /matrix/proc/TurnTo(old_angle, new_angle) . = new_angle - old_angle Turn(.) //BYOND handles cases such as -270, 360, 540 etc. DOES NOT HANDLE 180 TURNS WELL, THEY TWEEN AND LOOK LIKE SHIT + + +/atom/proc/SpinAnimation(speed = 10) + var/matrix/m120 = matrix(transform) + m120.Turn(120) + var/matrix/m240 = matrix(transform) + m240.Turn(240) + var/matrix/m360 = matrix(transform) + speed /= 3 //Gives us 3 equal time segments for our three turns. + //Why not one turn? Because byond will see that the start and finish are the same place and do nothing + //Why not two turns? Because byond will do a flip instead of a turn + animate(src, transform = m120, time = speed, loop = -1) + animate(transform = m240, time = speed) + animate(transform = m360, time = speed) \ No newline at end of file diff --git a/code/game/gamemodes/meteor/meteors.dm b/code/game/gamemodes/meteor/meteors.dm index dc21aae8919..f7caf7be4e9 100644 --- a/code/game/gamemodes/meteor/meteors.dm +++ b/code/game/gamemodes/meteor/meteors.dm @@ -6,6 +6,8 @@ /var/list/meteorsB = list(/obj/effect/meteor/meaty=5, /obj/effect/meteor/meaty/xeno=1) +/var/list/meteorsC = list(/obj/effect/meteor/dust) //for space dust event + /proc/meteor_wave(var/number = 50) //this proc's unused now. if(!ticker || wavesecret) @@ -82,6 +84,7 @@ density = 1 anchored = 1 var/hits = 4 + var/hitpwr = 2 //Level of ex_act to be called on hit. var/dest pass_flags = PASSTABLE var/heavy = 0 @@ -95,6 +98,7 @@ icon_state = "dust" pass_flags = PASSTABLE | PASSGRILLE hits = 1 + hitpwr = 3 meteorsound = 'sound/weapons/throwtap.ogg' meteordrop = /obj/item/weapon/ore/glass @@ -125,7 +129,7 @@ meteordrop = /obj/item/weapon/ore/uranium /obj/effect/meteor/meaty - name = "meateor" + name = "meaty ore" icon_state = "meateor" desc = "Just... don't think too hard about where this thing came from." hits = 2 @@ -140,9 +144,13 @@ meteorgibs = /obj/effect/gibspawner/xeno +/obj/effect/meteor/New() + ..() + SpinAnimation() + /obj/effect/meteor/Bump(atom/A) if(A) - A.ex_act(2) + A.ex_act(hitpwr) playsound(src.loc, meteorsound, 40, 1) if(--src.hits <= 0) make_debris() diff --git a/code/game/turfs/space/space.dm b/code/game/turfs/space/space.dm index c26bc1e88c9..7f743f88f04 100644 --- a/code/game/turfs/space/space.dm +++ b/code/game/turfs/space/space.dm @@ -58,7 +58,7 @@ // if(ticker.mode.name == "nuclear emergency") return if(A.z > 6) return if (A.x <= TRANSITIONEDGE || A.x >= (world.maxx - TRANSITIONEDGE - 1) || A.y <= TRANSITIONEDGE || A.y >= (world.maxy - TRANSITIONEDGE - 1)) - if(istype(A, /obj/effect/meteor)||istype(A, /obj/effect/space_dust)) + if(istype(A, /obj/effect/meteor)) qdel(A) return @@ -135,7 +135,7 @@ var/list/y_arr if(src.x <= 1) - if(istype(A, /obj/effect/meteor)||istype(A, /obj/effect/space_dust)) + if(istype(A, /obj/effect/meteor)) qdel(A) return @@ -210,7 +210,7 @@ A.loc.Entered(A) else if (src.y >= world.maxy) - if(istype(A, /obj/effect/meteor)||istype(A, /obj/effect/space_dust)) + if(istype(A, /obj/effect/meteor)) qdel(A) return var/list/cur_pos = src.get_global_map_pos() diff --git a/code/modules/events/dust.dm b/code/modules/events/dust.dm index 4091d60f1eb..d24b6cab401 100644 --- a/code/modules/events/dust.dm +++ b/code/modules/events/dust.dm @@ -1,108 +1,19 @@ -/datum/round_event_control/dust +/datum/round_event_control/meteor_wave/dust name = "Minor Space Dust" - typepath = /datum/round_event/dust + typepath = /datum/round_event/meteor_wave/dust weight = 300 - max_occurrences = 10000 + max_occurrences = 1000 earliest_start = 0 -/datum/round_event/dust - var/qnty = 1 +/datum/round_event/meteor_wave/dust + startWhen = 1 + endWhen = 2 -/datum/round_event/dust/setup() - qnty = rand(1,5) +/datum/round_event/meteor_wave/dust/announce() + return -/datum/round_event/dust/start() - while(qnty-- > 0) - new /obj/effect/space_dust/weak() +/datum/round_event/meteor_wave/dust/start() + spawn_meteors(1, meteorsC) - -/obj/effect/space_dust - name = "Space Dust" - desc = "Dust in space." - icon = 'icons/obj/meteor.dmi' - icon_state = "space_dust" - density = 1 - anchored = 1 - var/strength = 2 //ex_act severity number - var/life = 2 //how many things we hit before qdel(src) - - weak - strength = 3 - life = 1 - - strong - strength = 1 - life = 6 - - super - strength = 1 - life = 40 - - - New() - var/startx = 0 - var/starty = 0 - var/endy = 0 - var/endx = 0 - var/startside = pick(cardinal) - - switch(startside) - if(NORTH) - starty = world.maxy-(TRANSITIONEDGE+1) - startx = rand((TRANSITIONEDGE+1), world.maxx-(TRANSITIONEDGE+1)) - endy = TRANSITIONEDGE - endx = rand(TRANSITIONEDGE, world.maxx-TRANSITIONEDGE) - if(EAST) - starty = rand((TRANSITIONEDGE+1),world.maxy-(TRANSITIONEDGE+1)) - startx = world.maxx-(TRANSITIONEDGE+1) - endy = rand(TRANSITIONEDGE, world.maxy-TRANSITIONEDGE) - endx = TRANSITIONEDGE - if(SOUTH) - starty = (TRANSITIONEDGE+1) - startx = rand((TRANSITIONEDGE+1), world.maxx-(TRANSITIONEDGE+1)) - endy = world.maxy-TRANSITIONEDGE - endx = rand(TRANSITIONEDGE, world.maxx-TRANSITIONEDGE) - if(WEST) - starty = rand((TRANSITIONEDGE+1), world.maxy-(TRANSITIONEDGE+1)) - startx = (TRANSITIONEDGE+1) - endy = rand(TRANSITIONEDGE,world.maxy-TRANSITIONEDGE) - endx = world.maxx-TRANSITIONEDGE - var/goal = locate(endx, endy, 1) - src.x = startx - src.y = starty - src.z = 1 - spawn(0) - walk_towards(src, goal, 1) - return - - - Bump(atom/A) - spawn(0) - if(prob(50)) - for(var/mob/M in range(10, src)) - if(!M.stat && !istype(M, /mob/living/silicon/ai)) - shake_camera(M, 3, 1) - if (A) - playsound(src.loc, 'sound/effects/meteorimpact.ogg', 40, 1) - - if(ismob(A)) - A.ex_act(strength) - else if(!istype(A,/obj/machinery/power/emitter) && !istype(A,/obj/machinery/field/generator)) //Protect the singularity from getting released every round! - A.ex_act(strength) //Changing emitter/field gen ex_act would make it immune to bombs and C4 - - life-- - if(life <= 0) - walk(src,0) - qdel(src) - return 0 - return - - - Bumped(atom/A) - Bump(A) - return - - - ex_act(severity) - qdel(src) - return +/datum/round_event/meteor_wave/dust/tick() + return \ No newline at end of file diff --git a/code/modules/events/meateor_wave.dm b/code/modules/events/meateor_wave.dm index 2303b69b664..fae9ac4fe4e 100644 --- a/code/modules/events/meateor_wave.dm +++ b/code/modules/events/meateor_wave.dm @@ -1,11 +1,11 @@ /datum/round_event_control/meteor_wave/meaty - name = "Meateor Wave" + name = "Meaty Ore Wave" typepath = /datum/round_event/meteor_wave/meaty weight = 1 max_occurrences = 1 /datum/round_event/meteor_wave/meaty/announce() - command_alert("Meateors have been detected on collision course with the station.", "Oh Crap, Get The Mop.") + command_alert("Meaty ores have been detected on collision course with the station.", "Oh Crap, Get The Mop.") world << sound('sound/AI/meteors.ogg') From 7e06da72d1683779b5adc76f7a8ca14e2afbab4d Mon Sep 17 00:00:00 2001 From: Daniel Date: Thu, 24 Apr 2014 18:18:57 +0200 Subject: [PATCH 017/185] Fixed armrest being an icon instead of image --- code/game/objects/structures/stool_bed_chair_nest/chairs.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm index 4f29b5083af..2f1eca9c84d 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm @@ -101,7 +101,7 @@ var/image/armrest = null /obj/structure/stool/bed/chair/comfy/New() - armrest = icon("icons/obj/objects.dmi", "comfychair_armrest") + armrest = image("icons/obj/objects.dmi", "comfychair_armrest") armrest.layer = MOB_LAYER + 0.1 return ..() From ee6a8baed4e7e5cafd7a90971de12c02c1830ba1 Mon Sep 17 00:00:00 2001 From: phil235 Date: Thu, 24 Apr 2014 21:41:56 +0200 Subject: [PATCH 018/185] Some fixes for beartraps --- code/defines/obj/weapon.dm | 59 ++++++++++++++++++++++++++++---------- 1 file changed, 44 insertions(+), 15 deletions(-) diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm index 21f89fb2e7b..e0c05c59d26 100644 --- a/code/defines/obj/weapon.dm +++ b/code/defines/obj/weapon.dm @@ -188,24 +188,53 @@ /obj/item/weapon/legcuffs/beartrap/Crossed(AM as mob|obj) if(armed) - if(ishuman(AM)) - if(isturf(src.loc)) + if(isturf(src.loc)) + if(ishuman(AM)) var/mob/living/carbon/H = AM if(H.m_intent == "run") armed = 0 - H.legcuffed = src - src.loc = H - H.update_inv_legcuffed(0) - H << "\red You step on \the [src]!" - feedback_add_details("handcuffs","B") //Yes, I know they're legcuffs. Don't change this, no need for an extra variable. The "B" is used to tell them apart. - for(var/mob/O in viewers(H, null)) - if(O == H) - continue - O.show_message("\red [H] steps on \the [src].", 1) - if(isanimal(AM) && !istype(AM, /mob/living/simple_animal/parrot) && !istype(AM, /mob/living/simple_animal/construct) && !istype(AM, /mob/living/simple_animal/shade) && !istype(AM, /mob/living/simple_animal/hostile/viscerator)) - armed = 0 - var/mob/living/simple_animal/SA = AM - SA.health -= 20 + icon_state = "beartrap0" + playsound(src.loc, 'sound/effects/snap.ogg', 50, 1) + if(H.lying) + H.visible_message("[H] triggers \the [src].", \ + "You trigger \the [src]!") + H.apply_damage(20,BRUTE,"chest") + else + H.legcuffed = src + src.loc = H + H.update_inv_legcuffed(0) + H.visible_message("[H] steps on \the [src].", \ + "You step on \the [src]!") + H.apply_damage(20,BRUTE,(pick("l_leg", "r_leg"))) + feedback_add_details("handcuffs","B") //Yes, I know they're legcuffs. Don't change this, no need for an extra variable. The "B" is used to tell them apart. + + if(isalien(AM)) + armed = 0 + icon_state = "beartrap0" + playsound(src.loc, 'sound/effects/snap.ogg', 50, 1) + var/mob/living/carbon/alien/A = AM + A.visible_message("[A] triggers \the [src]!", \ + "[A] triggers \the [src]!") + A.adjustBruteLoss(20) + A.Stun(5) + + if(ismonkey(AM) + armed = 0 + icon_state = "beartrap0" + playsound(src.loc, 'sound/effects/snap.ogg', 50, 1) + var/mob/living/carbon/monkey/M = AM + M.visible_message("[M] triggers \the [src]!", \ + "[M] triggers \the [src]!") + M.adjustBruteLoss(20) + M.Stun(5) + + if(isanimal(AM) && !istype(AM, /mob/living/simple_animal/parrot) && !istype(AM, /mob/living/simple_animal/construct) && !istype(AM, /mob/living/simple_animal/shade) && !istype(AM, /mob/living/simple_animal/hostile/viscerator)) + armed = 0 + icon_state = "beartrap0" + playsound(src.loc, 'sound/effects/snap.ogg', 50, 1) + var/mob/living/simple_animal/SA = AM + visible_message("[SA] triggers \the [src]!") + SA.health -= 20 ..() From 999e9eab1503aca206385a641bb96ada7411979f Mon Sep 17 00:00:00 2001 From: phil235 Date: Thu, 24 Apr 2014 21:56:22 +0200 Subject: [PATCH 019/185] missing parenthesis --- code/defines/obj/weapon.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm index e0c05c59d26..db6e5178723 100644 --- a/code/defines/obj/weapon.dm +++ b/code/defines/obj/weapon.dm @@ -218,7 +218,7 @@ A.adjustBruteLoss(20) A.Stun(5) - if(ismonkey(AM) + if(ismonkey(AM)) armed = 0 icon_state = "beartrap0" playsound(src.loc, 'sound/effects/snap.ogg', 50, 1) From a122e156c4eefbb62b9aa4265574ebd9c2040ec8 Mon Sep 17 00:00:00 2001 From: phil235 Date: Fri, 25 Apr 2014 00:07:28 +0200 Subject: [PATCH 020/185] Fix legcuffing when stepping on two traps. Prevents having two beartraps on your legs, which results in one of the two not appearing after resisting. --- code/defines/obj/weapon.dm | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm index db6e5178723..c400c0bb75c 100644 --- a/code/defines/obj/weapon.dm +++ b/code/defines/obj/weapon.dm @@ -200,13 +200,14 @@ "You trigger \the [src]!") H.apply_damage(20,BRUTE,"chest") else - H.legcuffed = src - src.loc = H - H.update_inv_legcuffed(0) H.visible_message("[H] steps on \the [src].", \ "You step on \the [src]!") H.apply_damage(20,BRUTE,(pick("l_leg", "r_leg"))) - feedback_add_details("handcuffs","B") //Yes, I know they're legcuffs. Don't change this, no need for an extra variable. The "B" is used to tell them apart. + if(!H.legcuffed) //beartrap can't cuff you leg if there's already a beartrap or legcuffs. + H.legcuffed = src + src.loc = H + H.update_inv_legcuffed(0) + feedback_add_details("handcuffs","B") //Yes, I know they're legcuffs. Don't change this, no need for an extra variable. The "B" is used to tell them apart. if(isalien(AM)) armed = 0 From ff4b6cd9e11946c0200e3c903e2d3787816f64c8 Mon Sep 17 00:00:00 2001 From: phil235 Date: Sat, 26 Apr 2014 00:33:39 +0200 Subject: [PATCH 021/185] trying to reduce duplicate code. --- code/defines/obj/weapon.dm | 41 +++++++++++++------------------------- 1 file changed, 14 insertions(+), 27 deletions(-) diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm index c400c0bb75c..769b14d174e 100644 --- a/code/defines/obj/weapon.dm +++ b/code/defines/obj/weapon.dm @@ -186,22 +186,25 @@ icon_state = "beartrap[armed]" user << "[src] is now [armed ? "armed" : "disarmed"]" +/obj/item/weapon/legcuffs/beartrap/triggered(target as mob) + armed = 0 + icon_state = "beartrap0" + playsound(src.loc, 'sound/effects/snap.ogg', 50, 1) + if(iscarbon(target)) + var/mob/living/carbon/C = target + C.visible_message("[C] triggers \the [src].", \ + "You trigger \the [src]!") + /obj/item/weapon/legcuffs/beartrap/Crossed(AM as mob|obj) if(armed) if(isturf(src.loc)) if(ishuman(AM)) var/mob/living/carbon/H = AM if(H.m_intent == "run") - armed = 0 - icon_state = "beartrap0" - playsound(src.loc, 'sound/effects/snap.ogg', 50, 1) + triggered(H) if(H.lying) - H.visible_message("[H] triggers \the [src].", \ - "You trigger \the [src]!") H.apply_damage(20,BRUTE,"chest") else - H.visible_message("[H] steps on \the [src].", \ - "You step on \the [src]!") H.apply_damage(20,BRUTE,(pick("l_leg", "r_leg"))) if(!H.legcuffed) //beartrap can't cuff you leg if there's already a beartrap or legcuffs. H.legcuffed = src @@ -209,31 +212,15 @@ H.update_inv_legcuffed(0) feedback_add_details("handcuffs","B") //Yes, I know they're legcuffs. Don't change this, no need for an extra variable. The "B" is used to tell them apart. - if(isalien(AM)) - armed = 0 - icon_state = "beartrap0" - playsound(src.loc, 'sound/effects/snap.ogg', 50, 1) - var/mob/living/carbon/alien/A = AM - A.visible_message("[A] triggers \the [src]!", \ - "[A] triggers \the [src]!") + if(isalien(AM) || ismonkey(AM)) + var/mob/living/carbon/A = AM + triggered(A) A.adjustBruteLoss(20) A.Stun(5) - - if(ismonkey(AM)) - armed = 0 - icon_state = "beartrap0" - playsound(src.loc, 'sound/effects/snap.ogg', 50, 1) - var/mob/living/carbon/monkey/M = AM - M.visible_message("[M] triggers \the [src]!", \ - "[M] triggers \the [src]!") - M.adjustBruteLoss(20) - M.Stun(5) if(isanimal(AM) && !istype(AM, /mob/living/simple_animal/parrot) && !istype(AM, /mob/living/simple_animal/construct) && !istype(AM, /mob/living/simple_animal/shade) && !istype(AM, /mob/living/simple_animal/hostile/viscerator)) - armed = 0 - icon_state = "beartrap0" - playsound(src.loc, 'sound/effects/snap.ogg', 50, 1) var/mob/living/simple_animal/SA = AM + triggered(SA) visible_message("[SA] triggers \the [src]!") SA.health -= 20 ..() From f3b6de4b61bfd062289ab0e0cdb5abf5a05c90eb Mon Sep 17 00:00:00 2001 From: phil235 Date: Sat, 26 Apr 2014 00:40:46 +0200 Subject: [PATCH 022/185] fix missing 'proc' --- code/defines/obj/weapon.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm index 769b14d174e..4b24cea46c8 100644 --- a/code/defines/obj/weapon.dm +++ b/code/defines/obj/weapon.dm @@ -186,7 +186,7 @@ icon_state = "beartrap[armed]" user << "[src] is now [armed ? "armed" : "disarmed"]" -/obj/item/weapon/legcuffs/beartrap/triggered(target as mob) +/obj/item/weapon/legcuffs/beartrap/proc/triggered(target as mob) armed = 0 icon_state = "beartrap0" playsound(src.loc, 'sound/effects/snap.ogg', 50, 1) From d8e6ac64a25d61064427c35bc8dd45814b914b56 Mon Sep 17 00:00:00 2001 From: paprka Date: Sat, 26 Apr 2014 16:31:07 -0700 Subject: [PATCH 023/185] final --- code/datums/uplink_item.dm | 10 +++++++--- code/game/objects/items/weapons/storage/uplink_kits.dm | 10 +++++++++- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/code/datums/uplink_item.dm b/code/datums/uplink_item.dm index 6712228a671..bfdfb312732 100644 --- a/code/datums/uplink_item.dm +++ b/code/datums/uplink_item.dm @@ -101,11 +101,17 @@ var/list/uplink_items = list() category = "Conspicuous and Dangerous Weapons" /datum/uplink_item/dangerous/revolver - name = "Full Revolver" + name = "Syndicate Revolver" desc = "The syndicate revolver is a traditional handgun that fires .357 Magnum cartridges and has 7 chambers." item = /obj/item/weapon/gun/projectile/revolver cost = 6 +/datum/uplink_item/dangerous/pistol + name = "Stechkin Pistol" + desc = "A small, easily concealable handgun that uses 10mm magazines and is compatible with silencers." + item = /obj/item/weapon/gun/projectile/automatic/pistol + cost = 5 + /datum/uplink_item/dangerous/smg name = "C-20r Submachine Gun" desc = "A fully-loaded Scarborough Arms-developed submachine gun that fires 12mm automatic rounds with a 20-round magazine." @@ -217,7 +223,6 @@ var/list/uplink_items = list() desc = "An additional 8-round 10mm magazine for use in the Stetchkin pistol." item = /obj/item/ammo_box/magazine/m10mm cost = 1 - gamemodes = list(/datum/game_mode/nuclear) /datum/uplink_item/ammo/machinegun name = "Ammo-7.62×51mm" @@ -257,7 +262,6 @@ var/list/uplink_items = list() desc = "Fitted for use on the Stetchkin pistol, this silencer will make its shots quieter when equipped onto it." item = /obj/item/weapon/silencer cost = 2 - gamemodes = list(/datum/game_mode/nuclear) // STEALTHY TOOLS diff --git a/code/game/objects/items/weapons/storage/uplink_kits.dm b/code/game/objects/items/weapons/storage/uplink_kits.dm index 0adf5b56b9c..6faf4926fe5 100644 --- a/code/game/objects/items/weapons/storage/uplink_kits.dm +++ b/code/game/objects/items/weapons/storage/uplink_kits.dm @@ -1,7 +1,7 @@ /obj/item/weapon/storage/box/syndicate/ New() ..() - switch (pickweight(list("bloodyspai" = 1, "stealth" = 1, "screwed" = 1, "guns" = 1, "murder" = 1, "implant" = 1, "hacker" = 1, "lordsingulo" = 1, "darklord" = 1))) + switch (pickweight(list("bloodyspai" = 1, "stealth" = 1, "bond" = 1, "screwed" = 1, "guns" = 1, "murder" = 1, "implant" = 1, "hacker" = 1, "lordsingulo" = 1, "darklord" = 1))) if("bloodyspai") new /obj/item/clothing/under/chameleon(src) new /obj/item/clothing/mask/gas/voice(src) @@ -15,6 +15,14 @@ new /obj/item/device/chameleon(src) return + if("bond") + new /obj/item/weapon/gun/projectile/automatic/pistol(src) + new /obj/item/weapon/silencer(src) + new /obj/item/ammo_box/magazine/m10mm(src) + new /obj/item/ammo_box/magazine/m10mm(src) + new /obj/item/clothing/under/chameleon(src) + return + if("screwed") new /obj/item/device/sbeacondrop/bomb(src) new /obj/item/weapon/grenade/syndieminibomb(src) From 73dcd4101cbd64aa52154a7455074f2cd348f67f Mon Sep 17 00:00:00 2001 From: ikarrus Date: Sun, 27 Apr 2014 17:30:53 -0600 Subject: [PATCH 024/185] Thermite Effectiveness Scaling with Volume -The more thermite is applied to a wall, the faster it will burn -Scales between approx 10-25 seconds -Rwalls have a higher minimum threshold and burn time -Applying thermite to a wall now leaves a visible stain on the wall --- code/game/turfs/simulated/walls.dm | 22 ++++++++++++-------- code/modules/reagents/Chemistry-Reagents.dm | 13 +++++++----- icons/effects/effects.dmi | Bin 265104 -> 264318 bytes 3 files changed, 21 insertions(+), 14 deletions(-) diff --git a/code/game/turfs/simulated/walls.dm b/code/game/turfs/simulated/walls.dm index a8333d377b6..23294415c3f 100644 --- a/code/game/turfs/simulated/walls.dm +++ b/code/game/turfs/simulated/walls.dm @@ -282,23 +282,27 @@ /turf/simulated/wall/proc/thermitemelt(mob/user as mob) if(mineral == "diamond") return + overlays = list() var/obj/effect/overlay/O = new/obj/effect/overlay( src ) - O.name = "Thermite" + O.name = "thermite" O.desc = "Looks hot." O.icon = 'icons/effects/fire.dmi' O.icon_state = "2" O.anchored = 1 + O.opacity = 1 O.density = 1 O.layer = 5 - var/turf/simulated/floor/F = ChangeTurf(/turf/simulated/floor/plating) - F.burn_tile() - F.icon_state = "wall_thermite" - user << "The thermite melts through the wall." - - spawn(100) - if(O) qdel(O) -// F.sd_LumReset() //TODO: ~Carn + if(thermite >= 50) + var/turf/simulated/floor/F = ChangeTurf(/turf/simulated/floor/plating) + F.burn_tile() + F.icon_state = "wall_thermite" + spawn(max(100,300-thermite)) + if(O) qdel(O) + else + thermite = 0 + spawn(50) + if(O) qdel(O) return /turf/simulated/wall/meteorhit(obj/M as obj) diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm index d58256f5026..b7041820987 100644 --- a/code/modules/reagents/Chemistry-Reagents.dm +++ b/code/modules/reagents/Chemistry-Reagents.dm @@ -649,11 +649,14 @@ datum reaction_turf(var/turf/T, var/volume) src = null - if(volume >= 5) - if(istype(T, /turf/simulated/wall)) - T:thermite = 1 - T.overlays.Cut() - T.overlays = image('icons/effects/effects.dmi',icon_state = "thermite") + if(volume >= 1 && istype(T, /turf/simulated/wall)) + var/turf/simulated/wall/Wall = T + if(istype(Wall, /turf/simulated/wall/r_wall)) + Wall.thermite = Wall.thermite+(volume*2.5) + else + Wall.thermite = Wall.thermite+(volume*10) + Wall.overlays = list() + Wall.overlays += image('icons/effects/effects.dmi',"thermite") return on_mob_life(var/mob/living/M as mob) diff --git a/icons/effects/effects.dmi b/icons/effects/effects.dmi index e99e87a425d164d0ce4a7d5cac946c55fba4c75d..51d90bb62989ac8d0012e41c0fc48bcc87a466ff 100644 GIT binary patch delta 151873 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�!FVi7{AMy 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 NQ|-Z>V)Ax`{|_{_t=a$p delta 152694 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

;BLoVH6s=co|3o@+3Auz}-E2>tqAZOHOHB>u8Q? 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 From 8d9658bb2b17663281de86ddc416e88b9dea5891 Mon Sep 17 00:00:00 2001 From: phil235 Date: Wed, 30 Apr 2014 21:58:03 +0200 Subject: [PATCH 033/185] adding span class everywhere + fix attack messages --- .../mob/living/simple_animal/constructs.dm | 49 +++++++------------ 1 file changed, 17 insertions(+), 32 deletions(-) diff --git a/code/modules/mob/living/simple_animal/constructs.dm b/code/modules/mob/living/simple_animal/constructs.dm index fab74f9222e..5686e4667b4 100644 --- a/code/modules/mob/living/simple_animal/constructs.dm +++ b/code/modules/mob/living/simple_animal/constructs.dm @@ -36,9 +36,7 @@ /mob/living/simple_animal/construct/Die() ..() new /obj/item/weapon/ectoplasm (src.loc) - for(var/mob/M in viewers(src, null)) - if((M.client && !( M.blinded ))) - M.show_message("\red [src] collapses in a shattered heap. ") + visible_message("[src] collapses in a shattered heap.") ghostize() qdel(src) return @@ -97,8 +95,8 @@ else if(M.attack_sound) playsound(loc, M.attack_sound, 50, 1, 1) - for(var/mob/O in viewers(src, null)) - O.show_message("\The [M] [M.attacktext] \the [src]!", 1) + visible_message("\The [M] [M.attacktext] \the [src]!", \ + "\The [M] [M.attacktext] \the [src]!") add_logs(M, src, "attacked", admin=0) var/damage = rand(M.melee_damage_lower, M.melee_damage_upper) adjustBruteLoss(damage) @@ -108,14 +106,11 @@ var/damage = O.force if(O.damtype == BURN || O.damtype == BRUTE) adjustBruteLoss(damage) - for(var/mob/M in viewers(src, null)) - if ((M.client && !( M.blinded ))) - M.show_message("[src] has been attacked with [O] by [user]!") + visible_message("[src] has been attacked with [O] by [user]!", \ + "[src] has been attacked with [O] by [user]!") else - usr << "\red This weapon is ineffective, it does no damage." - for(var/mob/M in viewers(src, null)) - if ((M.client && !( M.blinded ))) - M.show_message("\red [user] gently taps [src] with [O]. ") + usr << "This weapon is ineffective, it does no damage." + visible_message("[user] gently taps [src] with [O].") /mob/living/simple_animal/construct/bullet_act(var/obj/item/projectile/Proj) if(!Proj) @@ -156,18 +151,13 @@ if(O.force >= 11) if(O.damtype == BURN || O.damtype == BRUTE) adjustBruteLoss(O.force) - for(var/mob/M in viewers(src, null)) - if ((M.client && !( M.blinded ))) - M.show_message("[src] has been attacked with [O] by [user]!") + visible_message("[src] has been attacked with [O] by [user]!", \ + "[src] has been attacked with [O] by [user]!") else - for(var/mob/M in viewers(src, null)) - if ((M.client && !( M.blinded ))) - M.show_message("\red \b [O] bounces harmlessly off of [src]. ") + visible_message("[O] bounces harmlessly off of [src].") else - usr << "\red This weapon is ineffective, it does no damage." - for(var/mob/M in viewers(src, null)) - if ((M.client && !( M.blinded ))) - M.show_message("\red [user] gently taps [src] with [O]. ") + usr << " This weapon is ineffective, it does no damage." + visible_message("[user] gently taps [src] with [O].") /mob/living/simple_animal/construct/armoured/bullet_act(var/obj/item/projectile/P) @@ -281,18 +271,13 @@ if (O.damtype == STAMINA) damage = 0 adjustBruteLoss(damage) - for(var/mob/M in viewers(src, null)) - if ((M.client && !( M.blinded ))) - M.show_message("[src] has been attacked with [O] by [user]!") + visible_message("[src] has been attacked with [O] by [user]!", \ + "[src] has been attacked with [O] by [user]!") else - for(var/mob/M in viewers(src, null)) - if ((M.client && !( M.blinded ))) - M.show_message("\red \b [O] bounces harmlessly off of [src]. ") + visible_message("[O] bounces harmlessly off of [src].") else - usr << "\red This weapon is ineffective, it does no damage." - for(var/mob/M in viewers(src, null)) - if ((M.client && !( M.blinded ))) - M.show_message("\red [user] gently taps [src] with [O]. ") + usr << "This weapon is ineffective, it does no damage." + visible_message("[user] gently taps [src] with [O].") From 5fd52bc6a816e871c167a5dfd622daa77b5b2649 Mon Sep 17 00:00:00 2001 From: GunHog Date: Wed, 30 Apr 2014 16:39:00 -0500 Subject: [PATCH 034/185] Removal of the Locked status from Security HUDs! --- code/modules/research/designs.dm | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm index 4d069029533..f3829bbb891 100644 --- a/code/modules/research/designs.dm +++ b/code/modules/research/designs.dm @@ -1827,7 +1827,7 @@ datum/design/security_hud build_type = PROTOLATHE materials = list("$metal" = 50, "$glass" = 50) build_path = /obj/item/clothing/glasses/hud/security - locked = 1 + datum/design/security_hud_night name = "Night Vision Security HUD" desc = "A heads-up display which provides id data and vision in complete darkness." @@ -1836,7 +1836,6 @@ datum/design/security_hud_night build_type = PROTOLATHE materials = list("$metal" = 200, "$glass" = 200, "$uranium" = 1000, "$gold" = 350) build_path = /obj/item/clothing/glasses/hud/security/night - locked = 1 ///////////////////////////////////////// //////////////////Test/////////////////// From 25b6628b897e2f03997a134dad47b2a5a1141521 Mon Sep 17 00:00:00 2001 From: Hornygranny Date: Wed, 30 Apr 2014 17:56:07 -0700 Subject: [PATCH 035/185] Fixes #3157 --- code/modules/mob/living/carbon/human/human_movement.dm | 2 +- code/modules/mob/mob_movement.dm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index 2760cf10c08..88b7fca5261 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -30,7 +30,7 @@ /mob/living/carbon/human/Process_Spacemove(var/check_drift = 0) //Can we act - if(restrained()) return 0 + if(!canmove) return 0 //Do we have a working jetpack if(istype(back, /obj/item/weapon/tank/jetpack)) diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm index db189fb416d..d9c7b15d4e3 100644 --- a/code/modules/mob/mob_movement.dm +++ b/code/modules/mob/mob_movement.dm @@ -351,7 +351,7 @@ ///Return 1 for movement 0 for none /mob/proc/Process_Spacemove(var/check_drift = 0) //First check to see if we can do things - if(restrained()) + if(!canmove) return 0 if(!isturf(loc)) //if they're in a disposal unit, for example From b544a945a97b5fca00765d3a20f23d5a7e8ff970 Mon Sep 17 00:00:00 2001 From: Aranclanos Date: Thu, 1 May 2014 06:01:14 -0300 Subject: [PATCH 036/185] Fixes issue #2489 Fixes issue #119 Transferred all the different colours of under clothes and shoes to obj/item/clothing/under/colour/XXX and obj/item/clothing/shoes/sneakers/XXX Added two extra options to the spawn menu of the game panel, clothing and food. --- _maps/map_files/tgstation.2.1.3.dmm | 12 +-- code/datums/supplypacks.dm | 2 +- code/game/gamemodes/antag_spawner.dm | 2 +- code/game/gamemodes/nuclear/nuclear.dm | 2 +- code/game/gamemodes/wizard/wizard.dm | 2 +- code/game/jobs/job/assistant.dm | 2 +- code/game/jobs/job/captain.dm | 4 +- code/game/jobs/job/civilian.dm | 18 ++-- code/game/jobs/job/civilian_chaplain.dm | 2 +- code/game/jobs/job/engineering.dm | 6 +- code/game/jobs/job/medical.dm | 10 +- code/game/jobs/job/science.dm | 6 +- code/game/jobs/job/security.dm | 2 +- code/game/machinery/vending.dm | 2 +- code/game/machinery/washing_machine.dm | 12 +-- code/game/objects/effects/landmarks.dm | 4 +- .../crates_lockers/closets/job_closets.dm | 4 +- .../crates_lockers/closets/secure/cargo.dm | 4 +- .../closets/secure/engineering.dm | 4 +- .../crates_lockers/closets/secure/medical.dm | 4 +- .../crates_lockers/closets/secure/personal.dm | 2 +- .../closets/secure/scientist.dm | 4 +- .../crates_lockers/closets/secure/security.dm | 10 +- .../crates_lockers/closets/utility_closets.dm | 4 +- .../crates_lockers/closets/wardrobe.dm | 98 +++++++++---------- code/modules/admin/create_object.dm | 2 +- code/modules/admin/topic.dm | 2 +- code/modules/admin/verbs/debug.dm | 34 +++---- code/modules/awaymissions/corpse.dm | 12 +-- code/modules/clothing/shoes/colour.dm | 30 +++--- code/modules/clothing/shoes/miscellaneous.dm | 2 +- code/modules/clothing/under/color.dm | 26 ++--- code/modules/mining/mine_items.dm | 2 +- 33 files changed, 167 insertions(+), 165 deletions(-) diff --git a/_maps/map_files/tgstation.2.1.3.dmm b/_maps/map_files/tgstation.2.1.3.dmm index f78d332b564..e591369670d 100644 --- a/_maps/map_files/tgstation.2.1.3.dmm +++ b/_maps/map_files/tgstation.2.1.3.dmm @@ -2493,7 +2493,7 @@ "aVW" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/port) "aVX" = (/obj/machinery/power/apc{dir = 1; name = "Port Emergency Storage APC"; pixel_y = 24},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/storage/emergency2) "aVY" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating,/area/maintenance/port) -"aVZ" = (/obj/item/clothing/gloves/rainbow,/obj/item/clothing/shoes/rainbow,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/item/clothing/under/rainbow,/obj/item/clothing/head/soft/rainbow,/turf/simulated/floor/plating,/area/maintenance/port) +"aVZ" = (/obj/item/clothing/gloves/rainbow,/obj/item/clothing/shoes/sneakers/rainbow,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/item/clothing/under/rainbow,/obj/item/clothing/head/soft/rainbow,/turf/simulated/floor/plating,/area/maintenance/port) "aWa" = (/obj/structure/reagent_dispensers/watertank,/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor,/area/storage/tools) "aWb" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor,/area/storage/tools) "aWc" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/machinery/light,/obj/item/device/multitool,/turf/simulated/floor,/area/storage/tools) @@ -5365,7 +5365,7 @@ "bZi" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/toxins/misc_lab) "bZj" = (/obj/machinery/door/airlock/glass_research{name = "Firing Range"; req_access_txt = "47"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/toxins/misc_lab) "bZk" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{tag = "icon-warningcorner (EAST)"; icon_state = "warningcorner"; dir = 4},/area/toxins/misc_lab) -"bZl" = (/obj/structure/closet/crate,/obj/item/clothing/under/lightpurple,/obj/item/weapon/spacecash/c200,/turf/simulated/floor/plating,/area/maintenance/asmaint2) +"bZl" = (/obj/structure/closet/crate,/obj/item/clothing/under/color/lightpurple,/obj/item/weapon/spacecash/c200,/turf/simulated/floor/plating,/area/maintenance/asmaint2) "bZm" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; external_pressure_bound = 0; icon_state = "in"; initialize_directions = 1; internal_pressure_bound = 4000; on = 1; pressure_checks = 2; pump_direction = 0},/turf/simulated/floor/engine/vacuum,/area/maintenance/incinerator) "bZn" = (/obj/machinery/atmospherics/pipe/simple/insulated{icon_state = "intact"; dir = 4},/turf/simulated/wall/r_wall,/area/maintenance/incinerator) "bZo" = (/obj/machinery/atmospherics/binary/pump{dir = 4; icon_state = "intact_on"; on = 1},/obj/structure/sign/fire{pixel_y = -32},/obj/machinery/access_button{command = "cycle_interior"; master_tag = "incinerator_access_control"; name = "Incinerator airlock control"; pixel_x = 24; pixel_y = 8},/turf/simulated/floor/plating,/area/maintenance/incinerator) @@ -7100,14 +7100,14 @@ "cGB" = (/turf/unsimulated/floor{dir = 8; icon_state = "carpetside"},/area/wizard_station) "cGC" = (/obj/effect/landmark/start{name = "wizard"},/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/wizard_station) "cGD" = (/turf/unsimulated/floor{dir = 4; icon_state = "carpetside"},/area/wizard_station) -"cGE" = (/obj/structure/rack,/obj/item/clothing/under/color/red,/obj/item/clothing/shoes/brown,/obj/item/clothing/suit/armor/tdome/red,/obj/item/clothing/head/helmet/thunderdome,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/melee/energy/sword/red,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) +"cGE" = (/obj/structure/rack,/obj/item/clothing/under/color/red,/obj/item/clothing/shoes/sneakers/brown,/obj/item/clothing/suit/armor/tdome/red,/obj/item/clothing/head/helmet/thunderdome,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/melee/energy/sword/red,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) "cGF" = (/obj/machinery/door/poddoor{id = "thunderdomegen"; name = "General Supply"},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) "cGG" = (/obj/effect/landmark{name = "tdome2"},/turf/unsimulated/floor{name = "plating"},/area/tdome/tdome2) "cGH" = (/obj/machinery/door/poddoor{id = "thunderdome"; name = "Thunderdome Blast Door"},/turf/unsimulated/floor{name = "plating"},/area/tdome) "cGI" = (/turf/simulated/floor{icon_state = "red"; dir = 8},/area/tdome) "cGJ" = (/turf/simulated/floor{icon_state = "green"; dir = 4},/area/tdome) "cGK" = (/obj/effect/landmark{name = "tdome1"},/turf/unsimulated/floor{name = "plating"},/area/tdome/tdome1) -"cGL" = (/obj/structure/rack,/obj/item/clothing/under/color/green,/obj/item/clothing/shoes/brown,/obj/item/clothing/suit/armor/tdome/green,/obj/item/clothing/head/helmet/thunderdome,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/melee/energy/sword/green,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) +"cGL" = (/obj/structure/rack,/obj/item/clothing/under/color/green,/obj/item/clothing/shoes/sneakers/brown,/obj/item/clothing/suit/armor/tdome/green,/obj/item/clothing/head/helmet/thunderdome,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/melee/energy/sword/green,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) "cGM" = (/obj/machinery/door/window{dir = 4; name = "Infirmary"; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) "cGN" = (/obj/machinery/door/window/westright{name = "Tool Storage"; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) "cGO" = (/obj/structure/table,/obj/item/device/sbeacondrop/bomb,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) @@ -7169,12 +7169,12 @@ "cHS" = (/turf/unsimulated/floor{dir = 8; icon_state = "chapel"},/area/wizard_station) "cHT" = (/obj/effect/decal/cleanable/blood,/mob/living/carbon/monkey,/turf/unsimulated/floor{icon_state = "chapel"},/area/wizard_station) "cHU" = (/turf/unsimulated/floor{icon_state = "chapel"},/area/wizard_station) -"cHV" = (/obj/structure/rack,/obj/item/clothing/under/color/red,/obj/item/clothing/shoes/brown,/obj/item/clothing/suit/armor/vest,/obj/item/clothing/head/helmet/swat,/obj/item/weapon/gun/energy/laser,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) +"cHV" = (/obj/structure/rack,/obj/item/clothing/under/color/red,/obj/item/clothing/shoes/sneakers/brown,/obj/item/clothing/suit/armor/vest,/obj/item/clothing/head/helmet/swat,/obj/item/weapon/gun/energy/laser,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) "cHW" = (/turf/unsimulated/wall,/area/tdome/tdomeadmin) "cHX" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 8},/area/tdome/tdomeadmin) "cHY" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows2"; dir = 8},/area/tdome/tdomeadmin) "cHZ" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 4},/area/tdome/tdomeadmin) -"cIa" = (/obj/structure/rack,/obj/item/clothing/under/color/green,/obj/item/clothing/shoes/brown,/obj/item/clothing/suit/armor/vest,/obj/item/clothing/head/helmet/swat,/obj/item/weapon/gun/energy/laser,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) +"cIa" = (/obj/structure/rack,/obj/item/clothing/under/color/green,/obj/item/clothing/shoes/sneakers/brown,/obj/item/clothing/suit/armor/vest,/obj/item/clothing/head/helmet/swat,/obj/item/weapon/gun/energy/laser,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) "cIb" = (/mob/living/simple_animal/hostile/creature{name = "Experiment 35b"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/wizard_station) "cIc" = (/turf/unsimulated/floor{dir = 1; icon_state = "chapel"},/area/wizard_station) "cId" = (/turf/unsimulated/floor{dir = 4; icon_state = "chapel"},/area/wizard_station) diff --git a/code/datums/supplypacks.dm b/code/datums/supplypacks.dm index 06894734078..10513df6032 100644 --- a/code/datums/supplypacks.dm +++ b/code/datums/supplypacks.dm @@ -1019,7 +1019,7 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine /obj/item/clothing/under/rank/clown, /obj/item/weapon/bikehorn, /obj/item/clothing/under/mime, - /obj/item/clothing/shoes/black, + /obj/item/clothing/shoes/sneakers/black, /obj/item/clothing/gloves/white, /obj/item/clothing/mask/gas/mime, /obj/item/clothing/head/beret, diff --git a/code/game/gamemodes/antag_spawner.dm b/code/game/gamemodes/antag_spawner.dm index f7632a02844..12080db7be8 100644 --- a/code/game/gamemodes/antag_spawner.dm +++ b/code/game/gamemodes/antag_spawner.dm @@ -106,7 +106,7 @@ /obj/item/weapon/antag_spawner/contract/equip_antag(mob/target as mob) target.equip_to_slot_or_del(new /obj/item/device/radio/headset(target), slot_ears) - target.equip_to_slot_or_del(new /obj/item/clothing/under/lightpurple(target), slot_w_uniform) + target.equip_to_slot_or_del(new /obj/item/clothing/under/color/lightpurple(target), slot_w_uniform) target.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal(target), slot_shoes) target.equip_to_slot_or_del(new /obj/item/clothing/suit/wizrobe(target), slot_wear_suit) target.equip_to_slot_or_del(new /obj/item/clothing/head/wizard(target), slot_head) diff --git a/code/game/gamemodes/nuclear/nuclear.dm b/code/game/gamemodes/nuclear/nuclear.dm index 4008de70f13..cdf38cdf2f0 100644 --- a/code/game/gamemodes/nuclear/nuclear.dm +++ b/code/game/gamemodes/nuclear/nuclear.dm @@ -197,7 +197,7 @@ synd_mob.equip_to_slot_or_del(R, slot_ears) synd_mob.equip_to_slot_or_del(new /obj/item/clothing/under/syndicate(synd_mob), slot_w_uniform) - synd_mob.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(synd_mob), slot_shoes) + synd_mob.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/black(synd_mob), slot_shoes) synd_mob.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/vest(synd_mob), slot_wear_suit) synd_mob.equip_to_slot_or_del(new /obj/item/clothing/gloves/combat(synd_mob), slot_gloves) synd_mob.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/swat(synd_mob), slot_head) diff --git a/code/game/gamemodes/wizard/wizard.dm b/code/game/gamemodes/wizard/wizard.dm index e86415a7a11..076ed86da5d 100644 --- a/code/game/gamemodes/wizard/wizard.dm +++ b/code/game/gamemodes/wizard/wizard.dm @@ -154,7 +154,7 @@ qdel(wizard_mob.l_store) wizard_mob.equip_to_slot_or_del(new /obj/item/device/radio/headset(wizard_mob), slot_ears) - wizard_mob.equip_to_slot_or_del(new /obj/item/clothing/under/lightpurple(wizard_mob), slot_w_uniform) + wizard_mob.equip_to_slot_or_del(new /obj/item/clothing/under/color/lightpurple(wizard_mob), slot_w_uniform) wizard_mob.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal(wizard_mob), slot_shoes) wizard_mob.equip_to_slot_or_del(new /obj/item/clothing/suit/wizrobe(wizard_mob), slot_wear_suit) wizard_mob.equip_to_slot_or_del(new /obj/item/clothing/head/wizard(wizard_mob), slot_head) diff --git a/code/game/jobs/job/assistant.dm b/code/game/jobs/job/assistant.dm index dff5243922f..d23c954f352 100644 --- a/code/game/jobs/job/assistant.dm +++ b/code/game/jobs/job/assistant.dm @@ -15,7 +15,7 @@ Assistant /datum/job/assistant/equip_items(var/mob/living/carbon/human/H) H.equip_to_slot_or_del(new /obj/item/clothing/under/color/grey(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/black(H), slot_shoes) /datum/job/assistant/get_access() if(config.jobs_have_maint_access & ASSISTANTS_HAVE_MAINT_ACCESS) //Config has assistant maint access set diff --git a/code/game/jobs/job/captain.dm b/code/game/jobs/job/captain.dm index 9beb962774a..873f2419d69 100644 --- a/code/game/jobs/job/captain.dm +++ b/code/game/jobs/job/captain.dm @@ -29,7 +29,7 @@ Captain H.equip_to_slot_or_del(U, slot_w_uniform) H.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/vest/capcarapace(H), slot_wear_suit) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/brown(H), slot_shoes) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/brown(H), slot_shoes) H.equip_to_slot_or_del(new /obj/item/clothing/head/caphat(H), slot_head) H.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses(H), slot_glasses) @@ -85,7 +85,7 @@ Head of Personnel /datum/job/hop/equip_items(var/mob/living/carbon/human/H) H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/head_of_personnel(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/brown(H), slot_shoes) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/brown(H), slot_shoes) H.equip_to_slot_or_del(new /obj/item/clothing/head/hopcap(H), slot_head) //Equip ID box diff --git a/code/game/jobs/job/civilian.dm b/code/game/jobs/job/civilian.dm index 65dc569ecc9..c7286a95faa 100644 --- a/code/game/jobs/job/civilian.dm +++ b/code/game/jobs/job/civilian.dm @@ -39,7 +39,7 @@ Bartender H.equip_to_slot_or_del(BPK, slot_back,1) /datum/job/bartender/equip_items(var/mob/living/carbon/human/H) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/black(H), slot_shoes) H.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/vest(H), slot_wear_suit) H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/bartender(H), slot_w_uniform) @@ -72,7 +72,7 @@ Chef /datum/job/chef/equip_items(var/mob/living/carbon/human/H) H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/chef(H), slot_w_uniform) H.equip_to_slot_or_del(new /obj/item/clothing/suit/chef(H), slot_wear_suit) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/black(H), slot_shoes) H.equip_to_slot_or_del(new /obj/item/clothing/head/chefhat(H), slot_head) /* @@ -97,7 +97,7 @@ Botanist /datum/job/hydro/equip_items(var/mob/living/carbon/human/H) H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/hydroponics(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/black(H), slot_shoes) H.equip_to_slot_or_del(new /obj/item/clothing/gloves/botanic_leather(H), slot_gloves) H.equip_to_slot_or_del(new /obj/item/clothing/suit/apron(H), slot_wear_suit) H.equip_to_slot_or_del(new /obj/item/device/analyzer/plant_analyzer(H), slot_s_store) @@ -124,7 +124,7 @@ Quartermaster /datum/job/qm/equip_items(var/mob/living/carbon/human/H) H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/cargo(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/brown(H), slot_shoes) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/brown(H), slot_shoes) H.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses(H), slot_glasses) H.equip_to_slot_or_del(new /obj/item/weapon/clipboard(H), slot_l_hand) @@ -150,7 +150,7 @@ Cargo Technician /datum/job/cargo_tech/equip_items(var/mob/living/carbon/human/H) H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/cargotech(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/black(H), slot_shoes) /* Shaft Miner @@ -177,7 +177,7 @@ Shaft Miner /datum/job/mining/equip_items(var/mob/living/carbon/human/H) H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/miner(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/black(H), slot_shoes) if(H.backbag == 1) H.equip_to_slot_or_del(new /obj/item/weapon/crowbar(H), slot_l_hand) @@ -253,7 +253,7 @@ Mime /datum/job/mime/equip_items(var/mob/living/carbon/human/H) H.equip_to_slot_or_del(new /obj/item/clothing/under/mime(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/black(H), slot_shoes) H.equip_to_slot_or_del(new /obj/item/clothing/gloves/white(H), slot_gloves) H.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/mime(H), slot_wear_mask) H.equip_to_slot_or_del(new /obj/item/clothing/head/beret(H), slot_head) @@ -295,7 +295,7 @@ Janitor /datum/job/janitor/equip_items(var/mob/living/carbon/human/H) H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/janitor(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/black(H), slot_shoes) /* Librarian @@ -318,7 +318,7 @@ Librarian /datum/job/librarian/equip_items(var/mob/living/carbon/human/H) H.equip_to_slot_or_del(new /obj/item/clothing/under/suit_jacket/red(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/black(H), slot_shoes) H.equip_to_slot_or_del(new /obj/item/weapon/storage/bag/books(H), slot_l_hand) H.equip_to_slot_or_del(new /obj/item/weapon/barcodescanner(H), slot_r_store) H.equip_to_slot_or_del(new /obj/item/device/laser_pointer(H), slot_l_store) diff --git a/code/game/jobs/job/civilian_chaplain.dm b/code/game/jobs/job/civilian_chaplain.dm index 9556b0b9410..23559197617 100644 --- a/code/game/jobs/job/civilian_chaplain.dm +++ b/code/game/jobs/job/civilian_chaplain.dm @@ -82,7 +82,7 @@ Chaplain /datum/job/chaplain/equip_items(var/mob/living/carbon/human/H) H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/chaplain(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/black(H), slot_shoes) var/obj/item/weapon/storage/bible/B = new /obj/item/weapon/storage/bible/booze(H) spawn(0) diff --git a/code/game/jobs/job/engineering.dm b/code/game/jobs/job/engineering.dm index 1e24c1260f8..72c39e1f707 100644 --- a/code/game/jobs/job/engineering.dm +++ b/code/game/jobs/job/engineering.dm @@ -33,7 +33,7 @@ Chief Engineer /datum/job/chief_engineer/equip_items(var/mob/living/carbon/human/H) H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/chief_engineer(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/brown(H), slot_shoes) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/brown(H), slot_shoes) H.equip_to_slot_or_del(new /obj/item/clothing/head/hardhat/white(H), slot_head) H.equip_to_slot_or_del(new /obj/item/weapon/storage/belt/utility/full(H), slot_belt) H.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(H), slot_gloves) @@ -66,7 +66,7 @@ Station Engineer /datum/job/engineer/equip_items(var/mob/living/carbon/human/H) H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/engineer(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/orange(H), slot_shoes) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/orange(H), slot_shoes) H.equip_to_slot_or_del(new /obj/item/weapon/storage/belt/utility/full(H), slot_belt) H.equip_to_slot_or_del(new /obj/item/clothing/head/hardhat(H), slot_head) H.equip_to_slot_or_del(new /obj/item/device/t_scanner(H), slot_r_store) @@ -96,6 +96,6 @@ Atmospheric Technician /datum/job/atmos/equip_items(var/mob/living/carbon/human/H) H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/atmospheric_technician(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/black(H), slot_shoes) H.equip_to_slot_or_del(new /obj/item/device/analyzer(H), slot_r_store) H.equip_to_slot_or_del(new /obj/item/weapon/storage/belt/utility/atmostech/(H), slot_belt) \ No newline at end of file diff --git a/code/game/jobs/job/medical.dm b/code/game/jobs/job/medical.dm index 9aeb3fc2c40..d800f2a9adc 100644 --- a/code/game/jobs/job/medical.dm +++ b/code/game/jobs/job/medical.dm @@ -29,7 +29,7 @@ Chief Medical Officer /datum/job/cmo/equip_items(var/mob/living/carbon/human/H) H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/chief_medical_officer(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/brown(H), slot_shoes) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/brown(H), slot_shoes) H.equip_to_slot_or_del(new /obj/item/clothing/suit/labcoat/cmo(H), slot_wear_suit) H.equip_to_slot_or_del(new /obj/item/weapon/storage/firstaid/regular(H), slot_l_hand) H.equip_to_slot_or_del(new /obj/item/device/flashlight/pen(H), slot_s_store) @@ -59,7 +59,7 @@ Medical Doctor /datum/job/doctor/equip_items(var/mob/living/carbon/human/H) H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/medical(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/white(H), slot_shoes) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/white(H), slot_shoes) H.equip_to_slot_or_del(new /obj/item/clothing/suit/labcoat(H), slot_wear_suit) H.equip_to_slot_or_del(new /obj/item/weapon/storage/firstaid/regular(H), slot_l_hand) H.equip_to_slot_or_del(new /obj/item/device/flashlight/pen(H), slot_s_store) @@ -86,7 +86,7 @@ Chemist /datum/job/chemist/equip_items(var/mob/living/carbon/human/H) H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/chemist(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/white(H), slot_shoes) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/white(H), slot_shoes) H.equip_to_slot_or_del(new /obj/item/clothing/suit/labcoat/chemist(H), slot_wear_suit) /* @@ -111,7 +111,7 @@ Geneticist /datum/job/geneticist/equip_items(var/mob/living/carbon/human/H) H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/geneticist(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/white(H), slot_shoes) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/white(H), slot_shoes) H.equip_to_slot_or_del(new /obj/item/clothing/suit/labcoat/genetics(H), slot_wear_suit) H.equip_to_slot_or_del(new /obj/item/device/flashlight/pen(H), slot_s_store) @@ -140,7 +140,7 @@ Virologist /datum/job/virologist/equip_items(var/mob/living/carbon/human/H) H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/virologist(H), slot_w_uniform) H.equip_to_slot_or_del(new /obj/item/clothing/mask/surgical(H), slot_wear_mask) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/white(H), slot_shoes) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/white(H), slot_shoes) H.equip_to_slot_or_del(new /obj/item/clothing/suit/labcoat/virologist(H), slot_wear_suit) H.equip_to_slot_or_del(new /obj/item/device/flashlight/pen(H), slot_s_store) diff --git a/code/game/jobs/job/science.dm b/code/game/jobs/job/science.dm index c1ab6726a52..51134d5d86e 100644 --- a/code/game/jobs/job/science.dm +++ b/code/game/jobs/job/science.dm @@ -30,7 +30,7 @@ Research Director access_tech_storage, access_minisat) /datum/job/rd/equip_items(var/mob/living/carbon/human/H) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/brown(H), slot_shoes) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/brown(H), slot_shoes) H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/research_director(H), slot_w_uniform) H.equip_to_slot_or_del(new /obj/item/clothing/suit/labcoat(H), slot_wear_suit) H.equip_to_slot_or_del(new /obj/item/weapon/clipboard(H), slot_l_hand) @@ -58,7 +58,7 @@ Scientist /datum/job/scientist/equip_items(var/mob/living/carbon/human/H) H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/scientist(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/white(H), slot_shoes) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/white(H), slot_shoes) H.equip_to_slot_or_del(new /obj/item/clothing/suit/labcoat/science(H), slot_wear_suit) /* @@ -83,6 +83,6 @@ Roboticist /datum/job/roboticist/equip_items(var/mob/living/carbon/human/H) H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/roboticist(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/black(H), slot_shoes) H.equip_to_slot_or_del(new /obj/item/clothing/suit/labcoat(H), slot_wear_suit) H.equip_to_slot_or_del(new /obj/item/weapon/storage/toolbox/mechanical(H), slot_l_hand) \ No newline at end of file diff --git a/code/game/jobs/job/security.dm b/code/game/jobs/job/security.dm index f9bc80aa797..e31a9a17ea0 100644 --- a/code/game/jobs/job/security.dm +++ b/code/game/jobs/job/security.dm @@ -122,7 +122,7 @@ Detective /datum/job/detective/equip_items(var/mob/living/carbon/human/H) H.equip_to_slot_or_del(new /obj/item/clothing/under/det(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/brown(H), slot_shoes) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/brown(H), slot_shoes) H.equip_to_slot_or_del(new /obj/item/clothing/head/det_hat(H), slot_head) H.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(H), slot_gloves) H.equip_to_slot_or_del(new /obj/item/clothing/suit/det_suit(H), slot_wear_suit) diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index ec83db9dcee..46ba132b37d 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -842,7 +842,7 @@ icon_state = "engi" icon_deny = "engi-deny" req_access_txt = "11" - products = list(/obj/item/clothing/under/rank/chief_engineer = 4,/obj/item/clothing/under/rank/engineer = 4,/obj/item/clothing/shoes/orange = 4,/obj/item/clothing/head/hardhat = 4, + products = list(/obj/item/clothing/under/rank/chief_engineer = 4,/obj/item/clothing/under/rank/engineer = 4,/obj/item/clothing/shoes/sneakers/orange = 4,/obj/item/clothing/head/hardhat = 4, /obj/item/weapon/storage/belt/utility = 4,/obj/item/clothing/glasses/meson = 4,/obj/item/clothing/gloves/yellow = 4, /obj/item/weapon/screwdriver = 12, /obj/item/weapon/crowbar = 12,/obj/item/weapon/wirecutters = 12,/obj/item/device/multitool = 12,/obj/item/weapon/wrench = 12,/obj/item/device/t_scanner = 12, /obj/item/weapon/stock_parts/cell = 8, /obj/item/weapon/weldingtool = 8,/obj/item/clothing/head/welding = 8, diff --git a/code/game/machinery/washing_machine.dm b/code/game/machinery/washing_machine.dm index 8ecd4881dac..43fc84c9ddf 100644 --- a/code/game/machinery/washing_machine.dm +++ b/code/game/machinery/washing_machine.dm @@ -70,8 +70,8 @@ var/new_softcap_icon_state = "" var/new_softcap_name = "" var/new_desc = "The colors are a bit dodgy." - for(var/T in typesof(/obj/item/clothing/under)) - var/obj/item/clothing/under/J = new T + for(var/T in typesof(/obj/item/clothing/under/color)) + var/obj/item/clothing/under/color/J = new T //world << "DEBUG: [wash_color] == [J.item_color]" if(wash_color == J.item_color) new_jumpsuit_icon_state = J.icon_state @@ -92,8 +92,8 @@ //world << "DEBUG: YUP! [new_icon_state] and [new_item_state]" break qdel(G) - for(var/T in typesof(/obj/item/clothing/shoes)) - var/obj/item/clothing/shoes/S = new T + for(var/T in typesof(/obj/item/clothing/shoes/sneakers)) + var/obj/item/clothing/shoes/sneakers/S = new T //world << "DEBUG: [wash_color] == [J.item_color]" if(wash_color == S.item_color) new_shoe_icon_state = S.icon_state @@ -123,7 +123,7 @@ break qdel(H) if(new_jumpsuit_icon_state && new_jumpsuit_item_state && new_jumpsuit_name) - for(var/obj/item/clothing/under/J in contents) + for(var/obj/item/clothing/under/color/J in contents) //world << "DEBUG: YUP! FOUND IT!" J.item_state = new_jumpsuit_item_state J.icon_state = new_jumpsuit_icon_state @@ -139,7 +139,7 @@ G.name = new_glove_name G.desc = new_desc if(new_shoe_icon_state && new_shoe_name) - for(var/obj/item/clothing/shoes/S in contents) + for(var/obj/item/clothing/shoes/sneakers/S in contents) //world << "DEBUG: YUP! FOUND IT!" if (S.chained == 1) S.chained = 0 diff --git a/code/game/objects/effects/landmarks.dm b/code/game/objects/effects/landmarks.dm index 1a163e0ece7..bd605edfc5a 100644 --- a/code/game/objects/effects/landmarks.dm +++ b/code/game/objects/effects/landmarks.dm @@ -136,7 +136,7 @@ /obj/effect/landmark/costume/scratch/New() new /obj/item/clothing/gloves/white(src.loc) - new /obj/item/clothing/shoes/white(src.loc) + new /obj/item/clothing/shoes/sneakers/white(src.loc) new /obj/item/clothing/under/scratch(src.loc) if (prob(30)) new /obj/item/clothing/head/cueball(src.loc) @@ -152,7 +152,7 @@ new /obj/item/clothing/glasses/monocle(src.loc) var/CHOICE= pick( /obj/item/clothing/head/bowler, /obj/item/clothing/head/that) new CHOICE(src.loc) - new /obj/item/clothing/shoes/black(src.loc) + new /obj/item/clothing/shoes/sneakers/black(src.loc) new /obj/item/weapon/cane(src.loc) new /obj/item/clothing/under/sl_suit(src.loc) new /obj/item/clothing/mask/fakemoustache(src.loc) diff --git a/code/game/objects/structures/crates_lockers/closets/job_closets.dm b/code/game/objects/structures/crates_lockers/closets/job_closets.dm index 258e2fdb674..106696aa1d7 100644 --- a/code/game/objects/structures/crates_lockers/closets/job_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/job_closets.dm @@ -29,8 +29,8 @@ new /obj/item/clothing/tie/waistcoat(src) new /obj/item/clothing/head/soft/black(src) new /obj/item/clothing/head/soft/black(src) - new /obj/item/clothing/shoes/black(src) - new /obj/item/clothing/shoes/black(src) + new /obj/item/clothing/shoes/sneakers/black(src) + new /obj/item/clothing/shoes/sneakers/black(src) /* * Chef diff --git a/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm b/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm index 7bca28cdce5..2558ee8af42 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm @@ -12,7 +12,7 @@ ..() sleep(2) new /obj/item/clothing/under/rank/cargotech(src) - new /obj/item/clothing/shoes/black(src) + new /obj/item/clothing/shoes/sneakers/black(src) new /obj/item/device/radio/headset/headset_cargo(src) new /obj/item/clothing/gloves/black(src) new /obj/item/clothing/head/soft(src) @@ -33,7 +33,7 @@ ..() sleep(2) new /obj/item/clothing/under/rank/cargo(src) - new /obj/item/clothing/shoes/brown(src) + new /obj/item/clothing/shoes/sneakers/brown(src) new /obj/item/device/radio/headset/headset_cargo(src) new /obj/item/clothing/gloves/black(src) // new /obj/item/weapon/cartridge/quartermaster(src) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm index d1a5ed693c2..5a23f5acf61 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm @@ -21,7 +21,7 @@ new /obj/item/clothing/head/hardhat/white(src) new /obj/item/clothing/head/welding(src) new /obj/item/clothing/gloves/yellow(src) - new /obj/item/clothing/shoes/brown(src) + new /obj/item/clothing/shoes/sneakers/brown(src) new /obj/item/weapon/cartridge/ce(src) new /obj/item/device/radio/headset/heads/ce(src) new /obj/item/weapon/storage/toolbox/mechanical(src) @@ -106,7 +106,7 @@ else new /obj/item/weapon/storage/backpack/satchel_eng(src) new /obj/item/clothing/under/rank/engineer(src) - new /obj/item/clothing/shoes/orange(src) + new /obj/item/clothing/shoes/sneakers/orange(src) new /obj/item/weapon/storage/toolbox/mechanical(src) // new /obj/item/weapon/cartridge/engineering(src) new /obj/item/device/radio/headset/headset_eng(src) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm index fcce1e06939..bbe759dec0c 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm @@ -86,7 +86,7 @@ new /obj/item/clothing/under/rank/medical/purple(src) new /obj/item/clothing/under/rank/medical(src) new /obj/item/clothing/suit/labcoat(src) - new /obj/item/clothing/shoes/white(src) + new /obj/item/clothing/shoes/sneakers/white(src) // new /obj/item/weapon/cartridge/medical(src) new /obj/item/device/radio/headset/headset_med(src) new /obj/item/weapon/storage/belt/medical(src) @@ -117,7 +117,7 @@ new /obj/item/clothing/suit/labcoat/cmo(src) new /obj/item/weapon/cartridge/cmo(src) new /obj/item/clothing/gloves/latex(src) - new /obj/item/clothing/shoes/brown (src) + new /obj/item/clothing/shoes/sneakers/brown (src) new /obj/item/device/radio/headset/heads/cmo(src) new /obj/item/weapon/storage/belt/medical(src) new /obj/item/device/flash(src) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/personal.dm b/code/game/objects/structures/crates_lockers/closets/secure/personal.dm index 1dad4811ea5..ebdcba771d8 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/personal.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/personal.dm @@ -21,7 +21,7 @@ ..() contents.Cut() new /obj/item/clothing/under/color/white( src ) - new /obj/item/clothing/shoes/white( src ) + new /obj/item/clothing/shoes/sneakers/white( src ) return diff --git a/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm b/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm index 782af7f7bcc..e06c2b660c9 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm @@ -13,7 +13,7 @@ sleep(2) new /obj/item/clothing/under/rank/scientist(src) new /obj/item/clothing/suit/labcoat/science(src) - new /obj/item/clothing/shoes/white(src) + new /obj/item/clothing/shoes/sneakers/white(src) // new /obj/item/weapon/cartridge/signal/toxins(src) new /obj/item/device/radio/headset/headset_sci(src) new /obj/item/weapon/tank/air(src) @@ -40,7 +40,7 @@ new /obj/item/clothing/under/rank/research_director(src) new /obj/item/clothing/suit/labcoat(src) new /obj/item/weapon/cartridge/rd(src) - new /obj/item/clothing/shoes/white(src) + new /obj/item/clothing/shoes/sneakers/white(src) new /obj/item/clothing/gloves/latex(src) new /obj/item/device/radio/headset/heads/rd(src) new /obj/item/weapon/tank/air(src) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm index 041eb35ad0b..369f3b141d9 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm @@ -22,7 +22,7 @@ new /obj/item/clothing/suit/armor/vest/capcarapace(src) new /obj/item/weapon/cartridge/captain(src) new /obj/item/clothing/head/helmet/swat(src) - new /obj/item/clothing/shoes/brown(src) + new /obj/item/clothing/shoes/sneakers/brown(src) new /obj/item/device/radio/headset/heads/captain(src) new /obj/item/clothing/gloves/captain(src) new /obj/item/weapon/gun/energy/gun(src) @@ -47,7 +47,7 @@ new /obj/item/clothing/head/hopcap(src) new /obj/item/weapon/cartridge/hop(src) new /obj/item/device/radio/headset/heads/hop(src) - new /obj/item/clothing/shoes/brown(src) + new /obj/item/clothing/shoes/sneakers/brown(src) new /obj/item/weapon/storage/box/ids(src) new /obj/item/weapon/storage/box/ids(src) new /obj/item/clothing/suit/armor/vest(src) @@ -203,7 +203,7 @@ new /obj/item/clothing/suit/det_suit(src) new /obj/item/clothing/gloves/black(src) new /obj/item/clothing/head/det_hat(src) - new /obj/item/clothing/shoes/brown(src) + new /obj/item/clothing/shoes/sneakers/brown(src) new /obj/item/weapon/storage/box/evidence(src) new /obj/item/weapon/clipboard(src) new /obj/item/device/radio/headset/headset_sec(src) @@ -248,7 +248,7 @@ New() new /obj/item/clothing/under/color/orange( src ) - new /obj/item/clothing/shoes/orange( src ) + new /obj/item/clothing/shoes/sneakers/orange( src ) return @@ -260,7 +260,7 @@ New() ..() sleep(2) - new /obj/item/clothing/shoes/brown(src) + new /obj/item/clothing/shoes/sneakers/brown(src) new /obj/item/weapon/paper/Court (src) new /obj/item/weapon/paper/Court (src) new /obj/item/weapon/paper/Court (src) diff --git a/code/game/objects/structures/crates_lockers/closets/utility_closets.dm b/code/game/objects/structures/crates_lockers/closets/utility_closets.dm index 4e0462c63f3..d9f4944a19b 100644 --- a/code/game/objects/structures/crates_lockers/closets/utility_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/utility_closets.dm @@ -168,7 +168,7 @@ sleep(2) new /obj/item/clothing/suit/bomb_suit( src ) new /obj/item/clothing/under/color/black( src ) - new /obj/item/clothing/shoes/black( src ) + new /obj/item/clothing/shoes/sneakers/black( src ) new /obj/item/clothing/head/bomb_hood( src ) @@ -184,7 +184,7 @@ sleep(2) new /obj/item/clothing/suit/bomb_suit/security( src ) new /obj/item/clothing/under/rank/security( src ) - new /obj/item/clothing/shoes/brown( src ) + new /obj/item/clothing/shoes/sneakers/brown( src ) new /obj/item/clothing/head/bomb_hood/security( src ) /* diff --git a/code/game/objects/structures/crates_lockers/closets/wardrobe.dm b/code/game/objects/structures/crates_lockers/closets/wardrobe.dm index f95afb54509..b48f9b5a2d0 100644 --- a/code/game/objects/structures/crates_lockers/closets/wardrobe.dm +++ b/code/game/objects/structures/crates_lockers/closets/wardrobe.dm @@ -8,9 +8,9 @@ new /obj/item/clothing/under/color/blue(src) new /obj/item/clothing/under/color/blue(src) new /obj/item/clothing/under/color/blue(src) - new /obj/item/clothing/shoes/brown(src) - new /obj/item/clothing/shoes/brown(src) - new /obj/item/clothing/shoes/brown(src) + new /obj/item/clothing/shoes/sneakers/brown(src) + new /obj/item/clothing/shoes/sneakers/brown(src) + new /obj/item/clothing/shoes/sneakers/brown(src) return @@ -58,9 +58,9 @@ new /obj/item/clothing/under/color/pink(src) new /obj/item/clothing/under/color/pink(src) new /obj/item/clothing/under/color/pink(src) - new /obj/item/clothing/shoes/brown(src) - new /obj/item/clothing/shoes/brown(src) - new /obj/item/clothing/shoes/brown(src) + new /obj/item/clothing/shoes/sneakers/brown(src) + new /obj/item/clothing/shoes/sneakers/brown(src) + new /obj/item/clothing/shoes/sneakers/brown(src) return /obj/structure/closet/wardrobe/black @@ -72,9 +72,9 @@ new /obj/item/clothing/under/color/black(src) new /obj/item/clothing/under/color/black(src) new /obj/item/clothing/under/color/black(src) - new /obj/item/clothing/shoes/black(src) - new /obj/item/clothing/shoes/black(src) - new /obj/item/clothing/shoes/black(src) + new /obj/item/clothing/shoes/sneakers/black(src) + new /obj/item/clothing/shoes/sneakers/black(src) + new /obj/item/clothing/shoes/sneakers/black(src) new /obj/item/clothing/head/that(src) new /obj/item/clothing/head/that(src) new /obj/item/clothing/head/that(src) @@ -92,7 +92,7 @@ /obj/structure/closet/wardrobe/chaplain_black/New() new /obj/item/clothing/under/rank/chaplain(src) - new /obj/item/clothing/shoes/black(src) + new /obj/item/clothing/shoes/sneakers/black(src) new /obj/item/clothing/suit/nun(src) new /obj/item/clothing/head/nun_hood(src) new /obj/item/clothing/suit/chaplain_hoodie(src) @@ -113,9 +113,9 @@ new /obj/item/clothing/under/color/green(src) new /obj/item/clothing/under/color/green(src) new /obj/item/clothing/under/color/green(src) - new /obj/item/clothing/shoes/black(src) - new /obj/item/clothing/shoes/black(src) - new /obj/item/clothing/shoes/black(src) + new /obj/item/clothing/shoes/sneakers/black(src) + new /obj/item/clothing/shoes/sneakers/black(src) + new /obj/item/clothing/shoes/sneakers/black(src) return @@ -129,9 +129,9 @@ new /obj/item/clothing/under/color/orange(src) new /obj/item/clothing/under/color/orange(src) new /obj/item/clothing/under/color/orange(src) - new /obj/item/clothing/shoes/orange(src) - new /obj/item/clothing/shoes/orange(src) - new /obj/item/clothing/shoes/orange(src) + new /obj/item/clothing/shoes/sneakers/orange(src) + new /obj/item/clothing/shoes/sneakers/orange(src) + new /obj/item/clothing/shoes/sneakers/orange(src) return @@ -144,9 +144,9 @@ new /obj/item/clothing/under/color/yellow(src) new /obj/item/clothing/under/color/yellow(src) new /obj/item/clothing/under/color/yellow(src) - new /obj/item/clothing/shoes/orange(src) - new /obj/item/clothing/shoes/orange(src) - new /obj/item/clothing/shoes/orange(src) + new /obj/item/clothing/shoes/sneakers/orange(src) + new /obj/item/clothing/shoes/sneakers/orange(src) + new /obj/item/clothing/shoes/sneakers/orange(src) return @@ -162,9 +162,9 @@ new /obj/item/device/analyzer(src) new /obj/item/device/analyzer(src) new /obj/item/device/analyzer(src) - new /obj/item/clothing/shoes/black(src) - new /obj/item/clothing/shoes/black(src) - new /obj/item/clothing/shoes/black(src) + new /obj/item/clothing/shoes/sneakers/black(src) + new /obj/item/clothing/shoes/sneakers/black(src) + new /obj/item/clothing/shoes/sneakers/black(src) return @@ -178,9 +178,9 @@ new /obj/item/clothing/under/rank/engineer(src) new /obj/item/clothing/under/rank/engineer(src) new /obj/item/clothing/under/rank/engineer(src) - new /obj/item/clothing/shoes/orange(src) - new /obj/item/clothing/shoes/orange(src) - new /obj/item/clothing/shoes/orange(src) + new /obj/item/clothing/shoes/sneakers/orange(src) + new /obj/item/clothing/shoes/sneakers/orange(src) + new /obj/item/clothing/shoes/sneakers/orange(src) return @@ -193,9 +193,9 @@ new /obj/item/clothing/under/color/white(src) new /obj/item/clothing/under/color/white(src) new /obj/item/clothing/under/color/white(src) - new /obj/item/clothing/shoes/white(src) - new /obj/item/clothing/shoes/white(src) - new /obj/item/clothing/shoes/white(src) + new /obj/item/clothing/shoes/sneakers/white(src) + new /obj/item/clothing/shoes/sneakers/white(src) + new /obj/item/clothing/shoes/sneakers/white(src) return @@ -209,10 +209,10 @@ new /obj/item/clothing/under/pj/red(src) new /obj/item/clothing/under/pj/blue(src) new /obj/item/clothing/under/pj/blue(src) - new /obj/item/clothing/shoes/white(src) - new /obj/item/clothing/shoes/white(src) - new /obj/item/clothing/shoes/white(src) - new /obj/item/clothing/shoes/white(src) + new /obj/item/clothing/shoes/sneakers/white(src) + new /obj/item/clothing/shoes/sneakers/white(src) + new /obj/item/clothing/shoes/sneakers/white(src) + new /obj/item/clothing/shoes/sneakers/white(src) return @@ -228,9 +228,9 @@ new /obj/item/clothing/suit/labcoat(src) new /obj/item/clothing/suit/labcoat(src) new /obj/item/clothing/suit/labcoat(src) - new /obj/item/clothing/shoes/white(src) - new /obj/item/clothing/shoes/white(src) - new /obj/item/clothing/shoes/white(src) + new /obj/item/clothing/shoes/sneakers/white(src) + new /obj/item/clothing/shoes/sneakers/white(src) + new /obj/item/clothing/shoes/sneakers/white(src) return @@ -244,8 +244,8 @@ new /obj/item/clothing/under/rank/roboticist(src) new /obj/item/clothing/suit/labcoat(src) new /obj/item/clothing/suit/labcoat(src) - new /obj/item/clothing/shoes/black(src) - new /obj/item/clothing/shoes/black(src) + new /obj/item/clothing/shoes/sneakers/black(src) + new /obj/item/clothing/shoes/sneakers/black(src) new /obj/item/clothing/gloves/black(src) new /obj/item/clothing/gloves/black(src) new /obj/item/clothing/head/soft/black(src) @@ -261,8 +261,8 @@ /obj/structure/closet/wardrobe/chemistry_white/New() new /obj/item/clothing/under/rank/chemist(src) new /obj/item/clothing/under/rank/chemist(src) - new /obj/item/clothing/shoes/white(src) - new /obj/item/clothing/shoes/white(src) + new /obj/item/clothing/shoes/sneakers/white(src) + new /obj/item/clothing/shoes/sneakers/white(src) new /obj/item/clothing/suit/labcoat/chemist(src) new /obj/item/clothing/suit/labcoat/chemist(src) return @@ -276,8 +276,8 @@ /obj/structure/closet/wardrobe/genetics_white/New() new /obj/item/clothing/under/rank/geneticist(src) new /obj/item/clothing/under/rank/geneticist(src) - new /obj/item/clothing/shoes/white(src) - new /obj/item/clothing/shoes/white(src) + new /obj/item/clothing/shoes/sneakers/white(src) + new /obj/item/clothing/shoes/sneakers/white(src) new /obj/item/clothing/suit/labcoat/genetics(src) new /obj/item/clothing/suit/labcoat/genetics(src) return @@ -291,8 +291,8 @@ /obj/structure/closet/wardrobe/virology_white/New() new /obj/item/clothing/under/rank/virologist(src) new /obj/item/clothing/under/rank/virologist(src) - new /obj/item/clothing/shoes/white(src) - new /obj/item/clothing/shoes/white(src) + new /obj/item/clothing/shoes/sneakers/white(src) + new /obj/item/clothing/shoes/sneakers/white(src) new /obj/item/clothing/suit/labcoat/virologist(src) new /obj/item/clothing/suit/labcoat/virologist(src) new /obj/item/clothing/mask/surgical(src) @@ -309,9 +309,9 @@ new /obj/item/clothing/under/color/grey(src) new /obj/item/clothing/under/color/grey(src) new /obj/item/clothing/under/color/grey(src) - new /obj/item/clothing/shoes/black(src) - new /obj/item/clothing/shoes/black(src) - new /obj/item/clothing/shoes/black(src) + new /obj/item/clothing/shoes/sneakers/black(src) + new /obj/item/clothing/shoes/sneakers/black(src) + new /obj/item/clothing/shoes/sneakers/black(src) new /obj/item/clothing/head/soft/grey(src) new /obj/item/clothing/head/soft/grey(src) new /obj/item/clothing/head/soft/grey(src) @@ -334,7 +334,7 @@ new /obj/item/clothing/under/color/green(src) new /obj/item/clothing/under/color/orange(src) new /obj/item/clothing/under/color/pink(src) - new /obj/item/clothing/shoes/black(src) - new /obj/item/clothing/shoes/brown(src) - new /obj/item/clothing/shoes/white(src) + new /obj/item/clothing/shoes/sneakers/black(src) + new /obj/item/clothing/shoes/sneakers/brown(src) + new /obj/item/clothing/shoes/sneakers/white(src) return diff --git a/code/modules/admin/create_object.dm b/code/modules/admin/create_object.dm index 5b5f926e4b1..7306af6e4ff 100644 --- a/code/modules/admin/create_object.dm +++ b/code/modules/admin/create_object.dm @@ -15,7 +15,7 @@ var/quick_create_object_html = null var/pathtext = null - pathtext = input("Select the path of the object you wish to create.", "Path", "/obj") in list("/obj","/obj/structure","/obj/item","/obj/item/weapon","/obj/machinery") + pathtext = input("Select the path of the object you wish to create.", "Path", "/obj") in list("/obj","/obj/structure","/obj/item","/obj/item/clothing","/obj/item/weapon/reagent_containers/food","/obj/item/weapon","/obj/machinery") var path = text2path(pathtext) diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index de8d3aad943..b1a5e9de492 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -1076,7 +1076,7 @@ if(istype(M, /mob/living/carbon/human)) var/mob/living/carbon/human/observer = M observer.equip_to_slot_or_del(new /obj/item/clothing/under/suit_jacket(observer), slot_w_uniform) - observer.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(observer), slot_shoes) + observer.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/black(observer), slot_shoes) M.Paralyse(5) sleep(5) M.loc = pick(tdomeobserve) diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index 69fb4233213..61c1703ee45 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -662,7 +662,7 @@ var/global/list/g_fancy_list_of_safe_types = null M.equip_to_slot_or_del(BPK, slot_back,1) M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears) M.equip_to_slot_or_del(new /obj/item/clothing/under/color/grey(M), slot_w_uniform) - M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes) + M.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/black(M), slot_shoes) var/obj/item/weapon/card/id/W = new(M) W.assignment = "Assistant" @@ -677,7 +677,7 @@ var/global/list/g_fancy_list_of_safe_types = null if ("standard space gear") - M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes) + M.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/black(M), slot_shoes) M.equip_to_slot_or_del(new /obj/item/clothing/under/color/grey(M), slot_w_uniform) M.equip_to_slot_or_del(new /obj/item/clothing/suit/space(M), slot_wear_suit) @@ -692,7 +692,7 @@ var/global/list/g_fancy_list_of_safe_types = null M.equip_to_slot_or_del(new /obj/item/clothing/under/color/red(M), slot_w_uniform) else M.equip_to_slot_or_del(new /obj/item/clothing/under/color/green(M), slot_w_uniform) - M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes) + M.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/black(M), slot_shoes) M.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/vest(M), slot_wear_suit) M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/thunderdome(M), slot_head) @@ -704,7 +704,7 @@ var/global/list/g_fancy_list_of_safe_types = null if ("tournament gangster") //gangster are supposed to fight each other. --rastaf0 M.equip_to_slot_or_del(new /obj/item/clothing/under/det(M), slot_w_uniform) - M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes) + M.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/black(M), slot_shoes) M.equip_to_slot_or_del(new /obj/item/clothing/suit/det_suit(M), slot_wear_suit) M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/monocle(M), slot_glasses) @@ -716,7 +716,7 @@ var/global/list/g_fancy_list_of_safe_types = null if ("tournament chef") //Steven Seagal FTW M.equip_to_slot_or_del(new /obj/item/clothing/under/rank/chef(M), slot_w_uniform) M.equip_to_slot_or_del(new /obj/item/clothing/suit/chef(M), slot_wear_suit) - M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes) + M.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/black(M), slot_shoes) M.equip_to_slot_or_del(new /obj/item/clothing/head/chefhat(M), slot_head) M.equip_to_slot_or_del(new /obj/item/weapon/kitchen/rollingpin(M), slot_r_hand) @@ -726,7 +726,7 @@ var/global/list/g_fancy_list_of_safe_types = null if ("tournament janitor") M.equip_to_slot_or_del(new /obj/item/clothing/under/rank/janitor(M), slot_w_uniform) - M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes) + M.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/black(M), slot_shoes) var/obj/item/weapon/storage/backpack/backpack = new(M) for(var/obj/item/I in backpack) qdel(I) @@ -749,7 +749,7 @@ var/global/list/g_fancy_list_of_safe_types = null if ("lasertag red") M.equip_to_slot_or_del(new /obj/item/clothing/under/color/red(M), slot_w_uniform) - M.equip_to_slot_or_del(new /obj/item/clothing/shoes/red(M), slot_shoes) + M.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/red(M), slot_shoes) M.equip_to_slot_or_del(new /obj/item/clothing/gloves/red(M), slot_gloves) M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/redtaghelm(M), slot_head) M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears) @@ -760,7 +760,7 @@ var/global/list/g_fancy_list_of_safe_types = null if ("lasertag blue") M.equip_to_slot_or_del(new /obj/item/clothing/under/color/blue(M), slot_w_uniform) - M.equip_to_slot_or_del(new /obj/item/clothing/shoes/blue(M), slot_shoes) + M.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/blue(M), slot_shoes) M.equip_to_slot_or_del(new /obj/item/clothing/gloves/blue(M), slot_gloves) M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/bluetaghelm(M), slot_head) M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears) @@ -771,14 +771,14 @@ var/global/list/g_fancy_list_of_safe_types = null if ("pirate") M.equip_to_slot_or_del(new /obj/item/clothing/under/pirate(M), slot_w_uniform) - M.equip_to_slot_or_del(new /obj/item/clothing/shoes/brown(M), slot_shoes) + M.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/brown(M), slot_shoes) M.equip_to_slot_or_del(new /obj/item/clothing/head/bandana(M), slot_head) M.equip_to_slot_or_del(new /obj/item/clothing/glasses/eyepatch(M), slot_glasses) M.equip_to_slot_or_del(new /obj/item/weapon/melee/energy/sword/pirate(M), slot_r_hand) if ("space pirate") M.equip_to_slot_or_del(new /obj/item/clothing/under/pirate(M), slot_w_uniform) - M.equip_to_slot_or_del(new /obj/item/clothing/shoes/brown(M), slot_shoes) + M.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/brown(M), slot_shoes) M.equip_to_slot_or_del(new /obj/item/clothing/suit/space/pirate(M), slot_wear_suit) M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/pirate(M), slot_head) M.equip_to_slot_or_del(new /obj/item/clothing/glasses/eyepatch(M), slot_glasses) @@ -788,7 +788,7 @@ var/global/list/g_fancy_list_of_safe_types = null /* if ("soviet soldier") M.equip_to_slot_or_del(new /obj/item/clothing/under/soviet(M), slot_w_uniform) - M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes) + M.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/black(M), slot_shoes) M.equip_to_slot_or_del(new /obj/item/clothing/head/ushanka(M), slot_head) */ @@ -816,7 +816,7 @@ var/global/list/g_fancy_list_of_safe_types = null if("masked killer") M.equip_to_slot_or_del(new /obj/item/clothing/under/overalls(M), slot_w_uniform) - M.equip_to_slot_or_del(new /obj/item/clothing/shoes/white(M), slot_shoes) + M.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/white(M), slot_shoes) M.equip_to_slot_or_del(new /obj/item/clothing/gloves/latex(M), slot_gloves) M.equip_to_slot_or_del(new /obj/item/clothing/mask/surgical(M), slot_wear_mask) M.equip_to_slot_or_del(new /obj/item/clothing/head/welding(M), slot_head) @@ -835,7 +835,7 @@ var/global/list/g_fancy_list_of_safe_types = null if("assassin") M.equip_to_slot_or_del(new /obj/item/clothing/under/suit_jacket(M), slot_w_uniform) - M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes) + M.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/black(M), slot_shoes) M.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(M), slot_gloves) M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears) M.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses(M), slot_glasses) @@ -917,7 +917,7 @@ var/global/list/g_fancy_list_of_safe_types = null */ if("centcom official") M.equip_to_slot_or_del(new /obj/item/clothing/under/rank/centcom_officer(M), slot_w_uniform) - M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes) + M.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/black(M), slot_shoes) M.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(M), slot_gloves) M.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_com(M), slot_ears) M.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses(M), slot_glasses) @@ -989,7 +989,7 @@ var/global/list/g_fancy_list_of_safe_types = null M.equip_to_slot_or_del(W, slot_wear_id) if("blue wizard") - M.equip_to_slot_or_del(new /obj/item/clothing/under/lightpurple(M), slot_w_uniform) + M.equip_to_slot_or_del(new /obj/item/clothing/under/color/lightpurple(M), slot_w_uniform) M.equip_to_slot_or_del(new /obj/item/clothing/suit/wizrobe(M), slot_wear_suit) M.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal(M), slot_shoes) M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears) @@ -1001,7 +1001,7 @@ var/global/list/g_fancy_list_of_safe_types = null M.equip_to_slot_or_del(new /obj/item/weapon/storage/box(M), slot_in_backpack) if("red wizard") - M.equip_to_slot_or_del(new /obj/item/clothing/under/lightpurple(M), slot_w_uniform) + M.equip_to_slot_or_del(new /obj/item/clothing/under/color/lightpurple(M), slot_w_uniform) M.equip_to_slot_or_del(new /obj/item/clothing/suit/wizrobe/red(M), slot_wear_suit) M.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal(M), slot_shoes) M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears) @@ -1013,7 +1013,7 @@ var/global/list/g_fancy_list_of_safe_types = null M.equip_to_slot_or_del(new /obj/item/weapon/storage/box(M), slot_in_backpack) if("marisa wizard") - M.equip_to_slot_or_del(new /obj/item/clothing/under/lightpurple(M), slot_w_uniform) + M.equip_to_slot_or_del(new /obj/item/clothing/under/color/lightpurple(M), slot_w_uniform) M.equip_to_slot_or_del(new /obj/item/clothing/suit/wizrobe/marisa(M), slot_wear_suit) M.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal/marisa(M), slot_shoes) M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears) diff --git a/code/modules/awaymissions/corpse.dm b/code/modules/awaymissions/corpse.dm index 7d21b7bd80d..4810f26c8e6 100644 --- a/code/modules/awaymissions/corpse.dm +++ b/code/modules/awaymissions/corpse.dm @@ -161,7 +161,7 @@ name = "Chef" corpseuniform = /obj/item/clothing/under/rank/chef corpsesuit = /obj/item/clothing/suit/chef/classic - corpseshoes = /obj/item/clothing/shoes/black + corpseshoes = /obj/item/clothing/shoes/sneakers/black corpsehelmet = /obj/item/clothing/head/chefhat corpseback = /obj/item/weapon/storage/backpack corpseradio = /obj/item/device/radio/headset @@ -177,7 +177,7 @@ corpsesuit = /obj/item/clothing/suit/labcoat corpseback = /obj/item/weapon/storage/backpack/medic corpsepocket1 = /obj/item/device/flashlight/pen - corpseshoes = /obj/item/clothing/shoes/black + corpseshoes = /obj/item/clothing/shoes/sneakers/black corpseid = 1 corpseidjob = "Medical Doctor" corpseidaccess = "Medical Doctor" @@ -187,7 +187,7 @@ corpseradio = /obj/item/device/radio/headset/headset_eng corpseuniform = /obj/item/clothing/under/rank/engineer corpseback = /obj/item/weapon/storage/backpack/industrial - corpseshoes = /obj/item/clothing/shoes/orange + corpseshoes = /obj/item/clothing/shoes/sneakers/orange corpsebelt = /obj/item/weapon/storage/belt/utility/full corpsegloves = /obj/item/clothing/gloves/yellow corpsehelmet = /obj/item/clothing/head/hardhat @@ -218,7 +218,7 @@ corpseuniform = /obj/item/clothing/under/rank/scientist corpsesuit = /obj/item/clothing/suit/labcoat/science corpseback = /obj/item/weapon/storage/backpack - corpseshoes = /obj/item/clothing/shoes/white + corpseshoes = /obj/item/clothing/shoes/sneakers/white corpseid = 1 corpseidjob = "Scientist" corpseidaccess = "Scientist" @@ -228,7 +228,7 @@ corpseuniform = /obj/item/clothing/under/rank/miner corpsegloves = /obj/item/clothing/gloves/black corpseback = /obj/item/weapon/storage/backpack/industrial - corpseshoes = /obj/item/clothing/shoes/black + corpseshoes = /obj/item/clothing/shoes/sneakers/black corpseid = 1 corpseidjob = "Shaft Miner" corpseidaccess = "Shaft Miner" @@ -246,7 +246,7 @@ corpseradio = /obj/item/device/radio/headset/heads/hop corpseuniform = /obj/item/clothing/under/rank/centcom_officer corpsesuit = /obj/item/clothing/suit/armor/bulletproof - corpseshoes = /obj/item/clothing/shoes/black + corpseshoes = /obj/item/clothing/shoes/sneakers/black corpseglasses = /obj/item/clothing/glasses/sunglasses corpseid = 1 corpseidjob = "Bridge Officer" diff --git a/code/modules/clothing/shoes/colour.dm b/code/modules/clothing/shoes/colour.dm index 94827daf93c..e1ed80a3d65 100644 --- a/code/modules/clothing/shoes/colour.dm +++ b/code/modules/clothing/shoes/colour.dm @@ -1,4 +1,6 @@ -/obj/item/clothing/shoes/black +/obj/item/clothing/shoes/sneakers + +/obj/item/clothing/shoes/sneakers/black name = "black shoes" icon_state = "black" item_color = "black" @@ -12,7 +14,7 @@ redcoat item_color = "redcoat" //Exists for washing machines. Is not different from black shoes in any way. -/obj/item/clothing/shoes/brown +/obj/item/clothing/shoes/sneakers/brown name = "brown shoes" desc = "A pair of brown shoes." icon_state = "brown" @@ -31,55 +33,55 @@ cmo item_color = "cargo" //Exists for washing machines. Is not different from brown shoes in any way. -/obj/item/clothing/shoes/blue +/obj/item/clothing/shoes/sneakers/blue name = "blue shoes" icon_state = "blue" item_color = "blue" -/obj/item/clothing/shoes/green +/obj/item/clothing/shoes/sneakers/green name = "green shoes" icon_state = "green" item_color = "green" -/obj/item/clothing/shoes/yellow +/obj/item/clothing/shoes/sneakers/yellow name = "yellow shoes" icon_state = "yellow" item_color = "yellow" -/obj/item/clothing/shoes/purple +/obj/item/clothing/shoes/sneakers/purple name = "purple shoes" icon_state = "purple" item_color = "purple" -/obj/item/clothing/shoes/brown +/obj/item/clothing/shoes/sneakers/brown name = "brown shoes" icon_state = "brown" item_color = "brown" -/obj/item/clothing/shoes/red +/obj/item/clothing/shoes/sneakers/red name = "red shoes" desc = "Stylish red shoes." icon_state = "red" item_color = "red" -/obj/item/clothing/shoes/white +/obj/item/clothing/shoes/sneakers/white name = "white shoes" icon_state = "white" permeability_coefficient = 0.01 item_color = "white" -/obj/item/clothing/shoes/rainbow +/obj/item/clothing/shoes/sneakers/rainbow name = "rainbow shoes" desc = "Very gay shoes." icon_state = "rain_bow" item_color = "rainbow" -/obj/item/clothing/shoes/orange +/obj/item/clothing/shoes/sneakers/orange name = "orange shoes" icon_state = "orange" item_color = "orange" -/obj/item/clothing/shoes/orange/attack_self(mob/user as mob) +/obj/item/clothing/shoes/sneakers/orange/attack_self(mob/user as mob) if (src.chained) src.chained = null src.slowdown = SHOES_SLOWDOWN @@ -87,7 +89,7 @@ src.icon_state = "orange" return -/obj/item/clothing/shoes/orange/attackby(H as obj, loc) +/obj/item/clothing/shoes/sneakers/orange/attackby(H as obj, loc) ..() if ((istype(H, /obj/item/weapon/handcuffs) && !( src.chained ))) //H = null @@ -98,7 +100,7 @@ src.icon_state = "orange1" return -/obj/item/clothing/shoes/orange/attack_hand(mob/user) +/obj/item/clothing/shoes/sneakers/orange/attack_hand(mob/user) if(ishuman(user)) var/mob/living/carbon/human/C = user if(C.shoes == src && src.chained == 1) diff --git a/code/modules/clothing/shoes/miscellaneous.dm b/code/modules/clothing/shoes/miscellaneous.dm index dfccd9144bc..0638f943209 100644 --- a/code/modules/clothing/shoes/miscellaneous.dm +++ b/code/modules/clothing/shoes/miscellaneous.dm @@ -7,7 +7,7 @@ flags = NOSLIP origin_tech = "syndicate=3" -/obj/item/clothing/shoes/mime +/obj/item/clothing/shoes/sneakers/mime name = "mime shoes" icon_state = "mime" item_color = "mime" diff --git a/code/modules/clothing/under/color.dm b/code/modules/clothing/under/color.dm index d07e8f27792..b55cd7c845e 100644 --- a/code/modules/clothing/under/color.dm +++ b/code/modules/clothing/under/color.dm @@ -63,80 +63,80 @@ item_state = "y_suit" item_color = "yellow" -/obj/item/clothing/under/psyche +/obj/item/clothing/under/color/psyche name = "psychedelic jumpsuit" desc = "Groovy!" icon_state = "psyche" item_color = "psyche" -/obj/item/clothing/under/lightblue +/obj/item/clothing/under/color/lightblue name = "lightblue jumpsuit" desc = "lightblue" icon_state = "lightblue" item_color = "lightblue" -/obj/item/clothing/under/aqua +/obj/item/clothing/under/color/aqua name = "aqua jumpsuit" desc = "aqua" icon_state = "aqua" item_color = "aqua" -/obj/item/clothing/under/purple +/obj/item/clothing/under/color/purple name = "purple jumpsuit" desc = "purple" icon_state = "purple" item_state = "p_suit" item_color = "purple" -/obj/item/clothing/under/lightpurple +/obj/item/clothing/under/color/lightpurple name = "lightpurple jumpsuit" desc = "lightpurple" icon_state = "lightpurple" item_color = "lightpurple" -/obj/item/clothing/under/lightgreen +/obj/item/clothing/under/color/lightgreen name = "lightgreen jumpsuit" desc = "lightgreen" icon_state = "lightgreen" item_color = "lightgreen" -/obj/item/clothing/under/lightblue +/obj/item/clothing/under/color/lightblue name = "lightblue jumpsuit" desc = "lightblue" icon_state = "lightblue" item_color = "lightblue" -/obj/item/clothing/under/lightbrown +/obj/item/clothing/under/color/lightbrown name = "lightbrown jumpsuit" desc = "lightbrown" icon_state = "lightbrown" item_color = "lightbrown" -/obj/item/clothing/under/brown +/obj/item/clothing/under/color/brown name = "brown jumpsuit" desc = "brown" icon_state = "brown" item_color = "brown" -/obj/item/clothing/under/yellowgreen +/obj/item/clothing/under/color/yellowgreen name = "yellowgreen jumpsuit" desc = "yellowgreen" icon_state = "yellowgreen" item_color = "yellowgreen" -/obj/item/clothing/under/darkblue +/obj/item/clothing/under/color/darkblue name = "darkblue jumpsuit" desc = "darkblue" icon_state = "darkblue" item_color = "darkblue" -/obj/item/clothing/under/lightred +/obj/item/clothing/under/color/lightred name = "lightred jumpsuit" desc = "lightred" icon_state = "lightred" item_color = "lightred" -/obj/item/clothing/under/darkred +/obj/item/clothing/under/color/darkred name = "darkred jumpsuit" desc = "darkred" icon_state = "darkred" diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm index 85997e8ff8a..85d2a2278b1 100644 --- a/code/modules/mining/mine_items.dm +++ b/code/modules/mining/mine_items.dm @@ -29,7 +29,7 @@ new /obj/item/device/radio/headset/headset_cargo(src) new /obj/item/clothing/under/rank/miner(src) new /obj/item/clothing/gloves/black(src) - new /obj/item/clothing/shoes/black(src) + new /obj/item/clothing/shoes/sneakers/black(src) new /obj/item/device/mining_scanner(src) new /obj/item/weapon/storage/bag/ore(src) new /obj/item/device/flashlight/lantern(src) From 3f1574a475671833a35491ae178abe20a66ba72c Mon Sep 17 00:00:00 2001 From: Kelenius Date: Thu, 1 May 2014 14:51:26 +0400 Subject: [PATCH 037/185] Added slime scanner Much less nutrition consumed, but they actually use it to grow Made mutation chance random between 25 and 35 Slime core reactions use 1 unit of reagent Code cleanups --- code/game/objects/items/devices/scanners.dm | 46 ++- .../mob/living/carbon/metroid/death.dm | 3 +- .../modules/mob/living/carbon/metroid/life.dm | 320 +++++++----------- .../mob/living/carbon/metroid/metroid.dm | 117 +++---- .../mob/living/carbon/metroid/powers.dm | 21 +- .../mob/living/carbon/metroid/subtypes.dm | 28 +- code/modules/reagents/Chemistry-Reagents.dm | 2 +- code/modules/reagents/Chemistry-Recipes.dm | 61 ++-- 8 files changed, 283 insertions(+), 315 deletions(-) diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index fe774ccf435..7aacee5d394 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -300,4 +300,48 @@ MASS SPECTROMETER name = "advanced mass-spectrometer" icon_state = "adv_spectrometer" details = 1 - origin_tech = "magnets=4;biotech=2" \ No newline at end of file + origin_tech = "magnets=4;biotech=2" + +/obj/item/device/slime_scanner + name = "slime scanner" + icon_state = "adv_spectrometer" + item_state = "analyzer" + origin_tech = "biotech=1" + w_class = 2.0 + flags = CONDUCT + throwforce = 0 + throw_speed = 3 + throw_range = 7 + m_amt = 30 + g_amt = 20 + + attack(mob/living/M as mob, mob/living/user as mob) + if (!isslime(M)) + user << "This device can only scan slimes!" + return + var/mob/living/carbon/slime/T = M + user.show_message("Slime scan results:") + user.show_message(text("[T.colour] [] slime", T.is_adult ? "adult" : "baby")) + user.show_message(text("Nutrition: [T.nutrition]/[]", T.get_max_nutrition())) + if (T.nutrition < T.get_starve_nutrition()) + user.show_message("Warning: slime is starving!") + else if (T.nutrition < T.get_hunger_nutrition()) + user.show_message("Warning: slime is hungry") + user.show_message("Electric change strength: [T.powerlevel]") + user.show_message("Health: [T.health]") + if (T.slime_mutation[4] == T.colour) + user.show_message("This slime does not evolve any further") + else + if (T.slime_mutation[3] == T.slime_mutation[4]) + if (T.slime_mutation[2] == T.slime_mutation[1]) + user.show_message(text("Possible mutation: []", T.slime_mutation[3])) + user.show_message("Genetic destability: [T.mutation_chance/2]% chance of mutation on splitting") + else + user.show_message(text("Possible mutations: [], [], [] (x2)", T.slime_mutation[1], T.slime_mutation[2], T.slime_mutation[3])) + user.show_message("Genetic destability: [T.mutation_chance]% chance of mutation on splitting") + else + user.show_message(text("Possible mutations: [], [], [], []", T.slime_mutation[1], T.slime_mutation[2], T.slime_mutation[3], T.slime_mutation[4])) + user.show_message("Genetic destability: [T.mutation_chance]% chance of mutation on splitting") + if (T.cores > 1) + user.show_message("Anomalious slime core amount detected") + user.show_message("Growth progress: [T.amount_grown]/10") \ No newline at end of file diff --git a/code/modules/mob/living/carbon/metroid/death.dm b/code/modules/mob/living/carbon/metroid/death.dm index fc26fcbf5b7..bd52fc5b3ee 100644 --- a/code/modules/mob/living/carbon/metroid/death.dm +++ b/code/modules/mob/living/carbon/metroid/death.dm @@ -8,7 +8,8 @@ maxHealth = 150 revive() regenerate_icons() - name = "[colour] [is_adult ? "adult" : "baby"] slime ([rand(1, 1000)])" + number = rand(1, 1000) + name = "[colour] [is_adult ? "adult" : "baby"] slime ([number])" return if(stat == DEAD) return diff --git a/code/modules/mob/living/carbon/metroid/life.dm b/code/modules/mob/living/carbon/metroid/life.dm index ad48bb267fd..3e26f2535fa 100644 --- a/code/modules/mob/living/carbon/metroid/life.dm +++ b/code/modules/mob/living/carbon/metroid/life.dm @@ -35,74 +35,56 @@ //to find it. src.blinded = null - // Basically just deletes any screen objects :< - regular_hud_updates() + regular_hud_updates() // Basically just deletes any screen objects :< - //Handle temperature/pressure differences between body and environment if(environment) - handle_environment(environment) + handle_environment(environment) // Handle temperature/pressure differences between body and environment - //Status updates, death etc. - handle_regular_status_updates() + handle_regular_status_updates() // Status updates, death etc. /mob/living/carbon/slime/proc/AIprocess() // the master AI process - //world << "AI proc started." if(AIproc || stat == DEAD || client) return var/hungry = 0 - var/starving = 0 - if(is_adult) - switch(nutrition) - if(400 to 1100) hungry = 1 - if(0 to 399) - starving = 1 - else - switch(nutrition) - if(150 to 900) hungry = 1 - if(0 to 149) starving = 1 + if (nutrition < get_starve_nutrition()) + hungry = 2 + else if (nutrition < get_grow_nutrition() && prob(25) || nutrition < get_hunger_nutrition()) + hungry = 1 + AIproc = 1 - //world << "AIproc [AIproc] && stat != 2 [stat] && (attacked > 0 [attacked] || starving [starving] || hungry [hungry] || rabid [rabid] || Victim [Victim] || Target [Target]" - while(AIproc && stat != 2 && (attacked > 0 || starving || hungry || rabid || Victim)) + + while(AIproc && stat != 2 && (attacked || hungry || rabid || Victim)) if(Victim) // can't eat AND have this little process at the same time - //world << "break 1" break if(!Target || client) - //world << "break 2" break - if(Target.health <= -70 || Target.stat == 2) Target = null AIproc = 0 - //world << "break 3" break if(Target) - //world << "[Target] Target Found" for(var/mob/living/carbon/slime/M in view(1,Target)) if(M.Victim == Target) Target = null AIproc = 0 - //world << "break 4" break if(!AIproc) - //world << "break 5" break if(Target in view(1,src)) - if(istype(Target, /mob/living/silicon)) if(!Atkcool) spawn() Atkcool = 1 - sleep(15) + sleep(45) Atkcool = 0 if(Target.Adjacent(src)) Target.attack_slime(src) - //world << "retrun 1" return if(!Target.lying && prob(80)) @@ -110,16 +92,12 @@ if(!Atkcool) spawn() Atkcool = 1 - sleep(25) + sleep(45) Atkcool = 0 if(Target.Adjacent(src)) Target.attack_slime(src) - - if(prob(30)) - step_to(src, Target) - else if(!Atkcool && Target.Adjacent(src)) Feedon(Target) @@ -130,13 +108,12 @@ else if(Target in view(7, src)) - if(Target.Adjacent(src)) + if(!Target.Adjacent(src)) // Bug of the month candidate: slimes were attempting to move to target only if it was directly next to them, which caused them to target things, but not approach them step_to(src, Target) else Target = null AIproc = 0 - //world << "break 6" break var/sleeptime = movement_delay() @@ -145,7 +122,6 @@ sleep(sleeptime + 2) // this is about as fast as a player slime can go AIproc = 0 - //world << "AI proc ended." /mob/living/carbon/slime/proc/handle_environment(datum/gas_mixture/environment) if(!environment) @@ -155,28 +131,11 @@ //var/environment_heat_capacity = environment.heat_capacity() var/loc_temp = get_temperature(environment) - /* - if((environment.temperature > (T0C + 50)) || (environment.temperature < (T0C + 10))) - var/transfer_coefficient - - transfer_coefficient = 1 - if(wear_mask && (wear_mask.body_parts_covered & HEAD) && (environment.temperature < wear_mask.protective_temperature)) - transfer_coefficient *= wear_mask.heat_transfer_coefficient - - // handle_temperature_damage(HEAD, environment.temperature, environment_heat_capacity*transfer_coefficient) - */ - - if(loc_temp < 310.15) // a cold place bodytemperature += adjust_body_temperature(bodytemperature, loc_temp, 1) else // a hot place bodytemperature += adjust_body_temperature(bodytemperature, loc_temp, 1) - /* - if(stat==2) - bodytemperature += 0.1*(environment.temperature - bodytemperature)*environment_heat_capacity/(environment_heat_capacity + 270000) - - */ //Account for massive pressure differences if(bodytemperature < (T0C + 5)) // start calculating temperature damage etc @@ -196,7 +155,6 @@ return //TODO: DEFERRED - /mob/living/carbon/slime/proc/adjust_body_temperature(current, loc_temp, boost) var/temperature = current var/difference = abs(current-loc_temp) //get difference @@ -222,7 +180,6 @@ return //TODO: DEFERRED - /mob/living/carbon/slime/proc/handle_regular_status_updates() if(is_adult) @@ -230,20 +187,15 @@ else health = 150 - (getOxyLoss() + getToxLoss() + getFireLoss() + getBruteLoss() + getCloneLoss()) - - - if(health < config.health_threshold_dead && stat != 2) death() return else if(src.health < config.health_threshold_crit) - // if(src.health <= 20 && prob(1)) spawn(0) emote("gasp") - //if(!src.rejuv) src.oxyloss++ if(!src.reagents.has_reagent("inaprovaline")) src.adjustOxyLoss(10) - if(src.stat != DEAD) src.stat = UNCONSCIOUS + if(src.stat != DEAD) src.stat = UNCONSCIOUS if(prob(30)) adjustOxyLoss(-1) @@ -252,12 +204,9 @@ adjustCloneLoss(-1) adjustBruteLoss(-1) - if (src.stat == DEAD) - src.lying = 1 src.blinded = 1 - else if (src.paralysis || src.stunned || src.weakened || (status_flags && FAKEDEATH)) //Stunned etc. if (src.stunned > 0) @@ -302,35 +251,25 @@ return 1 - /mob/living/carbon/slime/proc/handle_nutrition() - if(prob(20)) - if(is_adult) nutrition-=rand(4,6) - else nutrition-=rand(2,3) + if (prob(15)) + --nutrition if(nutrition <= 0) nutrition = 0 if(prob(75)) - adjustToxLoss(rand(0,5)) - else + else if (nutrition >= get_grow_nutrition() && amount_grown < 10) + nutrition -= 20 + amount_grown++ + + if(amount_grown >= 10 && !Victim && !Target && !ckey) if(is_adult) - if(nutrition >= 1000) - if(prob(40)) amount_grown++ - + Reproduce() else - if(nutrition >= 800) - if(prob(40)) amount_grown++ - - if(amount_grown >= 10 && !Victim && !Target) - if(!ckey) - if(is_adult) - Reproduce() - - else - Evolve() + Evolve() /mob/living/carbon/slime/proc/handle_targets() if(Tempstun) @@ -342,8 +281,7 @@ if(attacked > 50) attacked = 50 if(attacked > 0) - if(prob(85)) - attacked-- + attacked-- if(Discipline > 0) @@ -354,142 +292,117 @@ Discipline-- if(!client) - if(!canmove) return - // DO AI STUFF HERE + if(Victim) return // if it's eating someone already, continue eating! if(Target) - if(attacked <= 0) + --target_patience + if (target_patience <= 0 || SStun || Discipline || attacked) // Tired of chasing or something draws out attention + target_patience = 0 Target = null - if(Victim) return // if it's eating someone already, continue eating! - if(AIproc && SStun) return var/hungry = 0 // determines if the slime is hungry - var/starving = 0 // determines if the slime is starving-hungry - if(is_adult) // 1200 max nutrition - switch(nutrition) - if(601 to 900) - if(prob(25)) hungry = 1//Ensures they continue eating, but aren't as aggressive at the same time - if(301 to 600) hungry = 1 - if(0 to 300) - starving = 1 - else - switch(nutrition) // 1000 max nutrition - if(501 to 700) - if(prob(25)) hungry = 1 - if(201 to 500) hungry = 1 - if(0 to 200) starving = 1 + if (nutrition < get_starve_nutrition()) + hungry = 2 + else if (nutrition < get_grow_nutrition() && prob(25) || nutrition < get_hunger_nutrition()) + hungry = 1 - - if(starving && !client) // if a slime is starving, it starts losing its friends + if(hungry == 2 && !client) // if a slime is starving, it starts losing its friends if(Friends.len > 0 && prob(1)) var/mob/nofriend = pick(Friends) --Friends[nofriend] if(!Target) - var/list/targets = list() + if(will_hunt() && hungry || attacked || rabid) // Only add to the list if we need to + var/list/targets = list() - if((hungry && !Leader) || starving) //Only add to the list if we need to for(var/mob/living/L in view(7,src)) - //Ignore other slimes, dead mobs, simple_animals and silicons - if(isslime(L) || L.stat == DEAD || isanimal(L) || issilicon(L)) + if(isslime(L) || L.stat == DEAD || isanimal(L)) // Ignore other slimes, dead mobs, and simple_animals continue - else if(iscarbon(L)) + if(L in Friends) // No eating friends! + continue - if(istype(L, /mob/living/carbon/human)) //Ignore slime(wo)men - var/mob/living/carbon/human/H = L - if(H.dna) - if(H.dna.mutantrace == "slime") - continue + if(issilicon(L)) // They can't eat silicons, but they can glomp them in defence + if (rabid || attacked) + targets += L // Possible target found! - if(!is_adult) //Non-starving diciplined adult slimes wont eat things - if(!starving && Discipline > 0) + if(!iscarbon(L)) + continue + + if(istype(L, /mob/living/carbon/human)) // Ignore slime(wo)men + var/mob/living/carbon/human/H = L + if(H.dna) + if(H.dna.mutantrace == "slime") continue - if(L in Friends) //No eating friends! + if(!L.canmove) // Only one slime can latch on at a time. + var/notarget = 0 + for(var/mob/living/carbon/slime/M in view(1,L)) + if(M.Victim == L) + notarget = 1 + if(notarget) continue - if(tame && ishuman(L)) //Tame slimes don't eat people. - continue + targets += L // Possible target found! - if(!L.canmove) //Only one slime can latch on at a time. + if(targets.len > 0) + if(attacked || rabid || hungry == 2) + Target = targets[1] // I am attacked and am fighting back or so hungry I don't even care + else + for(var/mob/living/carbon/C in targets) + if(!Discipline && prob(5)) + if(ishuman(C) || isalienadult(C)) + Target = C + break - var/notarget = 0 - for(var/mob/living/carbon/slime/M in view(1,L)) - if(M.Victim == L) - notarget = 1 - if(notarget) - continue - - targets += L //Possible target found! - - if((hungry || starving) && targets.len > 0) - if(!starving) - for(var/mob/living/carbon/C in targets) - if(!Discipline && prob(5)) - if(ishuman(C)) - Target = C - break - if(isalienadult(C)) + if(islarva(C) || ismonkey(C)) Target = C break - if(islarva(C)) - Target = C - break - if(ismonkey(C)) - Target = C - break - else - Target = targets[1] + if (Target) + target_patience = rand(5,7) + if (is_adult) target_patience += 3 - if(targets.len > 0) - if(attacked > 0 || rabid) - Target = targets[1] //closest mob probably attacked it, so override Target and attack the nearest! - - if(!Target) + if(!Target) // If we have no target, we are wandering or following orders if (Leader) - if(canmove && isturf(loc)) - if (holding_still) - holding_still = max(holding_still - 1, 0) - else - step_to(src, Leader) + if (holding_still) + holding_still = max(holding_still - 1, 0) + else if(canmove && isturf(loc)) + step_to(src, Leader) - if(hungry || starving) - if(canmove && isturf(loc) && prob(50)) - if (holding_still) - holding_still = max(holding_still - 1, 0) - if (starving) holding_still = max(holding_still - 1, 0) // Getting impatient twice as fast - else - step(src, pick(cardinal)) + else if(hungry) + if (holding_still) + holding_still = max(holding_still - hungry, 0) + else if(canmove && isturf(loc) && prob(50)) + step(src, pick(cardinal)) else - if(canmove && isturf(loc) && prob(33)) - if (holding_still) - holding_still = max(holding_still - 1, 0) - else - step(src, pick(cardinal)) - else - if(!AIproc) - spawn() AIprocess() + if (holding_still) + holding_still = max(holding_still - 1, 0) + else if(canmove && isturf(loc) && prob(33)) + step(src, pick(cardinal)) + else if(!AIproc) + spawn() AIprocess() /mob/living/carbon/slime/proc/handle_speech_and_mood() //Mood starts here var/newmood = "" - if (rabid) newmood = "angry" + if (rabid || attacked) newmood = "angry" else if (Target) newmood = "mischevous" if (!newmood) - if (prob(1)) + if (Discipline && prob(25)) + newmood = "pout" + else if (prob(1)) newmood = pick("sad", ":3", "pout") - if (mood == "sad" || mood == ":3" || mood == "pout" && !newmood) + if ((mood == "sad" || mood == ":3" || mood == "pout") && !newmood) if (prob(75)) newmood = mood if (newmood != mood) // This is so we don't redraw them every time @@ -502,7 +415,7 @@ var/who = speech_buffer[1] // Who said it? var/phrase = speech_buffer[2] // What did they say? if ((findtext(phrase, num2text(number)) || findtext(phrase, "slimes"))) // Talking to us - if (findtext(phrase, "friend")) // Debug + if (findtext(phrase, "friend")) // Debug TODO: remove ++Friends[who] if (findtext(phrase, "hello") || findtext(phrase, "hi")) to_say = pick("Hello...", "Hi...") @@ -556,7 +469,7 @@ to_say = "Yes... Staying..." else to_say = "No... I won't stay..." - else if (findtext(phrase, "kill")) // Will remove later + else if (findtext(phrase, "kill")) // TODO: remove, because it's pure cheating if (Friends[who] > 5) rabid = 1 speech_buffer = list() @@ -568,35 +481,38 @@ emote(pick("bounce","sway","light","vibrate","jiggle")) else var/t = 10 - var/slimes_near = -1 // Don't count itself + var/slimes_near = -1 // Don't count myself + var/dead_slimes = 0 var/friends_near = list() for (var/mob/living/carbon/M in view(7,src)) if (isslime(M)) - slimes_near += 1 + ++slimes_near + if (M.stat == DEAD) + ++dead_slimes if (M in Friends) t += 20 friends_near += M - if (nutrition < 800) t += 10 - if (nutrition < 300) t += 20 + if (nutrition < get_hunger_nutrition()) t += 10 + if (nutrition < get_starve_nutrition()) t += 10 if (prob(100) && prob(t)) var/phrases = list() if (Target) phrases += "[Target]... looks tasty..." - if (nutrition < 300) + if (nutrition < get_starve_nutrition()) phrases += "So... hungry..." phrases += "Very... hungry..." phrases += "Need... food..." phrases += "Must... eat..." - else if (nutrition < 800) + else if (nutrition < get_hunger_nutrition()) phrases += "Hungry..." phrases += "Where is the food?" phrases += "I want to eat..." phrases += "Rawr..." phrases += "Blop..." - if (rabid) + if (rabid || attacked) phrases += "Hrr..." phrases += "Nhuu..." phrases += "Unn..." - if (tame || mood == ":3") + if (mood == ":3") phrases += "Purr..." if (attacked) phrases += "Grrr..." @@ -618,11 +534,33 @@ if (mood == "sad") phrases += "Bored..." if (slimes_near) phrases += "Brother..." if (slimes_near > 1) phrases += "Brothers..." + if (dead_slimes) phrases += "What happened?" if (!slimes_near) phrases += "Lonely..." for (var/M in friends_near) - phrases += "[M]... friend... [Friends[M]]..." // Debug info - if (nutrition < 750) - phrases += "[M]... I'm hungry..." - if (Friends.len > 0) phrases += "Friends are not food..." - say (pick(phrases)) \ No newline at end of file + phrases += "[M]... friend... [Friends[M]]..." // Debug info TODO: remove + if (nutrition < get_hunger_nutrition()) + phrases += "[M]... Feed me..." + say (pick(phrases)) + +/mob/living/carbon/slime/proc/get_max_nutrition() // Can't go above it + if (is_adult) return 1200 + else return 1000 + +/mob/living/carbon/slime/proc/get_grow_nutrition() // Above it we grow, below it we can eat + if (is_adult) return 1000 + else return 800 + +/mob/living/carbon/slime/proc/get_hunger_nutrition() // Below it we will always eat + if (is_adult) return 600 + else return 500 + +/mob/living/carbon/slime/proc/get_starve_nutrition() // Below it we will eat before everything else + if (is_adult) return 300 + else return 200 + +/mob/living/carbon/slime/proc/will_hunt(var/hunger = -1) // Check for being stopped from feeding and chasing + if (hunger == 2 || rabid || attacked) return 1 + if (Leader) return 0 + if (holding_still) return 0 + return 1 \ No newline at end of file diff --git a/code/modules/mob/living/carbon/metroid/metroid.dm b/code/modules/mob/living/carbon/metroid/metroid.dm index 1f15086f8b2..c790161310d 100644 --- a/code/modules/mob/living/carbon/metroid/metroid.dm +++ b/code/modules/mob/living/carbon/metroid/metroid.dm @@ -15,7 +15,7 @@ gender = NEUTER update_icon = 0 - nutrition = 700 // 1000 = max + nutrition = 700 see_in_dark = 8 update_slimes = 0 @@ -25,10 +25,10 @@ status_flags = CANPARALYSE|CANPUSH var/cores = 1 // the number of /obj/item/slime_extract's the slime has left inside + var/mutation_chance = 30 // Chance of mutating, should be between 25 and 35 - var/powerlevel = 0 // 1-10 controls how much electricity they are generating - var/amount_grown = 0 // controls how long the slime has been overfed, if 10, grows into an adult - // if adult: if 10: reproduces + var/powerlevel = 0 // 1-10 controls how much electricity they are generating + var/amount_grown = 0 // controls how long the slime has been overfed, if 10, grows or reproduces var/number = 0 // Used to understand when someone is talking to it @@ -36,19 +36,17 @@ var/mob/living/Target = null // AI variable - tells the slime to hunt this down var/mob/living/Leader = null // AI variable - tells the slime to follow this person - var/attacked = 0 // determines if it's been attacked recently. Can be any number, is a cooloff-ish variable - var/tame = 0 // if set to 1, the slime will not eat humans ever, or attack them - var/rabid = 0 // if set to 1, the slime will attack and eat anything it comes in contact with + var/attacked = 0 // Determines if it's been attacked recently. Can be any number, is a cooloff-ish variable + var/rabid = 0 // If set to 1, the slime will attack and eat anything it comes in contact with var/holding_still = 0 // AI variable, cooloff-ish for how long it's going to stay in one place + var/target_patience = 0 // AI variable, cooloff-ish for how long it's going to follow its target - var/list/Friends = list() // A list of potential friends + var/list/Friends = list() // A list of friends; they are not considered targets for feeding; passed down after splitting - var/list/speech_buffer = list() // List of phrases said near it + var/list/speech_buffer = list() // Last phrase said near it and person who said it var/mood = "" // To show its face - // slimes pass on genetic data, so all their offspring have the same "Friends", - ///////////TIME FOR SUBSPECIES var/colour = "grey" @@ -63,6 +61,7 @@ icon_state = "[colour] [is_adult ? "adult" : "baby"] slime" real_name = name slime_mutation = mutation_table(colour) + mutation_chance = rand(25, 35) var/sanitizedcolour = replacetext(colour, " ", "") coretype = text2path("/obj/item/slime_extract/[sanitizedcolour]") ..() @@ -75,6 +74,9 @@ ..() /mob/living/carbon/slime/movement_delay() + if (bodytemperature >= 330.23) // 135 F + return -1 // slimes become supercharged at high temperatures + var/tally = 0 var/health_deficiency = (100 - health) @@ -84,23 +86,19 @@ tally += (283.222 - bodytemperature) / 10 * 1.75 if(reagents) - if(reagents.has_reagent("hyperzine")) // hyperzine slows slimes down - tally *= 2 // moves twice as slow + if(reagents.has_reagent("hyperzine")) // Hyperzine slows slimes down + tally *= 2 - if(reagents.has_reagent("frostoil")) // frostoil also makes them move VEEERRYYYYY slow + if(reagents.has_reagent("frostoil")) // Frostoil also makes them move VEEERRYYYYY slow tally *= 5 if(health <= 0) // if damaged, the slime moves twice as slow tally *= 2 - if (bodytemperature >= 330.23) // 135 F - return -1 // slimes become supercharged at high temperatures - - return tally+config.slime_delay - + return tally + config.slime_delay /mob/living/carbon/slime/Bump(atom/movable/AM as mob|obj, yes) - if ((!( yes ) || now_pushing)) + if ((!(yes) || now_pushing)) return now_pushing = 1 @@ -108,31 +106,21 @@ if(!client && powerlevel > 0) var/probab = 10 switch(powerlevel) - if(1 to 2) probab = 20 - if(3 to 4) probab = 30 - if(5 to 6) probab = 40 - if(7 to 8) probab = 60 - if(9) probab = 70 - if(10) probab = 95 + if(1 to 2) probab = 20 + if(3 to 4) probab = 30 + if(5 to 6) probab = 40 + if(7 to 8) probab = 60 + if(9) probab = 70 + if(10) probab = 95 if(prob(probab)) - - if(istype(AM, /obj/structure/window) || istype(AM, /obj/structure/grille)) - if(is_adult) - if(nutrition <= 600 && !Atkcool) + if(nutrition <= get_hunger_nutrition() && !Atkcool) + if (is_adult || prob(5)) AM.attack_slime(src) spawn() Atkcool = 1 - sleep(15) + sleep(45) Atkcool = 0 - else - if(nutrition <= 500 && !Atkcool) - if(prob(5)) - AM.attack_slime(src) - spawn() - Atkcool = 1 - sleep(15) - Atkcool = 0 if(ismob(AM)) var/mob/tmob = AM @@ -166,7 +154,6 @@ /mob/living/carbon/slime/Process_Spacemove() return 2 - /mob/living/carbon/slime/Stat() ..() @@ -176,20 +163,16 @@ else stat(null, "Health: [round((health / 150) * 100)]%") - if (client.statpanel == "Status") - if(is_adult) - stat(null, "Nutrition: [nutrition]/1200") - if(amount_grown >= 10) + stat(null, "Nutrition: [nutrition]/[get_max_nutrition()]") + if(amount_grown >= 10) + if(is_adult) stat(null, "You can reproduce!") - else - stat(null, "Nutrition: [nutrition]/1000") - if(amount_grown >= 10) + else stat(null, "You can evolve!") stat(null,"Power Level: [powerlevel]") - /mob/living/carbon/slime/adjustFireLoss(amount) ..(-abs(amount)) // Heals them return @@ -199,7 +182,6 @@ ..(Proj) return 0 - /mob/living/carbon/slime/emp_act(severity) powerlevel = 0 // oh no, the power! ..() @@ -254,7 +236,6 @@ /mob/living/carbon/slime/unEquip(obj/item/W as obj) return - /mob/living/carbon/slime/attack_ui(slot) return @@ -269,13 +250,12 @@ updatehealth() return - /mob/living/carbon/slime/attack_slime(mob/living/carbon/slime/M as mob) if (!ticker) M << "You cannot attack people before the game has started." return - if(Victim) return // can't attack while eating! + if (Victim) return // can't attack while eating! if (health > -100) @@ -286,19 +266,16 @@ var/damage = rand(1, 3) attacked += 5 - if(is_adult) + if(M.is_adult) damage = rand(1, 6) else damage = rand(1, 3) adjustBruteLoss(damage) - updatehealth() - return - /mob/living/carbon/slime/attack_animal(mob/living/simple_animal/M as mob) if(M.melee_damage_upper == 0) M.emote("[M.friendly] [src]") @@ -313,7 +290,7 @@ updatehealth() /mob/living/carbon/slime/attack_paw(mob/living/carbon/monkey/M as mob) - if(!(istype(M, /mob/living/carbon/monkey))) return//Fix for aliens receiving double messages when attacking other aliens. + if(!(istype(M, /mob/living/carbon/monkey))) return // Fix for aliens receiving double messages when attacking other aliens. if (!ticker) M << "You cannot attack people before the game has started." @@ -322,6 +299,7 @@ if (istype(loc, /turf) && istype(loc.loc, /area/start)) M << "No attacking people at spawn, you jackass." return + ..() switch(M.a_intent) @@ -422,7 +400,7 @@ if ("grab") if (M == src || anchored) return - var/obj/item/weapon/grab/G = new /obj/item/weapon/grab(M, src ) + var/obj/item/weapon/grab/G = new /obj/item/weapon/grab(M, src) M.put_in_active_hand(G) @@ -443,8 +421,9 @@ if (prob(90)) if (HULK in M.mutations) damage += 5 - if(Victim) + if(Victim || Target) Victim = null + Target = null anchored = 0 if(prob(80) && !client) Discipline++ @@ -534,8 +513,9 @@ if ((O.client && !( O.blinded ))) O.show_message(text(" [] has tackled [name]!", M), 1) - if(Victim) + if(Victim || Target) Victim = null + Target = null anchored = 0 if(prob(80) && !client) Discipline++ @@ -569,16 +549,17 @@ if(prob(25)) user << "\red [W] passes right through [src]!" return - if(Discipline && prob(50)) // wow, buddy, why am I getting attacked?? + if(Discipline && prob(50)) // wow, buddy, why am I getting attacked?? Discipline = 0 if(W.force >= 3) if(is_adult) if(prob(5 + round(W.force/2))) - if(Victim) + if(Victim || Target) if(prob(80) && !client) Discipline++ Victim = null + Target = null anchored = 0 spawn() @@ -598,7 +579,7 @@ else if(prob(10 + W.force*2)) - if(Victim) + if(Victim || Target) if(prob(80) && !client) Discipline++ if(Discipline == 1) @@ -609,6 +590,7 @@ SStun = 0 Victim = null + Target = null anchored = 0 spawn(0) @@ -625,17 +607,22 @@ /mob/living/carbon/slime/restrained() return 0 - mob/living/carbon/slime/var/co2overloadtime = null mob/living/carbon/slime/var/temperature_resistance = T0C+75 - /mob/living/carbon/slime/show_inv(mob/user) return /mob/living/carbon/slime/toggle_throw_mode() return +/mob/living/carbon/slime/proc/apply_water() + adjustToxLoss(rand(15,20)) + if (!client) + if (Target) // Like cats + Target = null + ++Discipline + return /obj/item/slime_extract name = "slime extract" diff --git a/code/modules/mob/living/carbon/metroid/powers.dm b/code/modules/mob/living/carbon/metroid/powers.dm index da6b0bbff2f..3d8e2c14f1a 100644 --- a/code/modules/mob/living/carbon/metroid/powers.dm +++ b/code/modules/mob/living/carbon/metroid/powers.dm @@ -71,7 +71,7 @@ "A sharp, deep pain bathes every inch of your body!")]" if(istype(M, /mob/living/carbon)) - Victim.adjustCloneLoss(rand(1,10)) + Victim.adjustCloneLoss(rand(5,6)) Victim.adjustToxLoss(rand(1,2)) if(Victim.health <= 0) Victim.adjustToxLoss(rand(2,4)) @@ -88,7 +88,7 @@ if(slime.Victim == M && slime != src) slime.Feedstop() - nutrition += rand(10,25) + nutrition += rand(15,30) if(nutrition >= lastnut + 50) if(prob(80)) lastnut = nutrition @@ -96,12 +96,11 @@ if(powerlevel > 10) powerlevel = 10 - if(is_adult) - if(nutrition > 1200) - nutrition = 1200 - else - if(nutrition > 1000) - nutrition = 1000 + if (nutrition > get_max_nutrition()) + if (amount_grown < 10) + nutrition -= 20 + ++amount_grown + nutrition = min(nutrition, get_max_nutrition()) Victim.updatehealth() updatehealth() @@ -208,10 +207,10 @@ var/new_powerlevel = round(powerlevel / 4) for(var/i=1,i<=4,i++) var/mob/living/carbon/slime/M = new /mob/living/carbon/slime/(loc) - if(prob(70)) - M.colour = colour - else + if(prob(mutation_chance)) M.colour = slime_mutation[rand(1,4)] + else + M.colour = colour if(ckey) M.nutrition = new_nutrition //Player slimes are more robust at spliting. Once an oversight of poor copypasta, now a feature! M.powerlevel = new_powerlevel if(i != 1) step_away(M,src) diff --git a/code/modules/mob/living/carbon/metroid/subtypes.dm b/code/modules/mob/living/carbon/metroid/subtypes.dm index e61054fce8d..3b7e0107abb 100644 --- a/code/modules/mob/living/carbon/metroid/subtypes.dm +++ b/code/modules/mob/living/carbon/metroid/subtypes.dm @@ -19,35 +19,35 @@ proc/mutation_table(var/colour) slime_mutation[3] = "gold" slime_mutation[4] = "gold" if("orange") - slime_mutation[1] = "red" - slime_mutation[2] = "red" - slime_mutation[3] = "dark purple" - slime_mutation[4] = "yellow" + slime_mutation[1] = "dark purple" + slime_mutation[2] = "yellow" + slime_mutation[3] = "red" + slime_mutation[4] = "red" if("blue") slime_mutation[1] = "dark blue" - slime_mutation[2] = "pink" + slime_mutation[2] = "silver" slime_mutation[3] = "pink" - slime_mutation[4] = "silver" + slime_mutation[4] = "pink" //Tier 3 if("dark blue") slime_mutation[1] = "purple" - slime_mutation[2] = "cerulean" - slime_mutation[3] = "blue" + slime_mutation[2] = "blue" + slime_mutation[3] = "cerulean" slime_mutation[4] = "cerulean" if("dark purple") slime_mutation[1] = "purple" - slime_mutation[2] = "sepia" - slime_mutation[3] = "orange" + slime_mutation[2] = "orange" + slime_mutation[3] = "sepia" slime_mutation[4] = "sepia" if("yellow") slime_mutation[1] = "metal" - slime_mutation[2] = "bluespace" - slime_mutation[3] = "orange" + slime_mutation[2] = "orange" + slime_mutation[3] = "bluespace" slime_mutation[4] = "bluespace" if("silver") slime_mutation[1] = "metal" - slime_mutation[2] = "pyrite" - slime_mutation[3] = "blue" + slime_mutation[2] = "blue" + slime_mutation[3] = "pyrite" slime_mutation[4] = "pyrite" //Tier 4 if("pink") diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm index b92254c9668..42103ddef2e 100644 --- a/code/modules/reagents/Chemistry-Reagents.dm +++ b/code/modules/reagents/Chemistry-Reagents.dm @@ -218,7 +218,7 @@ datum T.MakeSlippery() for(var/mob/living/carbon/slime/M in T) - M.adjustToxLoss(rand(15,20)) + M.apply_water() var/hotspot = (locate(/obj/effect/hotspot) in T) if(hotspot && !istype(T, /turf/space)) diff --git a/code/modules/reagents/Chemistry-Recipes.dm b/code/modules/reagents/Chemistry-Recipes.dm index 860334f6cd4..aecd81c02b8 100644 --- a/code/modules/reagents/Chemistry-Recipes.dm +++ b/code/modules/reagents/Chemistry-Recipes.dm @@ -935,7 +935,7 @@ datum/chemical_reaction/pestkiller name = "Slime Spawn" id = "m_spawn" result = null - required_reagents = list("plasma" = 5) + required_reagents = list("plasma" = 1) result_amount = 1 required_container = /obj/item/slime_extract/grey required_other = 1 @@ -951,7 +951,7 @@ datum/chemical_reaction/pestkiller name = "Slime Monkey" id = "m_monkey" result = null - required_reagents = list("blood" = 5) + required_reagents = list("blood" = 1) result_amount = 1 required_container = /obj/item/slime_extract/grey required_other = 1 @@ -966,7 +966,7 @@ datum/chemical_reaction/pestkiller name = "Mutation Toxin" id = "mutationtoxin" result = "mutationtoxin" - required_reagents = list("plasma" = 5) + required_reagents = list("plasma" = 1) result_amount = 1 required_other = 1 required_container = /obj/item/slime_extract/green @@ -978,7 +978,7 @@ datum/chemical_reaction/pestkiller name = "Slime Metal" id = "m_metal" result = null - required_reagents = list("plasma" = 5) + required_reagents = list("plasma" = 1) result_amount = 1 required_container = /obj/item/slime_extract/metal required_other = 1 @@ -996,7 +996,7 @@ datum/chemical_reaction/pestkiller name = "Slime Crit" id = "m_tele" result = null - required_reagents = list("plasma" = 5) + required_reagents = list("plasma" = 1) result_amount = 1 required_container = /obj/item/slime_extract/gold required_other = 1 @@ -1065,7 +1065,7 @@ datum/chemical_reaction/pestkiller name = "Slime Crit Lesser" id = "m_tele3" result = null - required_reagents = list("blood" = 5) + required_reagents = list("blood" = 1) result_amount = 1 required_container = /obj/item/slime_extract/gold required_other = 1 @@ -1117,7 +1117,7 @@ datum/chemical_reaction/pestkiller name = "Slime Bork" id = "m_tele2" result = null - required_reagents = list("plasma" = 5) + required_reagents = list("plasma" = 1) result_amount = 1 required_container = /obj/item/slime_extract/silver required_other = 1 @@ -1148,7 +1148,7 @@ datum/chemical_reaction/pestkiller name = "Slime Bork 2" id = "m_tele4" result = null - required_reagents = list("water" = 5) + required_reagents = list("water" = 1) result_amount = 1 required_container = /obj/item/slime_extract/silver required_other = 1 @@ -1180,7 +1180,7 @@ datum/chemical_reaction/pestkiller name = "Slime Frost Oil" id = "m_frostoil" result = "frostoil" - required_reagents = list("plasma" = 5) + required_reagents = list("plasma" = 1) result_amount = 10 required_container = /obj/item/slime_extract/blue required_other = 1 @@ -1192,7 +1192,7 @@ datum/chemical_reaction/pestkiller name = "Slime Freeze" id = "m_freeze" result = null - required_reagents = list("plasma" = 5) + required_reagents = list("plasma" = 1) result_amount = 1 required_container = /obj/item/slime_extract/darkblue required_other = 1 @@ -1212,7 +1212,7 @@ datum/chemical_reaction/pestkiller name = "Slime Capsaicin Oil" id = "m_capsaicinoil" result = "capsaicin" - required_reagents = list("blood" = 5) + required_reagents = list("blood" = 1) result_amount = 10 required_container = /obj/item/slime_extract/orange required_other = 1 @@ -1223,7 +1223,7 @@ datum/chemical_reaction/pestkiller name = "Slime fire" id = "m_fire" result = null - required_reagents = list("plasma" = 5) + required_reagents = list("plasma" = 1) result_amount = 1 required_container = /obj/item/slime_extract/orange required_other = 1 @@ -1243,7 +1243,7 @@ datum/chemical_reaction/pestkiller name = "Slime EMP" id = "m_emp" result = null - required_reagents = list("blood" = 5) + required_reagents = list("blood" = 1) result_amount = 1 required_container = /obj/item/slime_extract/yellow required_other = 1 @@ -1256,7 +1256,7 @@ datum/chemical_reaction/pestkiller name = "Slime Powercell" id = "m_cell" result = null - required_reagents = list("plasma" = 5) + required_reagents = list("plasma" = 1) result_amount = 1 required_container = /obj/item/slime_extract/yellow required_other = 1 @@ -1269,7 +1269,7 @@ datum/chemical_reaction/pestkiller name = "Slime Glow" id = "m_glow" result = null - required_reagents = list("water" = 5) + required_reagents = list("water" = 1) result_amount = 1 required_container = /obj/item/slime_extract/yellow required_other = 1 @@ -1286,7 +1286,7 @@ datum/chemical_reaction/pestkiller name = "Slime Steroid" id = "m_steroid" result = null - required_reagents = list("plasma" = 5) + required_reagents = list("plasma" = 1) result_amount = 1 required_container = /obj/item/slime_extract/purple required_other = 1 @@ -1299,7 +1299,7 @@ datum/chemical_reaction/pestkiller name = "Slime Jam" id = "m_jam" result = "slimejelly" - required_reagents = list("sugar" = 5) + required_reagents = list("sugar" = 1) result_amount = 10 required_container = /obj/item/slime_extract/purple required_other = 1 @@ -1312,7 +1312,7 @@ datum/chemical_reaction/pestkiller name = "Slime Plasma" id = "m_plasma" result = null - required_reagents = list("plasma" = 5) + required_reagents = list("plasma" = 1) result_amount = 1 required_container = /obj/item/slime_extract/darkpurple required_other = 1 @@ -1327,7 +1327,7 @@ datum/chemical_reaction/pestkiller name = "Slime Glycerol" id = "m_glycerol" result = "glycerol" - required_reagents = list("plasma" = 5) + required_reagents = list("plasma" = 1) result_amount = 8 required_container = /obj/item/slime_extract/red required_other = 1 @@ -1339,14 +1339,13 @@ datum/chemical_reaction/pestkiller name = "Bloodlust" id = "m_bloodlust" result = null - required_reagents = list("blood" = 5) + required_reagents = list("blood" = 1) result_amount = 1 required_container = /obj/item/slime_extract/red required_other = 1 /datum/chemical_reaction/slimebloodlust/on_reaction(var/datum/reagents/holder) feedback_add_details("slime_cores_used","[replacetext(name," ","_")]") for(var/mob/living/carbon/slime/slime in viewers(get_turf(holder.my_atom), null)) - slime.tame = 0 slime.rabid = 1 for(var/mob/O in viewers(get_turf(holder.my_atom), null)) O.show_message(text("\red The [slime] is driven into a frenzy!."), 1) @@ -1356,7 +1355,7 @@ datum/chemical_reaction/pestkiller name = "Slime Potion" id = "m_potion" result = null - required_reagents = list("plasma" = 5) + required_reagents = list("plasma" = 1) result_amount = 1 required_container = /obj/item/slime_extract/pink required_other = 1 @@ -1371,7 +1370,7 @@ datum/chemical_reaction/pestkiller name = "Advanced Mutation Toxin" id = "mutationtoxin2" result = "amutationtoxin" - required_reagents = list("plasma" = 5) + required_reagents = list("plasma" = 1) result_amount = 1 required_other = 1 required_container = /obj/item/slime_extract/black @@ -1383,7 +1382,7 @@ datum/chemical_reaction/pestkiller name = "Slime Explosion" id = "m_explosion" result = null - required_reagents = list("plasma" = 5) + required_reagents = list("plasma" = 1) result_amount = 1 required_container = /obj/item/slime_extract/oil required_other = 1 @@ -1401,7 +1400,7 @@ datum/chemical_reaction/pestkiller result = null result_amount = 1 required_container = /obj/item/slime_extract/lightpink - required_reagents = list("plasma" = 5) + required_reagents = list("plasma" = 1) required_other = 1 /datum/chemical_reaction/slimepotion2/on_reaction(var/datum/reagents/holder) feedback_add_details("slime_cores_used","[replacetext(name," ","_")]") @@ -1412,7 +1411,7 @@ datum/chemical_reaction/pestkiller name = "Slime Golem" id = "m_golem" result = null - required_reagents = list("plasma" = 5) + required_reagents = list("plasma" = 1) result_amount = 1 required_container = /obj/item/slime_extract/adamantine required_other = 1 @@ -1428,7 +1427,7 @@ datum/chemical_reaction/pestkiller name = "Slime Crystal" id = "m_crystal" result = null - required_reagents = list("blood" = 5) + required_reagents = list("blood" = 1) result_amount = 1 required_container = /obj/item/slime_extract/bluespace required_other = 1 @@ -1444,7 +1443,7 @@ datum/chemical_reaction/pestkiller name = "Slime Steroid 2" id = "m_steroid2" result = null - required_reagents = list("plasma" = 5) + required_reagents = list("plasma" = 1) result_amount = 1 required_container = /obj/item/slime_extract/cerulean required_other = 1 @@ -1458,7 +1457,7 @@ datum/chemical_reaction/pestkiller name = "Slime Camera" id = "m_camera" result = null - required_reagents = list("plasma" = 5) + required_reagents = list("plasma" = 1) result_amount = 1 required_container = /obj/item/slime_extract/sepia required_other = 1 @@ -1471,7 +1470,7 @@ datum/chemical_reaction/pestkiller name = "Slime Film" id = "m_film" result = null - required_reagents = list("blood" = 5) + required_reagents = list("blood" = 1) result_amount = 1 required_container = /obj/item/slime_extract/sepia required_other = 1 @@ -1487,7 +1486,7 @@ datum/chemical_reaction/pestkiller name = "Slime Paint" id = "s_paint" result = null - required_reagents = list("plasma" = 5) + required_reagents = list("plasma" = 1) result_amount = 1 required_container = /obj/item/slime_extract/pyrite required_other = 1 From 3e5269d82405ad058b4ce8e0a5da98371647fa1d Mon Sep 17 00:00:00 2001 From: Kelenius Date: Thu, 1 May 2014 14:53:12 +0400 Subject: [PATCH 038/185] Removed debug stuff --- code/modules/mob/living/carbon/metroid/life.dm | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/code/modules/mob/living/carbon/metroid/life.dm b/code/modules/mob/living/carbon/metroid/life.dm index 3e26f2535fa..8db2e6dabfd 100644 --- a/code/modules/mob/living/carbon/metroid/life.dm +++ b/code/modules/mob/living/carbon/metroid/life.dm @@ -415,8 +415,6 @@ var/who = speech_buffer[1] // Who said it? var/phrase = speech_buffer[2] // What did they say? if ((findtext(phrase, num2text(number)) || findtext(phrase, "slimes"))) // Talking to us - if (findtext(phrase, "friend")) // Debug TODO: remove - ++Friends[who] if (findtext(phrase, "hello") || findtext(phrase, "hi")) to_say = pick("Hello...", "Hi...") else if (findtext(phrase, "follow")) @@ -469,9 +467,6 @@ to_say = "Yes... Staying..." else to_say = "No... I won't stay..." - else if (findtext(phrase, "kill")) // TODO: remove, because it's pure cheating - if (Friends[who] > 5) - rabid = 1 speech_buffer = list() //Speech starts here @@ -538,7 +533,7 @@ if (!slimes_near) phrases += "Lonely..." for (var/M in friends_near) - phrases += "[M]... friend... [Friends[M]]..." // Debug info TODO: remove + phrases += "[M]... friend..." if (nutrition < get_hunger_nutrition()) phrases += "[M]... Feed me..." say (pick(phrases)) From 0727f8d5d82a98f787e8c39824614b285d621ce8 Mon Sep 17 00:00:00 2001 From: Kelenius Date: Thu, 1 May 2014 15:16:20 +0400 Subject: [PATCH 039/185] Added slime scanner to smartfridge --- code/game/machinery/kitchen/smartfridge.dm | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/code/game/machinery/kitchen/smartfridge.dm b/code/game/machinery/kitchen/smartfridge.dm index a2b378ba426..ca637ad9ba7 100644 --- a/code/game/machinery/kitchen/smartfridge.dm +++ b/code/game/machinery/kitchen/smartfridge.dm @@ -300,8 +300,17 @@ obj/machinery/smartfridge/drying_rack/load() //For updating the filled overlay /obj/machinery/smartfridge/extract/accept_check(var/obj/item/O as obj) if(istype(O,/obj/item/slime_extract)) return 1 + if(istype(O,/obj/item/device/slime_scanner)) + return 1 return 0 +/obj/machinery/smartfridge/extract/New() + ..() + var/obj/item/device/slime_scanner/I = new /obj/item/device/slime_scanner(src) + load(I) + var/obj/item/device/slime_scanner/T = new /obj/item/device/slime_scanner(src) + load(T) + // ----------------------------- // Chemistry Medical Smartfridge // ----------------------------- From 59e19ed3f8ecd8a0ad561a922cd3cfd25e6550e8 Mon Sep 17 00:00:00 2001 From: Kelenius Date: Thu, 1 May 2014 15:25:20 +0400 Subject: [PATCH 040/185] ALMOST FORGOT --- code/modules/mob/living/carbon/metroid/life.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/metroid/life.dm b/code/modules/mob/living/carbon/metroid/life.dm index 8db2e6dabfd..246612fbf9a 100644 --- a/code/modules/mob/living/carbon/metroid/life.dm +++ b/code/modules/mob/living/carbon/metroid/life.dm @@ -489,7 +489,7 @@ friends_near += M if (nutrition < get_hunger_nutrition()) t += 10 if (nutrition < get_starve_nutrition()) t += 10 - if (prob(100) && prob(t)) + if (prob(2) && prob(t)) var/phrases = list() if (Target) phrases += "[Target]... looks tasty..." if (nutrition < get_starve_nutrition()) From dc70e962f9ac21252a499047c9420d2a6afb9f2e Mon Sep 17 00:00:00 2001 From: Kelenius Date: Thu, 1 May 2014 15:41:27 +0400 Subject: [PATCH 041/185] Fix for them having a frozen face upon death --- code/modules/mob/living/carbon/metroid/death.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/mob/living/carbon/metroid/death.dm b/code/modules/mob/living/carbon/metroid/death.dm index bd52fc5b3ee..ae19372c7e5 100644 --- a/code/modules/mob/living/carbon/metroid/death.dm +++ b/code/modules/mob/living/carbon/metroid/death.dm @@ -15,6 +15,7 @@ if(stat == DEAD) return stat = DEAD icon_state = "[colour] baby slime dead" + overlays.Cut() for(var/mob/O in viewers(src, null)) O.show_message("The [name] seizes up and falls limp...", 1) //ded -- Urist From 45bb6313635753d97d0c63145a5fc07372f65f2c Mon Sep 17 00:00:00 2001 From: Kelenius Date: Thu, 1 May 2014 22:25:41 +0400 Subject: [PATCH 042/185] Two small fixes --- code/modules/mob/living/carbon/metroid/life.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/carbon/metroid/life.dm b/code/modules/mob/living/carbon/metroid/life.dm index 246612fbf9a..fb8760262eb 100644 --- a/code/modules/mob/living/carbon/metroid/life.dm +++ b/code/modules/mob/living/carbon/metroid/life.dm @@ -254,7 +254,7 @@ /mob/living/carbon/slime/proc/handle_nutrition() if (prob(15)) - --nutrition + nutrition -= 1 + is_adult if(nutrition <= 0) nutrition = 0 @@ -535,7 +535,7 @@ for (var/M in friends_near) phrases += "[M]... friend..." if (nutrition < get_hunger_nutrition()) - phrases += "[M]... Feed me..." + phrases += "[M]... feed me..." say (pick(phrases)) /mob/living/carbon/slime/proc/get_max_nutrition() // Can't go above it From 4fd7a6312d52545f197315a593c7a58c2d32a7ae Mon Sep 17 00:00:00 2001 From: Hornygranny Date: Thu, 1 May 2014 17:48:56 -0700 Subject: [PATCH 043/185] Moved check for magboots to human_movement --- code/modules/mob/living/carbon/human/human_movement.dm | 5 ++++- code/modules/mob/mob_movement.dm | 6 +++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index 88b7fca5261..ab874e46e61 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -40,7 +40,10 @@ return 1 // if(!check_drift && J.allow_thrust(0.01, src)) // return 1 - + if(istype(shoes, /obj/item/clothing/shoes/magboots)) //&& (src:shoes:flags & NOSLIP))) + var/obj/item/clothing/shoes/magboots/B = shoes + if((B.flags & NOSLIP) && istype(src.loc,/turf/simulated/floor) && (!has_gravity(src.loc))) + return 1 //If no working jetpack then use the other checks if(..()) return 1 return 0 diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm index d9c7b15d4e3..80da8b03c5f 100644 --- a/code/modules/mob/mob_movement.dm +++ b/code/modules/mob/mob_movement.dm @@ -362,9 +362,9 @@ if(istype(turf,/turf/space)) continue - if(istype(src,/mob/living/carbon/human/)) // Only humans can wear magboots, so we give them a chance to. - if((istype(turf,/turf/simulated/floor)) && (!has_gravity(src)) && !(istype(src:shoes, /obj/item/clothing/shoes/magboots) && (src:shoes:flags & NOSLIP))) - continue + //if(istype(src,/mob/living/carbon/human/)) // Only humans can wear magboots, so we give them a chance to. + //if((istype(turf,/turf/simulated/floor)) && (!has_gravity(src)) && !(istype(src:shoes, /obj/item/clothing/shoes/magboots) && (src:shoes:flags & NOSLIP))) + //continue else From 237cabd1c5ee4cdc3dbdbb4ff2c16f65ac520414 Mon Sep 17 00:00:00 2001 From: Hornygranny Date: Thu, 1 May 2014 17:55:12 -0700 Subject: [PATCH 044/185] removed old code --- code/modules/mob/living/carbon/human/human_movement.dm | 7 +++---- code/modules/mob/mob_movement.dm | 5 ----- 2 files changed, 3 insertions(+), 9 deletions(-) diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index ab874e46e61..52ee1282aa9 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -38,13 +38,12 @@ if(((!check_drift) || (check_drift && J.stabilization_on)) && (!lying) && (J.allow_thrust(0.01, src))) inertia_dir = 0 return 1 -// if(!check_drift && J.allow_thrust(0.01, src)) -// return 1 - if(istype(shoes, /obj/item/clothing/shoes/magboots)) //&& (src:shoes:flags & NOSLIP))) + //Do we have working magboots + if(istype(shoes, /obj/item/clothing/shoes/magboots)) var/obj/item/clothing/shoes/magboots/B = shoes if((B.flags & NOSLIP) && istype(src.loc,/turf/simulated/floor) && (!has_gravity(src.loc))) return 1 - //If no working jetpack then use the other checks + //If no working jetpack or magboots then use the other checks if(..()) return 1 return 0 diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm index 80da8b03c5f..768a451c616 100644 --- a/code/modules/mob/mob_movement.dm +++ b/code/modules/mob/mob_movement.dm @@ -362,11 +362,6 @@ if(istype(turf,/turf/space)) continue - //if(istype(src,/mob/living/carbon/human/)) // Only humans can wear magboots, so we give them a chance to. - //if((istype(turf,/turf/simulated/floor)) && (!has_gravity(src)) && !(istype(src:shoes, /obj/item/clothing/shoes/magboots) && (src:shoes:flags & NOSLIP))) - //continue - - else if((istype(turf,/turf/simulated/floor)) && (!has_gravity(src))) // No one else gets a chance. continue From 32a9d03b9aff7a304c5e821f07137397d60d7000 Mon Sep 17 00:00:00 2001 From: phil235 Date: Fri, 2 May 2014 16:44:25 +0200 Subject: [PATCH 045/185] Adds a timer when drawing blood from other people. --- code/modules/reagents/reagent_containers/syringes.dm | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm index 16e51d6ccd5..7d8ae71c443 100644 --- a/code/modules/reagents/reagent_containers/syringes.dm +++ b/code/modules/reagents/reagent_containers/syringes.dm @@ -72,6 +72,11 @@ if(NOCLONE in T.mutations) //target done been et, no more blood in him user << "You are unable to locate any blood." return + if(target != user) + target.visible_message("[user] is trying to take a blood sample from [target]!", \ + "[user] is trying to take a blood sample from [target]!") + if(!do_mob(user, target)) + return B.holder = src B.volume = amount //set reagent data From e1b3aae9335c4f8db771bfc69de1c41e15f4d97b Mon Sep 17 00:00:00 2001 From: Boggart Date: Thu, 1 May 2014 17:34:58 -0600 Subject: [PATCH 046/185] Fixes soulstoned players being cultists when the player who captured them wasn't, also fixes inconsistent indentation in soulstone.dm. --- code/game/gamemodes/wizard/soulstone.dm | 47 +++++++++++++------------ 1 file changed, 24 insertions(+), 23 deletions(-) diff --git a/code/game/gamemodes/wizard/soulstone.dm b/code/game/gamemodes/wizard/soulstone.dm index d54a0cb1cb3..0abf3c01e81 100644 --- a/code/game/gamemodes/wizard/soulstone.dm +++ b/code/game/gamemodes/wizard/soulstone.dm @@ -207,27 +207,28 @@ return obj/item/proc/init_shade(var/obj/item/device/soulstone/C, var/mob/living/carbon/human/T, var/mob/U as mob, var/vic = 0) - new /obj/effect/decal/remains/human(T.loc) //Spawns a skeleton - T.invisibility = 101 - var/atom/movable/overlay/animation = new /atom/movable/overlay( T.loc ) - animation.icon_state = "blank" - animation.icon = 'icons/mob/mob.dmi' - animation.master = T - flick("dust-h", animation) - qdel(animation) - var/mob/living/simple_animal/shade/S = new /mob/living/simple_animal/shade( T.loc ) - S.loc = C //put shade in stone - S.status_flags |= GODMODE //So they won't die inside the stone somehow - S.canmove = 0//Can't move out of the soul stone - S.name = "Shade of [T.real_name]" - S.real_name = "Shade of [T.real_name]" - S.key = T.key + new /obj/effect/decal/remains/human(T.loc) //Spawns a skeleton + T.invisibility = 101 + var/atom/movable/overlay/animation = new /atom/movable/overlay( T.loc ) + animation.icon_state = "blank" + animation.icon = 'icons/mob/mob.dmi' + animation.master = T + flick("dust-h", animation) + qdel(animation) + var/mob/living/simple_animal/shade/S = new /mob/living/simple_animal/shade( T.loc ) + S.loc = C //put shade in stone + S.status_flags |= GODMODE //So they won't die inside the stone somehow + S.canmove = 0//Can't move out of the soul stone + S.name = "Shade of [T.real_name]" + S.real_name = "Shade of [T.real_name]" + S.key = T.key + if(iscultist(U)) ticker.mode.add_cultist(S.mind,2) - S.cancel_camera() - C.icon_state = "soulstone2" - C.name = "Soul Stone: [S.real_name]" - S << "Your soul has been captured! You are now bound to [U.name]'s will, help them suceed in their goals at all costs." - C.imprinted = "[S.name]" - if(vic) - U << "\blue Capture successful!: \black [T.real_name]'s soul has been ripped from their body and stored within the soul stone." - U << "The soulstone has been imprinted with [S.real_name]'s mind, it will no longer react to other souls." + S.cancel_camera() + C.icon_state = "soulstone2" + C.name = "Soul Stone: [S.real_name]" + S << "Your soul has been captured! You are now bound to [U.name]'s will, help them suceed in their goals at all costs." + C.imprinted = "[S.name]" + if(vic) + U << "\blue Capture successful!: \black [T.real_name]'s soul has been ripped from their body and stored within the soul stone." + U << "The soulstone has been imprinted with [S.real_name]'s mind, it will no longer react to other souls." From 7092ef90e5384fc781b90f0c301a058348b7211b Mon Sep 17 00:00:00 2001 From: Boggart Date: Thu, 1 May 2014 22:08:34 -0600 Subject: [PATCH 047/185] Changes soulstone.dm to use span classes. --- code/game/gamemodes/wizard/soulstone.dm | 26 ++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/code/game/gamemodes/wizard/soulstone.dm b/code/game/gamemodes/wizard/soulstone.dm index 0abf3c01e81..acf832245ca 100644 --- a/code/game/gamemodes/wizard/soulstone.dm +++ b/code/game/gamemodes/wizard/soulstone.dm @@ -25,7 +25,7 @@ /*attack(mob/living/simple_animal/shade/M as mob, mob/user as mob)//APPARENTLY THEY NEED THEIR OWN SPECIAL SNOWFLAKE CODE IN THE LIVING ANIMAL DEFINES if(!istype(M, /mob/living/simple_animal/shade))//If target is not a shade return ..() - user.attack_log += text("\[[time_stamp()]\] Used the [src.name] to capture the soul of [M.name] ([M.ckey])") + user.attack_log += text("\[[time_stamp()]\] Used the [src.name] to capture the soul of [M.name] ([M.ckey])") transfer_soul("SHADE", M, user) return*/ @@ -111,21 +111,21 @@ var/obj/item/device/soulstone/C = src if(ticker.mode.name == "cult" && T.mind == ticker.mode:sacrifice_target) if(iscultist(U)) - U << "\red The Geometer of blood wants this mortal sacrificed with the rune." + U << "The Geometer of blood wants this mortal sacrificed with the rune." else - U << "\red The soul stone doesn't work for no apparent reason." + U << "The soul stone doesn't work for no apparent reason." return 0 if(C.imprinted != "empty") - U << "\red Capture failed!: \black The soul stone has already been imprinted with [C.imprinted]'s mind!" + U << "Capture failed!: The soul stone has already been imprinted with [C.imprinted]'s mind!" else if (T.stat == 0) - U << "\red Capture failed!: \black Kill or maim the victim first!" + U << "Capture failed!: Kill or maim the victim first!" else if(T.client == null) - U << "\red Capture failed!: \black The soul has already fled it's mortal frame." + U << "Capture failed!: The soul has already fled it's mortal frame." else if(C.contents.len) - U << "\red Capture failed!: \black The soul stone is full! Use or free an existing soul to make room." + U << "Capture failed!: The soul stone is full! Use or free an existing soul to make room." else for(var/obj/item/W in T) T.unEquip(W) @@ -135,13 +135,13 @@ var/mob/living/simple_animal/shade/T = target var/obj/item/device/soulstone/C = src if (T.stat == DEAD) - U << "\red Capture failed!: \black The shade has already been banished!" + U << "Capture failed!: The shade has already been banished!" else if(C.contents.len) - U << "\red Capture failed!: \black The soul stone is full! Use or free an existing soul to make room." + U << "Capture failed!: The soul stone is full! Use or free an existing soul to make room." else if(T.name != C.imprinted) - U << "\red Capture failed!: \black The soul stone has already been imprinted with [C.imprinted]'s mind!" + U << "Capture failed!: The soul stone has already been imprinted with [C.imprinted]'s mind!" else T.loc = C //put shade in stone T.status_flags |= GODMODE @@ -150,7 +150,7 @@ C.icon_state = "soulstone2" T << "Your soul has been recaptured by the soul stone, its arcane energies are reknitting your ethereal form" if(U != T) - U << "\blue Capture successful!: \black [T.name]'s has been recaptured and stored within the soul stone." + U << "Capture successful!: [T.name]'s has been recaptured and stored within the soul stone." if("CONSTRUCT") var/obj/structure/constructshell/T = target var/obj/item/device/soulstone/C = src @@ -203,7 +203,7 @@ Z.cancel_camera() qdel(C) else - U << "\red Creation failed!: \black The soul stone is empty! Go kill someone!" + U << "Creation failed!: The soul stone is empty! Go kill someone!" return obj/item/proc/init_shade(var/obj/item/device/soulstone/C, var/mob/living/carbon/human/T, var/mob/U as mob, var/vic = 0) @@ -230,5 +230,5 @@ obj/item/proc/init_shade(var/obj/item/device/soulstone/C, var/mob/living/carbon/ S << "Your soul has been captured! You are now bound to [U.name]'s will, help them suceed in their goals at all costs." C.imprinted = "[S.name]" if(vic) - U << "\blue Capture successful!: \black [T.real_name]'s soul has been ripped from their body and stored within the soul stone." + U << "Capture successful!: [T.real_name]'s soul has been ripped from their body and stored within the soul stone." U << "The soulstone has been imprinted with [S.real_name]'s mind, it will no longer react to other souls." From 82075cc86a6781f38f323839aad2702bab66aad2 Mon Sep 17 00:00:00 2001 From: Boggart Date: Thu, 1 May 2014 22:30:27 -0600 Subject: [PATCH 048/185] Fixes errors caused by using quotation marks to specify the span class inside a string enclosed in quotations marks by replacing them with apostrophes. --- code/game/gamemodes/wizard/soulstone.dm | 26 ++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/code/game/gamemodes/wizard/soulstone.dm b/code/game/gamemodes/wizard/soulstone.dm index acf832245ca..2c6c907084e 100644 --- a/code/game/gamemodes/wizard/soulstone.dm +++ b/code/game/gamemodes/wizard/soulstone.dm @@ -25,7 +25,7 @@ /*attack(mob/living/simple_animal/shade/M as mob, mob/user as mob)//APPARENTLY THEY NEED THEIR OWN SPECIAL SNOWFLAKE CODE IN THE LIVING ANIMAL DEFINES if(!istype(M, /mob/living/simple_animal/shade))//If target is not a shade return ..() - user.attack_log += text("\[[time_stamp()]\] Used the [src.name] to capture the soul of [M.name] ([M.ckey])") + user.attack_log += text("\[[time_stamp()]\] Used the [src.name] to capture the soul of [M.name] ([M.ckey])") transfer_soul("SHADE", M, user) return*/ @@ -111,21 +111,21 @@ var/obj/item/device/soulstone/C = src if(ticker.mode.name == "cult" && T.mind == ticker.mode:sacrifice_target) if(iscultist(U)) - U << "The Geometer of blood wants this mortal sacrificed with the rune." + U << "The Geometer of blood wants this mortal sacrificed with the rune." else - U << "The soul stone doesn't work for no apparent reason." + U << "The soul stone doesn't work for no apparent reason." return 0 if(C.imprinted != "empty") - U << "Capture failed!: The soul stone has already been imprinted with [C.imprinted]'s mind!" + U << "Capture failed!: The soul stone has already been imprinted with [C.imprinted]'s mind!" else if (T.stat == 0) - U << "Capture failed!: Kill or maim the victim first!" + U << "Capture failed!: Kill or maim the victim first!" else if(T.client == null) - U << "Capture failed!: The soul has already fled it's mortal frame." + U << "Capture failed!: The soul has already fled it's mortal frame." else if(C.contents.len) - U << "Capture failed!: The soul stone is full! Use or free an existing soul to make room." + U << "Capture failed!: The soul stone is full! Use or free an existing soul to make room." else for(var/obj/item/W in T) T.unEquip(W) @@ -135,13 +135,13 @@ var/mob/living/simple_animal/shade/T = target var/obj/item/device/soulstone/C = src if (T.stat == DEAD) - U << "Capture failed!: The shade has already been banished!" + U << "Capture failed!: The shade has already been banished!" else if(C.contents.len) - U << "Capture failed!: The soul stone is full! Use or free an existing soul to make room." + U << "Capture failed!: The soul stone is full! Use or free an existing soul to make room." else if(T.name != C.imprinted) - U << "Capture failed!: The soul stone has already been imprinted with [C.imprinted]'s mind!" + U << "Capture failed!: The soul stone has already been imprinted with [C.imprinted]'s mind!" else T.loc = C //put shade in stone T.status_flags |= GODMODE @@ -150,7 +150,7 @@ C.icon_state = "soulstone2" T << "Your soul has been recaptured by the soul stone, its arcane energies are reknitting your ethereal form" if(U != T) - U << "Capture successful!: [T.name]'s has been recaptured and stored within the soul stone." + U << "Capture successful!: [T.name]'s has been recaptured and stored within the soul stone." if("CONSTRUCT") var/obj/structure/constructshell/T = target var/obj/item/device/soulstone/C = src @@ -203,7 +203,7 @@ Z.cancel_camera() qdel(C) else - U << "Creation failed!: The soul stone is empty! Go kill someone!" + U << "Creation failed!: The soul stone is empty! Go kill someone!" return obj/item/proc/init_shade(var/obj/item/device/soulstone/C, var/mob/living/carbon/human/T, var/mob/U as mob, var/vic = 0) @@ -230,5 +230,5 @@ obj/item/proc/init_shade(var/obj/item/device/soulstone/C, var/mob/living/carbon/ S << "Your soul has been captured! You are now bound to [U.name]'s will, help them suceed in their goals at all costs." C.imprinted = "[S.name]" if(vic) - U << "Capture successful!: [T.real_name]'s soul has been ripped from their body and stored within the soul stone." + U << "Capture successful!: [T.real_name]'s soul has been ripped from their body and stored within the soul stone." U << "The soulstone has been imprinted with [S.real_name]'s mind, it will no longer react to other souls." From 0a163bcc43d353cfd8e30d1b725b8441002660d0 Mon Sep 17 00:00:00 2001 From: phil235 Date: Sat, 3 May 2014 17:01:16 +0200 Subject: [PATCH 049/185] target as mob -> mob/living/target --- code/defines/obj/weapon.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm index 4b24cea46c8..56d583af52b 100644 --- a/code/defines/obj/weapon.dm +++ b/code/defines/obj/weapon.dm @@ -186,7 +186,7 @@ icon_state = "beartrap[armed]" user << "[src] is now [armed ? "armed" : "disarmed"]" -/obj/item/weapon/legcuffs/beartrap/proc/triggered(target as mob) +/obj/item/weapon/legcuffs/beartrap/proc/triggered(mob/living/target) armed = 0 icon_state = "beartrap0" playsound(src.loc, 'sound/effects/snap.ogg', 50, 1) From d42c7114c10d395a9a0f02dff595397d6c46d354 Mon Sep 17 00:00:00 2001 From: Menshin Date: Sun, 4 May 2014 00:19:55 +0200 Subject: [PATCH 050/185] * cleaned, organized and commented a large part of the power code, * new procs handling : powernets creation/destruction, cable adding/removing, machines adding/removing, * new cable laying possibility : if you click in the turf you're standing on, you'll try to lay a node cable in the direction you're facing, * cleaned oversights that could (and would) leaved an empty powernet in the powernets global list * rewrote the cut_cable and propagate_network procs to correctly updates every connected cables and machines (fix, at last, #1455) * others fixes and polish... --- code/datums/mixed.dm | 33 +- code/modules/power/cable.dm | 479 ++++++++++++++++--------- code/modules/power/power.dm | 656 +++++++++++++++------------------- code/modules/power/solar.dm | 7 +- code/modules/power/tracker.dm | 3 +- 5 files changed, 615 insertions(+), 563 deletions(-) diff --git a/code/datums/mixed.dm b/code/datums/mixed.dm index 616c4eee99a..4d3ac8b7fd0 100644 --- a/code/datums/mixed.dm +++ b/code/datums/mixed.dm @@ -1,19 +1,32 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31 - /datum/powernet var/list/cables = list() // all cables & junctions var/list/nodes = list() // all APCs & sources - var/newload = 0 - var/load = 0 - var/newavail = 0 - var/avail = 0 - var/viewload = 0 - var/number = 0 - var/perapc = 0 // per-apc avilability - var/netexcess = 0 + var/newload = 0 // increased by every machines each tick then becomes... + var/load = 0 // ...the current load on the powernet + var/newavail = 0 // increased by every machines each tick then becomes... + var/avail = 0 //...the current available power in the powernet + var/viewload = 0 //the load as it appears on the power console (gradually updated) + var/number = 0 //Unused //TODEL + var/perapc = 0 // per-apc avilability + var/netexcess = 0 //excess power on the powernet (typically avail-load) + +/*Powernet procs : + +In modules/power/power.dm : + +/datum/powernet/New() +/datum/powernet/Destroy() +/datum/powernet/proc/is_empty() +/datum/powernet/proc/remove_cable(var/obj/structure/cable/C) +/datum/powernet/proc/add_cable(var/obj/structure/cable/C) +/datum/powernet/proc/remove_machine(var/obj/machinery/power/M) +/datum/powernet/proc/add_machine(var/obj/machinery/power/M) +/datum/powernet/proc/reset() +/datum/powernet/proc/get_electrocute_damage() +*/ /datum/debug var/list/debuglist \ No newline at end of file diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm index ba011c6777c..e3d767af8a2 100644 --- a/code/modules/power/cable.dm +++ b/code/modules/power/cable.dm @@ -1,38 +1,37 @@ -// attach a wire to a power machine - leads from the turf you are standing on +/////////////////////////////// +//CABLE STRUCTURE +/////////////////////////////// -/obj/machinery/power/attackby(obj/item/weapon/W, mob/user) - if(istype(W, /obj/item/stack/cable_coil)) +//////////////////////////////// +// Definitions +//////////////////////////////// - var/obj/item/stack/cable_coil/coil = W +/* Cable directions (d1 and d2) - var/turf/T = user.loc - if(T.intact || !istype(T, /turf/simulated/floor)) - return + 9 1 5 + \ | / + 8 - 0 - 4 + / | \ + 10 2 6 - if(get_dist(src, user) > 1) - return - - if(!directwired) // only for attaching to directwired machines - return - - coil.turf_place(T, user) - return - else - ..() - return +If d1 = 0 and d2 = 0, there's no cable +If d1 = 0 and d2 = dir, it's a O-X cable, getting from the center of the tile to dir (knot cable) +If d1 = dir1 and d2 = dir2, it's a full X-X cable, getting from dir1 to dir2 +By design, d1 is the smallest direction and d2 is the highest +*/ /obj/structure/cable - level = 1 + level = 1 //is underfloor anchored =1 var/datum/powernet/powernet name = "power cable" desc = "A flexible superconducting cable for heavy-duty power transfer" icon = 'icons/obj/power_cond/power_cond_red.dmi' icon_state = "0-1" - var/d1 = 0 - var/d2 = 1 + var/d1 = 0 // cable direction 1 (see above) + var/d2 = 1 // cable direction 2 (see above) layer = 2.44 //Just below unary stuff, which is at 2.45 and above pipes, which are at 2.4 var/cable_color = "red" @@ -65,7 +64,6 @@ icon = 'icons/obj/power_cond/power_cond_white.dmi' // the power cable object - /obj/structure/cable/New() ..() @@ -81,16 +79,20 @@ var/turf/T = src.loc // hide if turf is not intact if(level==1) hide(T.intact) - cable_list += src + cable_list += src //add it to the global cable list /obj/structure/cable/Destroy() // called when a cable is deleted -// if(!defer_powernet_rebuild) // set if network will be rebuilt manually if(powernet) - powernet.cut_cable(src) // update the powernets - cable_list -= src - ..() // then go ahead and delete the cable + cut_cable_from_powernet() // update the powernets + cable_list -= src //remove it from global cable list + ..() // then go ahead and delete the cable +/////////////////////////////////// +// General procedures +/////////////////////////////////// + +//If underfloor, hide the cable /obj/structure/cable/hide(var/i) if(level == 1 && istype(loc, /turf)) @@ -108,9 +110,15 @@ /obj/structure/cable/proc/get_powernet() //TODO: remove this as it is obsolete return powernet +//Telekinesis has no effect on a cable /obj/structure/cable/attack_tk(mob/user) return +// Items usable on a cable : +// - Wirecutters : cut it duh ! +// - Cable coil : merge cables +// - Multitool : get the power currently passing through the cable +// /obj/structure/cable/attackby(obj/item/W, mob/user) var/turf/T = src.loc @@ -142,10 +150,8 @@ else if(istype(W, /obj/item/device/multitool)) - var/datum/powernet/PN = get_powernet() // find the powernet - - if(PN && (PN.avail > 0)) // is it powered? - user << "\red [PN.avail]W in power network." + if(powernet && (powernet.avail > 0)) // is it powered? + user << "\red [powernet.avail]W in power network." else user << "\red The cable is not powered." @@ -159,7 +165,6 @@ src.add_fingerprint(user) // shock the user with probability prb - /obj/structure/cable/proc/shock(mob/user, prb, var/siemens_coeff = 1.0) if(!prob(prb)) return 0 @@ -171,6 +176,7 @@ else return 0 +//explosion handling /obj/structure/cable/ex_act(severity) switch(severity) if(1.0) @@ -186,9 +192,216 @@ qdel(src) return -// the cable coil object, used for laying cable +obj/structure/cable/proc/cableColor(var/colorC) + var/color_n = "red" + if(colorC) + color_n = colorC + cable_color = color_n + switch(colorC) + if("red") + icon = 'icons/obj/power_cond/power_cond_red.dmi' + if("yellow") + icon = 'icons/obj/power_cond/power_cond_yellow.dmi' + if("green") + icon = 'icons/obj/power_cond/power_cond_green.dmi' + if("blue") + icon = 'icons/obj/power_cond/power_cond_blue.dmi' + if("pink") + icon = 'icons/obj/power_cond/power_cond_pink.dmi' + if("orange") + icon = 'icons/obj/power_cond/power_cond_orange.dmi' + if("cyan") + icon = 'icons/obj/power_cond/power_cond_cyan.dmi' + if("white") + icon = 'icons/obj/power_cond/power_cond_white.dmi' + +//////////////////////////////////////////// +// Power related +/////////////////////////////////////////// + +obj/structure/cable/proc/add_avail(var/amount) + if(powernet) + powernet.newavail += amount + +obj/structure/cable/proc/add_load(var/amount) + if(powernet) + powernet.newload += amount + +obj/structure/cable/proc/surplus() + if(powernet) + return powernet.avail-powernet.load + else + return 0 + +obj/structure/cable/proc/avail() + if(powernet) + return powernet.avail + else + return 0 + +///////////////////////////////////////////////// +// Cable laying helpers +//////////////////////////////////////////////// + +// merge with the powernets of power objects in the given direction +/obj/structure/cable/proc/mergeConnectedNetworks(var/direction) + var/turf/TB + var/fdir = (!direction)? 0 : turn(direction, 180) //flip the direction, to match with the source position on its turf + if(!(d1 == direction || d2 == direction)) //if the cable is not pointed in this direction, do nothing + return + TB = get_step(src, direction) + + for(var/obj/structure/cable/C in TB) + + if(!C) + continue + + if(src == C) + continue + + if(C.d1 == fdir || C.d2 == fdir) //we've got a matching cable in the neighbor turf + if(!C.powernet) //if the matching cable somehow got no powernet, make him one (should not happen for cables) + var/datum/powernet/newPN = new() + newPN.add_cable(C) + + if(powernet) //if we already have a powernet, then merge the two powernets + merge_powernets(powernet,C.powernet) + else + C.powernet.add_cable(src) //else, we simply connect to the matching cable powernet + +// merge with the powernets of power objects in the source turf +/obj/structure/cable/proc/mergeConnectedNetworksOnTurf() + if(!powernet) //if we somehow have no powernet, make one (should not happen for cables) + var/datum/powernet/newPN = new() + newPN.add_cable(src) + + for(var/AM in loc) + if(istype(AM,/obj/structure/cable)) + var/obj/structure/cable/C = AM + if(C.d1 == 0 && d1==0) //only connected if they are both "nodes" + if(C.powernet == powernet) continue + if(C.powernet) + merge_powernets(powernet, C.powernet) + else + powernet.add_cable(C) //the cable was powernetless, let's just add it to our powernet + + else if(istype(AM,/obj/machinery/power/apc)) + var/obj/machinery/power/apc/N = AM + if(!N.terminal) continue // APC are connected through their terminal + if(N.terminal.powernet) + merge_powernets(powernet, N.terminal.powernet) + else + powernet.add_machine(N.terminal) + + else if(istype(AM,/obj/machinery/power)) //other power machines + var/obj/machinery/power/M = AM + if(M.powernet == powernet) continue + if(M.powernet) + merge_powernets(powernet, M.powernet) + else + powernet.add_machine(M) + +////////////////////////////////////////////// +// Powernets handling helpers +////////////////////////////////////////////// + +/obj/structure/cable/proc/get_connections() + . = list() // this will be a list of all connected power objects without a powernet + var/turf/T = loc + + if(d1) T = get_step(src, d1) + if(T) . += power_list(T, src, d1, 1) //only returns these with no powernets + + T = get_step(src, d2) + if(T) . += power_list(T, src, d2, 1) //only returns these with no powernets + + return . + +// will get both marked and unmarked connections (i.e with or without powernets) +/obj/structure/cable/proc/get_marked_connections() + . = list() // this will be a list of all connected power objects + var/turf/T = loc + + if(d1) T = get_step(src, d1) + if(T) . += power_list(T, src, d1, 0) + + T = get_step(src, d2) + if(T) . += power_list(T, src, d2, 0) + + return . + +//should be called after placing a cable which extends another cable, creating a "smooth" cable that no longer terminates in the centre of a turf. +//needed as this can, unlike other placements, disconnect cables +/obj/structure/cable/proc/denode() + var/turf/T1 = loc + if(!T1) return + + var/list/powerlist = power_list(T1,src,0,0) //find the other cables that ended in the centre of the turf, with or without a powernet + if(powerlist.len>0) + var/datum/powernet/PN = new() + propagate_network(powerlist[1],PN) //propagates the new powernet beginning at the source cable + + if(PN.is_empty()) //can happen with machines made nodeless when smoothing cables + qdel(PN) + +// cut the cable's powernet at this cable and updates the powergrid +/obj/structure/cable/proc/cut_cable_from_powernet() + var/turf/T1 = loc + if(!T1) return + + var/turf/T2 + if(d2) T2 = get_step(T1, d2) + if(d1) T1 = get_step(T1, d1) + + + var/list/P_list = power_list(T1, src, d1,0,cable_only = 1) // what joins on to cut cable... + P_list += power_list(T2, src, d2,0, cable_only = 1) //...in both directions + + + if(P_list.len == 0)//if nothing in both list, then the cable was a lone cable, just delete it and its powernet + powernet.remove_cable(src) + + for(var/obj/machinery/power/P in T1)//check if it was powering a machine + if(!P.connect_to_network()) //can't find a node cable on a the turf to connect to + P.disconnect_from_network() //remove from current network (and delete powernet) + return + + + var/i + var/obj/structure/cable/Cable_i + + //removes every adjacents cables, from the powernet, except the first found (to save processing) + //that way we'll know if there was a loop somewhere + for (i = 2, i <= P_list.len, i++) + Cable_i = P_list[i] + powernet.remove_cable(Cable_i) + + // remove the cut cable from its turf and powernet, so that it doesn't get count in propagate_network worklist + loc = null + powernet.remove_cable(src) //remove the cut cable from its powernet + + for (i = 2, i <= P_list.len, i++) // propagate network to every powernetless adjacents cables + Cable_i = P_list[i] + if(Cable_i.powernet == null) //if not null, there was a loop and the cable is already part of a powernet + var/datum/powernet/newPN = new() + propagate_network(P_list[i], newPN) + + // Disconnect machines connected to nodes + if(d1 == 0) // if we cut a node (O-X) cable + for(var/obj/machinery/power/P in T1) + if(!P.connect_to_network()) //can't find a node cable on a the turf to connect to + P.disconnect_from_network() //remove from current network + +/////////////////////////////////////////////// +// The cable coil object, used for laying cable +/////////////////////////////////////////////// + +//////////////////////////////// +// Definitions +//////////////////////////////// #define MAXCOIL 30 + /obj/item/stack/cable_coil name = "cable coil" icon = 'icons/obj/power.dmi' @@ -214,6 +427,20 @@ viewers(user) << "[user] is strangling \himself with the [src.name]! It looks like \he's trying to commit suicide." return(OXYLOSS) +/obj/item/stack/cable_coil/New(loc, amount = MAXCOIL, var/param_color = null) + ..() + src.amount = amount + if (param_color) + item_color = param_color + pixel_x = rand(-2,2) + pixel_y = rand(-2,2) + update_icon() + +/////////////////////////////////// +// General procedures +/////////////////////////////////// + +//you can use wires to heal robotics /obj/item/stack/cable_coil/attack(mob/living/carbon/human/H, mob/user) if(!istype(H)) return ..() @@ -226,14 +453,6 @@ else return ..() -/obj/item/stack/cable_coil/New(loc, amount = MAXCOIL, var/param_color = null) - ..() - src.amount = amount - if (param_color) - item_color = param_color - pixel_x = rand(-2,2) - pixel_y = rand(-2,2) - update_icon() /obj/item/stack/cable_coil/update_icon() if (!item_color) @@ -248,6 +467,7 @@ icon_state = "coil_[item_color]" name = "cable coil" + /obj/item/stack/cable_coil/examine() set src in view(1) @@ -258,6 +478,7 @@ else usr << "A coil of power cable. There are [amount] lengths of cable in the coil." + /obj/item/stack/cable_coil/verb/make_restraint() set name = "Make Cable Restraints" set category = "Object" @@ -276,6 +497,9 @@ usr << "\blue You cannot do that." ..() +// Items usable on a cable coil : +// - Wirecutters : cut them duh ! +// - Cable coil : merge cables /obj/item/stack/cable_coil/attackby(obj/item/weapon/W, mob/user) ..() if( istype(W, /obj/item/weapon/wirecutters) && src.amount > 1) @@ -304,6 +528,7 @@ src.use(amt) return +//remove cables from the stack /obj/item/stack/cable_coil/use(var/used) if(src.amount < used) return 0 @@ -318,6 +543,7 @@ update_icon() return 1 +//add cables to the stack /obj/item/stack/cable_coil/proc/give(var/extra) if(amount + extra > MAXCOIL) amount = MAXCOIL @@ -325,14 +551,16 @@ amount += extra update_icon() +/////////////////////////////////////////////// +// Cable laying procedures +////////////////////////////////////////////// + // called when cable_coil is clicked on a turf/simulated/floor - /obj/item/stack/cable_coil/proc/turf_place(turf/simulated/floor/F, mob/user) - if(!isturf(user.loc)) return - if(get_dist(F,user) > 1) + if(get_dist(F,user) > 1) //too far user << "You can't lay cable at a place that far away." return @@ -357,32 +585,30 @@ C.cableColor(item_color) - C.d1 = 0 + //set up the new cable + C.d1 = 0 //it's a O-X node cable C.d2 = dirn C.add_fingerprint(user) C.updateicon() - C.powernet = new() - powernets += C.powernet - C.powernet.cables += C + //create a new powernet with the cable, if needed it will be merged later + var/datum/powernet/PN = new() + PN.add_cable(C) - C.mergeConnectedNetworks(C.d2) - C.mergeConnectedNetworksOnTurf() + C.mergeConnectedNetworks(C.d2) //merge the powernet with adjacents powernets + C.mergeConnectedNetworksOnTurf() //merge the powernet with on turf powernets use(1) + if (C.shock(user, 50)) if (prob(50)) //fail new/obj/item/stack/cable_coil(C.loc, 1, C.cable_color) qdel(C) - //src.laying = 1 - //last = C - // called when cable_coil is click on an installed obj/cable - +// or click on a turf that already contains a "node" cable /obj/item/stack/cable_coil/proc/cable_join(obj/structure/cable/C, mob/user) - var/turf/U = user.loc if(!isturf(U)) return @@ -397,12 +623,14 @@ return - if(U == T) // do nothing if we clicked a cable we're standing on - return // may change later if can think of something logical to do + if(U == T) //if clicked on the turf we're standing on, try to put a cable in the direction we're facing + turf_place(T,user) + return var/dirn = get_dir(C, user) - if(C.d1 == dirn || C.d2 == dirn) // one end of the clicked cable is pointing towards us + // one end of the clicked cable is pointing towards us + if(C.d1 == dirn || C.d2 == dirn) if(U.intact) // can't place a cable if the floor is complete user << "You can't lay cable there unless the floor tiles are removed." return @@ -425,19 +653,24 @@ NC.add_fingerprint() NC.updateicon() - if(C.powernet) - NC.powernet = C.powernet - NC.powernet.cables += NC - NC.mergeConnectedNetworks(NC.d2) - NC.mergeConnectedNetworksOnTurf() + //create a new powernet with the cable, if needed it will be merged later + var/datum/powernet/newPN = new() + newPN.add_cable(NC) + + NC.mergeConnectedNetworks(NC.d2) //merge the powernet with adjacents powernets + NC.mergeConnectedNetworksOnTurf() //merge the powernet with on turf powernets + use(1) + if (NC.shock(user, 50)) if (prob(50)) //fail new/obj/item/stack/cable_coil(NC.loc, 1, NC.cable_color) qdel(NC) return - else if(C.d1 == 0) // exisiting cable doesn't point at our position, so see if it's a stub + + // exisiting cable doesn't point at our position, so see if it's a stub + else if(C.d1 == 0) // if so, make it a full cable pointing from it's old direction to our dirn var/nd1 = C.d2 // these will be the new directions var/nd2 = dirn @@ -465,11 +698,12 @@ C.updateicon() - C.mergeConnectedNetworks(C.d1) - C.mergeConnectedNetworks(C.d2) + C.mergeConnectedNetworks(C.d1) //merge the powernets... + C.mergeConnectedNetworks(C.d2) //...in the two new cable directions C.mergeConnectedNetworksOnTurf() use(1) + if (C.shock(user, 50)) if (prob(50)) //fail new/obj/item/stack/cable_coil(C.loc, 2, C.cable_color) @@ -479,116 +713,9 @@ C.denode()// this call may have disconnected some cables that terminated on the centre of the turf, if so split the powernets. return -/obj/structure/cable/proc/mergeConnectedNetworks(var/direction) - var/turf/TB - if(!(d1 == direction || d2 == direction)) - return - TB = get_step(src, direction) - - for(var/obj/structure/cable/TC in TB) - - if(!TC) - continue - - if(src == TC) - continue - - var/fdir = (!direction)? 0 : turn(direction, 180) - - if(TC.d1 == fdir || TC.d2 == fdir) - - if(!TC.powernet) - TC.powernet = new() - powernets += TC.powernet - TC.powernet.cables += TC - - if(powernet) - merge_powernets(powernet,TC.powernet) - else - powernet = TC.powernet - powernet.cables += src - - - - -/obj/structure/cable/proc/mergeConnectedNetworksOnTurf() - if(!powernet) - powernet = new() - powernets += powernet - powernet.cables += src - - for(var/AM in loc) - if(istype(AM,/obj/structure/cable)) - var/obj/structure/cable/C = AM - if(C.d1 == 0 && d1==0) //only connected if they are both "nodes" - if(C.powernet == powernet) continue - if(C.powernet) - merge_powernets(powernet, C.powernet) - else - C.powernet = powernet - powernet.cables += C - - else if(istype(AM,/obj/machinery/power/apc)) - var/obj/machinery/power/apc/N = AM - if(!N.terminal) continue - if(N.terminal.powernet) - merge_powernets(powernet, N.terminal.powernet) - else - N.terminal.powernet = powernet - powernet.nodes[N.terminal] = N.terminal - - else if(istype(AM,/obj/machinery/power)) - var/obj/machinery/power/M = AM - if(M.powernet == powernet) continue - if(M.powernet) - merge_powernets(powernet, M.powernet) - else - M.powernet = powernet - powernet.nodes[M] = M - - -obj/structure/cable/proc/cableColor(var/colorC) - var/color_n = "red" - if(colorC) - color_n = colorC - cable_color = color_n - switch(colorC) - if("red") - icon = 'icons/obj/power_cond/power_cond_red.dmi' - if("yellow") - icon = 'icons/obj/power_cond/power_cond_yellow.dmi' - if("green") - icon = 'icons/obj/power_cond/power_cond_green.dmi' - if("blue") - icon = 'icons/obj/power_cond/power_cond_blue.dmi' - if("pink") - icon = 'icons/obj/power_cond/power_cond_pink.dmi' - if("orange") - icon = 'icons/obj/power_cond/power_cond_orange.dmi' - if("cyan") - icon = 'icons/obj/power_cond/power_cond_cyan.dmi' - if("white") - icon = 'icons/obj/power_cond/power_cond_white.dmi' - -obj/structure/cable/proc/add_avail(var/amount) - if(powernet) - powernet.newavail += amount - -obj/structure/cable/proc/add_load(var/amount) - if(powernet) - powernet.newload += amount - -obj/structure/cable/proc/surplus() - if(powernet) - return powernet.avail-powernet.load - else - return 0 - -obj/structure/cable/proc/avail() - if(powernet) - return powernet.avail - else - return 0 +////////////////////////////// +// Misc. +///////////////////////////// /obj/item/stack/cable_coil/cut item_state = "coil_red2" diff --git a/code/modules/power/power.dm b/code/modules/power/power.dm index 793179a1664..e87476c2310 100644 --- a/code/modules/power/power.dm +++ b/code/modules/power/power.dm @@ -1,10 +1,17 @@ +////////////////////////////// +// POWER MACHINERY BASE CLASS +////////////////////////////// + +///////////////////////////// +// Definitions +///////////////////////////// + /obj/machinery/power name = null icon = 'icons/obj/power.dmi' anchored = 1.0 var/datum/powernet/powernet = null - var/directwired = 1 // by default, power machines are connected by a cable in a neighbouring turf - // if set to 0, requires a 0-X cable on this turf + var/directwired = 1 // TODEL use_power = 0 idle_power_usage = 0 active_power_usage = 0 @@ -13,6 +20,10 @@ disconnect_from_network() ..() +/////////////////////////////// +// General procedures +////////////////////////////// + // common helper procs for all power machines /obj/machinery/power/proc/add_avail(var/amount) if(powernet) @@ -39,8 +50,7 @@ // returns true if the area has power on given channel (or doesn't require power). // defaults to power_channel - -/obj/machinery/proc/powered(var/chan = -1) +/obj/machinery/proc/powered(var/chan = -1) // defaults to power_channel if(!src.loc) return 0 @@ -56,7 +66,6 @@ return A.master.powered(chan) // return power status of the area // increment the power usage stats for an area - /obj/machinery/proc/use_power(var/amount, var/chan = -1) // defaults to power_channel var/area/A = get_area(src) // make sure it's in an area if(!A || !isarea(A) || !A.master) @@ -75,51 +84,119 @@ stat |= NOPOWER return +// connect the machine to a powernet if a node cable is present on the turf +/obj/machinery/power/proc/connect_to_network() + var/turf/T = src.loc + if(!T || !istype(T)) + return 0 -// the powernet datum -// each contiguous network of cables & nodes + var/obj/structure/cable/C = T.get_cable_node() //check if we have a node cable on the machine turf, the first found is picked + if(!C || !C.powernet) + return 0 + C.powernet.add_machine(src) + return 1 -// rebuild all power networks from scratch +// remove and disconnect the machine from its current powernet +/obj/machinery/power/proc/disconnect_from_network() + if(!powernet) + return 0 + powernet.remove_machine(src) + return 1 -/proc/makepowernets() - for(var/datum/powernet/PN in powernets) - del(PN) - powernets.Cut() +// attach a wire to a power machine - leads from the turf you are standing on +//almost never called, overwritten by all power machines but terminal and generator +/obj/machinery/power/attackby(obj/item/weapon/W, mob/user) - for(var/obj/structure/cable/PC in cable_list) - if(!PC.powernet) - PC.powernet = new() - powernets += PC.powernet -// if(Debug) world.log << "Starting mpn at [PC.x],[PC.y] ([PC.d1]/[PC.d2])" - powernet_nextlink(PC,PC.powernet) + if(istype(W, /obj/item/stack/cable_coil)) -// if(Debug) world.log << "[powernets.len] powernets found" + var/obj/item/stack/cable_coil/coil = W - for(var/obj/structure/cable/C in cable_list) - if(!C.powernet) continue - C.powernet.cables += C + var/turf/T = user.loc - for(var/obj/machinery/power/M in machines) - M.connect_to_network() + if(T.intact || !istype(T, /turf/simulated/floor)) + return + + if(get_dist(src, user) > 1) + return + + coil.turf_place(T, user) + return + else + ..() + return + +/////////////////////////////////////////// +// Powernet handling helpers +////////////////////////////////////////// + +//returns all the cables WITHOUT a powernet in neighbors turfs, +//pointing towards the turf the machine is located at +/obj/machinery/power/proc/get_connections() + + . = list() + + var/cdir + var/turf/T + + for(var/card in cardinal) + T = get_step(loc,card) + cdir = get_dir(T,loc) + + for(var/obj/structure/cable/C in T) + if(C.powernet) continue + if(C.d1 == cdir || C.d2 == cdir) + . += C + return . + +//returns all the cables in neighbors turfs, +//pointing towards the turf the machine is located at +/obj/machinery/power/proc/get_marked_connections() + + . = list() + + var/cdir + var/turf/T + + for(var/card in cardinal) + T = get_step(loc,card) + cdir = get_dir(T,loc) + + for(var/obj/structure/cable/C in T) + if(C.d1 == cdir || C.d2 == cdir) + . += C + return . + +//returns all the NODES (O-X) cables WITHOUT a powernet in the turf the machine is located at +/obj/machinery/power/proc/get_indirect_connections() + . = list() + for(var/obj/structure/cable/C in loc) + if(C.powernet) continue + if(C.d1 == 0) // the cable is a node cable + . += C + return . + +/////////////////////////////////////////// +// GLOBAL PROCS for powernets handling +////////////////////////////////////////// // returns a list of all power-related objects (nodes, cable, junctions) in turf, // excluding source, that match the direction d // if unmarked==1, only return those with no powernet -/proc/power_list(var/turf/T, var/source, var/d, var/unmarked=0) +/proc/power_list(var/turf/T, var/source, var/d, var/unmarked=0, var/cable_only = 0) . = list() var/fdir = (!d)? 0 : turn(d, 180) // the opposite direction to d (or 0 if d==0) // world.log << "d=[d] fdir=[fdir]" for(var/AM in T) if(AM == source) continue //we don't want to return source - if(istype(AM,/obj/machinery/power)) + if(!cable_only && istype(AM,/obj/machinery/power)) var/obj/machinery/power/P = AM if(P.powernet == 0) continue // exclude APCs which have powernet=0 if(!unmarked || !P.powernet) //if unmarked=1 we only return things with no powernet - if(P.directwired || (d == 0)) + if(d == 0) . += P else if(istype(AM,/obj/structure/cable)) @@ -131,332 +208,57 @@ return . -/obj/structure/cable/proc/get_connections() - . = list() // this will be a list of all connected power objects - var/turf/T = loc +// rebuild all power networks from scratch - only called at world creation or by the admin verb +/proc/makepowernets() + for(var/datum/powernet/PN in powernets) + del(PN) + powernets.Cut() - if(d1) T = get_step(src, d1) - if(T) . += power_list(T, src, d1, 1) - - T = get_step(src, d2) - if(T) . += power_list(T, src, d2, 1) - - return . - -// will get both marked and unmarked connections -/obj/structure/cable/proc/get_marked_connections() - . = list() // this will be a list of all connected power objects - var/turf/T = loc - - if(d1) T = get_step(src, d1) - if(T) . += power_list(T, src, d1, 0) - - T = get_step(src, d2) - if(T) . += power_list(T, src, d2, 0) - - return . - -/obj/machinery/power/proc/get_connections() - - . = list() - - if(!directwired) - return get_indirect_connections() - - var/cdir - - for(var/card in cardinal) - var/turf/T = get_step(loc,card) - cdir = get_dir(T,loc) - - for(var/obj/structure/cable/C in T) - if(C.powernet) continue - if(C.d1 == cdir || C.d2 == cdir) - . += C - return . - -/obj/machinery/power/proc/get_marked_connections() - - . = list() - - if(!directwired) - return get_indirect_connections() - - var/cdir - - for(var/card in cardinal) - var/turf/T = get_step(loc,card) - cdir = get_dir(T,loc) - - for(var/obj/structure/cable/C in T) - if(C.d1 == cdir || C.d2 == cdir) - . += C - return . - -/obj/machinery/power/proc/get_indirect_connections() - . = list() - for(var/obj/structure/cable/C in loc) - if(C.powernet) continue - if(C.d1 == 0) - . += C - return . - - -/proc/powernet_nextlink(var/obj/O, var/datum/powernet/PN) - var/list/P = list() - - while(1) - if( istype(O,/obj/structure/cable) ) - var/obj/structure/cable/C = O - C.powernet = PN - P = C.get_connections() - - else if(O.anchored && istype(O,/obj/machinery/power)) - var/obj/machinery/power/M = O - M.powernet = PN - P = M.get_connections() - - else - return - - if(P.len == 0) return - - O = P[1] - - for(var/L = 2 to P.len) - powernet_nextlink(P[L], PN) + for(var/obj/structure/cable/PC in cable_list) + if(!PC.powernet) + PC.powernet = new() + propagate_network(PC,PC.powernet) //remove the old powernet and replace it with a new one throughout the network. /proc/propagate_network(var/obj/O, var/datum/powernet/PN) //world.log << "propagating new network" var/list/worklist = list() - worklist+=O + var/list/found_machines = list() var/index = 1 - while(index<=worklist.len) - var/obj/P = worklist[index++] + var/obj/P = null + + worklist+=O //start propagating from the passed object + + while(index<=worklist.len) //until we've exhausted all power objects + P = worklist[index] //get the next power object found + index++ + if( istype(P,/obj/structure/cable)) - //world.log << "is cable" var/obj/structure/cable/C = P - if(C.powernet==PN) - //world.log << "already has correct network" - continue - //world.log << "removing from old powernet[C.powernet]" - C.powernet.cables-=C - C.powernet = PN - PN.cables+=C - for(var/obj/newP in C.get_marked_connections()) - worklist+=newP - //world.log << "found [P.len] children" + if(C.powernet != PN) //add it to the powernet, if it isn't already there + PN.add_cable(C) + worklist |= C.get_marked_connections() //get adjacents power objects, with or without a powernet + else if(P.anchored && istype(P,/obj/machinery/power)) - //world.log << "is machine" var/obj/machinery/power/M = P - if(M.powernet==PN) - //world.log << "already has correct network" - continue - //world.log << "removing from old powernet[M.powernet]" - M.powernet.nodes-=M - M.powernet = PN - PN.nodes+=M - for(var/obj/newP in M.get_marked_connections()) - worklist+=newP - //world.log << "found [P.len] children" + found_machines |= M //we wait until the powernet is fully propagates to connect the machines + else continue -//should be called after placing a cable which extends another cable, creating a "smooth" cable that no longer terminates in the centre of a turf. -//needed as this can, unlike other placements, disconnect cables -/obj/structure/cable/proc/denode() - //world.log << "denoding" - var/turf/T1 = loc - if(!T1) return - var/list/powerlist = power_list(T1,src,0,0) //find the other cables that ended in the centre of the turf - //world.log << "found [powerlist.len] power items, picking the first" - var/datum/powernet/oldPN = powernet - var/datum/powernet/PN = new() - powernets+=PN - if(powerlist.len>0) - propagate_network(powerlist[1],PN) - if(oldPN.cables.len==0&&oldPN.nodes.len==0) - //world.log << "There was a loop, so the old powernet was destroyed, removing it" - powernets-=oldPN -// cut a powernet at this cable object -/datum/powernet/proc/cut_cable(var/obj/structure/cable/C) - var/turf/T1 = C.loc - if(!T1) return - var/node = 0 - if(C.d1 == 0) - node = 1 - - var/turf/T2 - if(C.d2) T2 = get_step(T1, C.d2) - if(C.d1) T1 = get_step(T1, C.d1) + //now that the powernet is set, connect found machines to it + for(var/obj/machinery/power/PM in found_machines) + if(!PM.connect_to_network()) //couldn't find a node on its turf... + PM.disconnect_from_network() //... so disconnect if already on a powernet - var/list/P1 = power_list(T1, C, C.d1) // what joins on to cut cable in dir1 - var/list/P2 = power_list(T2, C, C.d2) // what joins on to cut cable in dir2 - -// if(Debug) -// for(var/obj/O in P1) -// world.log << "P1: [O] at [O.x] [O.y] : [istype(O, /obj/structure/cable) ? "[O:d1]/[O:d2]" : null] " -// for(var/obj/O in P2) -// world.log << "P2: [O] at [O.x] [O.y] : [istype(O, /obj/structure/cable) ? "[O:d1]/[O:d2]" : null] " - - - if(P1.len == 0 || P2.len == 0)//if nothing in either list, then the cable was an endpoint no need to rebuild the powernet, - cables -= C //just remove cut cable from the list -// if(Debug) world.log << "Was end of cable" +//Merge two powernets, the bigger (in cable length term) absorbing the other +/proc/merge_powernets(var/datum/powernet/net1, var/datum/powernet/net2) + if(!net1 || !net2) //if one of the powernet doesn't exist, return return - //null the powernet reference of all cables & nodes in this powernet - var/i=1 - while(i<=cables.len) - var/obj/structure/cable/Cable = cables[i] - if(Cable) - Cable.powernet = null - if(Cable == C) - cables.Cut(i,i+1) - continue - i++ - i=1 - while(i<=nodes.len) - var/obj/machinery/power/Node = nodes[i] - if(Node) - Node.powernet = null - i++ - - // remove the cut cable from the network -// C.netnum = -1 - - C.loc = null - - powernet_nextlink(P1[1], src) // propagate network from 1st side of cable, using current netnum //TODO? - - // now test to see if propagation reached to the other side - // if so, then there's a loop in the network - var/notlooped = 0 - for(var/O in P2) - if( istype(O, /obj/machinery/power) ) - var/obj/machinery/power/Machine = O - if(Machine.powernet != src) - notlooped = 1 - break - else if( istype(O, /obj/structure/cable) ) - var/obj/structure/cable/Cable = O - if(Cable.powernet != src) - notlooped = 1 - break - - if(notlooped) - // not looped, so make a new powernet - var/datum/powernet/PN = new() - powernets += PN - -// if(Debug) world.log << "Was not looped: spliting PN#[number] ([cables.len];[nodes.len])" - - i=1 - while(i<=cables.len) - var/obj/structure/cable/Cable = cables[i] - if(Cable && !Cable.powernet) // non-connected cables will have powernet=null, since they weren't reached by propagation - Cable.powernet = PN - cables.Cut(i,i+1) // remove from old network & add to new one - PN.cables += Cable - continue - i++ - - i=1 - while(i<=nodes.len) - var/obj/machinery/power/Node = nodes[i] - if(Node && !Node.powernet) - Node.powernet = PN - nodes.Cut(i,i+1) - PN.nodes[Node] = Node - continue - i++ - - // Disconnect machines connected to nodes - if(node) - for(var/obj/machinery/power/P in T1) - if(P.powernet && !P.powernet.nodes[src]) - P.disconnect_from_network() -// if(Debug) -// world.log << "Old PN#[number] : ([cables.len];[nodes.len])" -// world.log << "New PN#[PN.number] : ([PN.cables.len];[PN.nodes.len])" -// -// else -// if(Debug) -// world.log << "Was looped." -// //there is a loop, so nothing to be done -// return - - - -/datum/powernet/proc/reset() - load = newload - newload = 0 - avail = newavail - newavail = 0 - - - viewload = 0.8*viewload + 0.2*load - - viewload = round(viewload) - - var/numapc = 0 - - if(nodes && nodes.len) - for(var/obj/machinery/power/terminal/term in nodes) - if( istype( term.master, /obj/machinery/power/apc ) ) - numapc++ - - if(numapc) - perapc = avail/numapc - - netexcess = avail - load - - if( netexcess > 100) // if there was excess power last cycle - if(nodes && nodes.len) - for(var/obj/machinery/power/smes/S in nodes) // find the SMESes in the network - if(S.powernet == src) - S.restore() // and restore some of the power that was used - else - error("[S.name] (\ref[S]) had a [S.powernet ? "different (\ref[S.powernet])" : "null"] powernet to our powernet (\ref[src]).") //this line is a faggot and using the normal ERROR proc breaks it - nodes.Remove(S) - -/datum/powernet/proc/get_electrocute_damage() - switch(avail)/* - if (1300000 to INFINITY) - return min(rand(70,150),rand(70,150)) - if (750000 to 1300000) - return min(rand(50,115),rand(50,115)) - if (100000 to 750000-1) - return min(rand(35,101),rand(35,101)) - if (75000 to 100000-1) - return min(rand(30,95),rand(30,95)) - if (50000 to 75000-1) - return min(rand(25,80),rand(25,80)) - if (25000 to 50000-1) - return min(rand(20,70),rand(20,70)) - if (10000 to 25000-1) - return min(rand(20,65),rand(20,65)) - if (1000 to 10000-1) - return min(rand(10,20),rand(10,20))*/ - if (1000000 to INFINITY) - return min(rand(50,160),rand(50,160)) - if (200000 to 1000000) - return min(rand(25,80),rand(25,80)) - if (100000 to 200000)//Ave powernet - return min(rand(20,60),rand(20,60)) - if (50000 to 100000) - return min(rand(15,40),rand(15,40)) - if (1000 to 50000) - return min(rand(10,20),rand(10,20)) - else - return 0 - -//The powernet that calls this proc will consume the other powernet -/proc/merge_powernets(var/datum/powernet/net1, var/datum/powernet/net2) - if(!net1 || !net2) return - if(net1 == net2) return + if(net1 == net2) //don't merge same powernets + return //We assume net1 is larger. If net2 is in fact larger we are just going to make them switch places to reduce on code. if(net1.cables.len < net2.cables.len) //net2 is larger than net1. Let's switch them around @@ -464,56 +266,24 @@ net1 = net2 net2 = temp + //we don't use add_cable and add_machine here, because that could + //change the size of net2.nodes or net2.cables while in the loop (runtime galore) for(var/i=1,i<=net2.nodes.len,i++) //merge net2 into net1 - var/obj/machinery/power/Node = net2.nodes[i] + var/obj/machinery/power/Node = net2.nodes[i] //merge power machines if(Node) Node.powernet = net1 net1.nodes[Node] = Node for(var/i=1,i<=net2.cables.len,i++) - var/obj/structure/cable/Cable = net2.cables[i] + var/obj/structure/cable/Cable = net2.cables[i] //merge cables if(Cable) Cable.powernet = net1 net1.cables += Cable - del(net2) + qdel(net2) //garbage collect the now empty powernet + return net1 - -/obj/machinery/power/proc/connect_to_network() - var/turf/T = src.loc - if(!T || !istype(T)) return 0 - var/obj/structure/cable/C = T.get_cable_node() - if(!C || !C.powernet) return 0 -// makepowernets() //TODO: find fast way //EWWWW what are you doing!? - powernet = C.powernet - powernet.nodes[src] = src - return 1 - -/obj/machinery/power/proc/disconnect_from_network() - if(!powernet) - //world << " no powernet" - return 0 - powernet.nodes -= src - powernet = null - //world << "powernet null" - return 1 - -/turf/proc/get_cable_node() - if(!istype(src, /turf/simulated/floor)) - return null - for(var/obj/structure/cable/C in src) - if(C.d1 == 0) - return C - return null - -/area/proc/get_apc() - for(var/area/RA in src.related) - var/obj/machinery/power/apc/FINDME = locate() in RA - if (FINDME) - return FINDME - - //Determines how strong could be shock, deals damage to mob, uses power. //M is a mob who touched wire/whatever //power_source is a source of electricity, can be powercell, area, apc, cable, powernet or null @@ -579,3 +349,143 @@ cell.use(drained_energy) return drained_energy +//////////////////////////////////////////// +// POWERNET DATUM PROCS +// each contiguous network of cables & nodes +//////////////////////////////////////////// + +/datum/powernet/New() + powernets += src + +/datum/powernet/Destroy() + powernets -= src + +/datum/powernet/proc/is_empty() + return !cables.len && !nodes.len + +//remove a cable from the current powernet +//if the powernet is then empty, delete it +//Warning : this proc DON'T check if the cable exists +/datum/powernet/proc/remove_cable(var/obj/structure/cable/C) + cables -= C + C.powernet = null + if(is_empty())//the powernet is now empty... + qdel(src)///... delete it + +//add a cable to the current powernet +//Warning : this proc DON'T check if the cable exists +/datum/powernet/proc/add_cable(var/obj/structure/cable/C) + if(C.powernet)// if C already has a powernet... + if(C.powernet == src) + return + else + C.powernet.remove_cable(C) //..remove it + C.powernet = src + cables +=C + +//remove a power machine from the current powernet +//if the powernet is then empty, delete it +//Warning : this proc DON'T check if the machine exists +/datum/powernet/proc/remove_machine(var/obj/machinery/power/M) + nodes -=M + M.powernet = null + if(is_empty())//the powernet is now empty... + qdel(src)///... delete it + + +//add a power machine to the current powernet +//Warning : this proc DON'T check if the machine exists +/datum/powernet/proc/add_machine(var/obj/machinery/power/M) + if(M.powernet)// if M already has a powernet... + if(M.powernet == src) + return + else + M.powernet.remove_machine(M) //..remove it + M.powernet = src + nodes[M] = M + +//handles the power changes in the powernet +//called every ticks by the powernet controller +/datum/powernet/proc/reset() + load = newload + newload = 0 + avail = newavail + newavail = 0 + + + viewload = 0.8*viewload + 0.2*load + + viewload = round(viewload) + + var/numapc = 0 + + if(nodes && nodes.len) + for(var/obj/machinery/power/terminal/term in nodes) + if( istype( term.master, /obj/machinery/power/apc ) ) + numapc++ + + if(numapc) + perapc = avail/numapc + + netexcess = avail - load + + if( netexcess > 100) // if there was excess power last cycle + if(nodes && nodes.len) + for(var/obj/machinery/power/smes/S in nodes) // find the SMESes in the network + if(S.powernet == src) + S.restore() // and restore some of the power that was used + else + error("[S.name] (\ref[S]) had a [S.powernet ? "different (\ref[S.powernet])" : "null"] powernet to our powernet (\ref[src]).") //this line is a faggot and using the normal ERROR proc breaks it + nodes.Remove(S) + +/datum/powernet/proc/get_electrocute_damage() + switch(avail)/* + if (1300000 to INFINITY) + return min(rand(70,150),rand(70,150)) + if (750000 to 1300000) + return min(rand(50,115),rand(50,115)) + if (100000 to 750000-1) + return min(rand(35,101),rand(35,101)) + if (75000 to 100000-1) + return min(rand(30,95),rand(30,95)) + if (50000 to 75000-1) + return min(rand(25,80),rand(25,80)) + if (25000 to 50000-1) + return min(rand(20,70),rand(20,70)) + if (10000 to 25000-1) + return min(rand(20,65),rand(20,65)) + if (1000 to 10000-1) + return min(rand(10,20),rand(10,20))*/ + if (1000000 to INFINITY) + return min(rand(50,160),rand(50,160)) + if (200000 to 1000000) + return min(rand(25,80),rand(25,80)) + if (100000 to 200000)//Ave powernet + return min(rand(20,60),rand(20,60)) + if (50000 to 100000) + return min(rand(15,40),rand(15,40)) + if (1000 to 50000) + return min(rand(10,20),rand(10,20)) + else + return 0 + +//////////////////////////////////////////////// +// Misc. +/////////////////////////////////////////////// + + +// return a knot cable (O-X) if one is present in the turf +// null if there's none +/turf/proc/get_cable_node() + if(!istype(src, /turf/simulated/floor)) + return null + for(var/obj/structure/cable/C in src) + if(C.d1 == 0) + return C + return null + +/area/proc/get_apc() + for(var/area/RA in src.related) + var/obj/machinery/power/apc/FINDME = locate() in RA + if (FINDME) + return FINDME \ No newline at end of file diff --git a/code/modules/power/solar.dm b/code/modules/power/solar.dm index c43fbb24874..c61c3155796 100644 --- a/code/modules/power/solar.dm +++ b/code/modules/power/solar.dm @@ -33,10 +33,10 @@ var/list/solars_list = list() solars_list.Remove(src) /obj/machinery/power/solar/connect_to_network() - ..() + var/to_return = ..() if(powernet) //if connected and not already in solar_list... solars_list |= src //... add it - + return to_return /obj/machinery/power/solar/proc/Make(var/obj/item/solar_assembly/S) if(!S) @@ -287,9 +287,10 @@ var/list/solars_list = list() solars_list.Remove(src) /obj/machinery/power/solar_control/connect_to_network() - ..() + var/to_return = ..() if(powernet) //if connected and not already in solar_list... solars_list |= src //... add it + return to_return /obj/machinery/power/solar_control/initialize() ..() diff --git a/code/modules/power/tracker.dm b/code/modules/power/tracker.dm index 17b89cb8ebd..af79acaa808 100644 --- a/code/modules/power/tracker.dm +++ b/code/modules/power/tracker.dm @@ -26,9 +26,10 @@ solars_list.Remove(src) /obj/machinery/power/tracker/connect_to_network() - ..() + var/to_return = ..() if(powernet) //if connected and not already in solar_list... solars_list |= src //... add it + return to_return /obj/machinery/power/tracker/proc/Make(var/obj/item/solar_assembly/S) if(!S) From bffd90bb0b34ca45b37f0abd0f21d06bd0e5bfac Mon Sep 17 00:00:00 2001 From: phil235 Date: Sun, 4 May 2014 22:55:14 +0200 Subject: [PATCH 051/185] unusable w/o power and fingerprint when bumped open. Leave fingerprints when mob opens via bump. Unusable when unpowered --- code/game/machinery/doors/windowdoor.dm | 35 ++++++++++++++++++------- 1 file changed, 25 insertions(+), 10 deletions(-) diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm index c1f556da1d7..bff26c70c87 100644 --- a/code/game/machinery/doors/windowdoor.dm +++ b/code/game/machinery/doors/windowdoor.dm @@ -26,6 +26,8 @@ ..() /obj/machinery/door/window/Bumped(atom/movable/AM as mob|obj) + if(operating) + return if (!( ismob(AM) )) var/obj/machinery/bot/bot = AM if(istype(bot)) @@ -43,15 +45,27 @@ return if (!( ticker )) return - if (src.operating) + var/mob/M = AM + if(!M.restrained()) + bumpopen(M) + return + +/obj/machinery/door/windoor/bumpopen(mob/user as mob) + if(operating) return - if (src.density && src.allowed(AM)) - open() - if(src.check_access(null)) - sleep(50) - else //secure doors close faster - sleep(20) - close() + src.add_fingerprint(user) + if(!src.requiresID()) + user = null + + if(density & allowed(user)) + open() + if(src.check_access(null)) + sleep(50) + else //secure doors close faster + sleep(20) + close() + else + flick(text("[]deny", src.base_state), src) return /obj/machinery/door/window/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) @@ -82,6 +96,8 @@ return 0 if (!ticker) return 0 + if (stat & NOPOWER) + return 0 if(!src.operating) //in case of emag src.operating = 1 flick(text("[]opening", src.base_state), src) @@ -100,7 +116,7 @@ return 1 /obj/machinery/door/window/close() - if (src.operating || emagged) + if (src.operating || emagged || (stat & NOPOWER)) return 0 src.operating = 1 flick(text("[]closing", src.base_state), src) @@ -303,4 +319,3 @@ dir = SOUTH icon_state = "rightsecure" base_state = "rightsecure" - From 82639d14a6fbcc069a9fe8429f8d597b8c410fdc Mon Sep 17 00:00:00 2001 From: ikarrus Date: Sun, 4 May 2014 15:00:47 -0600 Subject: [PATCH 052/185] Secret Document Objectives Adds new steal objective "Secret Documents" -A set of secret documents spawn in the vault's filing cabinet, but even syndicate documents qualify as valid steals Adds the exchange objective for traitors -If there are at least 6 traitors, two of them will be selected to make an exchange of secret documents -There is a low (20%) chance that one of them will have an additional backstab objective, where they will require both sets of documents to win --- _maps/map_files/tgstation.2.1.3.dmm | 10 ++-- code/game/gamemodes/objective.dm | 31 ++++++++++- code/game/gamemodes/objective_items.dm | 14 +++++ code/game/gamemodes/traitor/traitor.dm | 66 ++++++++++++++++++++++-- code/game/objects/items/documents.dm | 27 ++++++++++ code/modules/paperwork/filingcabinet.dm | 2 +- code/modules/paperwork/folders.dm | 49 +++++++++++++----- icons/obj/bureaucracy.dmi | Bin 9240 -> 11102 bytes tgstation.dme | 1 + 9 files changed, 175 insertions(+), 25 deletions(-) create mode 100644 code/game/objects/items/documents.dm diff --git a/_maps/map_files/tgstation.2.1.3.dmm b/_maps/map_files/tgstation.2.1.3.dmm index 09bd53f6a84..2ce00514ef2 100644 --- a/_maps/map_files/tgstation.2.1.3.dmm +++ b/_maps/map_files/tgstation.2.1.3.dmm @@ -1585,7 +1585,7 @@ "aEy" = (/obj/structure/sign/securearea,/turf/simulated/wall/r_wall,/area/ai_monitored/nuke_storage) "aEz" = (/obj/machinery/door/airlock/vault{icon_state = "door_locked"; locked = 1; req_access_txt = "53"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/ai_monitored/nuke_storage) "aEA" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/wall/r_wall,/area/ai_monitored/nuke_storage) -"aEB" = (/obj/machinery/computer/secure_data/detective_computer,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/ai_monitored/nuke_storage) +"aEB" = (/mob/living/simple_animal/mouse/brown/Tom,/turf/simulated/floor/plating,/area/security/prison) "aEC" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/closet/secure_closet/freezer/money,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/ai_monitored/nuke_storage) "aED" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/plating,/area/maintenance/fpmaint) "aEE" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/wall/r_wall,/area/gateway) @@ -9102,7 +9102,7 @@ "dtb" = (/obj/structure/transit_tube{tag = "icon-E-NW"; icon_state = "E-NW"},/turf/space,/area) "dtc" = (/obj/item/weapon/mop,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership) "dtd" = (/obj/structure/table/woodentable,/obj/item/device/paicard,/turf/unsimulated/floor{icon_state = "grimy"},/area/syndicate_mothership) -"dte" = (/mob/living/simple_animal/mouse/brown/Tom,/turf/simulated/floor/engine,/area/toxins/misc_lab) +"dte" = (/obj/structure/filingcabinet,/obj/item/weapon/folder/documents,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/ai_monitored/nuke_storage) "dtk" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/bluegrid,/area/assembly/chargebay) "dts" = (/obj/structure/transit_tube{tag = "icon-E-W-Pass"; icon_state = "E-W-Pass"},/turf/space,/area) "dtu" = (/obj/structure/lattice,/obj/structure/lattice,/turf/space,/area) @@ -9196,7 +9196,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaaaaadaadaadaadaadaaaaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaafaaaaaaaaaaafaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacaacaaaaacaacaacaacaacaaaaacaacaacaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaaaaadaadaadaadaadaaaaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaiaaiaajaakaalaakaalaakaamaaiaaiaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacaacaaaaaaaaaaaaaaaaaaaaaaacaacaacaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaafaaiajlajPajmajRajkaaqaktaaKalhaaiaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaafaafaaiahBahAahAahAahAahAdplaaKahCaaiaafaafaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaafaafaaiahBahAaEBahAahAahAdplaaKahCaaiaafaafaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaafaaiaaiaieaibahEaidaicaaqaaqaaKaiFaaiaafaafaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaafaaaaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaiNaafaafaaaaaaaaaaaaaaaahjaaiagWaaqaaqaaqaaqaaxaaqaaqagVagTaaiaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaaaaafaaaaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdabdabdabdabdabdabdaagaaiaaiaawaaxaaqaaqaayaazaaxaaqaataaAaaiahlaahaafaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaaaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -9237,7 +9237,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafawLawMawNawMawOawNawNawPawMawNawQawRawSawSawTamaavQamaawUanlaqqawVawWamaawXarqarqarqarqarqawYawZamaaxaanlamaasCasCaogapqaogaxbaxcaxdaxdaxdaxdaxdaxdaxdaxeaxbaxfaxgaxgaxgaxgaxgaxgaxgaopaxhawfaxiaxjaxkaxlaxmaxnaxoaxpaxqaxraxsaxtawhaxualKaxvabIaxwapFaucaudaxxaqHarRaxyawtawtawtaxzaxAaxBaxCaxDaunaxEaxFaxGaxHaxIaxJaxKaxLaxMapSapSapSapSapSaxNapQapQapQakmakmakmaxOakmakmanSakmakmardakmakmaxPakmakmanSakmardaxQakmakmaxRakmalvaxSardalvasoarjaxTavDaxUaxVaxWavDaxXarjaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarkavJaxYavJaxZawNawNayaavJaxYavJaybaycawOaydamaavQamaamaamaamaamaayeayeayfaspakmayeayeayeayeaygaogaogaogaogaogaogaogapqarvaxbaaaaafaaaaafaaaaafaaaaafaaaaxbaxfaxgayhayiayjaykaylaxgaopaymaynayoaypayqayraysaysaytayuayvaywaywayxawhaxualKaxvabIayyarMarNarParPayzarRayAaxCayBayCayDayEayFayFayGayFapQayHayIayJayKayLayMapQayNapSapSapSapSapSayNapQaoUalvayOayPakmakmakmayQalvakmayRardakmaySalvakmayTalvakmayUayVakmayWalvakmanOanQardanOanQarjayXavDayYayZazaavDayXarjaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafazbaqfazcatwazdazeazfazgazhazdatwaziazjaqfazkazlamaazmaznaznaznaqoazoayeazpazqazrazsaztazuazpayeazvazwazxapqapqapqapqapqapqazyaxbaafazzazzazzazzazzazzazzaafaxbaxfaxgazAazBazCazDazAaxgazEazFawfazGazHazIazJaywazKazLazMazNaywaywaywazOaxualKazPabIayyaqDaqHaqHaqHaqHaufazQayFayFayFayFayFayFazRazSazTayFapQapQapQapQazUakmapQayNapSapSapSapSapSayNapQakmalvazVayPakmazWakmalvalvakmalvardakmalvalvakmalvalvakmardaskakmalvalvakmazXalvardalvaqcarjarjarjazYarjazZarjarjarjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaawLaxYaAaaAbaAbaAbaAbaAcaxYawLaAdaqfaAeaydaAfaAfaAfaAfaAfaAfaAgayeazpaAhazraAiazrazrazpayeaogaAjaAkaAkaAkaAkaAkaAkaAkaAkaAlaaaazzaECaGvaGwaGxaEBazzaaaaxbaxfaxgazAaAraAsaAtazAaxgaopapqawfaAuaAvaAwaAxaAyaywaAzaAAaywaywaABaywaACaxualKaxvabIaxwapFaucaudaADaqHarRazQayFaAEazSaAFaAFayFazRaAGazTayFaAHaAIaAJaAKaALakmaafaAMaANaANaANaANaANaAOaaaakmalvaAPaAQakmakmakmakmakmakmaARaASakmakmakmakmakmakmakmaATaAUaAVaAVaAVaAWaAXaAYaAZaBaaBbaAVaBcaBdaBeaBfaBgalvaqcaBhaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaawLaxYaAaaAbaAbaAbaAbaAcaxYawLaAdaqfaAeaydaAfaAfaAfaAfaAfaAfaAgayeazpaAhazraAiazrazrazpayeaogaAjaAkaAkaAkaAkaAkaAkaAkaAkaAlaaaazzaECaGvaGwaGxdteazzaaaaxbaxfaxgazAaAraAsaAtazAaxgaopapqawfaAuaAvaAwaAxaAyaywaAzaAAaywaywaABaywaACaxualKaxvabIaxwapFaucaudaADaqHarRazQayFaAEazSaAFaAFayFazRaAGazTayFaAHaAIaAJaAKaALakmaafaAMaANaANaANaANaANaAOaaaakmalvaAPaAQakmakmakmakmakmakmaARaASakmakmakmakmakmakmakmaATaAUaAVaAVaAVaAWaAXaAYaAZaBaaBbaAVaBcaBdaBeaBfaBgalvaqcaBhaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaBiaBjaBkaBjaBjaBlaBmaBjaBjaBkaBnaBoaqfaxZaBpaBqaBraBsaBtaBuaBvaBwayeazpaAhazraBxazrazrazpayeaByaBzaBAaBBaBCaBDaBEaBFaBGaBHaAlaafazzaAoaApaAmaAnaAqazzaafaxbaxfaxgaBNaBOaBPaBOaBQaxgaopaBRawfaBSaBTazIaBUazIaBVaBWaBXaBYaBZawhaCaawhaxualKaxvabIayyarMarNarOarPaCbarRazQayFaCcazSazSazSayGaCdaCeaCfayFaCgaChaCiaCjaCkakmaaaaafaaaaafaaaaafaaaaafaaaakmaClaCmaCnaCoaCpakmaCqalvaxSardalvakmaaaakmalvalvalvayOaCraCsaCsaCsaCsaCsaCtaCuaCvaCwaCxaCxaCyaCwaCzaCAaCBatpaCCaCDaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBiaBnaBjaCEaCFaCFaCGaCHaCIaCJaCKaCFaCFaCLaCMavJaxZaCNaAfaCOaCPaCQaCRaCQaCSayeaCTaAhazrazrazrazrazraCUaBGaCVaCWaCWaCWaCXaCWaCWaCWaBGaAlaaaazzaBIaBJaBKaAnaBLazzaaaaxbaxfaxgaDcaDdaDeaDfaDgaxgaopaDhawfawfaDiaDjaDkaDjaDlawfawfaDmaDnawhaDoawhaxualKaxvabIayyaDpaDqaDqaDqaDqaDraDsaDtaDuaDvaDwaDwaDwaDxaDwaDyaDwaDzaDAaDBaDCaDDakmakmakmakmakmakmakmakmakmakmakmakmakmakmaDEakmakmakmaDFaBaaAZaDGaDHasJaDHaDJaDKaDLaDMaDNaDOaDOaDOaDOaDOaDPaDQaDRaDRaDSaDTaDUaDRaDVaDWaDXakmaDVaDVaDVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCLaDYaDZaEaaCFaEbaCFaEbaCFaEbaCFaEbaCFaEcaEdazdaxZaEeaAfaEfaEgaEhaEiaEjaEkayeaElaEmaEnazraEoaEpaEqayeaEraEsaCWaCWaCWaCWaCWaCWaEtaEuaEvaEwaBMaDbaExaCZaDaaCYazzaafaxbaEDaEEaEFaEGaEHaEIaEJaEEaEKaELaEMaENaEOaEPaEQaEPayvaERawhaESaESawhaDmawhaETaEUaEVabIaEWaEXaEXaEXaEYaEZaFaaFbaFcaFdaFeaFcaFfaFcaFgaFcaFhaFiaFjaFkaFlaAKaFmaFnaFoaFpaFqaFnaFraFsaFsaFsaFsaFtaFuaFvaFsaFwaFxaFyaFzaFAaFBaFCaFDaFEasKaFEaFGaFHaFIaFJaFKaDOaFLaFMaFNaDOaDRaFOaDRaFPaFQaFRaFSaFTaFUaFVaFWaFXaFYaFZaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGbaGbaGbaGbaGbaGbaGbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGcaaaaaaaaaaaaaaaaaaaaaaaa @@ -9296,7 +9296,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbXcbXdbXebXfbXebXgbXhbXibXjbXjbXkbTYbXlbXmaaaaaaaafaaaaaaaafaaabCvbWmbWnbXnbXobXpbXqbXrbXsbXnbXtbXubXvbXwbWobWobELbCvbXxbMgbQMbXybXzbXAbXBbXCbMjbMobMjbMjbMjbXDbXEbNrbNrbNrbXFbOGbVybOGbVAbVBbXGbRdaafbOPbOPbOPbOPbOPaafbXHbXIbCDbXJbXKbWMbNJbXLbRqbXMbXNbWQbOXbXObWSbXPbXQbNJbTIbSCbEhbXRbEhbXSbTKbMNbTLbMNbTMbXTbEhbXRbEhbJWbXUbXVbXWbXXbXYbXZbYabYbbYcbYdbSSbYebYfchUbRHbYhbQubYibgZblAbgZbgZbgZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafbXcbYjbYkbYlbYmbWhbYnbWhbYobWhbWhbYpbELbXmaaaaaaaafaaaaaaaafaaabCvbWmbWnbXnbYqbYrbYsbYtbYubXnbYvbYwbYxbYybYzbWobELbCvbWrbMgbQMbYAbYBbMobYCbYDbMjbYEbYFbYGbMjbYHbTnbYIbNrbYJbWFbOGbWDbYKbYLbUnbYMbUpbPQbPRbYNbYObYPbOPaafbCDbXIbCDbYQbXKbWMbNJbYRbYSbYTbYUbYVbOQbYWdprchWchXbNJbTIbSCbEhbEhbEhbYZbZabSIbUCbMNbUDbZbbSEbSEbUFbDcbRHbZcbZdbZebRHbRHbZfbZgbZhbZibZjbVYbVZbZkbUMbYhbQubNhbgZbrqbgZbZlbgZaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafbXcbZmbZnbZobZnbZpbZqbZrbZsbZtbZubTYbZvbZwaaaaaaaaaaaaaaaaaaaaabCvbWmbWnbZxbZybZzbYsbZAbZxbZxbYvbZBbZCbZDbZEbZFbZGbZHbZIbZJbZKbZLbZMbZNbZObZPbZQbZRbZSbZTbMjbOGbTnbZUbZVbYJbZWbOGbWDbYKbVAbVBbZXbRdaafbReclkbZZcaabOPaafbCDbXIbCDcabcacbWMbNJbNJcadcaebNJbNNbNJbNJbSubNJbNJbNJbTIbSCbJWbJWbJWbJWbVRcafbTLcagbVRbJWbJWbJWbJWbDcbTRcahbTRbTRbTRbRHbZfbZgcaicajcakcalbRxcambRHbYhbQubNhbgZblAblAblAcanaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafbWebWebWebWebWebTYbTYcaobTYbTYbTYbTYaafaaaaaaaPYaaaaaaaaaaaaaaacaqbWmbWnbZxbZxcarcasbXnbZxcatcaucavcawcaxcaybWobELbCvcazcaAcaBcaCcaDcaEcaFcaGcaHcaIcaJcaKbMjcaLcaMbZUbNrbYJcaNbOGcaObYKbVAcaPcaQbWIbSobPRcaRbYObYObOPaafcaSbXIbCDcaTbXKbWMcaUbNJbNJcaVbNJdpGdpFdpEdpzcaZcbabXKbTIbSCbSDbSEbSEcbbbSGbMNbSHbSIcbccbdbEhbEhbEhbDccbebTRdtebTRbTRbRHcbfcbgcbhcbibQubQubRxbQubRHcbjbQubNhbgZcbkcblcbmcbnaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafbWebWebWebWebWebTYbTYcaobTYbTYbTYbTYaafaaaaaaaPYaaaaaaaaaaaaaaacaqbWmbWnbZxbZxcarcasbXnbZxcatcaucavcawcaxcaybWobELbCvcazcaAcaBcaCcaDcaEcaFcaGcaHcaIcaJcaKbMjcaLcaMbZUbNrbYJcaNbOGcaObYKbVAcaPcaQbWIbSobPRcaRbYObYObOPaafcaSbXIbCDcaTbXKbWMcaUbNJbNJcaVbNJdpGdpFdpEdpzcaZcbabXKbTIbSCbSDbSEbSEcbbbSGbMNbSHbSIcbccbdbEhbEhbEhbDccbebTRbTRbTRbTRbRHcbfcbgcbhcbibQubQubRxbQubRHcbjbQubNhbgZcbkcblcbmcbnaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHaaHaaHaaGaaGaaHaaGaaGaaGaaRaaGaaGaaGaaHaaGaafaafbCvbELbELbELbELbELbELbELbELcbocbpaafaaaaaaaafaagaFFaaaaaaaaabRMbWmbWncbscbtcascbubXnbXncbvcbwcbvcbxbYycbybWobELbTZbQLbMgcbzcbAcbBcaEcbCcbDcbEcbFciWcjcckbbPHcbIbNrbNrbNrcbJbOGcbKcbLbVAbVBbOGbRdaafbOPbOPbOPbOPbOPaafcbMbXIbCDcbNcbObVHbVIbVIcbPcbQbNKdpCdpBdpDdpzcbUcbVcbVcbWbSCbEhbEhbEhcbXbTKbMNbTLbMNbTMcbYbEhbEhbEhbDccbZbTRccabTRbTRccbcccccdcceccfbQubRxbRxccgbRHcchblAccibgZccjcckblAcclaafaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHaaaaaaaafaafaaaaafaafaaaaaaaafaafaafaaaaaGaaaaaabCvccmbELbCvbCvbTZbCvbCvbCvbCvbCvaaaaaaaaaaagaDIauKaagaagaafbRMbWmbWnccpbZxbXnbXnbXnbZxcatccqccrbYyccscctbZFbZHbZHccuccvccwcbAcbAccxcaFccycczccAccBccCbMjbOGbOJccDccEccFbQWccGccHccIbYLbUnccJbUpbPQbPRccKccLccLbOPaafbXHbXIbCDbCDbCDbXKbCDbCDccMccNbNKbNKdpAbNKdpzccNbFoccPccQbSCbEhbEhbEhccRccSbSIccTbMNbUDccUbSEbSEbUFbDcbTRbTRccVbTRbTRbRHcbfcbgccWccXbQuccYccZcdabRHcdbblAbNhbgZbgZbgZblAbgZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHaaacdccddcdeaaacdccddcdeaaacdccddcdeaafaaGaaaaaabCvcdfcdgbCvcdhbELbELcdicdjcdkbCvaaaaaaaaaatIaagaagaafaaaaaacdmbWmbWnbZxcdncdobXncdpbZxbZxbYvcdqbYybYycdrbWocdscdtcducdvcdwcdxcdycdzcaFcdzcaEcaFcdAcdBbMjcdCcdDcdEbSfbSfbShbUicdFbUmbSibVBcdGbRdaafbReclhcdIcdJbOPaafbCDbXIbXKcdKbXKbXKcdLbCDcdMcdNcdOcdPcdQcdRcdScdTcdUbgZcdVbSCbDcbDcbDcbDcbDccdWcdXcdYbDcbDcbDcbDcbDcbDcbRHbRHbRHbRHbRHbRHcdZcdZceacebbRHbRHbRHbRHbRHbLEbgZbNhbgZceccedblAbgZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/code/game/gamemodes/objective.dm b/code/game/gamemodes/objective.dm index c720112f353..bfa8df1520a 100644 --- a/code/game/gamemodes/objective.dm +++ b/code/game/gamemodes/objective.dm @@ -253,6 +253,8 @@ var/global/list/possible_items = list() datum/objective/steal var/datum/objective_item/targetinfo = null //Save the chosen item datum so we can access it later. var/obj/item/steal_target = null //Needed for custom objectives (they're just items, not datums). + var/faction //Exchange objectives: Which side are we on? + var/datum/mind/otheragent //Exchange objectives: The mind of the other party dangerrating = 5 //Overridden by the individual item's difficulty, but defaults to 5 for custom objectives. datum/objective/steal/New() @@ -308,8 +310,6 @@ datum/objective/steal/check_completion() return 1 return 0 - - var/global/list/possible_items_special = list() datum/objective/steal/special //ninjas are so special they get their own subtype good for them @@ -324,6 +324,33 @@ datum/objective/steal/special/find_target() +datum/objective/steal/exchange + dangerrating = 10 + +datum/objective/steal/exchange/proc/set_faction(faction,otheragent) + if(faction == "red") + explanation_text = "Acquire the blue secret documents held by [otheragent], the Syndicate Agent" + targetinfo = new/datum/objective_item/unique/docs_blue + if(faction == "blue") + explanation_text = "Acquire the red secret documents held by [otheragent], the Syndicate Agent" + targetinfo = new/datum/objective_item/unique/docs_red + steal_target = targetinfo.targetitem + + +datum/objective/steal/exchange/backstab + dangerrating = 3 + +datum/objective/steal/exchange/backstab/set_faction(faction) + if(faction == "red") + explanation_text = "Do not give up or lose the red secret documents." + targetinfo = new/datum/objective_item/unique/docs_red + if(faction == "blue") + explanation_text = "Do not give up or lose the blue secret documents." + targetinfo = new/datum/objective_item/unique/docs_blue + steal_target = targetinfo.targetitem + + + datum/objective/download dangerrating = 10 diff --git a/code/game/gamemodes/objective_items.dm b/code/game/gamemodes/objective_items.dm index f2b5eb9ebbf..19d5450e3ea 100644 --- a/code/game/gamemodes/objective_items.dm +++ b/code/game/gamemodes/objective_items.dm @@ -75,6 +75,10 @@ datum/objective_item/steal/reactive difficulty = 5 excludefromjob = list("Research Director") +datum/objective_item/steal/documents + name = "a set of secret documents" + targetitem = /obj/item/documents //Any set of secret documents. Doesn't have to be NT's + difficulty = 5 //Items with special checks! datum/objective_item/steal/plasma @@ -128,6 +132,16 @@ datum/objective_item/slime/check_special_completion(var/obj/item/slime_extract/E return 1 return 0 +//Unique Objectives +datum/objective_item/unique/docs_red + name = "the red secret documents" + targetitem = /obj/item/documents/syndicate/red + difficulty = 10 + +datum/objective_item/unique/docs_blue + name = "the blue secret documents" + targetitem = /obj/item/documents/syndicate/blue + difficulty = 10 //Old ninja objectives. datum/objective_item/special/pinpointer diff --git a/code/game/gamemodes/traitor/traitor.dm b/code/game/gamemodes/traitor/traitor.dm index 1b8f4ce1185..42d1fa7d398 100644 --- a/code/game/gamemodes/traitor/traitor.dm +++ b/code/game/gamemodes/traitor/traitor.dm @@ -3,6 +3,9 @@ var/traitor_name = "traitor" var/list/datum/mind/traitors = list() + var/datum/mind/exchange_red + var/datum/mind/exchange_blue + /datum/game_mode/traitor name = "traitor" config_tag = "traitor" @@ -104,8 +107,16 @@ traitor.objectives += block_objective else - switch(rand(1,100)) - if(1 to 50) + //Assign two traitors for exchange objective + if((traitors.len > 5) && !exchange_blue) + if(!exchange_red) + exchange_red = traitor + else + exchange_blue = traitor + assign_exchange_role(exchange_red,"red") + assign_exchange_role(exchange_blue,"blue") + else + if(prob(50)) var/datum/objective/assassinate/kill_objective = new kill_objective.owner = traitor kill_objective.find_target() @@ -115,13 +126,12 @@ steal_objective.owner = traitor steal_objective.find_target() traitor.objectives += steal_objective - switch(rand(1,100)) - if(1 to 90) + + if(prob(90)) if (!(locate(/datum/objective/escape) in traitor.objectives)) var/datum/objective/escape/escape_objective = new escape_objective.owner = traitor traitor.objectives += escape_objective - else if (!(locate(/datum/objective/hijack) in traitor.objectives)) var/datum/objective/hijack/hijack_objective = new @@ -308,3 +318,49 @@ traitor_mob << "Unfortunately, the Syndicate did not provide you with a code response." traitor_mob << "Use the code words in the order provided, during regular conversation, to identify other agents. Proceed with caution, however, as everyone is a potential foe." //End code phrase. + if(traitor_mob.mind == exchange_red || traitor_mob.mind == exchange_blue) + equip_exchange(traitor_mob) + +/datum/game_mode/proc/assign_exchange_role(var/datum/mind/owner, var/faction) + var/datum/objective/steal/exchange/exchange_objective = new + exchange_objective.owner = owner + exchange_objective.set_faction(faction,(faction == "red" ? exchange_blue : exchange_red)) + owner.objectives += exchange_objective + + if(prob(20)) + var/datum/objective/steal/exchange/backstab/backstab_objective = new + backstab_objective.owner = owner + backstab_objective.set_faction(faction) + owner.objectives += backstab_objective + + var/datum/objective/escape_objective + if(90) + escape_objective = new/datum/objective/escape + else + escape_objective = new/datum/objective/hijack + escape_objective.owner = owner + owner.objectives += escape_objective + +/datum/game_mode/proc/equip_exchange(mob/living/carbon/human/mob) + if(!istype(mob)) + return + + var/obj/item/weapon/folder/syndicate/folder + if(mob.mind == exchange_red) + folder = new/obj/item/weapon/folder/syndicate/red(mob) + else + folder = new/obj/item/weapon/folder/syndicate/blue(mob) + + var/list/slots = list ( + "backpack" = slot_in_backpack, + "left pocket" = slot_l_store, + "right pocket" = slot_r_store, + "left hand" = slot_l_hand, + "right hand" = slot_r_hand, + ) + var/where = mob.equip_in_one_of_slots(folder, slots) + if (!where) + mob << "Your Syndicate employer was unable to send you their secret documents." + else + mob << "In your [where] is a folder containing secret documents that another Syndicate group wants. We have set up a meeting with one of their agents on station to make an exchange. Exercise extreme caution as they cannot be trusted and may be hostile." + mob.update_icons() \ No newline at end of file diff --git a/code/game/objects/items/documents.dm b/code/game/objects/items/documents.dm new file mode 100644 index 00000000000..2e9cda7b885 --- /dev/null +++ b/code/game/objects/items/documents.dm @@ -0,0 +1,27 @@ +/obj/item/documents + name = "secret documents" + desc = "\"Top Secret\" documents printed on special copy-protected paper." + icon = 'icons/obj/bureaucracy.dmi' + icon_state = "docs_generic" + item_state = "paper" + throwforce = 0 + w_class = 1.0 + throw_range = 1 + throw_speed = 1 + layer = 4 + pressure_resistance = 1 + +/obj/item/documents/nanotrasen + desc = "\"Top Secret\" Nanotrasen documents printed on special copy-protected paper. It is filled with complex diagrams and lists of names, dates and coordinates." + icon_state = "docs_verified" + +/obj/item/documents/syndicate + desc = "\"Top Secret\" documents printed on special copy-protected paper. It details sensitive Syndicate operational intelligence." + +/obj/item/documents/syndicate/red + name = "secret documents (Red)" + icon_state = "docs_red" + +/obj/item/documents/syndicate/blue + name = "secret documents (Blue)" + icon_state = "docs_blue" \ No newline at end of file diff --git a/code/modules/paperwork/filingcabinet.dm b/code/modules/paperwork/filingcabinet.dm index 90f55715009..44bc38e6e04 100644 --- a/code/modules/paperwork/filingcabinet.dm +++ b/code/modules/paperwork/filingcabinet.dm @@ -37,7 +37,7 @@ /obj/structure/filingcabinet/attackby(obj/item/P, mob/user) - if(istype(P, /obj/item/weapon/paper) || istype(P, /obj/item/weapon/folder) || istype(P, /obj/item/weapon/photo)) + if(istype(P, /obj/item/weapon/paper) || istype(P, /obj/item/weapon/folder) || istype(P, /obj/item/weapon/photo) || istype(P, /obj/item/documents)) user << "You put [P] in [src]." user.drop_item() P.loc = src diff --git a/code/modules/paperwork/folders.dm b/code/modules/paperwork/folders.dm index 747272afe97..163582f8e74 100644 --- a/code/modules/paperwork/folders.dm +++ b/code/modules/paperwork/folders.dm @@ -30,7 +30,7 @@ /obj/item/weapon/folder/attackby(obj/item/weapon/W, mob/user) - if(istype(W, /obj/item/weapon/paper) || istype(W, /obj/item/weapon/photo)) + if(istype(W, /obj/item/weapon/paper) || istype(W, /obj/item/weapon/photo) || istype(W, /obj/item/documents)) user.drop_item() W.loc = src user << "You put [W] into [src]." @@ -44,10 +44,8 @@ /obj/item/weapon/folder/attack_self(mob/user) var/dat = "[name]" - for(var/obj/item/weapon/paper/P in src) - dat += "Remove - [P.name]
" - for(var/obj/item/weapon/photo/Ph in src) - dat += "Remove - [Ph.name]
" + for(var/obj/item/I in src) + dat += "Remove - [I.name]
" user << browse(dat, "window=folder") onclose(user, "folder") add_fingerprint(usr) @@ -61,16 +59,43 @@ if(usr.contents.Find(src)) if(href_list["remove"]) - var/obj/item/P = locate(href_list["remove"]) - if(istype(P) && P.loc == src) - P.loc = usr.loc - usr.put_in_hands(P) + var/obj/item/I = locate(href_list["remove"]) + if(istype(I) && I.loc == src) + I.loc = usr.loc + usr.put_in_hands(I) if(href_list["read"]) - var/obj/item/weapon/paper/P = locate(href_list["read"]) - if(istype(P) && P.loc == src) - P.examine() + var/obj/item/I = locate(href_list["read"]) + if(istype(I) && I.loc == src) + I.examine() //Update everything attack_self(usr) + update_icon() + +/obj/item/weapon/folder/documents + name = "folder- 'TOP SECRET'" + desc = "A folder stamped \"Top Secret - Property of Nanotrasen Corporation. Unauthorized distribution is punishable by death.\"" + + New() + ..() + new /obj/item/documents/nanotrasen(src) + update_icon() + +/obj/item/weapon/folder/syndicate + name = "folder- 'TOP SECRET'" + desc = "A folder stamped \"Top Secret - Property of The Syndicate.\"" + +/obj/item/weapon/folder/syndicate/red + icon_state = "folder_sred" + New() + ..() + new /obj/item/documents/syndicate/red(src) + update_icon() + +/obj/item/weapon/folder/syndicate/blue + icon_state = "folder_sblue" + New() + ..() + new /obj/item/documents/syndicate/blue(src) update_icon() \ No newline at end of file diff --git a/icons/obj/bureaucracy.dmi b/icons/obj/bureaucracy.dmi index dbd74d4f4453c84f3d8bd8acc01db5e1f7ed2c99..9c293950b7e4ad345525ebd43b695a2812a1e97c 100644 GIT binary patch literal 11102 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 literal 9240 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 R_xHn}dzz0lD%7kZ{tx4{bx{BS diff --git a/tgstation.dme b/tgstation.dme index 7925d393890..0094e83fc6b 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -491,6 +491,7 @@ #include "code\game\objects\items\bodybag.dm" #include "code\game\objects\items\candle.dm" #include "code\game\objects\items\crayons.dm" +#include "code\game\objects\items\documents.dm" #include "code\game\objects\items\latexballoon.dm" #include "code\game\objects\items\shooting_range.dm" #include "code\game\objects\items\toys.dm" From e3241808b8d2a4fd6fab80bdc291ece8ed7f790b Mon Sep 17 00:00:00 2001 From: ikarrus Date: Sun, 4 May 2014 15:33:53 -0600 Subject: [PATCH 053/185] -Sending Centcom syndicate documents now gives the station a large supply point reward --- code/controllers/supply_shuttle.dm | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/code/controllers/supply_shuttle.dm b/code/controllers/supply_shuttle.dm index 758d1bd7c92..1457fa818bb 100644 --- a/code/controllers/supply_shuttle.dm +++ b/code/controllers/supply_shuttle.dm @@ -121,6 +121,7 @@ var/global/datum/controller/supply_shuttle/supply_shuttle var/points_per_process = 1 var/points_per_slip = 2 var/points_per_crate = 5 + var/points_per_intel = 100 var/plasma_per_point = 0.2 //5 points per plasma sheet due to increased rarity var/centcom_message = "" // Remarks from Centcom on how well you checked the last order. // Unique typepaths for unusual things we've already sent CentComm, associated with their potencies @@ -228,6 +229,7 @@ var/global/datum/controller/supply_shuttle/supply_shuttle if(!shuttle) return var/plasma_count = 0 + var/intel_count = 0 var/crate_count = 0 centcom_message = "" @@ -287,6 +289,10 @@ var/global/datum/controller/supply_shuttle/supply_shuttle var/obj/item/stack/sheet/mineral/plasma/P = A plasma_count += P.amount + // Sell syndicate intel + if(istype(A, /obj/item/documents/syndicate)) + intel_count += 1 + if(istype(A, /obj/item/seeds)) var/obj/item/seeds/S = A if(S.rarity == 0) // Mundane species @@ -306,11 +312,15 @@ var/global/datum/controller/supply_shuttle/supply_shuttle qdel(MA) if(plasma_count) - centcom_message += "+[round(plasma_count/plasma_per_point)]: Received [plasma_count] units of exotic material.
" + centcom_message += "+[round(plasma_count/plasma_per_point)]: Received [plasma_count] unit(s) of exotic material.
" points += round(plasma_count / plasma_per_point) + if(intel_count) + centcom_message += "+[round(intel_count*points_per_intel)]: Received [intel_count] article(s) of enemy intelligence.
" + points += round(intel_count*points_per_intel) + if(crate_count) - centcom_message += "+[round(crate_count*points_per_crate)]: Received [crate_count] crates.
" + centcom_message += "+[round(crate_count*points_per_crate)]: Received [crate_count] crate(s).
" points += crate_count * points_per_crate //Buyin From 58b2ff16712d89850f1d13aa33e58273a4e4c81a Mon Sep 17 00:00:00 2001 From: ikarrus Date: Sun, 4 May 2014 16:18:48 -0600 Subject: [PATCH 054/185] -Removed some duplicate code -Made the syndicate document names appear like codenames --- code/game/gamemodes/objective.dm | 10 ++++------ code/game/gamemodes/objective_items.dm | 4 ++-- code/game/objects/items/documents.dm | 6 ++++-- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/code/game/gamemodes/objective.dm b/code/game/gamemodes/objective.dm index bfa8df1520a..1b827f43993 100644 --- a/code/game/gamemodes/objective.dm +++ b/code/game/gamemodes/objective.dm @@ -329,11 +329,10 @@ datum/objective/steal/exchange datum/objective/steal/exchange/proc/set_faction(faction,otheragent) if(faction == "red") - explanation_text = "Acquire the blue secret documents held by [otheragent], the Syndicate Agent" targetinfo = new/datum/objective_item/unique/docs_blue - if(faction == "blue") - explanation_text = "Acquire the red secret documents held by [otheragent], the Syndicate Agent" + else if(faction == "blue") targetinfo = new/datum/objective_item/unique/docs_red + explanation_text = "Acquire [targetinfo.name] held by [otheragent], the Syndicate Agent" steal_target = targetinfo.targetitem @@ -342,11 +341,10 @@ datum/objective/steal/exchange/backstab datum/objective/steal/exchange/backstab/set_faction(faction) if(faction == "red") - explanation_text = "Do not give up or lose the red secret documents." targetinfo = new/datum/objective_item/unique/docs_red - if(faction == "blue") - explanation_text = "Do not give up or lose the blue secret documents." + else if(faction == "blue") targetinfo = new/datum/objective_item/unique/docs_blue + explanation_text = "Do not give up or lose [targetinfo.name]." steal_target = targetinfo.targetitem diff --git a/code/game/gamemodes/objective_items.dm b/code/game/gamemodes/objective_items.dm index 19d5450e3ea..15fefb2695d 100644 --- a/code/game/gamemodes/objective_items.dm +++ b/code/game/gamemodes/objective_items.dm @@ -134,12 +134,12 @@ datum/objective_item/slime/check_special_completion(var/obj/item/slime_extract/E //Unique Objectives datum/objective_item/unique/docs_red - name = "the red secret documents" + name = "the \"Red\" secret documents" targetitem = /obj/item/documents/syndicate/red difficulty = 10 datum/objective_item/unique/docs_blue - name = "the blue secret documents" + name = "the \"Blue\" secret documents" targetitem = /obj/item/documents/syndicate/blue difficulty = 10 diff --git a/code/game/objects/items/documents.dm b/code/game/objects/items/documents.dm index 2e9cda7b885..b0761167d4e 100644 --- a/code/game/objects/items/documents.dm +++ b/code/game/objects/items/documents.dm @@ -19,9 +19,11 @@ desc = "\"Top Secret\" documents printed on special copy-protected paper. It details sensitive Syndicate operational intelligence." /obj/item/documents/syndicate/red - name = "secret documents (Red)" + name = "'Red' secret documents" + desc = "\"Top Secret\" documents printed on special copy-protected paper. It details sensitive Syndicate operational intelligence. These documents are marked \"Red\"." icon_state = "docs_red" /obj/item/documents/syndicate/blue - name = "secret documents (Blue)" + name = "'Blue' secret documents" + desc = "\"Top Secret\" documents printed on special copy-protected paper. It details sensitive Syndicate operational intelligence. These documents are marked \"Blue\"." icon_state = "docs_blue" \ No newline at end of file From ea312482203d857bc40e720280d2db896770b7a7 Mon Sep 17 00:00:00 2001 From: phil235 Date: Mon, 5 May 2014 00:36:06 +0200 Subject: [PATCH 055/185] windoor drops more stuff on destruction drops 2 glass shards, 2 rods, 2 cable pieces. --- code/game/machinery/doors/windowdoor.dm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm index bff26c70c87..f598e78a5aa 100644 --- a/code/game/machinery/doors/windowdoor.dm +++ b/code/game/machinery/doors/windowdoor.dm @@ -221,8 +221,9 @@ visible_message("\The [src] has been hit by [user] with [I].") if (src.health <= 0) new /obj/item/weapon/shard(src.loc) - var/obj/item/stack/cable_coil/CC = new /obj/item/stack/cable_coil(src.loc) - CC.amount = 2 + new /obj/item/weapon/shard(src.loc) + new /obj/item/stack/rods(src.loc, 2) + new /obj/item/stack/cable_coil(src.loc, 2) src.density = 0 qdel(src) return From 3e16b7e68700bf8f49a13f3f4b127d98e939b078 Mon Sep 17 00:00:00 2001 From: phil235 Date: Mon, 5 May 2014 03:15:21 +0200 Subject: [PATCH 056/185] unpowered windoor can be forced with crowbar, emag, eblade unpowered windoor can be forced open and closed with crowbar and open with emag, eblade --- code/game/machinery/doors/windowdoor.dm | 31 ++++++++++++++++++------- 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm index f598e78a5aa..015135eeb79 100644 --- a/code/game/machinery/doors/windowdoor.dm +++ b/code/game/machinery/doors/windowdoor.dm @@ -91,13 +91,14 @@ else return 1 -/obj/machinery/door/window/open() +/obj/machinery/door/window/open(var/forced=0) if (src.operating == 1) //doors can still open when emag-disabled return 0 if (!ticker) return 0 - if (stat & NOPOWER) - return 0 + if(forced < 2) + if(stat & NOPOWER) || emagged) + return 0 if(!src.operating) //in case of emag src.operating = 1 flick(text("[]opening", src.base_state), src) @@ -115,9 +116,12 @@ src.operating = 0 return 1 -/obj/machinery/door/window/close() - if (src.operating || emagged || (stat & NOPOWER)) +/obj/machinery/door/window/close(var/forced=0) + if (src.operating) return 0 + if(forced < 2) + if(emagged || (stat & NOPOWER)) + return 0 src.operating = 1 flick(text("[]closing", src.base_state), src) playsound(src.loc, 'sound/machines/windowdoor.ogg', 100, 1) @@ -208,11 +212,12 @@ visible_message("\blue The glass door was sliced open by [user]!") flick("[src.base_state]spark", src) sleep(6) - open() + open(2) + emagged = 1 return 1 - //If it's a weapon, smash windoor. Unless it's an id card, agent card, ect.. then ignore it (Cards really shouldnt damage a door anyway) - if(src.density && istype(I, /obj/item/weapon) && !istype(I, /obj/item/weapon/card)) + //If it's a weapon, smash windoor. Unless it's a crowbar, an id card, agent card, ect.. then ignore it (Cards really shouldnt damage a door anyway) + if(src.density && istype(I, /obj/item/weapon) && !istype(I, /obj/item/weapon/card)) && !istype(I, /obj/item/weapon/crowbar) user.changeNext_move(8) var/aforce = I.force if(I.damtype == BRUTE || I.damtype == BURN) @@ -227,7 +232,15 @@ src.density = 0 qdel(src) return - + + if(istype(I, /obj/item/weapon/crowbar) + if(stat & NOPOWER)) + if(src.density) + open(2) + else + close(2) + else + user << " The [src.name]'s motors resist your efforts to force it." src.add_fingerprint(user) if (!src.requiresID()) From ee627d9d19702e0ac2659a1d4a66e69d5e0f91bb Mon Sep 17 00:00:00 2001 From: phil235 Date: Mon, 5 May 2014 20:31:52 +0200 Subject: [PATCH 057/185] mecha & bot w/o access trigger deny animation when bumping. * mecha & bot w/o access trigger the deny animation when bumping the windoor * secure windoors close faster when bumped open by mecha/bot. --- code/game/machinery/doors/windowdoor.dm | 43 +++++++++++++------------ 1 file changed, 23 insertions(+), 20 deletions(-) diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm index 015135eeb79..496e5d9abb0 100644 --- a/code/game/machinery/doors/windowdoor.dm +++ b/code/game/machinery/doors/windowdoor.dm @@ -25,23 +25,31 @@ playsound(src, "shatter", 70, 1) ..() + +/obj/machinery/door/window/proc/open_and_close() + open() + if(src.check_access(null)) + sleep(50) + else //secure doors close faster + sleep(20) + close() + /obj/machinery/door/window/Bumped(atom/movable/AM as mob|obj) - if(operating) + if( operating || !src.density ) return if (!( ismob(AM) )) var/obj/machinery/bot/bot = AM if(istype(bot)) - if(density && src.check_access(bot.botcard)) - open() - sleep(50) - close() + if(src.check_access(bot.botcard)) + open_and_close() + else + flick(text("[]deny", src.base_state), src) else if(istype(AM, /obj/mecha)) var/obj/mecha/mecha = AM - if(density) - if(mecha.occupant && src.allowed(mecha.occupant)) - open() - sleep(50) - close() + if(mecha.occupant && src.allowed(mecha.occupant)) + open_and_close() + else + flick(text("[]deny", src.base_state), src) return if (!( ticker )) return @@ -51,21 +59,16 @@ return /obj/machinery/door/windoor/bumpopen(mob/user as mob) - if(operating) + if( operating || !src.density ) return src.add_fingerprint(user) if(!src.requiresID()) user = null - if(density & allowed(user)) - open() - if(src.check_access(null)) - sleep(50) - else //secure doors close faster - sleep(20) - close() - else - flick(text("[]deny", src.base_state), src) + if(allowed(user)) + open_and_close() + else + flick(text("[]deny", src.base_state), src) return /obj/machinery/door/window/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) From 08d5724c751d8b90a3b1d0c939ce196bf66fe46d Mon Sep 17 00:00:00 2001 From: phil235 Date: Mon, 5 May 2014 20:52:04 +0200 Subject: [PATCH 058/185] fix indentation --- code/game/machinery/doors/windowdoor.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm index 496e5d9abb0..81c66514557 100644 --- a/code/game/machinery/doors/windowdoor.dm +++ b/code/game/machinery/doors/windowdoor.dm @@ -66,7 +66,7 @@ user = null if(allowed(user)) - open_and_close() + open_and_close() else flick(text("[]deny", src.base_state), src) return @@ -100,7 +100,7 @@ if (!ticker) return 0 if(forced < 2) - if(stat & NOPOWER) || emagged) + if( (stat & NOPOWER) || emagged ) return 0 if(!src.operating) //in case of emag src.operating = 1 From a6adc2aac3f7588568ffe7419e22a7b082a7261b Mon Sep 17 00:00:00 2001 From: phil235 Date: Mon, 5 May 2014 21:00:50 +0200 Subject: [PATCH 059/185] Emag can't open unpowered windoor --- code/game/machinery/doors/windowdoor.dm | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm index 81c66514557..4dbadd3cc55 100644 --- a/code/game/machinery/doors/windowdoor.dm +++ b/code/game/machinery/doors/windowdoor.dm @@ -206,6 +206,8 @@ //Emags and ninja swords? You may pass. if (src.density && (istype(I, /obj/item/weapon/card/emag)||istype(I, /obj/item/weapon/melee/energy/blade))) src.operating = -1 + flick("[src.base_state]spark", src) + sleep(6) if(istype(I, /obj/item/weapon/melee/energy/blade)) var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread() spark_system.set_up(5, 0, src.loc) @@ -213,9 +215,10 @@ playsound(src.loc, "sparks", 50, 1) playsound(src.loc, 'sound/weapons/blade1.ogg', 50, 1) visible_message("\blue The glass door was sliced open by [user]!") - flick("[src.base_state]spark", src) - sleep(6) - open(2) + open(2) + emagged = 1 + return 1 + open() emagged = 1 return 1 From cf5ac3a127d61a616f76a66297609da27cd59cde Mon Sep 17 00:00:00 2001 From: phil235 Date: Mon, 5 May 2014 21:06:41 +0200 Subject: [PATCH 060/185] indentation again.. --- code/game/machinery/doors/windowdoor.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm index 4dbadd3cc55..a6e92e10775 100644 --- a/code/game/machinery/doors/windowdoor.dm +++ b/code/game/machinery/doors/windowdoor.dm @@ -223,7 +223,7 @@ return 1 //If it's a weapon, smash windoor. Unless it's a crowbar, an id card, agent card, ect.. then ignore it (Cards really shouldnt damage a door anyway) - if(src.density && istype(I, /obj/item/weapon) && !istype(I, /obj/item/weapon/card)) && !istype(I, /obj/item/weapon/crowbar) + if(src.density && istype(I, /obj/item/weapon) && !istype(I, /obj/item/weapon/card) && !istype(I, /obj/item/weapon/crowbar)) user.changeNext_move(8) var/aforce = I.force if(I.damtype == BRUTE || I.damtype == BURN) From fb1b4b2a549fcad950bc1ef3317addf6942651ef Mon Sep 17 00:00:00 2001 From: phil235 Date: Mon, 5 May 2014 21:25:04 +0200 Subject: [PATCH 061/185] and again --- code/game/machinery/doors/windowdoor.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm index a6e92e10775..0c6a7cb98a9 100644 --- a/code/game/machinery/doors/windowdoor.dm +++ b/code/game/machinery/doors/windowdoor.dm @@ -239,8 +239,8 @@ qdel(src) return - if(istype(I, /obj/item/weapon/crowbar) - if(stat & NOPOWER)) + if(istype(I, /obj/item/weapon/crowbar)) + if(stat & NOPOWER) if(src.density) open(2) else From a48ba0d2563e7d4a4e66235e472bcf4b1746ac81 Mon Sep 17 00:00:00 2001 From: ikarrus Date: Mon, 5 May 2014 22:18:57 -0600 Subject: [PATCH 062/185] Priority Announcement Changes -Centcom announcement proc merged with generic priority announcement proc -Re-added the Captain Announces accompanied by a new pleasant sound, instead of the generic priority announcement -Captain Announcements will automatically generate a newscaster article -Priority announcements without any defined accompanying sound will play a generic "Attention" soundbyte as an audio cue -Communications consoles will display who is currently logged in --- code/controllers/shuttle_controller.dm | 13 ++++----- code/defines/procs/captain_announce.dm | 5 ---- code/defines/procs/command_alert.dm | 16 ----------- code/defines/procs/priority_announce.dm | 27 ++++++++++++++++++ code/game/gamemodes/blob/blob.dm | 5 +--- code/game/gamemodes/events.dm | 17 +++-------- code/game/gamemodes/game_mode.dm | 5 +--- .../game/gamemodes/malfunction/malfunction.dm | 5 +--- .../game/machinery/computer/communications.dm | 17 +++++++---- code/game/machinery/newscaster.dm | 3 +- code/modules/admin/topic.dm | 9 +++--- code/modules/admin/verbs/randomverbs.dm | 8 ++---- .../awaymissions/bluespaceartillery.dm | 4 +-- code/modules/events/alien_infestation.dm | 3 +- code/modules/events/anomaly.dm | 2 +- code/modules/events/anomaly_bluespace.dm | 4 +-- code/modules/events/anomaly_flux.dm | 2 +- code/modules/events/anomaly_grav.dm | 2 +- code/modules/events/anomaly_pyro.dm | 2 +- code/modules/events/anomaly_vortex.dm | 2 +- code/modules/events/blob.dm | 3 +- code/modules/events/brand_intelligence.dm | 2 +- code/modules/events/carp_migration.dm | 2 +- .../modules/events/communications_blackout.dm | 2 +- code/modules/events/disease_outbreak.dm | 3 +- code/modules/events/electrical_storm.dm | 2 +- code/modules/events/holiday/halloween.dm | 2 +- code/modules/events/holiday/xmas.dm | 2 +- code/modules/events/immovable_rod.dm | 2 +- code/modules/events/ion_storm.dm | 3 +- code/modules/events/meteor_wave.dm | 3 +- code/modules/events/prison_break.dm | 2 +- code/modules/events/radiation_storm.dm | 6 ++-- code/modules/events/shuttle_loan.dm | 10 +++---- code/modules/events/spider_infestation.dm | 3 +- code/modules/events/vent_clog.dm | 2 +- code/modules/events/wormholes.dm | 5 +--- sound/AI/attention.ogg | Bin 0 -> 15909 bytes sound/misc/announce.ogg | Bin 0 -> 52724 bytes tgstation.dme | 3 +- 40 files changed, 93 insertions(+), 115 deletions(-) delete mode 100644 code/defines/procs/captain_announce.dm delete mode 100644 code/defines/procs/command_alert.dm create mode 100644 code/defines/procs/priority_announce.dm create mode 100644 sound/AI/attention.ogg create mode 100644 sound/misc/announce.ogg diff --git a/code/controllers/shuttle_controller.dm b/code/controllers/shuttle_controller.dm index 2f8c2204921..e923603dba0 100644 --- a/code/controllers/shuttle_controller.dm +++ b/code/controllers/shuttle_controller.dm @@ -73,10 +73,9 @@ datum/shuttle_controller last_call_loc = null if(recall_count == 2) - captain_announce("The emergency shuttle has been recalled.\n\nExcessive number of emergency shuttle calls detected. We will attempt to trace any further signals to their source. Results may be viewed on any communications console.") + priority_announce("The emergency shuttle has been recalled.\n\nExcessive number of emergency shuttle calls detected. We will attempt to trace any further signals to their source. Results may be viewed on any communications console.", null, 'sound/AI/shuttlerecalled.ogg') else - captain_announce("The emergency shuttle has been recalled.") - world << sound('sound/AI/shuttlerecalled.ogg') + priority_announce("The emergency shuttle has been recalled.", null, 'sound/AI/shuttlerecalled.ogg', "Priority") setdirection(-1) online = 1 @@ -130,8 +129,7 @@ datum/shuttle_controller incall(SHUTTLEAUTOCALLTIMER) //X minutes! If they want to recall, they have X-(X-5) minutes to do so log_game("All the communications consoles were destroyed and all AIs are inactive. Shuttle called.") message_admins("All the communications consoles were destroyed and all AIs are inactive. Shuttle called.", 1) - captain_announce("The emergency shuttle has been called. It will arrive in [round(emergency_shuttle.timeleft()/60)] minutes.") - world << sound('sound/AI/shuttlecalled.ogg') + priority_announce("The emergency shuttle has been called. It will arrive in [round(emergency_shuttle.timeleft()/60)] minutes.", null, 'sound/AI/shuttlecalled.ogg', "Priority") proc/move_shuttles() var/datum/shuttle_manager/s @@ -165,14 +163,13 @@ datum/shuttle_controller location = DOCKED settimeleft(SHUTTLELEAVETIME) send2irc("Server", "The Emergency Shuttle has docked with the station.") - captain_announce("The Emergency Shuttle has docked with the station. You have [round(timeleft()/60,1)] minutes to board the Emergency Shuttle.") - world << sound('sound/AI/shuttledock.ogg') + priority_announce("The Emergency Shuttle has docked with the station. You have [round(timeleft()/60,1)] minutes to board the Emergency Shuttle.", null, 'sound/AI/shuttledock.ogg', "Priority") else if(timeleft <= 0) //Nothing happens if time's not up and the ship's docked or later if(location == DOCKED) move_shuttles() location = TRANSIT settimeleft(SHUTTLETRANSITTIME) - captain_announce("The Emergency Shuttle has left the station. Estimate [round(timeleft()/60,1)] minutes until the shuttle docks at Central Command.") + priority_announce("The Emergency Shuttle has left the station. Estimate [round(timeleft()/60,1)] minutes until the shuttle docks at Central Command.", null, null, "Priority") else if(location == TRANSIT) move_shuttles() //message_admins("Shuttles have attempted to move to Centcom") diff --git a/code/defines/procs/captain_announce.dm b/code/defines/procs/captain_announce.dm deleted file mode 100644 index 9b91705ea56..00000000000 --- a/code/defines/procs/captain_announce.dm +++ /dev/null @@ -1,5 +0,0 @@ -/proc/captain_announce(var/text) - world << "

Priority Announcement

" - world << "[html_encode(text)]" - world << "
" - diff --git a/code/defines/procs/command_alert.dm b/code/defines/procs/command_alert.dm deleted file mode 100644 index 9635e20eb97..00000000000 --- a/code/defines/procs/command_alert.dm +++ /dev/null @@ -1,16 +0,0 @@ -/proc/command_alert(var/text, var/title = "") - var/command - command += "

[command_name()] Update

" - - if (title && length(title) > 0) - command += "

[html_encode(title)]

" - - command += "
[html_encode(text)]
" - command += "
" - for(var/mob/M in player_list) - if(!istype(M,/mob/new_player)) - M << command - if(title == "") - news_network.SubmitArticle(text, "Centcom Official", "Central Command", null) - else - news_network.SubmitArticle(title + "

" + text, "Centcom Official", "Central Command", null) diff --git a/code/defines/procs/priority_announce.dm b/code/defines/procs/priority_announce.dm new file mode 100644 index 00000000000..067dc3a50c9 --- /dev/null +++ b/code/defines/procs/priority_announce.dm @@ -0,0 +1,27 @@ +/proc/priority_announce(var/text, var/title = "", var/sound = 'sound/AI/attention.ogg', var/type, var/auth_id) + + var/announcement + + if(type == "Priority") + announcement += "

Priority Announcement

" + + else if(type == "Captain") + news_network.SubmitArticle(text, auth_id, "Captain's Announcements", null) + announcement += "

Captain Announces

" + + else + if (title && length(title) > 0) + announcement += "

[html_encode(title)]

" + if(title == "") + news_network.SubmitArticle(text, "Central Command", "Central Command Updates", null) + else + news_network.SubmitArticle(title + "

" + text, "Central Command", "Central Command Updates", null) + announcement += "

[command_name()] Update

" + + announcement += "
[html_encode(text)]
" + announcement += "
" + + for(var/mob/M in player_list) + if(!istype(M,/mob/new_player)) + M << announcement + M << sound(sound) \ No newline at end of file diff --git a/code/game/gamemodes/blob/blob.dm b/code/game/gamemodes/blob/blob.dm index 77f303e371b..1b72fbc1935 100644 --- a/code/game/gamemodes/blob/blob.dm +++ b/code/game/gamemodes/blob/blob.dm @@ -156,10 +156,7 @@ var/list/blob_nodes = list() return if (1) - command_alert("Confirmed outbreak of level 5 biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert") - for(var/mob/M in player_list) - if(!istype(M,/mob/new_player)) - M << sound('sound/AI/outbreak5.ogg') + priority_announce("Confirmed outbreak of level 5 biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert", 'sound/AI/outbreak5.ogg') return return diff --git a/code/game/gamemodes/events.dm b/code/game/gamemodes/events.dm index d11ab6834ae..a89d7681a21 100644 --- a/code/game/gamemodes/events.dm +++ b/code/game/gamemodes/events.dm @@ -32,10 +32,7 @@ eventNumbersToPickFrom += 3 switch(pick(eventNumbersToPickFrom)) if(1) - command_alert("Meteors have been detected on collision course with the station.", "Meteor Alert") - for(var/mob/M in player_list) - if(!istype(M,/mob/new_player)) - M << sound('sound/AI/meteors.ogg') + priority_announce("Meteors have been detected on collision course with the station.", "Meteor Alert", 'sound/AI/meteors.ogg') spawn(100) meteor_wave() spawn_meteors() @@ -74,9 +71,7 @@ */ /proc/power_failure() - command_alert("Abnormal activity detected in [station_name()]'s powernet. As a precautionary measure, the station's power will be shut off for an indeterminate duration.", "Critical Power Failure") - for(var/mob/M in player_list) - M << sound('sound/AI/poweroff.ogg') + priority_announce("Abnormal activity detected in [station_name()]'s powernet. As a precautionary measure, the station's power will be shut off for an indeterminate duration.", "Critical Power Failure", 'sound/AI/poweroff.ogg') for(var/obj/machinery/power/smes/S in world) if(istype(get_area(S), /area/turret_protected) || S.z != 1) continue @@ -123,9 +118,7 @@ /proc/power_restore() - command_alert("Power has been restored to [station_name()]. We apologize for the inconvenience.", "Power Systems Nominal") - for(var/mob/M in player_list) - M << sound('sound/AI/poweron.ogg') + priority_announce("Power has been restored to [station_name()]. We apologize for the inconvenience.", "Power Systems Nominal", 'sound/AI/poweron.ogg') for(var/obj/machinery/power/apc/C in world) if(C.cell && C.z == 1) C.cell.charge = C.cell.maxcharge @@ -146,9 +139,7 @@ /proc/power_restore_quick() - command_alert("All SMESs on [station_name()] have been recharged. We apologize for the inconvenience.", "Power Systems Nominal") - for(var/mob/M in player_list) - M << sound('sound/AI/poweron.ogg') + priority_announce("All SMESs on [station_name()] have been recharged. We apologize for the inconvenience.", "Power Systems Nominal", 'sound/AI/poweron.ogg') for(var/obj/machinery/power/smes/S in world) if(S.z != 1) continue diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm index 720f0058217..6b61e9e11bc 100644 --- a/code/game/gamemodes/game_mode.dm +++ b/code/game/gamemodes/game_mode.dm @@ -203,10 +203,7 @@ comm.messagetitle.Add("Cent. Com. Status Summary") comm.messagetext.Add(intercepttext) - command_alert("Summary downloaded and printed out at all communications consoles.", "Enemy communication intercept. Security Level Elevated.") - for(var/mob/M in player_list) - if(!istype(M,/mob/new_player)) - M << sound('sound/AI/intercept.ogg') + priority_announce("Summary downloaded and printed out at all communications consoles.", "Enemy communication intercept. Security Level Elevated.", 'sound/AI/intercept.ogg') if(security_level < SEC_LEVEL_BLUE) set_security_level(SEC_LEVEL_BLUE) diff --git a/code/game/gamemodes/malfunction/malfunction.dm b/code/game/gamemodes/malfunction/malfunction.dm index f0a078f313c..d37f3880e6e 100644 --- a/code/game/gamemodes/malfunction/malfunction.dm +++ b/code/game/gamemodes/malfunction/malfunction.dm @@ -184,7 +184,7 @@ if (alert(usr, "Are you sure you wish to initiate the takeover? The station hostile runtime detection software is bound to alert everyone. You have hacked [ticker.mode:apcs] APCs.", "Takeover:", "Yes", "No") != "Yes") return - command_alert("Hostile runtimes detected in all station systems, please deactivate your AI to prevent possible damage to its morality core.", "Anomaly Alert") + priority_announce("Hostile runtimes detected in all station systems, please deactivate your AI to prevent possible damage to its morality core.", "Anomaly Alert", 'sound/AI/aimalf.ogg') set_security_level("delta") for(var/obj/item/weapon/pinpointer/point in world) @@ -196,9 +196,6 @@ ticker.mode:malf_mode_declared = 1 for(var/datum/mind/AI_mind in ticker.mode:malf_ai) AI_mind.current.verbs -= /datum/game_mode/malfunction/proc/takeover - for(var/mob/M in player_list) - if(!istype(M,/mob/new_player)) - M << sound('sound/AI/aimalf.ogg') /datum/game_mode/malfunction/proc/ai_win() diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm index 6099980a45a..641557fa4e9 100644 --- a/code/game/machinery/computer/communications.dm +++ b/code/game/machinery/computer/communications.dm @@ -11,6 +11,7 @@ var/const/CALL_SHUTTLE_REASON_LENGTH = 12 circuit = /obj/item/weapon/circuitboard/communications var/prints_intercept = 1 var/authenticated = 0 + var/auth_id = "Unknown" //Who is currently logged in? var/list/messagetitle = list() var/list/messagetext = list() var/currmsg = 0 @@ -69,8 +70,12 @@ var/const/CALL_SHUTTLE_REASON_LENGTH = 12 if (I && istype(I)) if(src.check_access(I)) authenticated = 1 - if((20 in I.access) || src.emagged) + if((20 in I.access)) authenticated = 2 + auth_id = "[I.registered_name] ([I.assignment])" + if(src.emagged) + authenticated = 2 + auth_id = "Unknown" if("logout") authenticated = 0 @@ -110,7 +115,7 @@ var/const/CALL_SHUTTLE_REASON_LENGTH = 12 var/input = stripped_input(usr, "Please choose a message to announce to the station crew.", "What?") if(!input || !(usr in view(1,src))) return - captain_announce(input)//This should really tell who is, IE HoP, CE, HoS, RD, Captain + priority_announce(input, null, 'sound/misc/announce.ogg', "Captain", auth_id) log_say("[key_name(usr)] has made a captain announcement: [input]") message_admins("[key_name_admin(usr)] has made a captain announcement.", 1) message_cooldown = 1 @@ -359,6 +364,7 @@ var/const/CALL_SHUTTLE_REASON_LENGTH = 12 dat += "
Latest emergency signal trace attempt successful.
Last signal origin: [format_text(emergency_shuttle.last_call_loc.name)].
" else dat += "
Latest emergency signal trace attempt failed.
" + dat += "Logged in as: [auth_id]" dat += "
\[ Log Out \]
" dat += "
General Functions" dat += "
\[ Message List \]" @@ -371,7 +377,7 @@ var/const/CALL_SHUTTLE_REASON_LENGTH = 12 dat += "
\[ Set Status Display \]" if (src.authenticated==2) dat += "

Captain Functions" - dat += "
\[ Make a Priority Announcement \]" + dat += "
\[ Make a Captain's Announcement \]" dat += "
\[ Change Alert Level \]" dat += "
\[ Emergency Maintenance Access \]" if(src.emagged == 0) @@ -573,14 +579,13 @@ var/const/CALL_SHUTTLE_REASON_LENGTH = 12 var/emergency_reason = "\nNature of emergency:\n\n[call_reason]" if (seclevel2num(get_security_level()) == SEC_LEVEL_RED) // There is a serious threat we gotta move no time to give them five minutes. emergency_shuttle.incall(0.6, signal_origin) - captain_announce("The emergency shuttle has been called. Red Alert state confirmed: Dispatching priority shuttle. It will arrive in [round(emergency_shuttle.timeleft()/60)] minutes.[emergency_reason]") + priority_announce("The emergency shuttle has been called. Red Alert state confirmed: Dispatching priority shuttle. It will arrive in [round(emergency_shuttle.timeleft()/60)] minutes.[emergency_reason]", null, 'sound/AI/shuttlecalled.ogg', "Priority") else emergency_shuttle.incall(1, signal_origin) - captain_announce("The emergency shuttle has been called. It will arrive in [round(emergency_shuttle.timeleft()/60)] minutes.[emergency_reason]") + priority_announce("The emergency shuttle has been called. It will arrive in [round(emergency_shuttle.timeleft()/60)] minutes.[emergency_reason]", null, 'sound/AI/shuttlecalled.ogg', "Priority") log_game("[key_name(user)] has called the shuttle.") message_admins("[key_name_admin(user)] has called the shuttle.", 1) - world << sound('sound/AI/shuttlecalled.ogg') return diff --git a/code/game/machinery/newscaster.dm b/code/game/machinery/newscaster.dm index afaca2f0e76..3d7bf0c2e97 100644 --- a/code/game/machinery/newscaster.dm +++ b/code/game/machinery/newscaster.dm @@ -44,7 +44,8 @@ var/datum/feed_message/wanted_issue /datum/feed_network/New() - CreateFeedChannel("Central Command", "Centcom Official", 1) + CreateFeedChannel("Central Command Updates", "Central Command", 1) + CreateFeedChannel("Captain's Announcements", "SS13", 1) /datum/feed_network/proc/CreateFeedChannel(var/channel_name, var/author, var/locked, var/adminChannel = 0) var/datum/feed_channel/newChannel = new /datum/feed_channel diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index de8d3aad943..3b06f8249a3 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -157,7 +157,7 @@ if ((!( ticker ) || emergency_shuttle.location)) return emergency_shuttle.incall() - captain_announce("The emergency shuttle has been called. It will arrive in [round(emergency_shuttle.timeleft()/60)] minutes.") + priority_announce("The emergency shuttle has been called. It will arrive in [round(emergency_shuttle.timeleft()/60)] minutes.", null,'sound/AI/shuttlecalled.ogg', "Priority") log_admin("[key_name(usr)] called the Emergency Shuttle") message_admins("\blue [key_name_admin(usr)] called the Emergency Shuttle to the station", 1) @@ -167,7 +167,7 @@ switch(emergency_shuttle.direction) if(-1) emergency_shuttle.incall() - captain_announce("The emergency shuttle has been called. It will arrive in [round(emergency_shuttle.timeleft()/60)] minutes.") + priority_announce("The emergency shuttle has been called. It will arrive in [round(emergency_shuttle.timeleft()/60)] minutes.", null, 'sound/AI/shuttlerecalled.ogg', "Priority") log_admin("[key_name(usr)] called the Emergency Shuttle") message_admins("\blue [key_name_admin(usr)] called the Emergency Shuttle to the station", 1) if(1) @@ -182,7 +182,7 @@ emergency_shuttle.settimeleft( input("Enter new shuttle duration (seconds):","Edit Shuttle Timeleft", emergency_shuttle.timeleft() ) as num ) log_admin("[key_name(usr)] edited the Emergency Shuttle's timeleft to [emergency_shuttle.timeleft()]") - captain_announce("The emergency shuttle has been called. It will arrive in [round(emergency_shuttle.timeleft()/60)] minutes.") + priority_announce("The emergency shuttle will reach its destination in [round(emergency_shuttle.timeleft()/60)] minutes.", null, null, "Priority") message_admins("\blue [key_name_admin(usr)] edited the Emergency Shuttle's timeleft to [emergency_shuttle.timeleft()]", 1) href_list["secretsadmin"] = "check_antagonist" @@ -1854,8 +1854,7 @@ if(W.z == 1 && !istype(get_area(W), /area/bridge) && !istype(get_area(W), /area/crew_quarters) && !istype(get_area(W), /area/security/prison)) W.req_access = list() message_admins("[key_name_admin(usr)] activated Egalitarian Station mode") - command_alert("Centcom airlock control override activated. Please take this time to get acquainted with your coworkers.") - world << sound('sound/AI/commandreport.ogg') + priority_announce("Centcom airlock control override activated. Please take this time to get acquainted with your coworkers.", null, 'sound/AI/commandreport.ogg') if("guns") feedback_inc("admin_secrets_fun_used",1) feedback_add_details("admin_secrets_fun_used","SG") diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index 6191f79fa22..643baf99c12 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -423,7 +423,7 @@ Traitors and the like can also be revived with the previous role mostly intact. var/confirm = alert(src, "Do you want to announce the contents of the report to the crew?", "Announce", "Yes", "No") if(confirm == "Yes") - command_alert(input); + priority_announce(input, null, 'sound/AI/commandreport.ogg'); for (var/obj/machinery/computer/communications/C in machines) if(! (C.stat & (BROKEN|NOPOWER) ) ) var/obj/item/weapon/paper/P = new /obj/item/weapon/paper( C.loc ) @@ -432,7 +432,7 @@ Traitors and the like can also be revived with the previous role mostly intact. C.messagetitle.Add("[command_name()] Update") C.messagetext.Add(P.info) else - command_alert("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message"); + priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/AI/commandreport.ogg'); for (var/obj/machinery/computer/communications/C in machines) if(! (C.stat & (BROKEN|NOPOWER) ) ) var/obj/item/weapon/paper/P = new /obj/item/weapon/paper( C.loc ) @@ -441,7 +441,6 @@ Traitors and the like can also be revived with the previous role mostly intact. C.messagetitle.Add("Classified [command_name()] Update") C.messagetext.Add(P.info) - world << sound('sound/AI/commandreport.ogg') log_admin("[key_name(src)] has created a command report: [input]") message_admins("[key_name_admin(src)] has created a command report", 1) feedback_add_details("admin_verb","CCR") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! @@ -703,8 +702,7 @@ Traitors and the like can also be revived with the previous role mostly intact. return emergency_shuttle.incall() - captain_announce("The emergency shuttle has been called. It will arrive in [round(emergency_shuttle.timeleft()/60)] minutes.") - world << sound('sound/AI/shuttlecalled.ogg') + priority_announce("The emergency shuttle has been called. It will arrive in [round(emergency_shuttle.timeleft()/60)] minutes.", null, 'sound/AI/shuttlecalled.ogg', "Priority") feedback_add_details("admin_verb","CSHUT") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! log_admin("[key_name(usr)] admin-called the emergency shuttle.") message_admins("\blue [key_name_admin(usr)] admin-called the emergency shuttle.", 1) diff --git a/code/modules/awaymissions/bluespaceartillery.dm b/code/modules/awaymissions/bluespaceartillery.dm index 32fadf2eef7..16fcdb2f4b6 100644 --- a/code/modules/awaymissions/bluespaceartillery.dm +++ b/code/modules/awaymissions/bluespaceartillery.dm @@ -40,7 +40,7 @@ if (usr.stat || usr.restrained()) return if(src.reload < 180) return if ((usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf))) || (istype(usr, /mob/living/silicon))) - command_alert("Bluespace artillery fire detected. Brace for impact.") + priority_announce("Bluespace artillery fire detected. Brace for impact.") message_admins("[key_name_admin(usr)] has launched an artillery strike.", 1) var/list/L = list() for(var/turf/T in get_area_turfs(thearea.type)) @@ -53,7 +53,7 @@ var/A A = input("Area to jump bombard", "Open Fire", A) in teleportlocs var/area/thearea = teleportlocs[A] - command_alert("Bluespace artillery fire detected. Brace for impact.") + priority_announce("Bluespace artillery fire detected. Brace for impact.") spawn(30) var/list/L = list() diff --git a/code/modules/events/alien_infestation.dm b/code/modules/events/alien_infestation.dm index 7e2240a0df5..c4c82a9cf45 100644 --- a/code/modules/events/alien_infestation.dm +++ b/code/modules/events/alien_infestation.dm @@ -22,8 +22,7 @@ /datum/round_event/alien_infestation/announce() if(successSpawn) - command_alert("Unidentified lifesigns detected coming aboard [station_name()]. Secure any exterior access, including ducting and ventilation.", "Lifesign Alert") - world << sound('sound/AI/aliens.ogg') + priority_announce("Unidentified lifesigns detected coming aboard [station_name()]. Secure any exterior access, including ducting and ventilation.", "Lifesign Alert", 'sound/AI/aliens.ogg') /datum/round_event/alien_infestation/start() diff --git a/code/modules/events/anomaly.dm b/code/modules/events/anomaly.dm index f1f3cc44185..654c227e810 100644 --- a/code/modules/events/anomaly.dm +++ b/code/modules/events/anomaly.dm @@ -22,7 +22,7 @@ setup(safety_loop) /datum/round_event/anomaly/announce() - command_alert("Localized hyper-energetic flux wave detected on long range scanners. Expected location of impact: [impact_area.name].", "Anomaly Alert") + priority_announce("Localized hyper-energetic flux wave detected on long range scanners. Expected location of impact: [impact_area.name].", "Anomaly Alert") /datum/round_event/anomaly/start() var/turf/T = pick(get_area_turfs(impact_area)) diff --git a/code/modules/events/anomaly_bluespace.dm b/code/modules/events/anomaly_bluespace.dm index 8adc6d88713..256a4322c81 100644 --- a/code/modules/events/anomaly_bluespace.dm +++ b/code/modules/events/anomaly_bluespace.dm @@ -11,7 +11,7 @@ /datum/round_event/anomaly/anomaly_bluespace/announce() - command_alert("Unstable bluespace anomaly detected on long range scanners. Expected location: [impact_area.name].", "Anomaly Alert") + priority_announce("Unstable bluespace anomaly detected on long range scanners. Expected location: [impact_area.name].", "Anomaly Alert") /datum/round_event/anomaly/anomaly_bluespace/start() @@ -40,7 +40,7 @@ var/turf/TO = get_turf(chosen) // the turf of origin we're travelling TO playsound(TO, 'sound/effects/phasein.ogg', 100, 1) - command_alert("Massive bluespace translocation detected.", "Anomaly Alert") + priority_announce("Massive bluespace translocation detected.", "Anomaly Alert") var/list/flashers = list() for(var/mob/living/carbon/human/M in viewers(TO, null)) diff --git a/code/modules/events/anomaly_flux.dm b/code/modules/events/anomaly_flux.dm index 2c84d7fc70b..dc7e9d4b219 100644 --- a/code/modules/events/anomaly_flux.dm +++ b/code/modules/events/anomaly_flux.dm @@ -11,7 +11,7 @@ /datum/round_event/anomaly/anomaly_flux/announce() - command_alert("Localized hyper-energetic flux wave detected on long range scanners. Expected location: [impact_area.name].", "Anomaly Alert") + priority_announce("Localized hyper-energetic flux wave detected on long range scanners. Expected location: [impact_area.name].", "Anomaly Alert") /datum/round_event/anomaly/anomaly_flux/start() diff --git a/code/modules/events/anomaly_grav.dm b/code/modules/events/anomaly_grav.dm index 9d7ada2d60d..69d38c62231 100644 --- a/code/modules/events/anomaly_grav.dm +++ b/code/modules/events/anomaly_grav.dm @@ -11,7 +11,7 @@ /datum/round_event/anomaly/anomaly_grav/announce() - command_alert("Gravitational anomaly detected on long range scanners. Expected location: [impact_area.name].", "Anomaly Alert") + priority_announce("Gravitational anomaly detected on long range scanners. Expected location: [impact_area.name].", "Anomaly Alert") /datum/round_event/anomaly/anomaly_grav/start() var/turf/T = pick(get_area_turfs(impact_area)) diff --git a/code/modules/events/anomaly_pyro.dm b/code/modules/events/anomaly_pyro.dm index 270ebed2aed..49600a58136 100644 --- a/code/modules/events/anomaly_pyro.dm +++ b/code/modules/events/anomaly_pyro.dm @@ -11,7 +11,7 @@ /datum/round_event/anomaly/anomaly_pyro/announce() - command_alert("Atmospheric anomaly detected on long range scanners. Expected location: [impact_area.name].", "Anomaly Alert") + priority_announce("Atmospheric anomaly detected on long range scanners. Expected location: [impact_area.name].", "Anomaly Alert") /datum/round_event/anomaly/anomaly_pyro/start() var/turf/T = pick(get_area_turfs(impact_area)) diff --git a/code/modules/events/anomaly_vortex.dm b/code/modules/events/anomaly_vortex.dm index b97310c4ece..993bec48862 100644 --- a/code/modules/events/anomaly_vortex.dm +++ b/code/modules/events/anomaly_vortex.dm @@ -11,7 +11,7 @@ /datum/round_event/anomaly/anomaly_vortex/announce() - command_alert("Localized high-intensity vortex anomaly detected on long range scanners. Expected location: [impact_area.name]", "Anomaly Alert") + priority_announce("Localized high-intensity vortex anomaly detected on long range scanners. Expected location: [impact_area.name]", "Anomaly Alert") /datum/round_event/anomaly/anomaly_vortex/start() var/turf/T = pick(get_area_turfs(impact_area)) diff --git a/code/modules/events/blob.dm b/code/modules/events/blob.dm index e4846922a30..368172ebecd 100644 --- a/code/modules/events/blob.dm +++ b/code/modules/events/blob.dm @@ -14,8 +14,7 @@ /datum/round_event/blob/announce() - command_alert("Confirmed outbreak of level 5 biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert") - world << sound('sound/AI/outbreak5.ogg') + priority_announce("Confirmed outbreak of level 5 biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert", 'sound/AI/outbreak5.ogg') /datum/round_event/blob/start() diff --git a/code/modules/events/brand_intelligence.dm b/code/modules/events/brand_intelligence.dm index d90b575acfc..1c63424387c 100644 --- a/code/modules/events/brand_intelligence.dm +++ b/code/modules/events/brand_intelligence.dm @@ -21,7 +21,7 @@ /datum/round_event/brand_intelligence/announce() - command_alert("Rampant brand intelligence has been detected aboard [station_name()], please stand-by. The origin is believed to be \a [originMachine.name].", "Machine Learning Alert") + priority_announce("Rampant brand intelligence has been detected aboard [station_name()], please stand-by. The origin is believed to be \a [originMachine.name].", "Machine Learning Alert") /datum/round_event/brand_intelligence/start() diff --git a/code/modules/events/carp_migration.dm b/code/modules/events/carp_migration.dm index d4ec0097553..4820806be23 100644 --- a/code/modules/events/carp_migration.dm +++ b/code/modules/events/carp_migration.dm @@ -13,7 +13,7 @@ startWhen = rand(40, 60) /datum/round_event/carp_migration/announce() - command_alert("Unknown biological entities have been detected near [station_name()], please stand-by.", "Lifesign Alert") + priority_announce("Unknown biological entities have been detected near [station_name()], please stand-by.", "Lifesign Alert") /datum/round_event/carp_migration/start() diff --git a/code/modules/events/communications_blackout.dm b/code/modules/events/communications_blackout.dm index 37cc583a468..353b92a78b8 100644 --- a/code/modules/events/communications_blackout.dm +++ b/code/modules/events/communications_blackout.dm @@ -17,7 +17,7 @@ A << "
" if(prob(30)) //most of the time, we don't want an announcement, so as to allow AIs to fake blackouts. - command_alert(alert) + priority_announce(alert) /datum/round_event/communications_blackout/start() diff --git a/code/modules/events/disease_outbreak.dm b/code/modules/events/disease_outbreak.dm index 8a33611d24f..142e58fa0f6 100644 --- a/code/modules/events/disease_outbreak.dm +++ b/code/modules/events/disease_outbreak.dm @@ -11,8 +11,7 @@ /datum/round_event/disease_outbreak/announce() - command_alert("Confirmed outbreak of level 7 viral biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert") - world << sound('sound/AI/outbreak7.ogg') + priority_announce("Confirmed outbreak of level 7 viral biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert", 'sound/AI/outbreak7.ogg') /datum/round_event/disease_outbreak/setup() announceWhen = rand(15, 30) diff --git a/code/modules/events/electrical_storm.dm b/code/modules/events/electrical_storm.dm index dae41caea66..51fa161ef23 100644 --- a/code/modules/events/electrical_storm.dm +++ b/code/modules/events/electrical_storm.dm @@ -10,7 +10,7 @@ /datum/round_event/electrical_storm/announce() - command_alert("An electrical storm has been detected in your area, please repair potential electronic overloads.", "Electrical Storm Alert") + priority_announce("An electrical storm has been detected in your area, please repair potential electronic overloads.", "Electrical Storm Alert") /datum/round_event/electrical_storm/start() diff --git a/code/modules/events/holiday/halloween.dm b/code/modules/events/holiday/halloween.dm index 56b5458ca8f..67536e1dec7 100644 --- a/code/modules/events/holiday/halloween.dm +++ b/code/modules/events/holiday/halloween.dm @@ -14,4 +14,4 @@ Ian.place_on_head(new /obj/item/weapon/bedsheet(Ian)) /datum/round_event/spooky/announce() - command_alert(pick("RATTLE ME BONES!","THE RIDE NEVER ENDS!", "A SKELETON POPS OUT!", "SPOOKY SCARY SKELETONS!", "CREWMEMBERS BEWARE, YOU'RE IN FOR A SCARE!") , "THE CALL IS COMING FROM INSIDE THE HOUSE") \ No newline at end of file + priority_announce(pick("RATTLE ME BONES!","THE RIDE NEVER ENDS!", "A SKELETON POPS OUT!", "SPOOKY SCARY SKELETONS!", "CREWMEMBERS BEWARE, YOU'RE IN FOR A SCARE!") , "THE CALL IS COMING FROM INSIDE THE HOUSE") \ No newline at end of file diff --git a/code/modules/events/holiday/xmas.dm b/code/modules/events/holiday/xmas.dm index a5fd2bad884..d7021e0e12d 100644 --- a/code/modules/events/holiday/xmas.dm +++ b/code/modules/events/holiday/xmas.dm @@ -35,7 +35,7 @@ Monitor.icon_state = "entertainment_xmas" /datum/round_event/presents/announce() - command_alert("Ho Ho Ho, Merry Xmas!", "Unknown Transmission") + priority_announce("Ho Ho Ho, Merry Xmas!", "Unknown Transmission") /obj/item/weapon/toy/xmas_cracker diff --git a/code/modules/events/immovable_rod.dm b/code/modules/events/immovable_rod.dm index c418e498812..20ad73c74a6 100644 --- a/code/modules/events/immovable_rod.dm +++ b/code/modules/events/immovable_rod.dm @@ -16,7 +16,7 @@ In my current plan for it, 'solid' will be defined as anything with density == 1 announceWhen = 5 /datum/round_event/immovable_rod/announce() - command_alert("What the fuck was that?!", "General Alert") + priority_announce("What the fuck was that?!", "General Alert") /datum/round_event/immovable_rod/start() var/startx = 0 diff --git a/code/modules/events/ion_storm.dm b/code/modules/events/ion_storm.dm index af4dbb2c68b..659ff0c3168 100644 --- a/code/modules/events/ion_storm.dm +++ b/code/modules/events/ion_storm.dm @@ -21,8 +21,7 @@ /datum/round_event/ion_storm/announce() 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') + priority_announce("Ion storm detected near the station. Please check all AI-controlled equipment for errors.", "Anomaly Alert", 'sound/AI/ionstorm.ogg') /datum/round_event/ion_storm/start() diff --git a/code/modules/events/meteor_wave.dm b/code/modules/events/meteor_wave.dm index 8357f36834d..07ad613061c 100644 --- a/code/modules/events/meteor_wave.dm +++ b/code/modules/events/meteor_wave.dm @@ -9,8 +9,7 @@ endWhen = 66 /datum/round_event/meteor_wave/announce() - command_alert("Meteors have been detected on collision course with the station.", "Meteor Alert") - world << sound('sound/AI/meteors.ogg') + priority_announce("Meteors have been detected on collision course with the station.", "Meteor Alert", 'sound/AI/meteors.ogg') /datum/round_event/meteor_wave/tick() diff --git a/code/modules/events/prison_break.dm b/code/modules/events/prison_break.dm index 99495fbc36e..878a22a0050 100644 --- a/code/modules/events/prison_break.dm +++ b/code/modules/events/prison_break.dm @@ -20,7 +20,7 @@ /datum/round_event/prison_break/announce() if(prisonAreas && prisonAreas.len > 0) - command_alert("Gr3y.T1d3 virus detected in [station_name()] imprisonment subroutines. Recommend station AI involvement.", "Security Alert") + priority_announce("Gr3y.T1d3 virus detected in [station_name()] imprisonment subroutines. Recommend station AI involvement.", "Security Alert") else world.log << "ERROR: Could not initate grey-tide. Unable find prison or brig area." kill() diff --git a/code/modules/events/radiation_storm.dm b/code/modules/events/radiation_storm.dm index 065fde0e00f..8053cea32db 100644 --- a/code/modules/events/radiation_storm.dm +++ b/code/modules/events/radiation_storm.dm @@ -12,8 +12,8 @@ endWhen = startWhen + 5 /datum/round_event/radiation_storm/announce() - command_alert("High levels of radiation detected near the station. Maintenance is best shielded from radiation.", "Anomaly Alert") - world << sound('sound/AI/radiation.ogg') //sound not longer matches the text, but an audible warning is probably good + priority_announce("High levels of radiation detected near the station. Maintenance is best shielded from radiation.", "Anomaly Alert", 'sound/AI/radiation.ogg') + //sound not longer matches the text, but an audible warning is probably good /datum/round_event/radiation_storm/start() @@ -52,4 +52,4 @@ /datum/round_event/radiation_storm/end() - command_alert("The radiation threat has passed. Please return to your workplaces.", "Anomaly Alert") \ No newline at end of file + priority_announce("The radiation threat has passed. Please return to your workplaces.", "Anomaly Alert") \ No newline at end of file diff --git a/code/modules/events/shuttle_loan.dm b/code/modules/events/shuttle_loan.dm index ef47bc8df91..d785caa4292 100644 --- a/code/modules/events/shuttle_loan.dm +++ b/code/modules/events/shuttle_loan.dm @@ -23,18 +23,18 @@ supply_shuttle.shuttle_loan = src switch(dispatch_type) if(HIJACK_SYNDIE) - command_alert("The syndicate are trying to infiltrate your station. If you let them hijack your shuttle, you'll save us a headache.","Centcom Counter Intelligence") + priority_announce("The syndicate are trying to infiltrate your station. If you let them hijack your shuttle, you'll save us a headache.","Centcom Counter Intelligence") if(RUSKY_PARTY) - command_alert("A group of angry russians want to have a party, can you send them your cargo shuttle then make them disappear?","Centcom Russian Outreach Program") + priority_announce("A group of angry russians want to have a party, can you send them your cargo shuttle then make them disappear?","Centcom Russian Outreach Program") if(SPIDER_GIFT) - command_alert("The Spider Clan has sent us a mysterious gift, can we ship it to you to see what's inside?","Centcom Diplomatic Corps") + priority_announce("The Spider Clan has sent us a mysterious gift, can we ship it to you to see what's inside?","Centcom Diplomatic Corps") if(DEPARTMENT_RESUPPLY) - command_alert("Seems we've ordered doubles of our department resupply packages this month. Can we send them to you?","Centcom Supply Department") + priority_announce("Seems we've ordered doubles of our department resupply packages this month. Can we send them to you?","Centcom Supply Department") thanks_msg = "The shuttle will be returned in 5 minutes." bonus_points = 0 /datum/round_event/shuttle_loan/proc/loan_shuttle() - command_alert(thanks_msg, "Cargo shuttle commandeered by Centcom.") + priority_announce(thanks_msg, "Cargo shuttle commandeered by Centcom.") dispatched = 1 supply_shuttle.points += bonus_points diff --git a/code/modules/events/spider_infestation.dm b/code/modules/events/spider_infestation.dm index 994fe6cbac8..8bfb56e49f8 100644 --- a/code/modules/events/spider_infestation.dm +++ b/code/modules/events/spider_infestation.dm @@ -15,8 +15,7 @@ spawncount = rand(5, 8) /datum/round_event/spider_infestation/announce() - command_alert("Unidentified lifesigns detected coming aboard [station_name()]. Secure any exterior access, including ducting and ventilation.", "Lifesign Alert") - world << sound('sound/AI/aliens.ogg') + priority_announce("Unidentified lifesigns detected coming aboard [station_name()]. Secure any exterior access, including ducting and ventilation.", "Lifesign Alert", 'sound/AI/aliens.ogg') /datum/round_event/spider_infestation/start() diff --git a/code/modules/events/vent_clog.dm b/code/modules/events/vent_clog.dm index 51e62dd24f1..f202148ca29 100644 --- a/code/modules/events/vent_clog.dm +++ b/code/modules/events/vent_clog.dm @@ -11,7 +11,7 @@ var/list/vents = list() /datum/round_event/vent_clog/announce() - command_alert("The scrubbers network is experiencing a backpressure surge. Some ejection of contents may occur.", "Atmospherics alert") + priority_announce("The scrubbers network is experiencing a backpressure surge. Some ejection of contents may occur.", "Atmospherics alert") /datum/round_event/vent_clog/setup() diff --git a/code/modules/events/wormholes.dm b/code/modules/events/wormholes.dm index 04b9898e9fb..b373671d5d1 100644 --- a/code/modules/events/wormholes.dm +++ b/code/modules/events/wormholes.dm @@ -28,10 +28,7 @@ wormholes += new /obj/effect/portal/wormhole(T, null, null, -1) /datum/round_event/wormholes/announce() - command_alert("Space-time anomalies detected on the station. There is no additional data.", "Anomaly Alert") - for(var/mob/M in player_list) - if(!istype(M, /mob/new_player)) - M << sound('sound/AI/spanomalies.ogg') + priority_announce("Space-time anomalies detected on the station. There is no additional data.", "Anomaly Alert", 'sound/AI/spanomalies.ogg') /datum/round_event/wormholes/tick() if(activeFor % shift_frequency == 0) diff --git a/sound/AI/attention.ogg b/sound/AI/attention.ogg new file mode 100644 index 0000000000000000000000000000000000000000..912be4425ebb3d24ab579493c1f1c2c06ec45d22 GIT binary patch literal 15909 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 Date: Tue, 6 May 2014 08:57:27 -0600 Subject: [PATCH 063/185] Fixed non-captains not registering their ID to the Comms console --- code/game/machinery/computer/communications.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm index 641557fa4e9..a7fc4f0baf6 100644 --- a/code/game/machinery/computer/communications.dm +++ b/code/game/machinery/computer/communications.dm @@ -70,9 +70,9 @@ var/const/CALL_SHUTTLE_REASON_LENGTH = 12 if (I && istype(I)) if(src.check_access(I)) authenticated = 1 - if((20 in I.access)) - authenticated = 2 auth_id = "[I.registered_name] ([I.assignment])" + if((20 in I.access)) + authenticated = 2 if(src.emagged) authenticated = 2 auth_id = "Unknown" From 47fbd14f57044e4e20972b10a5404a479eda6772 Mon Sep 17 00:00:00 2001 From: ikarrus Date: Tue, 6 May 2014 09:02:19 -0600 Subject: [PATCH 064/185] Glory to absolute pathing --- code/game/gamemodes/objective.dm | 4 ++-- code/modules/paperwork/folders.dm | 8 +++++--- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/code/game/gamemodes/objective.dm b/code/game/gamemodes/objective.dm index 1b827f43993..f29f7b9d1d2 100644 --- a/code/game/gamemodes/objective.dm +++ b/code/game/gamemodes/objective.dm @@ -253,8 +253,6 @@ var/global/list/possible_items = list() datum/objective/steal var/datum/objective_item/targetinfo = null //Save the chosen item datum so we can access it later. var/obj/item/steal_target = null //Needed for custom objectives (they're just items, not datums). - var/faction //Exchange objectives: Which side are we on? - var/datum/mind/otheragent //Exchange objectives: The mind of the other party dangerrating = 5 //Overridden by the individual item's difficulty, but defaults to 5 for custom objectives. datum/objective/steal/New() @@ -326,6 +324,8 @@ datum/objective/steal/special/find_target() datum/objective/steal/exchange dangerrating = 10 + var/faction //Exchange objectives: Which side are we on? + var/datum/mind/otheragent //Exchange objectives: The mind of the other party datum/objective/steal/exchange/proc/set_faction(faction,otheragent) if(faction == "red") diff --git a/code/modules/paperwork/folders.dm b/code/modules/paperwork/folders.dm index 163582f8e74..f4dafb5f81e 100644 --- a/code/modules/paperwork/folders.dm +++ b/code/modules/paperwork/folders.dm @@ -77,7 +77,7 @@ name = "folder- 'TOP SECRET'" desc = "A folder stamped \"Top Secret - Property of Nanotrasen Corporation. Unauthorized distribution is punishable by death.\"" - New() +/obj/item/weapon/folder/documents/New() ..() new /obj/item/documents/nanotrasen(src) update_icon() @@ -88,14 +88,16 @@ /obj/item/weapon/folder/syndicate/red icon_state = "folder_sred" - New() + +/obj/item/weapon/folder/syndicate/red/New() ..() new /obj/item/documents/syndicate/red(src) update_icon() /obj/item/weapon/folder/syndicate/blue icon_state = "folder_sblue" - New() + +/obj/item/weapon/folder/syndicate/blue/New() ..() new /obj/item/documents/syndicate/blue(src) update_icon() \ No newline at end of file From 258f2825e87c370585101af5d6a623915a1682ce Mon Sep 17 00:00:00 2001 From: phil235 Date: Tue, 6 May 2014 18:24:49 +0200 Subject: [PATCH 065/185] windoor->window --- code/game/machinery/doors/windowdoor.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm index 0c6a7cb98a9..248d5225067 100644 --- a/code/game/machinery/doors/windowdoor.dm +++ b/code/game/machinery/doors/windowdoor.dm @@ -58,7 +58,7 @@ bumpopen(M) return -/obj/machinery/door/windoor/bumpopen(mob/user as mob) +/obj/machinery/door/window/bumpopen(mob/user as mob) if( operating || !src.density ) return src.add_fingerprint(user) From 14575068781b53636df0ea59652b48fd6472f421 Mon Sep 17 00:00:00 2001 From: phil235 Date: Tue, 6 May 2014 23:10:22 +0200 Subject: [PATCH 066/185] simplifying --- code/defines/obj/weapon.dm | 51 ++++++++++++++------------------------ 1 file changed, 19 insertions(+), 32 deletions(-) diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm index 56d583af52b..80d7a585c83 100644 --- a/code/defines/obj/weapon.dm +++ b/code/defines/obj/weapon.dm @@ -186,43 +186,30 @@ icon_state = "beartrap[armed]" user << "[src] is now [armed ? "armed" : "disarmed"]" -/obj/item/weapon/legcuffs/beartrap/proc/triggered(mob/living/target) - armed = 0 - icon_state = "beartrap0" - playsound(src.loc, 'sound/effects/snap.ogg', 50, 1) - if(iscarbon(target)) - var/mob/living/carbon/C = target - C.visible_message("[C] triggers \the [src].", \ - "You trigger \the [src]!") /obj/item/weapon/legcuffs/beartrap/Crossed(AM as mob|obj) - if(armed) - if(isturf(src.loc)) + if(armed && isturf(src.loc)) + if( (iscarbon(AM) || isanimal(AM)) && !istype(AM, /mob/living/simple_animal/parrot) && !istype(AM, /mob/living/simple_animal/construct) && !istype(AM, /mob/living/simple_animal/shade) && !istype(AM, /mob/living/simple_animal/hostile/viscerator)) + armed = 0 + icon_state = "beartrap0" + playsound(src.loc, 'sound/effects/snap.ogg', 50, 1) + AM.visible_message("[AM] triggers \the [src].", \ + "You trigger \the [src]!") + if(ishuman(AM)) var/mob/living/carbon/H = AM - if(H.m_intent == "run") - triggered(H) - if(H.lying) - H.apply_damage(20,BRUTE,"chest") - else - H.apply_damage(20,BRUTE,(pick("l_leg", "r_leg"))) - if(!H.legcuffed) //beartrap can't cuff you leg if there's already a beartrap or legcuffs. - H.legcuffed = src - src.loc = H - H.update_inv_legcuffed(0) - feedback_add_details("handcuffs","B") //Yes, I know they're legcuffs. Don't change this, no need for an extra variable. The "B" is used to tell them apart. + if(H.lying) + H.apply_damage(20,BRUTE,"chest") + else + H.apply_damage(20,BRUTE,(pick("l_leg", "r_leg"))) + if(!H.legcuffed) //beartrap can't cuff you leg if there's already a beartrap or legcuffs. + H.legcuffed = src + src.loc = H + H.update_inv_legcuffed(0) + feedback_add_details("handcuffs","B") //Yes, I know they're legcuffs. Don't change this, no need for an extra variable. The "B" is used to tell them apart. - if(isalien(AM) || ismonkey(AM)) - var/mob/living/carbon/A = AM - triggered(A) - A.adjustBruteLoss(20) - A.Stun(5) - - if(isanimal(AM) && !istype(AM, /mob/living/simple_animal/parrot) && !istype(AM, /mob/living/simple_animal/construct) && !istype(AM, /mob/living/simple_animal/shade) && !istype(AM, /mob/living/simple_animal/hostile/viscerator)) - var/mob/living/simple_animal/SA = AM - triggered(SA) - visible_message("[SA] triggers \the [src]!") - SA.health -= 20 + else + AM.apply_damage(20,BRUTE) ..() From 7f37c303e2202c915ab51a518fed8aa594158073 Mon Sep 17 00:00:00 2001 From: phil235 Date: Tue, 6 May 2014 23:24:16 +0200 Subject: [PATCH 067/185] fix --- code/defines/obj/weapon.dm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm index 80d7a585c83..e2b1586a58a 100644 --- a/code/defines/obj/weapon.dm +++ b/code/defines/obj/weapon.dm @@ -190,10 +190,11 @@ /obj/item/weapon/legcuffs/beartrap/Crossed(AM as mob|obj) if(armed && isturf(src.loc)) if( (iscarbon(AM) || isanimal(AM)) && !istype(AM, /mob/living/simple_animal/parrot) && !istype(AM, /mob/living/simple_animal/construct) && !istype(AM, /mob/living/simple_animal/shade) && !istype(AM, /mob/living/simple_animal/hostile/viscerator)) + var/mob/living/L = AM armed = 0 icon_state = "beartrap0" playsound(src.loc, 'sound/effects/snap.ogg', 50, 1) - AM.visible_message("[AM] triggers \the [src].", \ + L.visible_message("[L] triggers \the [src].", \ "You trigger \the [src]!") if(ishuman(AM)) @@ -209,7 +210,7 @@ feedback_add_details("handcuffs","B") //Yes, I know they're legcuffs. Don't change this, no need for an extra variable. The "B" is used to tell them apart. else - AM.apply_damage(20,BRUTE) + L.apply_damage(20,BRUTE) ..() From ab226de343e59436ebe28a9e7b55fba3abc75303 Mon Sep 17 00:00:00 2001 From: Cheridan Date: Tue, 6 May 2014 18:55:38 -0500 Subject: [PATCH 068/185] Makes nutrient bottles larger, reduces amount in vendor/generator to compensate. --- code/game/machinery/vending.dm | 2 +- code/modules/hydroponics/biogenerator.dm | 8 +------- code/modules/hydroponics/hydroitemdefines.dm | 18 ++++++++++-------- 3 files changed, 12 insertions(+), 16 deletions(-) diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index ec83db9dcee..4f16ff44a0f 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -724,7 +724,7 @@ product_ads = "We like plants!;Don't you want some?;The greenest thumbs ever.;We like big plants.;Soft soil..." icon_state = "nutri" icon_deny = "nutri-deny" - products = list(/obj/item/weapon/reagent_containers/glass/bottle/nutrient/ez = 45,/obj/item/weapon/reagent_containers/glass/bottle/nutrient/l4z = 25,/obj/item/weapon/reagent_containers/glass/bottle/nutrient/rh = 15,/obj/item/weapon/reagent_containers/spray/pestspray = 20, + products = list(/obj/item/weapon/reagent_containers/glass/bottle/nutrient/ez = 30,/obj/item/weapon/reagent_containers/glass/bottle/nutrient/l4z = 20,/obj/item/weapon/reagent_containers/glass/bottle/nutrient/rh = 10,/obj/item/weapon/reagent_containers/spray/pestspray = 20, /obj/item/weapon/reagent_containers/syringe = 5,/obj/item/weapon/storage/bag/plants = 5) contraband = list(/obj/item/weapon/reagent_containers/glass/bottle/ammonia = 10,/obj/item/weapon/reagent_containers/glass/bottle/diethylamine = 5) diff --git a/code/modules/hydroponics/biogenerator.dm b/code/modules/hydroponics/biogenerator.dm index b6730a62995..242ad96511d 100644 --- a/code/modules/hydroponics/biogenerator.dm +++ b/code/modules/hydroponics/biogenerator.dm @@ -223,30 +223,24 @@ if("rh") if (check_cost(25/efficiency)) return 0 else new/obj/item/weapon/reagent_containers/glass/bottle/nutrient/rh(src.loc) - if("ez5") //It's not an elegant method, but it's safe and easy. -Cheridan + if("ez5") if (check_cost(50/efficiency)) return 0 else new/obj/item/weapon/reagent_containers/glass/bottle/nutrient/ez(src.loc) new/obj/item/weapon/reagent_containers/glass/bottle/nutrient/ez(src.loc) new/obj/item/weapon/reagent_containers/glass/bottle/nutrient/ez(src.loc) - new/obj/item/weapon/reagent_containers/glass/bottle/nutrient/ez(src.loc) - new/obj/item/weapon/reagent_containers/glass/bottle/nutrient/ez(src.loc) if("l4z5") if (check_cost(100/efficiency)) return 0 else new/obj/item/weapon/reagent_containers/glass/bottle/nutrient/l4z(src.loc) new/obj/item/weapon/reagent_containers/glass/bottle/nutrient/l4z(src.loc) new/obj/item/weapon/reagent_containers/glass/bottle/nutrient/l4z(src.loc) - new/obj/item/weapon/reagent_containers/glass/bottle/nutrient/l4z(src.loc) - new/obj/item/weapon/reagent_containers/glass/bottle/nutrient/l4z(src.loc) if("rh5") if (check_cost(125/efficiency)) return 0 else new/obj/item/weapon/reagent_containers/glass/bottle/nutrient/rh(src.loc) new/obj/item/weapon/reagent_containers/glass/bottle/nutrient/rh(src.loc) new/obj/item/weapon/reagent_containers/glass/bottle/nutrient/rh(src.loc) - new/obj/item/weapon/reagent_containers/glass/bottle/nutrient/rh(src.loc) - new/obj/item/weapon/reagent_containers/glass/bottle/nutrient/rh(src.loc) if("wallet") if (check_cost(100/efficiency)) return 0 else new/obj/item/weapon/storage/wallet(src.loc) diff --git a/code/modules/hydroponics/hydroitemdefines.dm b/code/modules/hydroponics/hydroitemdefines.dm index 8334d7f015a..c6ef8c5fc7c 100644 --- a/code/modules/hydroponics/hydroitemdefines.dm +++ b/code/modules/hydroponics/hydroitemdefines.dm @@ -78,16 +78,18 @@ /obj/item/weapon/reagent_containers/glass/bottle/nutrient - name = "bottle of nutrient" icon = 'icons/obj/chemical.dmi' icon_state = "bottle16" + volume = 50 w_class = 1.0 + amount_per_transfer_from_this = 10 + possible_transfer_amounts = list(1,5,10,15,25,50) - New() - ..() - src.pixel_x = rand(-5.0, 5) - src.pixel_y = rand(-5.0, 5) +/obj/item/weapon/reagent_containers/glass/bottle/nutrient/New() + ..() + src.pixel_x = rand(-5.0, 5) + src.pixel_y = rand(-5.0, 5) /obj/item/weapon/reagent_containers/glass/bottle/nutrient/ez @@ -96,7 +98,7 @@ icon_state = "bottle16" New() ..() - reagents.add_reagent("eznutriment", 30) + reagents.add_reagent("eznutriment", 50) /obj/item/weapon/reagent_containers/glass/bottle/nutrient/l4z name = "bottle of Left 4 Zed" @@ -104,7 +106,7 @@ icon_state = "bottle18" New() ..() - reagents.add_reagent("left4zednutriment", 30) + reagents.add_reagent("left4zednutriment", 50) /obj/item/weapon/reagent_containers/glass/bottle/nutrient/rh name = "bottle of Robust Harvest" @@ -112,4 +114,4 @@ icon_state = "bottle15" New() ..() - reagents.add_reagent("robustharvestnutriment", 30) + reagents.add_reagent("robustharvestnutriment", 50) From e2a2b15706e0314cf981bce9a4ff6766568abb11 Mon Sep 17 00:00:00 2001 From: Cheridan Date: Tue, 6 May 2014 19:16:17 -0500 Subject: [PATCH 069/185] 2-unit setting --- code/modules/hydroponics/hydroitemdefines.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/hydroponics/hydroitemdefines.dm b/code/modules/hydroponics/hydroitemdefines.dm index c6ef8c5fc7c..39c0068dde3 100644 --- a/code/modules/hydroponics/hydroitemdefines.dm +++ b/code/modules/hydroponics/hydroitemdefines.dm @@ -84,7 +84,7 @@ volume = 50 w_class = 1.0 amount_per_transfer_from_this = 10 - possible_transfer_amounts = list(1,5,10,15,25,50) + possible_transfer_amounts = list(1,2,5,10,15,25,50) /obj/item/weapon/reagent_containers/glass/bottle/nutrient/New() ..() From a392da16b0c5d7bee93d10fa42262f6255e8bb62 Mon Sep 17 00:00:00 2001 From: Cheridan Date: Tue, 6 May 2014 21:40:28 -0500 Subject: [PATCH 070/185] Area Ambiance Refactor --- code/game/area/Space Station 13 areas.dm | 56 ++++++++++++++++-------- code/game/area/areas.dm | 30 ++++--------- code/modules/mining/mine_areas.dm | 2 + 3 files changed, 47 insertions(+), 41 deletions(-) diff --git a/code/game/area/Space Station 13 areas.dm b/code/game/area/Space Station 13 areas.dm index f91338962b6..2584ac98d1d 100644 --- a/code/game/area/Space Station 13 areas.dm +++ b/code/game/area/Space Station 13 areas.dm @@ -123,6 +123,7 @@ proc/process_ghost_teleport_locs() power_light = 0 power_equip = 0 power_environ = 0 + ambientsounds = list('sound/ambience/ambispace.ogg','sound/ambience/title2.ogg',) @@ -500,6 +501,7 @@ proc/process_ghost_teleport_locs() /area/prison/morgue name = "\improper Prison Morgue" icon_state = "morgue" + ambientsounds = list('sound/ambience/ambimo1.ogg','sound/ambience/ambimo2.ogg') /area/prison/medical_research name = "\improper Prison Genetic Research" @@ -757,6 +759,7 @@ proc/process_ghost_teleport_locs() /area/chapel/main name = "\improper Chapel" icon_state = "chapel" + ambientsounds = list('sound/ambience/ambicha1.ogg','sound/ambience/ambicha2.ogg','sound/ambience/ambicha3.ogg','sound/ambience/ambicha4.ogg') /area/chapel/office name = "\improper Chapel Office" @@ -821,30 +824,32 @@ proc/process_ghost_teleport_locs() //Engineering /area/engine - engine_smes - name = "\improper Engineering SMES" - icon_state = "engine_smes" - requires_power = 0//This area only covers the batteries and they deal with their own power + ambientsounds = list('sound/ambience/ambisin1.ogg','sound/ambience/ambisin2.ogg','sound/ambience/ambisin3.ogg','sound/ambience/ambisin4.ogg') - engineering - name = "Engineering" - icon_state = "engine_smes" +/area/engine/engine_smes + name = "\improper Engineering SMES" + icon_state = "engine_smes" + requires_power = 0//This area only covers the batteries and they deal with their own power - break_room - name = "\improper Engineering Foyer" - icon_state = "engine" +/area/engine/engineering + name = "Engineering" + icon_state = "engine_smes" - chiefs_office - name = "\improper Chief Engineer's office" - icon_state = "engine_control" +/area/engine/break_room + name = "\improper Engineering Foyer" + icon_state = "engine" - secure_construction - name = "\improper Secure Construction Area" - icon_state = "engine" +/area/engine/chiefs_office + name = "\improper Chief Engineer's office" + icon_state = "engine_control" - gravity_generator - name = "Gravity Generator Room" - icon_state = "blue" +/area/engine/secure_construction + name = "\improper Secure Construction Area" + icon_state = "engine" + +/area/engine/gravity_generator + name = "Gravity Generator Room" + icon_state = "blue" //Solars @@ -930,6 +935,7 @@ proc/process_ghost_teleport_locs() name = "\improper AI Satellite Teleporter Room" icon_state = "teleporter" music = "signal" + ambientsounds = list('sound/ambience/ambimalf.ogg') //MedBay @@ -972,6 +978,7 @@ proc/process_ghost_teleport_locs() /area/medical/morgue name = "\improper Morgue" icon_state = "morgue" + ambientsounds = list('sound/ambience/ambimo1.ogg','sound/ambience/ambimo2.ogg') /area/medical/chemistry name = "Chemistry" @@ -1372,6 +1379,10 @@ proc/process_ghost_teleport_locs() name = "Emergency Storage" icon_state = "storage" + +/area/turret_protected/ + ambientsounds = list('sound/ambience/ambimalf.ogg') + /area/turret_protected/ai_upload name = "\improper AI Upload Chamber" icon_state = "ai_upload" @@ -1454,6 +1465,9 @@ proc/process_ghost_teleport_locs() // Telecommunications Satellite +/area/tcommsat + ambientsounds = list('sound/ambience/ambisin2.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/ambigen10.ogg') + /area/tcommsat/entrance name = "\improper Telecoms Teleporter" icon_state = "tcomsatentrance" @@ -1465,18 +1479,22 @@ proc/process_ghost_teleport_locs() /area/turret_protected/tcomsat name = "\improper Telecoms Satellite" icon_state = "tcomsatlob" + ambientsounds = list('sound/ambience/ambisin2.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/ambigen10.ogg') /area/turret_protected/tcomfoyer name = "\improper Telecoms Foyer" icon_state = "tcomsatentrance" + ambientsounds = list('sound/ambience/ambisin2.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/ambigen10.ogg') /area/turret_protected/tcomwest name = "\improper Telecommunications Satellite West Wing" icon_state = "tcomsatwest" + ambientsounds = list('sound/ambience/ambisin2.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/ambigen10.ogg') /area/turret_protected/tcomeast name = "\improper Telecommunications Satellite East Wing" icon_state = "tcomsateast" + ambientsounds = list('sound/ambience/ambisin2.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/ambigen10.ogg') /area/tcommsat/computer name = "\improper Telecoms Control Room" diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm index bd03bbf1207..614c6009fbc 100644 --- a/code/game/area/areas.dm +++ b/code/game/area/areas.dm @@ -17,6 +17,12 @@ /area var/global/global_uid = 0 var/uid + var/list/ambientsounds = list('sound/ambience/ambigen1.ogg','sound/ambience/ambigen3.ogg',\ + 'sound/ambience/ambigen4.ogg','sound/ambience/ambigen5.ogg',\ + 'sound/ambience/ambigen6.ogg','sound/ambience/ambigen7.ogg',\ + 'sound/ambience/ambigen8.ogg','sound/ambience/ambigen9.ogg',\ + 'sound/ambience/ambigen10.ogg','sound/ambience/ambigen11.ogg',\ + 'sound/ambience/ambigen12.ogg','sound/ambience/ambigen14.ogg') /area/New() icon_state = "" @@ -249,9 +255,6 @@ /area/Entered(A) - var/musVolume = 25 - var/sound = 'sound/ambience/ambigen1.ogg' - if(!istype(A,/mob/living)) return var/mob/living/L = A @@ -271,27 +274,10 @@ L << sound('sound/ambience/shipambience.ogg', repeat = 1, wait = 0, volume = 35, channel = 2) if(prob(35)) - - if(istype(src, /area/chapel)) - sound = pick('sound/ambience/ambicha1.ogg','sound/ambience/ambicha2.ogg','sound/ambience/ambicha3.ogg','sound/ambience/ambicha4.ogg') - else if(istype(src, /area/medical/morgue)) - sound = pick('sound/ambience/ambimo1.ogg','sound/ambience/ambimo2.ogg','sound/ambience/title2.ogg') - else if(type == /area) - sound = pick('sound/ambience/ambispace.ogg','sound/ambience/title2.ogg',) - else if(istype(src, /area/engine)) - sound = pick('sound/ambience/ambisin1.ogg','sound/ambience/ambisin2.ogg','sound/ambience/ambisin3.ogg','sound/ambience/ambisin4.ogg') - else if(istype(src, /area/AIsattele) || istype(src, /area/turret_protected/ai) || istype(src, /area/turret_protected/ai_upload) || istype(src, /area/turret_protected/ai_upload_foyer)) - sound = pick('sound/ambience/ambimalf.ogg') - else if(istype(src, /area/mine/explored) || istype(src, /area/mine/unexplored)) - sound = pick('sound/ambience/ambimine.ogg') - musVolume = 25 - else if(istype(src, /area/tcommsat) || istype(src, /area/turret_protected/tcomwest) || istype(src, /area/turret_protected/tcomeast) || istype(src, /area/turret_protected/tcomfoyer) || istype(src, /area/turret_protected/tcomsat)) - sound = pick('sound/ambience/ambisin2.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/ambigen10.ogg') - else - sound = pick('sound/ambience/ambigen1.ogg','sound/ambience/ambigen3.ogg','sound/ambience/ambigen4.ogg','sound/ambience/ambigen5.ogg','sound/ambience/ambigen6.ogg','sound/ambience/ambigen7.ogg','sound/ambience/ambigen8.ogg','sound/ambience/ambigen9.ogg','sound/ambience/ambigen10.ogg','sound/ambience/ambigen11.ogg','sound/ambience/ambigen12.ogg','sound/ambience/ambigen14.ogg') + var/sound = pick(ambientsounds) if(!L.client.played) - L << sound(sound, repeat = 0, wait = 0, volume = musVolume, channel = 1) + L << sound(sound, repeat = 0, wait = 0, volume = 25, channel = 1) L.client.played = 1 spawn(600) //ewww - this is very very bad if(L.&& L.client) diff --git a/code/modules/mining/mine_areas.dm b/code/modules/mining/mine_areas.dm index 06ced5db488..07416fef985 100644 --- a/code/modules/mining/mine_areas.dm +++ b/code/modules/mining/mine_areas.dm @@ -14,6 +14,7 @@ power_environ = 0 power_equip = 0 power_light = 0 + ambientsounds = list('sound/ambience/ambimine.ogg') /area/mine/unexplored name = "Mine" @@ -25,6 +26,7 @@ power_environ = 0 power_equip = 0 power_light = 0 + ambientsounds = list('sound/ambience/ambimine.ogg') /area/mine/lobby name = "Mining station" From 0763d324be3a9c8f97b9974b10c7c8c2f5adc259 Mon Sep 17 00:00:00 2001 From: GunHog Date: Tue, 6 May 2014 22:15:26 -0500 Subject: [PATCH 071/185] Cleanbots now spawn foam instead of gibs! Also spans. --- code/game/machinery/bots/cleanbot.dm | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/code/game/machinery/bots/cleanbot.dm b/code/game/machinery/bots/cleanbot.dm index 481ba304c38..47dcf7116b9 100644 --- a/code/game/machinery/bots/cleanbot.dm +++ b/code/game/machinery/bots/cleanbot.dm @@ -190,10 +190,8 @@ text("[src.oddbutton ? "Yes" : "No" T.MakeSlippery() if(src.oddbutton && prob(5)) - visible_message("Something flies out of [src]. He seems to be acting oddly.") - var/obj/effect/decal/cleanable/blood/gibs/gib = new /obj/effect/decal/cleanable/blood/gibs(src.loc) - //gib.streak(list(NORTH, SOUTH, EAST, WEST, NORTHEAST, NORTHWEST, SOUTHEAST, SOUTHWEST)) - src.oldtarget = gib + visible_message("[src] whirs and bubbles violently, before releasing a plume of froth!") + new /obj/effect/effect/foam(src.loc) if(!src.target || src.target == null) for (var/obj/effect/decal/cleanable/D in view(7,src)) for(var/T in src.target_types) @@ -322,7 +320,7 @@ text("[src.oddbutton ? "Yes" : "No" /obj/machinery/bot/cleanbot/proc/clean(var/obj/effect/decal/cleanable/target) src.anchored = 1 src.icon_state = "cleanbot-c" - visible_message("\red [src] begins to clean up [target]") + visible_message("[src] begins to clean up [target]") src.cleaning = 1 spawn(50) src.cleaning = 0 @@ -333,7 +331,7 @@ text("[src.oddbutton ? "Yes" : "No" /obj/machinery/bot/cleanbot/explode() src.on = 0 - src.visible_message("\red [src] blows apart!", 1) + src.visible_message("[src] blows apart!", 1) var/turf/Tsec = get_turf(src) new /obj/item/weapon/reagent_containers/glass/bucket(Tsec) From b215db8b76930c367a34c34f2e48bb79b84e0cee Mon Sep 17 00:00:00 2001 From: ikarrus Date: Tue, 6 May 2014 22:18:30 -0600 Subject: [PATCH 072/185] Suit Storage Units -Added them around the station, replacing the ones that were just on racks (e.g. Engineering hardsuits, Captain's, etc) -Removed their object verb. You can now just click drag yourself to climb in -They now use the new fancy window colors -Updated Minisat Maint a little bit to give the wall a bit more width around the SMES units. Shouldn't be so much of a vulnerability any more --- _maps/map_files/tgstation.2.1.3.dmm | 142 ++++++++++-------- code/game/machinery/suit_storage_unit.dm | 83 ++++++---- .../closets/secure/engineering.dm | 3 +- .../crates_lockers/closets/secure/security.dm | 3 +- 4 files changed, 134 insertions(+), 97 deletions(-) diff --git a/_maps/map_files/tgstation.2.1.3.dmm b/_maps/map_files/tgstation.2.1.3.dmm index 09bd53f6a84..92277f4c6a2 100644 --- a/_maps/map_files/tgstation.2.1.3.dmm +++ b/_maps/map_files/tgstation.2.1.3.dmm @@ -96,8 +96,8 @@ "abR" = (/obj/structure/toilet{dir = 1},/turf/simulated/floor{icon_state = "freezerfloor"},/area/security/prison) "abS" = (/obj/machinery/deployable/barrier,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/ai_monitored/security/armory) "abT" = (/obj/machinery/deployable/barrier,/obj/machinery/alarm{pixel_y = 23},/obj/machinery/camera/motion{c_tag = "Armory Motion Sensor"; dir = 2; name = "motion-sensitive security camera"},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/ai_monitored/security/armory) -"abU" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/suit/space/rig/security,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/rig/security,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/ai_monitored/security/armory) -"abV" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/suit/space/rig/security,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/rig/security,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/ai_monitored/security/armory) +"abU" = (/obj/machinery/suit_storage_unit/security,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/ai_monitored/security/armory) +"abV" = (/turf/simulated/floor{icon_state = "red"; dir = 8},/area/hallway/secondary/exit) "abW" = (/obj/structure/rack,/obj/item/weapon/storage/lockbox/loyalty,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/ai_monitored/security/armory) "abX" = (/obj/structure/rack,/obj/item/clothing/suit/armor/riot,/obj/item/clothing/suit/armor/riot,/obj/item/clothing/suit/armor/riot,/obj/item/clothing/head/helmet/riot,/obj/item/clothing/head/helmet/riot,/obj/item/clothing/head/helmet/riot,/obj/structure/window/reinforced{dir = 1},/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/ai_monitored/security/armory) "abY" = (/obj/structure/rack,/obj/item/weapon/shield/riot{pixel_x = -3; pixel_y = 3},/obj/item/weapon/shield/riot,/obj/item/weapon/shield/riot{pixel_x = 3; pixel_y = -3},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/ai_monitored/security/armory) @@ -1967,7 +1967,7 @@ "aLQ" = (/obj/machinery/chem_master/condimaster{name = "CondiMaster Neo"},/obj/machinery/camera{c_tag = "Kitchen Cold Room"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) "aLR" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "blue"; icon_state = "intact-b-f"; level = 1; name = "pipe"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) "aLS" = (/obj/structure/closet/crate/hydroponics,/obj/item/weapon/shovel/spade,/obj/item/weapon/wrench,/obj/item/weapon/screwdriver,/obj/item/weapon/reagent_containers/glass/bucket,/turf/simulated/floor{icon_state = "hydrofloor"},/area/hydroponics) -"aLT" = (/obj/structure/table,/obj/machinery/recharger,/turf/simulated/floor{icon_state = "red"; dir = 8},/area/hallway/secondary/exit) +"aLT" = (/obj/item/device/radio/intercom{dir = 8; freerange = 1; name = "Station Intercom (Command)"; pixel_x = -28},/obj/machinery/suit_storage_unit/captain,/turf/simulated/floor/wood,/area/crew_quarters/captain) "aLU" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "blue"; icon_state = "intact-b-f"; level = 1; name = "pipe"},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "hydrofloor"},/area/hydroponics) "aLV" = (/obj/machinery/alarm{pixel_y = 24},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 0},/obj/machinery/camera{c_tag = "Hydroponics Storage"},/obj/machinery/light/small{dir = 1},/turf/simulated/floor{icon_state = "hydrofloor"},/area/hydroponics) "aLW" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = -31},/turf/simulated/floor{icon_state = "hydrofloor"},/area/hydroponics) @@ -3090,9 +3090,9 @@ "bhv" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=1"; dir = 1; freq = 1400; location = "Bridge"},/obj/structure/plasticflaps{opacity = 1},/turf/simulated/floor{icon_state = "bot"},/area/bridge/meeting_room) "bhw" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/wood,/area/bridge/meeting_room) "bhx" = (/obj/machinery/vending/cigarette,/turf/simulated/floor/wood,/area/bridge/meeting_room) -"bhy" = (/obj/machinery/light,/turf/simulated/floor/bluegrid,/area/turret_protected/ai) +"bhy" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor,/area/engine/engineering) "bhz" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/wall/r_wall,/area/turret_protected/ai_upload) -"bhA" = (/obj/structure/rack,/obj/item/weapon/tank/jetpack/oxygen,/obj/item/clothing/mask/gas,/obj/item/clothing/suit/space/captain,/obj/item/clothing/head/helmet/space/capspace,/obj/item/device/radio/intercom{dir = 8; freerange = 1; name = "Station Intercom (Command)"; pixel_x = -28},/turf/simulated/floor/wood,/area/crew_quarters/captain) +"bhA" = (/obj/structure/filingcabinet/chestdrawer,/obj/machinery/camera{c_tag = "Chief Engineer's Office"; dir = 4; network = list("SS13")},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/mob/living/simple_animal/parrot/Poly,/turf/simulated/floor{dir = 2; icon_state = "neutralfull"},/area/engine/chiefs_office) "bhB" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/wood,/area/crew_quarters/captain) "bhC" = (/obj/machinery/computer/card,/obj/item/weapon/card/id/captains_spare,/turf/simulated/floor/wood,/area/crew_quarters/captain) "bhD" = (/obj/structure/table/woodentable,/obj/machinery/recharger,/obj/item/weapon/melee/chainofcommand,/turf/simulated/floor/wood,/area/crew_quarters/captain) @@ -3822,7 +3822,7 @@ "bvz" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/security/checkpoint/supply) "bvA" = (/obj/machinery/camera{c_tag = "Cargo Bay Entrance"; dir = 4; network = list("SS13")},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 8; icon_state = "browncorner"},/area/hallway/primary/central) "bvB" = (/obj/machinery/door/poddoor/shutters/preopen{id = "hopqueue"; name = "HoP Queue Shutters"},/turf/simulated/floor{dir = 4; icon_state = "loadingarea"},/area/hallway/primary/central) -"bvC" = (/obj/machinery/flasher{id = "hopflash"; pixel_x = 0; pixel_y = -28},/turf/simulated/floor{icon_state = "bot"},/area/hallway/primary/central) +"bvC" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/floor{icon_state = "warningcorner"; dir = 4},/area/engine/engineering) "bvD" = (/obj/structure/filingcabinet/chestdrawer,/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/turf/simulated/floor{icon_state = "blue"; dir = 10},/area/crew_quarters/heads) "bvE" = (/obj/machinery/requests_console{announcementConsole = 1; department = "Head of Personnel's Desk"; departmentType = 5; name = "Head of Personnel RC"; pixel_y = -30},/obj/machinery/camera{c_tag = "Head of Personnel's Office"; dir = 1},/turf/simulated/floor,/area/crew_quarters/heads) "bvF" = (/obj/structure/table,/obj/item/weapon/book/manual/wiki/security_space_law,/turf/simulated/floor,/area/crew_quarters/heads) @@ -5336,7 +5336,7 @@ "bYF" = (/obj/machinery/requests_console{department = "Security"; departmentType = 5; pixel_y = 30},/obj/structure/closet/secure_closet/security/engine,/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/checkpoint/engineering) "bYG" = (/obj/structure/filingcabinet,/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor{icon_state = "red"; dir = 5},/area/security/checkpoint/engineering) "bYH" = (/obj/structure/closet/fireaxecabinet{pixel_x = -32; pixel_y = 0},/turf/simulated/floor,/area/atmos) -"bYI" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/suit/space/rig/atmos,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/rig/atmos,/obj/item/weapon/watertank/atmos,/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/atmos) +"bYI" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/engine/engineering) "bYJ" = (/obj/machinery/atmospherics/portables_connector{dir = 4},/obj/machinery/portable_atmospherics/canister,/turf/simulated/floor{dir = 2; icon_state = "bot"},/area/atmos) "bYK" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/turf/simulated/floor{dir = 2; icon_state = "bot"},/area/atmos) "bYL" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "yellow"; dir = 8; icon_state = "manifold-y"; level = 2},/turf/simulated/floor,/area/atmos) @@ -5400,7 +5400,7 @@ "bZR" = (/obj/item/weapon/screwdriver{pixel_y = 10},/obj/machinery/door_control{desc = "A remote control-switch for the engineering security doors."; id = "Engineering"; name = "Engineering Lockdown"; pixel_x = -24; pixel_y = -6; req_access_txt = "10"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/item/device/radio/off,/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; icon_state = "manifold-r-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/checkpoint/engineering) "bZS" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 1; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/security/checkpoint/engineering) "bZT" = (/obj/machinery/camera{c_tag = "Security Post - Engineering"; dir = 8; network = list("SS13")},/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/obj/machinery/light{dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/checkpoint/engineering) -"bZU" = (/obj/structure/closet/firecloset,/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/atmos) +"bZU" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/sign/nosmoking_2{pixel_y = 32},/obj/machinery/camera{c_tag = "Engineering Power Storage"},/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor,/area/engine/engineering) "bZV" = (/obj/structure/sign/nosmoking_2,/turf/simulated/wall,/area/atmos) "bZW" = (/obj/machinery/atmospherics/pipe/manifold{dir = 4; icon_state = "manifold"; initialize_directions = 11; level = 2},/obj/machinery/meter,/turf/simulated/floor,/area/atmos) "bZX" = (/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1441; input_tag = "tox_in"; name = "Toxin Supply Control"; output_tag = "tox_out"; sensors = list("tox_sensor" = "Tank")},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/atmos) @@ -5765,7 +5765,7 @@ "cgS" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft) "cgT" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft) "cgU" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating,/area/maintenance/aft) -"cgV" = (/obj/structure/bookcase/manuals/engineering,/mob/living/simple_animal/parrot/Poly,/turf/simulated/floor{dir = 2; icon_state = "neutralfull"},/area/engine/chiefs_office) +"cgV" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 1; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/engine/engineering) "cgW" = (/obj/machinery/hologram/holopad,/turf/simulated/floor{dir = 2; icon_state = "neutralfull"},/area/engine/chiefs_office) "cgX" = (/obj/machinery/light{dir = 1},/obj/machinery/keycard_auth{pixel_x = 0; pixel_y = 24},/turf/simulated/floor{dir = 2; icon_state = "neutralfull"},/area/engine/chiefs_office) "cgY" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{dir = 2; icon_state = "neutralfull"},/area/engine/chiefs_office) @@ -5830,7 +5830,7 @@ "cif" = (/turf/simulated/floor{dir = 2; icon_state = "neutralfull"},/area/engine/chiefs_office) "cig" = (/obj/structure/table/reinforced,/obj/item/weapon/clipboard,/obj/item/weapon/lighter/zippo,/obj/item/clothing/glasses/meson{pixel_y = 4},/obj/item/weapon/stamp/ce,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/floor{dir = 2; icon_state = "neutralfull"},/area/engine/chiefs_office) "cih" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "neutralfull"},/area/engine/chiefs_office) -"cii" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/shoes/magboots/advance,/obj/item/clothing/suit/space/rig/elite,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/rig/elite,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "neutralfull"},/area/engine/chiefs_office) +"cii" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor,/area/engine/engineering) "cij" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/engine/chiefs_office) "cik" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/engine/engineering) "cil" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/engine/engineering) @@ -5940,12 +5940,12 @@ "ckl" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/engine/engineering) "ckm" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/engine/engineering) "ckn" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/engine/engineering) -"cko" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{icon_state = "warningcorner"; dir = 4},/area/engine/engineering) -"ckp" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/engine/engineering) -"ckq" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/sign/nosmoking_2{pixel_y = 32},/obj/machinery/camera{c_tag = "Engineering Power Storage"},/obj/machinery/light{dir = 1},/turf/simulated/floor,/area/engine/engineering) +"cko" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor,/area/engine/engineering) +"ckp" = (/obj/machinery/suit_storage_unit/engine,/turf/simulated/floor,/area/engine/engineering) +"ckq" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/engine/engineering) "ckr" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/stool/bed/chair/office/dark{dir = 1},/obj/effect/landmark/start{name = "Station Engineer"},/turf/simulated/floor,/area/engine/engineering) -"cks" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor,/area/engine/engineering) -"ckt" = (/obj/structure/filingcabinet/chestdrawer,/obj/machinery/camera{c_tag = "Chief Engineer's Office"; dir = 4; network = list("SS13")},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{dir = 2; icon_state = "neutralfull"},/area/engine/chiefs_office) +"cks" = (/obj/structure/closet/crate{name = "solar pack crate"},/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/weapon/circuitboard/solar_control,/obj/item/weapon/tracker_electronics,/obj/item/weapon/paper/solar,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/engine/engineering) +"ckt" = (/obj/structure/dispenser,/turf/simulated/floor,/area/engine/engineering) "cku" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor{dir = 2; icon_state = "neutralfull"},/area/engine/chiefs_office) "ckv" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/obj/item/weapon/storage/fancy/cigarettes,/turf/simulated/floor{dir = 2; icon_state = "neutralfull"},/area/engine/chiefs_office) "ckw" = (/obj/structure/table/reinforced,/obj/item/stack/medical/bruise_pack{pixel_x = -3; pixel_y = 2},/obj/item/weapon/reagent_containers/pill/kelotane{pixel_x = -3; pixel_y = -8},/obj/item/weapon/stock_parts/cell/high{charge = 100; maxcharge = 15000},/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/turf/simulated/floor{dir = 2; icon_state = "neutralfull"},/area/engine/chiefs_office) @@ -5971,9 +5971,9 @@ "ckQ" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/engine/engineering) "ckR" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/engine/engineering) "ckS" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/engine/engineering) -"ckT" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/engine/engineering) +"ckT" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/engine/engineering) "ckU" = (/turf/simulated/floor,/area/engine/engineering) -"ckV" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor,/area/engine/engineering) +"ckV" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass_engineering{name = "Power Storage"; req_access_txt = "11"; req_one_access_txt = "0"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/engine/engineering) "ckW" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "neutralfull"},/area/engine/chiefs_office) "ckX" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 2; icon_state = "neutralfull"},/area/engine/chiefs_office) "ckY" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "neutralfull"},/area/engine/chiefs_office) @@ -6010,10 +6010,10 @@ "clD" = (/obj/structure/table,/obj/item/weapon/airlock_electronics,/obj/item/weapon/airlock_electronics,/obj/item/weapon/module/power_control,/obj/item/weapon/stock_parts/cell/high{charge = 100; maxcharge = 15000},/obj/item/weapon/stock_parts/cell/high{charge = 100; maxcharge = 15000},/turf/simulated/floor,/area/engine/engineering) "clE" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/table,/obj/item/weapon/book/manual/engineering_singularity_safety,/obj/item/clothing/gloves/yellow,/turf/simulated/floor,/area/engine/engineering) "clF" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor,/area/engine/engineering) -"clG" = (/obj/structure/closet/crate{name = "solar pack crate"},/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/weapon/circuitboard/solar_control,/obj/item/weapon/tracker_electronics,/obj/item/weapon/paper/solar,/turf/simulated/floor,/area/engine/engineering) -"clH" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/dispenser,/turf/simulated/floor,/area/engine/engineering) -"clI" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/suit/space/rig,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/rig,/turf/simulated/floor,/area/engine/engineering) -"clJ" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/suit/space/rig,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/rig,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/engine/engineering) +"clG" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/engine/engineering) +"clH" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 1; icon_state = "yellow"},/area/engine/engineering) +"clI" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{dir = 4; icon_state = "yellowcorner"},/area/engine/engineering) +"clJ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 1; icon_state = "yellow"},/area/engine/engineering) "clK" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/grille,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/engine/chiefs_office) "clL" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/grille,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/engine/chiefs_office) "clM" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/engine/chiefs_office) @@ -6054,10 +6054,10 @@ "cmv" = (/turf/simulated/wall,/area/engine/engineering) "cmw" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plating,/area/engine/engineering) "cmx" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/engine/engineering) -"cmy" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass_engineering{name = "Power Storage"; req_access_txt = "11"; req_one_access_txt = "0"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor,/area/engine/engineering) +"cmy" = (/obj/machinery/requests_console{announcementConsole = 0; department = "Engineering"; departmentType = 4; name = "Engineering RC"; pixel_y = 30},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 1; icon_state = "yellow"},/area/engine/engineering) "cmz" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/engine/engineering) "cmA" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/engine/engineering) -"cmB" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/engine/engineering) +"cmB" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/engine/engineering) "cmC" = (/obj/structure/table,/obj/item/weapon/crowbar,/obj/item/weapon/storage/box/lights/mixed,/turf/simulated/floor{dir = 9; icon_state = "yellow"},/area/engine/engineering) "cmD" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/storage/belt/utility,/obj/item/weapon/wrench,/obj/item/weapon/weldingtool,/obj/item/clothing/head/welding{pixel_x = -3; pixel_y = 5},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 1; icon_state = "yellow"},/area/engine/engineering) "cmE" = (/turf/simulated/floor{dir = 1; icon_state = "yellowcorner"},/area/engine/engineering) @@ -6089,9 +6089,9 @@ "cne" = (/obj/structure/closet/secure_closet/engineering_electrical,/turf/simulated/floor{dir = 1; icon_state = "yellow"},/area/engine/engineering) "cnf" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/vending/engivend,/turf/simulated/floor{dir = 1; icon_state = "yellow"},/area/engine/engineering) "cng" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/vending/tool,/turf/simulated/floor{dir = 1; icon_state = "yellowcorner"},/area/engine/engineering) -"cnh" = (/turf/simulated/floor{dir = 1; icon_state = "yellow"},/area/engine/engineering) -"cni" = (/obj/machinery/requests_console{announcementConsole = 0; department = "Engineering"; departmentType = 4; name = "Engineering RC"; pixel_y = 30},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{dir = 1; icon_state = "yellow"},/area/engine/engineering) -"cnj" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 1; icon_state = "yellow"},/area/engine/engineering) +"cnh" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/engine/engineering) +"cni" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/computer/security/telescreen{desc = "Used for watching the singularity chamber."; dir = 1; layer = 4; name = "Singularity Engine Telescreen"; network = list("Singularity"); pixel_x = 0; pixel_y = -30},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/engine/engineering) +"cnj" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor,/area/engine/engineering) "cnk" = (/obj/structure/sign/nosmoking_2{pixel_y = 32},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor{dir = 1; icon_state = "yellow"},/area/engine/engineering) "cnl" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor{dir = 1; icon_state = "yellowcorner"},/area/engine/engineering) "cnm" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/engine/engineering) @@ -6120,7 +6120,7 @@ "cnJ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/engine/engineering) "cnK" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/engine/engineering) "cnL" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/engine/engineering) -"cnM" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/computer/security/telescreen{desc = "Used for watching the singularity chamber."; dir = 1; layer = 4; name = "Singularity Engine Telescreen"; network = list("Singularity"); pixel_x = 0; pixel_y = -30},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/engine/engineering) +"cnM" = (/obj/machinery/suit_storage_unit/ce,/turf/simulated/floor{dir = 4; icon_state = "warnwhite"},/area/engine/chiefs_office) "cnN" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/engine/engineering) "cnO" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/engine/engineering) "cnP" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/engine/engineering) @@ -6994,7 +6994,7 @@ "cEz" = (/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; freerange = 1; frequency = 1213; name = "Syndicate Intercom"; pixel_y = -32; subspace_transmission = 1; syndie = 1},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) "cEA" = (/obj/structure/closet/syndicate/personal,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) "cEB" = (/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) -"cEC" = (/obj/machinery/recharge_station,/turf/simulated/floor,/area/aisat) +"cEC" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 2; icon_state = "neutralfull"},/area/engine/chiefs_office) "cED" = (/obj/structure/stool/bed/chair/comfy/teal,/turf/unsimulated/floor{icon_state = "grimy"},/area/syndicate_mothership) "cEE" = (/obj/structure/bookcase,/obj/item/weapon/book/manual/wiki/engineering_hacking,/obj/item/weapon/book/manual/robotics_cyborgs,/obj/item/weapon/book/manual/engineering_singularity_safety,/obj/item/weapon/book/manual/detective,/turf/unsimulated/floor{icon_state = "grimy"},/area/syndicate_mothership) "cEF" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows2"; dir = 6},/area/tdome/tdomeobserve) @@ -8602,8 +8602,8 @@ "djv" = (/obj/machinery/light{dir = 4},/turf/simulated/floor{icon_state = "bar"},/area/mine/living_quarters) "djw" = (/turf/simulated/floor,/area/mine/living_quarters) "djx" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor,/area/mine/living_quarters) -"djy" = (/obj/structure/rack,/obj/item/clothing/suit/space/rig/mining,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/rig/mining,/turf/simulated/floor,/area/mine/eva) -"djz" = (/obj/structure/rack,/obj/item/weapon/storage/backpack/satchel,/obj/item/weapon/pickaxe,/turf/simulated/floor,/area/mine/eva) +"djy" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "red"; dir = 4; icon_state = "intact-r"; level = 2},/obj/structure/closet/firecloset,/turf/simulated/floor,/area/atmos) +"djz" = (/obj/machinery/suit_storage_unit/atmos,/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/atmos) "djA" = (/obj/machinery/light,/turf/simulated/floor/plating/asteroid/airless,/area/mine/explored) "djB" = (/obj/structure/table,/obj/item/weapon/storage/backpack/satchel,/obj/item/clothing/glasses/meson,/obj/machinery/light/small{dir = 8},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/turf/simulated/floor,/area/mine/west_outpost) "djC" = (/obj/machinery/door/airlock/glass_mining{name = "Break Room"; req_access_txt = "54"},/turf/simulated/floor,/area/mine/west_outpost) @@ -8925,8 +8925,8 @@ "dpG" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/obj/item/weapon/wrench,/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 9},/area/medical/virology) "dpH" = (/turf/simulated/wall,/area/aisat) "dpI" = (/obj/effect/landmark/start{name = "Cyborg"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/aisat_interior) -"dpJ" = (/obj/machinery/power/terminal{dir = 4},/obj/structure/rack,/obj/item/weapon/storage/toolbox/electrical{pixel_x = -3; pixel_y = 3},/obj/item/weapon/storage/toolbox/mechanical,/obj/item/device/multitool,/turf/simulated/floor{dir = 9; icon_state = "yellow"},/area/aisat) -"dpK" = (/obj/machinery/power/smes{charge = 5e+006},/obj/structure/cable,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/light{dir = 1},/turf/simulated/floor{dir = 1; icon_state = "yellow"},/area/aisat) +"dpJ" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/watertank/atmos,/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/atmos) +"dpK" = (/obj/item/weapon/watertank/atmos,/obj/structure/rack{dir = 8; layer = 2.9},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/atmos) "dpL" = (/obj/machinery/atmospherics/pipe/tank/air,/turf/simulated/floor{dir = 5; icon_state = "yellow"},/area/aisat) "dpM" = (/obj/machinery/light/small,/obj/structure/table,/obj/item/device/flashlight,/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/asmaint) "dpN" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/asmaint2) @@ -8938,17 +8938,17 @@ "dpT" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/asmaint2) "dpU" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/asmaint2) "dpV" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall,/area/maintenance/asmaint2) -"dpW" = (/obj/structure/rack,/obj/item/weapon/crowbar/red,/obj/item/weapon/wrench,/obj/item/clothing/head/welding,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_x = 28; pixel_y = 0},/turf/simulated/floor,/area/aisat) +"dpW" = (/obj/structure/rack,/obj/item/weapon/storage/toolbox/electrical{pixel_x = -3; pixel_y = 3},/obj/item/weapon/storage/toolbox/mechanical,/obj/item/device/multitool,/turf/simulated/floor{dir = 9; icon_state = "yellow"},/area/aisat) "dpX" = (/obj/structure/grille,/obj/structure/lattice,/turf/space,/area) "dpY" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor/plating,/area/aisat) "dpZ" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plating,/area/aisat) "dqa" = (/obj/machinery/atmospherics/pipe/manifold{dir = 1; icon_state = "manifold"; level = 2},/turf/simulated/floor,/area/aisat) -"dqb" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/obj/machinery/atmospherics/valve{dir = 4; layer = 2},/turf/simulated/floor,/area/aisat) +"dqb" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/wall/r_wall,/area/aisat) "dqc" = (/obj/machinery/door/airlock/maintenance_hatch{req_access_txt = "65"},/obj/machinery/atmospherics/pipe/simple{dir = 4; icon_state = "intact"; level = 2},/turf/simulated/floor,/area/aisat) "dqd" = (/obj/machinery/door/airlock/maintenance_hatch{req_access_txt = "65"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/aisat) "dqe" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/aisat) "dqf" = (/obj/structure/window/reinforced{dir = 4},/turf/space,/area) -"dqg" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple{dir = 9; icon_state = "intact"; level = 2},/turf/simulated/floor,/area/aisat) +"dqg" = (/obj/machinery/recharge_station,/turf/simulated/floor{dir = 9; icon_state = "yellow"},/area/aisat) "dqh" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/space,/area) "dqi" = (/obj/structure/window/reinforced,/turf/space,/area) "dqj" = (/obj/structure/window/reinforced,/obj/structure/lattice,/turf/space,/area) @@ -8966,7 +8966,7 @@ "dqv" = (/obj/machinery/status_display,/turf/simulated/wall/r_wall,/area/turret_protected/ai) "dqw" = (/obj/machinery/power/smes{charge = 5e+006},/obj/structure/cable,/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai) "dqx" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/camera{c_tag = "MiniSat Exterior South West"; dir = 8; network = list("MiniSat"); pixel_x = 0; pixel_y = 0},/turf/simulated/floor/plating,/area/aisat) -"dqy" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/wall/r_wall,/area/aisat) +"dqy" = (/obj/structure/rack,/obj/item/weapon/crowbar/red,/obj/item/weapon/wrench,/obj/item/clothing/head/welding,/turf/simulated/floor{dir = 5; icon_state = "yellow"},/area/aisat) "dqz" = (/obj/machinery/ai_slipper{icon_state = "motion0"; uses = 10},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "dqA" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai) "dqB" = (/obj/machinery/hologram/holopad,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai) @@ -9087,7 +9087,7 @@ "dsM" = (/obj/structure/table,/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/turf/simulated/floor{icon_state = "yellow"},/area/aisat) "dsN" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/vent{dir = 8},/turf/simulated/floor/plating/airless,/area) "dsO" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall,/area/aisat) -"dsP" = (/obj/machinery/power/apc{aidisabled = 0; cell_type = 5000; dir = 4; name = "MiniSat APC"; pixel_x = 28; pixel_y = 0},/obj/structure/cable,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; icon_state = "manifold-r-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/aisat) +"dsP" = (/obj/machinery/atmospherics/binary/pump{dir = 0; icon_state = "intact_on"; name = "Air Out"; on = 1},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/aisat) "dsQ" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor,/area/aisat) "dsR" = (/obj/structure/stool/bed/chair,/turf/simulated/floor,/area/aisat) "dsS" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor,/area/aisat) @@ -9103,7 +9103,19 @@ "dtc" = (/obj/item/weapon/mop,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership) "dtd" = (/obj/structure/table/woodentable,/obj/item/device/paicard,/turf/unsimulated/floor{icon_state = "grimy"},/area/syndicate_mothership) "dte" = (/mob/living/simple_animal/mouse/brown/Tom,/turf/simulated/floor/engine,/area/toxins/misc_lab) +"dtf" = (/obj/machinery/power/smes{charge = 5e+006},/obj/structure/cable,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/light{dir = 1},/turf/simulated/floor,/area/aisat) +"dtg" = (/obj/machinery/power/apc{dir = 8; name = "MiniSat APC"; pixel_x = -24},/turf/simulated/floor,/area/aisat) +"dth" = (/obj/machinery/power/terminal{dir = 8},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/aisat) +"dti" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_x = 28; pixel_y = 0},/turf/simulated/floor,/area/aisat) +"dtj" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/wall/r_wall,/area/turret_protected/ai) "dtk" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/bluegrid,/area/assembly/chargebay) +"dtl" = (/obj/machinery/light,/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai) +"dtm" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; icon_state = "manifold-r-f"; level = 1; name = "pipe manifold"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/aisat) +"dtn" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/turf/simulated/floor{icon_state = "warningcorner"; dir = 4},/area/aisat) +"dto" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/aisat) +"dtp" = (/obj/machinery/atmospherics/pipe/manifold{dir = 4; icon_state = "manifold"; initialize_directions = 11; level = 2},/turf/simulated/floor{icon_state = "warningcorner"; dir = 8},/area/aisat) +"dtq" = (/obj/machinery/suit_storage_unit/mining,/turf/simulated/floor,/area/mine/eva) +"dtr" = (/obj/structure/table,/obj/item/weapon/pickaxe,/turf/simulated/floor,/area/mine/eva) "dts" = (/obj/structure/transit_tube{tag = "icon-E-W-Pass"; icon_state = "E-W-Pass"},/turf/space,/area) "dtu" = (/obj/structure/lattice,/obj/structure/lattice,/turf/space,/area) "dty" = (/obj/structure/transit_tube{tag = "icon-S-NW"; icon_state = "S-NW"},/obj/structure/lattice,/turf/space,/area) @@ -9205,7 +9217,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabddoVdoWdoXdoYdpoabddppaaiaaSaaqaaqaaTaaqaaqaaqaaUaaqaaKaaqaaVaaWaaiaafaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaafaaNdpcaaYaaZdpbdpdaaNaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGaafabcaafaaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaHaaHaaGaaHaaHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdabddpedpqdphdoLabddpgaaiabdabeabdabfabdabgabdabhabdabiabdabdabjaaiaafaaaaafaafaafaafaaaaafabkabkablabkaaNdpjabodpkaboabpaaNaafaaaaafabqaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGaaGaaGaaGaaGaaaaaaaaaabraaaaaaaaaaaGaaGaaHaaHaaHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHaaaaafaaaaaRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafdpmdoLdpfdoLabddpiaaiabsaaqabtabfabuaaqabvabhabwaaKabxabdabyaaiabzabzabzabzabzabzabzabzabzabAabBabCabDabodoJdoIabEaboaaNaafaaaaafabIabJabIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaRaaaaaaaafaafaafaaaaaaabraafaafaaaaafaafaaaaaaaaHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGaafabKaafaaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafdpmdoTdoRdoSagjdpnaaiabLaaqabMabNabOaaqabPabhabQaaKabPabdabRaaiabSabTabUabVabWabXabYdoOabzacaacbaccacdaceabodoPabodoUaaNaafaafaafabIaciabIaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGaafacjacjacjacjacjaafackaafacjacjacjacjacjaafaaGaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGaafabKaafaaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafdpmdoTdoRdoSagjdpnaaiabLaaqabMabNabOaaqabPabhabQaaKabPabdabRaaiabSabTabUabUabWabXabYdoOabzacaacbaccacdaceabodoPabodoUaaNaafaafaafabIaciabIaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGaafacjacjacjacjacjaafackaafacjacjacjacjacjaafaaGaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHaaHaaHaaGaaGaaaaaaaaaaclaaaaaaaaaaaGaaGaaHaaHaaHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlabddowdoxdosdoydozaaiabhacmabdabfabhacnabfabhabhacoabfabdabdaaiabSacpacqacqacqacqdoCdoAabzacsabBactaaNdoBacvacwacxacyaaNaczacAabkacBabJabIabIacCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGaafacDacEacEacEacEacFacGacHacIacIacIacIacJaafaaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHaaaaaaaafaafaaaaaaaaaaclaafaafaaaaafaafaaaaaaaaHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahldoMdoKdoDdoHacPacMacNdpaacPacQacRacSacPacTacUacVacWaaiacXacYdoEdoFadbdoGdoQdoZbYgabBadfadgaaNadhaaNadiaaNadjaaNadkadladmabkadnadoadpadpadqaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGaafadradradradradraafacGaafadradradradradraafaaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGaafadsadsadsadsadsaafadtaafadsadsadsadsadsaafaaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlaKubRDcdladzamJadwaliadBadzadAadBadzadzadCajwadEadFaaiadGamfadIadJadJadKalbakZalaajQaksadQabkadRadSadTaNpcuBadUadUadVadWadXadYadZaeaaebaecaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHaaaaaaaaaaafaaaaaaaafacGaaaaaaaaaaafaaaaaaaaaaaHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -9247,7 +9259,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJkaBjaBkaBjaBjaKLaBmaBjaBjaBkaJlaKMaqfaKNawNavJaKOaKOaKPaKOaKQarkaKRaKSaJsaKTaKUaKVaKWaKXaKYaKYaKZaKYaKYaKYaKYaKYaKYaKYaLaaLbaLcaLdaLeaLeaLfaLgaLeaLeaLeaLhaLiaLjaLfaLeaLeaLeaLkaLlaLmaIuaLnaLoaIvaIwaIwaIwaItaIuaIuaLpaIuaLqaLraLsaLtaLuaLvaLwaLxaIuaIuaLyaLzaLAaLBaLAaLCaLDaLEaLFaIuaLGaIuaAKaLHaLIaJYaJYaJYaJYaKbaKcaKcaLJaIIaLKaLLaKjaLMaLNaINaLOaLPaLQaLRaINaIRaLSbgAaLUaPSaLWaLXaLYaLZaMaaIRaIUaMbaMcaMcaMdaMeaMcaMfaDOaMgaMhaDRaHGaHGaHGaHGaDRaMiaMjaMkaFXaDVaDVaDVaMlaMlaMlaMmaMnaMoaaaaaaaaaaGbaGbaGbaGbaGbaGbaGbaGbaGbaGbaGbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaavJaxYaMpaAbaAbaAbaAbaMqaxYavJaAdaqfaAeaMrazdaMsaMtaMuaMuaMvarkaMwaKSaMxaMyaMzaMAaMBaMCaMDaMEaMFaKYaKYaKYaKYaKYaKYaKYaLaaKYaMGaKYaKYaKYaMHaMIaKYaKYaKYaKYaMJaKYaMKaKYaKYaKYaMLaLlaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaLpaIuaMMaMNaMOaMPaMQaMRaMSaMTaIuaIuaLyaIuaIuaIuaIuaIuaIuaIuaIuaIuaMUaIuaAKaJYaMVaJYaJYaJYaJYaMWaKcaLJaMXaIIaMYaMZaNaaIIaIIaINaNbaKlaNcaLRaNdaINaIRaIRaNeaIRaIRaIRaNfaNgaNfaIRaIUaHuaNhaHwaHwaNiaHwaNjaDOaDRaDRaDRaDRaDRaDRaNkaDRaFXaFXaFWaFXaNlaNmaDVaNnaNobYXaNqaNraNsaafaaaaafaGbaGbaGbaGbaGbaGbaGbaGbaGbaGbaGbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafazbaqfazdatwazdaNtaNuaNvaNwazdatwaNxaNyaqfaxZawNazdaNzaNAaMuaMuaMvarkaNBaKSaJsaMyaMzaNCaNDaNEaNEaNEaNFaNGaNHaNEaNIaNEaNEaNEaNJaNKaNLaNEaNEaNEaNMaNNaNOaNPaNPaNQaNRaNSaNTaNUaKYaKYaMLaLlaIuaNVaIuaNWaNWaNWaNWaNWaNWaNWaNWaNXaNWaNWaNWaNWaNWaNWaNWaNWaNWaNWaNWaNYaNWaNWaNWaNWaNWaNWaNWaNWaIuaIuaIuaAKaNZaOaaNZaNZaNZaObaOcaKcaKcaOdaIIaIIaOeaIIaIIaOfaINaOgaKlaOhaOiaOjaINaIRaOkaOlaOmaOnaOmaOmaOoaOpaIRaIUaHuaOqaOqaOraOsaOtaOtaOuaDOaOvaOwaOxaDVaOyaOzaOAaFXaFXaOBaOAaDVaOCaDVaODaOEaOFaOFaOGaOHaMnaMnaOIaGbaGbaGbaGbaGbaGbaGbaGbaGbaGbaGbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarkawLaxYawLaxZawNawNayaawLaxYawLaOJaOKaOLawNawLaOMaOMaKPaOMaKQarkaONaKSaJsaOOaOOaOPaOQaOOaORaORaORaORaORaOSaOTaORaOUaORaORaORaOVaOWaOXaOWaOYaOZaPaaKYaKYaPbaPcaPdaKYaKZaKYaKYaPeaPeaIuaIuaIvaPfaJPaJPaPgaPgaPgaPgaPhaPiaPjaPkaPlaPmaPnaPmaPoaPmaPpaPkaPqaPiaPraPgaPgaPgaPgaJPaJPaPsaItaIuaIuaIIaPtaPuaKcaKcaKcaKcaPvaPwaPxaKcaIIaPyaPzaPAaINaINaINaINaPBaINaPCaINaINaIRaOmaPDaPEaPEaPEaPEaPFaOmaIRaPGaHuaPHaHwaOraOsaHwaHwaPIaDOaPJaPKaPLaDVaFXaPMaPNaPOaPOaPPaPNaPQaPRaDVaLTaPTaPUaPVaOFaPWaPXaPXaPWaGbaGbaGbaGbaGbaGbaGbaGbaGbaGbaGbaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarkawLaxYawLaxZawNawNayaawLaxYawLaOJaOKaOLawNawLaOMaOMaKPaOMaKQarkaONaKSaJsaOOaOOaOPaOQaOOaORaORaORaORaORaOSaOTaORaOUaORaORaORaOVaOWaOXaOWaOYaOZaPaaKYaKYaPbaPcaPdaKYaKZaKYaKYaPeaPeaIuaIuaIvaPfaJPaJPaPgaPgaPgaPgaPhaPiaPjaPkaPlaPmaPnaPmaPoaPmaPpaPkaPqaPiaPraPgaPgaPgaPgaJPaJPaPsaItaIuaIuaIIaPtaPuaKcaKcaKcaKcaPvaPwaPxaKcaIIaPyaPzaPAaINaINaINaINaPBaINaPCaINaINaIRaOmaPDaPEaPEaPEaPEaPFaOmaIRaPGaHuaPHaHwaOraOsaHwaHwaPIaDOaPJaPKaPLaDVaFXaPMaPNaPOaPOaPPaPNaPQaPRaDVabVaPTaPUaPVaOFaPWaPXaPXaPWaGbaGbaGbaGbaGbaGbaGbaGbaGbaGbaGbaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafavJaPZawNavKaOLawNawNaQaavKawNaPZaOLawNawNawNaQbaQcaQcaQcaQcaQcaQcaQcaQdaJsaOOaQeaQfaQgaQhaQiaQjaQkaQlaQmaQnaQoaQpaQqaQraQsaQtaQuaQvaQwaQxaOYaQyaPaaPaaQzaPaaQAaPeaPeaQBaQCaPeaPeaPeaQDaIuaIvaQEaaaaaaaaaaaaaaaaaaaaaaPiaQFaQGaQHaQIaQJaQKaQLaQMaQNaQOaQPaPiaaaaaaaaaaaaaaaaaaaaaaQQaItaIuaQRaIIaQSaPuaQTaKcaKcaKcaQTaKcaQUaLJaQVaKcaQWaQXaINaQYaQZaRaaRbaRcaRdaReaRfaINaOmaRgaRhaRhaRhaRhaRiaOmaIRaRjaHuaRkaRkaOraOsaRlaRlaRmaDOaDOaRnaDOaDVaRoaOzaOAaRpaRpaOBaOAaDVaDVaDVaMmaRqaRraMmaMnaMnaMnaMnaRsaGbaGbaGbaGbaGbaGbaGbaGbaGbaGbaGbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaawLaRtaRuaRuaRuaRuaRuaRuaRuaRuaRtaRuaRvawNawNaRwawNawNaRxawNaRyawNaRzaRAaRBaOOaRCaOPaRDaORaREaQnaQnaQnaQnaQnaQoaRFaQnaQnaQnaQtaOVaRGaQwaQwaOYaQyaPaaRHaRIaRIaRJaPeaRKaRLaRMaRNaROaRPaIuaIuaIvaQEaaaaaaaaaaaaaPiaPiaPiaPiaRQaRRaRSaRTaRUaRVaRWaRXaRYaRZaSaaPiaPiaPiaPiaaaaaaaaaaaaaQQaItaIuaIuaSbaKcaScaSdaSeaKcaSfaSgaSeaQUaLJaShaKcaSiaKcaSjaSkaSkaSkaSlaSmaSnaSoaSkaSpaSqaSraRhaSsaStaRhaSuaOmaIRaIUaHuaHwaHwaOraOsaHwaHwaHwaSvaSwaHwaSxaDVaKHaSyaSzaRpaRpaSAaSzaSBaDVaSCaSDaPTaSEaOFaOFaSFaPXaPXaSGaGbaGbaGbaGbaGbaGbaGbaGbaGbaGbaGbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqfaqfaSHaSIaSIaSIaSIaSIaSIaSJaqfaqfarkaSKaSLaSMaSMaSMaSNaSMaSMaSMaSOaSMaSOaOOaRCaSPaSQaORaSRaQnaQnaSSaSTaSUaSVaSSaQnaQnaQnaSWaOVaSXaSYaSZaOYaTaaPaaTbaTcaTdaTeaPeaTfaTgaThaRMaTiaTjaIuaIuaIvaJTaPhaTkaTlaPiaPiaTmaTnaToaTpaTqaTqaTraTsaTqaTtaTqaTqaTqaTuaTvaTwaTxaPiaPiaTlaTkaJOaTyaItaIuaIuaIIaTzaPuaTAaKcaKcaKcaTAaKcaQUaLJaTBaTCaKcaTDaINaSkaTEaTFaTGaTHaTIaTJaSkaTKaTLaTMaRhaTNaTOaRhaTPaTQaIRaIUaHuaTRaTRaOraOsaTSaHwaHwaTTaHwaTUaTVaDVaTWaTXaTYaRpaRpaTZaTYaFXaDVaUaaOFaPTaSEaOFaOGaUbaMnaMnaOIaGbaGbaGbaGbaGbaGbaGbaGbaGbaGbaGbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -9261,7 +9273,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafawLawMawNawMawOawNawNawPawMawNawMawOawNawNawNbcRbcSbcRbcRbcRbcRbcRbcTaOOaOOaOObcTaXfaXgaYvbcUbcVbcWaXhbcXbcYbcZaORaORaORaOObbXaOOaZUaYGaYHbdaaZWbaXbdbbdcaYHaZYaYNbddbaZbaZbdebdfbdgbdhbbeaXDbuqbdjbcrbcsbdkbdlbcvbdmbdnbnGbupbuobkMbtfbunbkLbkMbrKbtbbrHbdubdvbdwbdxbdxbdybdzbdAaYWbdBbdCaIubbAbbBaYkaYkbdDaYkbdEbdFbdFbdFbdGbdFbdFbdFbdHaYkaYkaYkaYkaYkaYkbdIbdJbdKbbBaYkaYkaYkaYkaYkbdLbdMbdNbdObdPaYkaYkaYkaYkaYkbdQbdRaYkaYkaYkaYkaYkaYkaYkaYkaYkaYkaYkaYkaYkbdSbdTbdUbdVbdWaOFaOFaOGbdXaMnaMnaOIaGbaGbaGbaGbaGbaGbaGbaGbaGbaGbaGbaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarkavJbdYavJaxZawNawNayaavJbdZavJaybbeabebbebbcRbecbedbeebefbegbcRbehbeibejbejbekbelbembenbenbeobepbenbeqbeqberbeqbesaUoaUoaUoaUobetbeubevbewbexbexbeybezbevbeAbeBbeCbaZbaZbeDbeEbeFbeGbbeaXDaYQbaibeHbbibbibeIbbibbkbeJaYQbqybqwbapbqwbqwbqwbqAbqwbhzaYWbeNbeObePbeQbaxbeRbaxbeSaYWbeTbeUbeUbeVbeVbeVbeVbeVbeVbeVbeWbeXbeYbeZbfabfabeWbfbbfbbfbbfbbfbbfcbfcbfcbfdbfcbfcbfcbfcbfeaYkbdQbffbfgbfhbfibfjaYkaYkbfkbfkbflbflbflbflbflbfmbfnbfnbfnbfnaYkbfnbfobfnbfnbfpbfqbfqbfqbfqbfrbfsbftbfuaNsaafaaaaafaGbaGbaGbaGbaGbaGbaGbaGbaGbaGbaGbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafazbaqfazcatwazdazeazfbfvbfwazdatwaziazjaqfazbarkbcRbfxbfybfybfybfzbcRbfAbfBaRCaRCbcTbfCaXhaYvbfDaYybfEaXhbfFbfGbfHbfHbfIbfJbfKbfKbfLbfKbfMbfNbfObfPbfObfObfQbfRbfSbfTbfUbaZbaZbfVbfWbfXbeGbbebfYaYQbfZbgabgbbaibgcbgdbgebgfaYQbqxcmqboZcltcltboXboYclybgiaYWbgjbgkbglbgmbaxbgnbaxbgoaYWaXVaIubgpbeVbgqbgrbgsbgtbgubeVbgvbgwbgwbgxbgybgybgybgzboLbjpbgCbfbbgDbgEbgEbgEbgEbgFbgGbgHbgIbgJbgIbgIbgIbgKbgLbgMbgNbgMbgObgObflbgPbgQbgRbflbgSbgTbgSbflbfmaYkbfpbfqbgUbgVbgUbfqbgWbgXbfqbgYbgZaMmaMnbhaaaaaaaaaaaGbaGbaGbaGbaGbaGbaGbaGbaGbaGbaGbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafawLbdYaAaaAbaAbaAbaAbaAcbdZawLaafaafaafaaabcRbhbbcRbhcbfybhdbhebcRaRCbbYbhfbhgbhhaXhaXhaXhaXhaXhaXhbhibhjbhkaRCbhlaYHaYHaYHbhmaYHaYHaYHbhnaYHaYHaYHaYHbhobhpbhqbhrbaZbaZbhsbhtbeFbeGbbebhuaYQbhvbgaaYRaYRaYRbaibhwbhxaYQahjckNcnAboTboUboWcnzckNahjaYWbhAbhBbhCbhDbaxbeRbhEbhFbhGbhHbhIbhJbeVbhKbhLbhMbhNbhObhPbgybhQbgybhRbgybgybhSbhTbhVbhUbhWbfbbhXbgEbhXbgEbhXbhYbgEbfcbhZbhZbiabibbfgbicbfibidbiebifbigbigbflbihbiibijbikbilbimbinbflbiobfnbipbfqbiqbirbiqbisbitbitbfqbiubgZaaaaafaaaaaaaaaaaaaaaaGbaGbaGbaGbaGbaGbaGbaGbaGbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafawLbdYaAaaAbaAbaAbaAbaAcbdZawLaafaafaafaaabcRbhbbcRbhcbfybhdbhebcRaRCbbYbhfbhgbhhaXhaXhaXhaXhaXhaXhbhibhjbhkaRCbhlaYHaYHaYHbhmaYHaYHaYHbhnaYHaYHaYHaYHbhobhpbhqbhrbaZbaZbhsbhtbeFbeGbbebhuaYQbhvbgaaYRaYRaYRbaibhwbhxaYQahjckNcnAboTboUboWcnzckNahjaYWaLTbhBbhCbhDbaxbeRbhEbhFbhGbhHbhIbhJbeVbhKbhLbhMbhNbhObhPbgybhQbgybhRbgybgybhSbhTbhVbhUbhWbfbbhXbgEbhXbgEbhXbhYbgEbfcbhZbhZbiabibbfgbicbfibidbiebifbigbigbflbihbiibijbikbilbimbinbflbiobfnbipbfqbiqbirbiqbisbitbitbfqbiubgZaaaaafaaaaaaaaaaaaaaaaGbaGbaGbaGbaGbaGbaGbaGbaGbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaafaafaaabcRbivbiwbixbiybiybizbiAbbZbhgaOObiBbiCbiDbiDbiDbfKbfKbfKbiEbiFbiFbiFbiGaYHbiHbiIbiJbiKbiLbiMbiNbiOaYHbiPbiQbiRbiSbiTbiUbiVbiWbiXbiVbiYbiZbjabjbbjcbjdbjebjfbjgbjhbjibhwaYQaYQahjckNcnAboUcltboUcnzckNahjaYWbFabjmbaxbjnbaxbjodoNbjqaYWaXVaIuaIubeVbjrbjsbjtbjubjvbjwbgybjxbjybjzbjAbjAbjBbjCbjDbjEbjFbfbbhXbgEbhXbgEbhXbhYbjGbfcbjHbjIbjJbjKbfgbjLbjMdtkdrgdrgdrbbjPbjQbjRbjSbjSbjSbjTbjSbjUbjVbjWbjXbjYbjZbkabkbbitbkcbkdbkebfqbiubgZbgZbgZbgZbgZaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaafaafaaabcRbkfbcRbkgbkhbkhbkibcRbkjbkkaOObklbkmbklbklbklbkmbklaOOaOOaYHaYHaYHbknaYHbiNbiNbkobiNbiNbiNbiNbiNbkpbkqbkrbksbktbkubkubkubkvbkwbkxbkybkzbkAbkBbkCbkDbkEbkFbkGbkHbkIbkJaYQaafahjckNcnAboWcmWboTbDDckNahjaafbkQaYWbkRaYWaYWaYWaYWbkSaYWbkTaIuaIubeVbkUbjsbkVbhNbhObkWbgybhRbkXbkYbkZblablbbfbblcbldblebfbbhXblfbhXbgEbhXbhYbgEbfcbfgbfgbfgbfgbfgbjLbfidqNblhblibljblkbllblmblnblobloblpbijblqbflblrblsbltbfqblublvblwblxblyblzbfqbiublAceYblBblCblBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaafaafaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaafaaabcRblDblEblFbkhblGblHbcRaaaaafaafblIblIblIblIblIblIblIaaaaaablJblKblLblMblNbiNbiNbiNbiNbiNbiNbiNbiNblObhrbaZblPblQblRblSblTblUbiSblVaYNblWblXblYblZbmabmbbmbbmcbmdbmebmfbmbaafahlckNbBjbzTcltcltbyGckNahlaafbmkbmlbmmbmnbmobmpbmqbmrbmsbmtaIubmubmvbCybmxbkVbmybmzbeVbmAbhRbkXbkZbmBbgybmCbfbbmDbmEbmFbfbbmGbmHbmIbmJbmKbmLbmKbmMbmNbmObmNbmNbmNbmPbfibmQbiedqCdqobmRbmSbmTbmUbmVbmVbmWbmXbmYbflbmZblsbnabfqbnbbncbndblxbitbnebfqbiublAblAbgZbgZbgZbgZbgZbgZbgZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -9271,7 +9283,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablIblIblIblIblIblIblIbrubrvbrubrwbiNbiNbiNboyboyboyboybiNbiNbrxbryaYHbrzbaZbaZbqgbrAbntbqjbhsbaZbaZbqlbqmbrBaIuaQQbqpbrCbrDbrEbrFbrFbrGbmbaafaafckNckNbkPbbqbbqbbockNaafaafbrJbkObrLbrMbrNbrObrPbrQbqCbrRaIuaIubrSbrTbrUbrVbrWbrXbrYbrZbsabrZbsbbrZbrZbscbrZbsdbsebrZbrZbrZbsfbsgbsgbshbqObsibqQbsjbsjbskbslboebjLbfibsmbsnbsobspbspbflbsqbsrbssbrebstbijbsubrebsvbswbsxbsybszbsAbsBbsCbsDbsEbsFbsGbsHbsIbsJbsJbsJbsKbsLbsMbgZbsNblAbgZbgZaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablIblIblIblIblIblIblIbsObovbsPbsQbiNbiNbiNbiNbiNbiNbiNbiNbiNbrxbsRaYHbsSbcmbaZbqgbaZbsTbaZbhsbaZbsUbnxbsVbrBaIuaQQbqpbmbbsWbsXbsYbsZbtabmbahlahlaafckNckNbkNckNckNaafaaaaaabrJbtcbtdbtebkKbtgbtgbthbtibtjaIuaIubtkbtlbhRbqMbtmbtnbtobtnbtpbtnbtqbtrbtnbtsbpqbttbgybgybgybtubtvbtvbtwbtxbtybtzbqQbtAbtBbqTbslboebfhbfibtCbtCbtDbtCbtCbflbrebrebrebrebtEbtFbgSbrebtGbtHbtIbsEbsEbtJblsbtKbtLbtMbtNbtObtPbtQbtRbtRbtSbtTbpXbtUbgZbsNblAbgZaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaablIblIblIblIblIblIblIbrubrvbrubnkbtVbiNbiNbtWbtXbtYbtXbtXbtXbtZbuabevbubbiXbiVbucbiVbudbiWbiXbuebufboGbsVbrBaXDbugbuhbmbbuibujbukbulbumbmbahlahlaafbdrbggcoCbeMbdraafaaaaaaburbusbutbutbuubuvbuwbuxbqCbuyaIuaIubnTbnTbuzbqMbuAbuBbuCbuDbuEbuFbuGbuCbuDbuCbuDbuCbuDbuCbfabfabtvbuHbsjbuIbuJbqObqQbuKbuLbuMbuNboebuObuPbuQbuRbuSbsEbsEbuTbsEbsEbuUbuVbuWbsEbsDbsEbuXbuYbuZbvabvbbvcbvdbvebvdbvdbvdbvfbvgbvhbvibvhbvjbvhbpXbtUbgZbsNbvkbgZbgZaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablIblIblIblIblIblIblIbvlbvmbvlbvnbvobvnbvnbvnbvnbvnbvpbvqbiNbrxbvraYHbvsbaZbvtbvubvvbvwbvxbvybvzbvwbvwbvAbrBaJSbvBbvCbmbbvDbvEbvFbvGbumbmbahlahlaafbdrcocbbqboRbdraafaaaaaabrJbvKbvLbvMbvNbuvbuwbuxbqCbvOaIuaIubvPbvQbvRbqMbvSbvTbuCbvUbvVbvWbvXbvYbvZbwabwbbwabwcbuCbgybgybtvbwdbsjbwebwfbwgbwhbwibwjbwjbwkbwlbwmbwnbwobwpbwqbwrbwsbwrbwrbwtbwrbwubwvbwrbwrbwrbwwbwxbwybwzbwAbwBbwCbwDbwEbwFbvdbwGbwHbwIbwJbwKbwHbwLbpXbtUbgZbwMbrsbwNbgZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablIblIblIblIblIblIblIbvlbvmbvlbvnbvobvnbvnbvnbvnbvnbvpbvqbiNbrxbvraYHbvsbaZbvtbvubvvbvwbvxbvybvzbvwbvwbvAbrBaJSbvBbqpbmbbvDbvEbvFbvGbumbmbahlahlaafbdrcocbbqboRbdraafaaaaaabrJbvKbvLbvMbvNbuvbuwbuxbqCbvOaIuaIubvPbvQbvRbqMbvSbvTbuCbvUbvVbvWbvXbvYbvZbwabwbbwabwcbuCbgybgybtvbwdbsjbwebwfbwgbwhbwibwjbwjbwkbwlbwmbwnbwobwpbwqbwrbwsbwrbwrbwtbwrbwubwvbwrbwrbwrbwwbwxbwybwzbwAbwBbwCbwDbwEbwFbvdbwGbwHbwIbwJbwKbwHbwLbpXbtUbgZbwMbrsbwNbgZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablIblIblIblIblIblIblIbwObwPbovbwQaYHbwRbovbwQbwSbwSbwSbwSbwTbwUbwVbwSbwSbwWbwWbwXbwWbvwbwYbwZbxabxbbvwbsVbrBaIvaTkaTkbmbbmbbmbbmbbmbbxcbmbaJOaJPaJUbdrbdtbkNbdsbdraJOaJPaJUbqBbqCbqCbqCbqCbqCbqCbxgbqCbvOaIubxhbuCbuCbxibxjbxkbuCbuCbxlbxmbxnbxobxpbxqbxrbxsbxtbxubxvbgybgybtvbxwbxxbxybxzbxAbxBbxCbxzbxzbxDbxEbxFbxGbxHbxHbxHbxHbxIbxHbxHbxHbxJbxKbxLbxMbxNbxObxPbxQbxRbwzbxSbxTbxUbxVbxWbxXbxYbpXbpXbxZbyabybbpXbycbpXbtUbgZbsNblAbgZbgZaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablIblIblIblIblIblIblIaaaaaaaaaaaaaaaaaaaaaaaaaaabwSbydbyebyfbygbyhbyibyjbykbylbymbynbyobypbyqbyrbysbvwbytbyubyvbyvbyvbywbyxbyybbAbyzbyAbyBbyCbyCbyCbnKbyFbyIbyHbyJaIuaIuaIubbeaLFaIuaLpaIuaIuaIubyKbyLbvOaIubyMbuCbyNbyObyPbyQbyRbuCbySbxmbyTbxobxpbxqbxqbyUbyVbyWbxvbgybyXbtvbsjbyYbyZbzabzbbzcbzdbzebzfboeboebfhbzgbxHbzhbzibzjbzkbzlbzmbxHbznbzobzpbzqbzrbzsbxPbxQbxRbztbzubzvbzwbzxbzybzzbxYbzAbzAbzAbzAbzAbzAbzAbpXbtUbgZbsNblAbgZaaaaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGcaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablIblIblIblIblIblIblIaaaaaaaaaaaaaaaaaaaaaaaaaaabzBbzCbzDbzEbzFbzGbzHbzIbzJbzKbzLbylbzMbzNbzObyrbzPbvwbzQbzRaIuaIuaIuaIuaIuaIubbAaIubrBaIuaIuaIuaIubeUbzSbeKbzUaIuaIuaIuaIubbeaIuaIuaLpaIuaIuaIubzVbzWbvObzXbzYbzZbAabAbbAcbAdbAebAfbAgbAhbAibAjbuCbAkbAlbAmbAnbAobuCbgybgybtvbtvbtvbtvbtvboeboeboeboeboeboebApbAqbArbxHbAsbAtbAubAvbAwbAxbxHbAybAzbAAbABbACbADbAEbAFbAGbAHbAIbAJbAJbAKbALbAMbxYbzAbANbzAbAObzAbzAbzAbpXbtUbgZbsNblAbgZbgZaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -9292,27 +9304,27 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabCvbSXbELbELbSYbSZbCvaaaaafaaaaaabJlbGkbCvbCvbCvbCvbTbbOqbTcbRQbOsbOsbTdbTebTfbTgbOqbQLbMgbQMbNqbQObThbTibOGbOGbTjbNsbTkbTlbTmbTnbOGbOGbTobTpbTqbTrbTsbTtbTubTtbTvaafbOPbOPbOPbOPbOPaafbzgbNIbNJbTwbTxbTxbTybTzbTAbTBbTCbTDbTEbTFbTxbTGbTHbNJbTIbSCbEhbEhbEhbTJbTKbMNbTLbMNbTMbTNbEhbEhbEhbJWbTObRybTPbRxbTQbTRbTSbTTbTRbTUbQubTVbRybTWbRHbLEbgZbNhbgZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabTXaaaaafaafbTYbTYbTYbTYbTYbTYbTYbTYbCvbCvbTZbCvbCvbCvbPtbPubPvbCvbCvbLXbCvckdbELbCvbTbbOqbOqbUabOqbOqbOqbOqbOqbOqbOqbUbbUcbQMbUdbMjbNrbNrbUebUfbUgbUhbOGbOGbOGbTnbUibONbONbUjbUkbUlbPLbUmbUnbUobUpbPQbPRbUqbUrbUrbOPaafbzgbNIbNJbNJbNJbNJbNKbUsbUtbUubUvbUwbUxbUybUybUzbRobNJbTIbSCbEhbEhbEhbUAbUBbSIbUCbMNbUDbUEbSEbSEbUFbJWbUGbUHbUIbRxbUJbRBbSQbUKbTRbULbQubUMbUMbUMbRHbUNbQubNhbgZaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabUObUPbUQbURbUSbURbUTbUUbUVbUWbUXbUYbUZbTYbVabVbbVbbVbbVbbVbbVbbVbbVbbVbbVcbVdbVebVebVebVebVfbVgbVgbVhbVibVjbVkbVlbVlbVlbVmbVnbMgbQMbVobVpbVqbONbONbONbVrbVsbONbONbVtbVubVvbOGbVwbVxbVybVzbOGbVAbVBbVCbRdaafbRebVDbVEbVFbOPaafbVGbVHbVIbVIbVIbVJbNJbVKbOXbVLbVMbVNbVObSybVPbSzbVQbNJbTIbSCbJWbJWbJWbJWbVRbVSbTLbVTbVRbJWbJWbJWbJWbJWbVUbVVbVWbVXbVYbVZbVZbVZbWabWbbSSbUMbUMbWcbRHbWdbQubNhbgZbgZbgZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabWebWebWebWebWebWfbWgbWhbWibWibWhbTYbELbWjbWkbWkbWkbWkbWkbWkbWlbCvbWmbWnbWnbWnbWnbWnbWnbWnbWnbWobWobWpbWobWobWqbELbCvbWrbMgbQMbVobWsbWtbWubWvbSfbWwbWxbSfbSfbWybWzbWAbWBbWCbWDbWEbWFbOGbVAbWGbWHbWIbSobPRbWJbUrbUrbOPaafbWKbWLbCDbCDbCDbWMbNJbWNbWObUzbWPbWQbUtbWRbWSbWTbUtbNJbTIbSCbSDbSEbSEbWUbSGbMNbSHbSIbWVbWWbEhbEhbEhbJWbWXbWYbWZbRxbRybRxbRybRybXabXbbQubUMbUMbUMbRHbWdbQubNhblAblAbgZaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabWebWebWebWebWebWfbWgbWhbWibWibWhbTYbELbWjbWkbWkbWkbWkbWkbWkbWlbCvbWmbWnbWnbWnbWnbWnbWnbWnbWnbWobWobWpbWobWobWqbELbCvbWrbMgbQMbVobWsbWtbWubWvbSfbWwbWxdjydjybWybWzbWAbWBbWCbWDbWEbWFbOGbVAbWGbWHbWIbSobPRbWJbUrbUrbOPaafbWKbWLbCDbCDbCDbWMbNJbWNbWObUzbWPbWQbUtbWRbWSbWTbUtbNJbTIbSCbSDbSEbSEbWUbSGbMNbSHbSIbWVbWWbEhbEhbEhbJWbWXbWYbWZbRxbRybRxbRybRybXabXbbQubUMbUMbUMbRHbWdbQubNhblAblAbgZaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbXcbXdbXebXfbXebXgbXhbXibXjbXjbXkbTYbXlbXmaaaaaaaafaaaaaaaafaaabCvbWmbWnbXnbXobXpbXqbXrbXsbXnbXtbXubXvbXwbWobWobELbCvbXxbMgbQMbXybXzbXAbXBbXCbMjbMobMjbMjbMjbXDbXEbNrbNrbNrbXFbOGbVybOGbVAbVBbXGbRdaafbOPbOPbOPbOPbOPaafbXHbXIbCDbXJbXKbWMbNJbXLbRqbXMbXNbWQbOXbXObWSbXPbXQbNJbTIbSCbEhbXRbEhbXSbTKbMNbTLbMNbTMbXTbEhbXRbEhbJWbXUbXVbXWbXXbXYbXZbYabYbbYcbYdbSSbYebYfchUbRHbYhbQubYibgZblAbgZbgZbgZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafbXcbYjbYkbYlbYmbWhbYnbWhbYobWhbWhbYpbELbXmaaaaaaaafaaaaaaaafaaabCvbWmbWnbXnbYqbYrbYsbYtbYubXnbYvbYwbYxbYybYzbWobELbCvbWrbMgbQMbYAbYBbMobYCbYDbMjbYEbYFbYGbMjbYHbTnbYIbNrbYJbWFbOGbWDbYKbYLbUnbYMbUpbPQbPRbYNbYObYPbOPaafbCDbXIbCDbYQbXKbWMbNJbYRbYSbYTbYUbYVbOQbYWdprchWchXbNJbTIbSCbEhbEhbEhbYZbZabSIbUCbMNbUDbZbbSEbSEbUFbDcbRHbZcbZdbZebRHbRHbZfbZgbZhbZibZjbVYbVZbZkbUMbYhbQubNhbgZbrqbgZbZlbgZaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafbXcbZmbZnbZobZnbZpbZqbZrbZsbZtbZubTYbZvbZwaaaaaaaaaaaaaaaaaaaaabCvbWmbWnbZxbZybZzbYsbZAbZxbZxbYvbZBbZCbZDbZEbZFbZGbZHbZIbZJbZKbZLbZMbZNbZObZPbZQbZRbZSbZTbMjbOGbTnbZUbZVbYJbZWbOGbWDbYKbVAbVBbZXbRdaafbReclkbZZcaabOPaafbCDbXIbCDcabcacbWMbNJbNJcadcaebNJbNNbNJbNJbSubNJbNJbNJbTIbSCbJWbJWbJWbJWbVRcafbTLcagbVRbJWbJWbJWbJWbDcbTRcahbTRbTRbTRbRHbZfbZgcaicajcakcalbRxcambRHbYhbQubNhbgZblAblAblAcanaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafbWebWebWebWebWebTYbTYcaobTYbTYbTYbTYaafaaaaaaaPYaaaaaaaaaaaaaaacaqbWmbWnbZxbZxcarcasbXnbZxcatcaucavcawcaxcaybWobELbCvcazcaAcaBcaCcaDcaEcaFcaGcaHcaIcaJcaKbMjcaLcaMbZUbNrbYJcaNbOGcaObYKbVAcaPcaQbWIbSobPRcaRbYObYObOPaafcaSbXIbCDcaTbXKbWMcaUbNJbNJcaVbNJdpGdpFdpEdpzcaZcbabXKbTIbSCbSDbSEbSEcbbbSGbMNbSHbSIcbccbdbEhbEhbEhbDccbebTRdtebTRbTRbRHcbfcbgcbhcbibQubQubRxbQubRHcbjbQubNhbgZcbkcblcbmcbnaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafbXcbYjbYkbYlbYmbWhbYnbWhbYobWhbWhbYpbELbXmaaaaaaaafaaaaaaaafaaabCvbWmbWnbXnbYqbYrbYsbYtbYubXnbYvbYwbYxbYybYzbWobELbCvbWrbMgbQMbYAbYBbMobYCbYDbMjbYEbYFbYGbMjbYHbTndpJbNrbYJbWFbOGbWDbYKbYLbUnbYMbUpbPQbPRbYNbYObYPbOPaafbCDbXIbCDbYQbXKbWMbNJbYRbYSbYTbYUbYVbOQbYWdprchWchXbNJbTIbSCbEhbEhbEhbYZbZabSIbUCbMNbUDbZbbSEbSEbUFbDcbRHbZcbZdbZebRHbRHbZfbZgbZhbZibZjbVYbVZbZkbUMbYhbQubNhbgZbrqbgZbZlbgZaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafbXcbZmbZnbZobZnbZpbZqbZrbZsbZtbZubTYbZvbZwaaaaaaaaaaaaaaaaaaaaabCvbWmbWnbZxbZybZzbYsbZAbZxbZxbYvbZBbZCbZDbZEbZFbZGbZHbZIbZJbZKbZLbZMbZNbZObZPbZQbZRbZSbZTbMjbOGbTndjzbZVbYJbZWbOGbWDbYKbVAbVBbZXbRdaafbReclkbZZcaabOPaafbCDbXIbCDcabcacbWMbNJbNJcadcaebNJbNNbNJbNJbSubNJbNJbNJbTIbSCbJWbJWbJWbJWbVRcafbTLcagbVRbJWbJWbJWbJWbDcbTRcahbTRbTRbTRbRHbZfbZgcaicajcakcalbRxcambRHbYhbQubNhbgZblAblAblAcanaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafbWebWebWebWebWebTYbTYcaobTYbTYbTYbTYaafaaaaaaaPYaaaaaaaaaaaaaaacaqbWmbWnbZxbZxcarcasbXnbZxcatcaucavcawcaxcaybWobELbCvcazcaAcaBcaCcaDcaEcaFcaGcaHcaIcaJcaKbMjcaLcaMdpKbNrbYJcaNbOGcaObYKbVAcaPcaQbWIbSobPRcaRbYObYObOPaafcaSbXIbCDcaTbXKbWMcaUbNJbNJcaVbNJdpGdpFdpEdpzcaZcbabXKbTIbSCbSDbSEbSEcbbbSGbMNbSHbSIcbccbdbEhbEhbEhbDccbebTRdtebTRbTRbRHcbfcbgcbhcbibQubQubRxbQubRHcbjbQubNhbgZcbkcblcbmcbnaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHaaHaaHaaGaaGaaHaaGaaGaaGaaRaaGaaGaaGaaHaaGaafaafbCvbELbELbELbELbELbELbELbELcbocbpaafaaaaaaaafaagaFFaaaaaaaaabRMbWmbWncbscbtcascbubXnbXncbvcbwcbvcbxbYycbybWobELbTZbQLbMgcbzcbAcbBcaEcbCcbDcbEcbFciWcjcckbbPHcbIbNrbNrbNrcbJbOGcbKcbLbVAbVBbOGbRdaafbOPbOPbOPbOPbOPaafcbMbXIbCDcbNcbObVHbVIbVIcbPcbQbNKdpCdpBdpDdpzcbUcbVcbVcbWbSCbEhbEhbEhcbXbTKbMNbTLbMNbTMcbYbEhbEhbEhbDccbZbTRccabTRbTRccbcccccdcceccfbQubRxbRxccgbRHcchblAccibgZccjcckblAcclaafaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHaaaaaaaafaafaaaaafaafaaaaaaaafaafaafaaaaaGaaaaaabCvccmbELbCvbCvbTZbCvbCvbCvbCvbCvaaaaaaaaaaagaDIauKaagaagaafbRMbWmbWnccpbZxbXnbXnbXnbZxcatccqccrbYyccscctbZFbZHbZHccuccvccwcbAcbAccxcaFccycczccAccBccCbMjbOGbOJccDccEccFbQWccGccHccIbYLbUnccJbUpbPQbPRccKccLccLbOPaafbXHbXIbCDbCDbCDbXKbCDbCDccMccNbNKbNKdpAbNKdpzccNbFoccPccQbSCbEhbEhbEhccRccSbSIccTbMNbUDccUbSEbSEbUFbDcbTRbTRccVbTRbTRbRHcbfcbgccWccXbQuccYccZcdabRHcdbblAbNhbgZbgZbgZblAbgZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHaaacdccddcdeaaacdccddcdeaaacdccddcdeaafaaGaaaaaabCvcdfcdgbCvcdhbELbELcdicdjcdkbCvaaaaaaaaaatIaagaagaafaaaaaacdmbWmbWnbZxcdncdobXncdpbZxbZxbYvcdqbYybYycdrbWocdscdtcducdvcdwcdxcdycdzcaFcdzcaEcaFcdAcdBbMjcdCcdDcdEbSfbSfbShbUicdFbUmbSibVBcdGbRdaafbReclhcdIcdJbOPaafbCDbXIbXKcdKbXKbXKcdLbCDcdMcdNcdOcdPcdQcdRcdScdTcdUbgZcdVbSCbDcbDcbDcbDcbDccdWcdXcdYbDcbDcbDcbDcbDcbDcbRHbRHbRHbRHbRHbRHcdZcdZceacebbRHbRHbRHbRHbRHbLEbgZbNhbgZceccedblAbgZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHaaacdcceecdeaaacdcceecdeaaacdcceecdeaafaafaaaaaabCvbPtbPvbCvbCvcefcegbQCbELbSYbCvaaaaaaaaaaaaaafaaaaaaaaaaaabCvbWmbWnbXncehceibXncejcekbXnbYvcelcemcencenceocepceqcercescetceucevcewcexceycezcaFcdAceAbMjceBbOGbOJbUibONceCceDceEceFbNFceGceHbWIbSobPRceIccLccLbOPaafbCDceJbLnbLnbLnbLnceKceLceMceNceOcePceQcePceRceSceTbgZceUbLEaaaaaaaaaaafaaaaaaceVaaaaafaaaaaaaaaaaabgZceWceXceYceZceZbRHcfacfaceacfbcfccfdblAblAblAcfebgZbYibgZcffblAblAbgZbgZbgZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGaafcdcceecdeaaacdcceecdeaafcdcceecdeaafaafaaaaaaaaaaaaaafaafbCvbCvbCvbCvbTZbCvbCvaaaaaaaaaaaaaafaaaaaaaafaaabCvbWmbWnbXncfgcfhcficfjcfkbXncflcfmcfncfocfpbWocfqcfrcfscftcfucfvcfwcfxcfycfzcfAcfBcfCcfDbMjcfEbQZcfFcfGbOGbOGbOGbOMbVvcfGbVBbXGbRdaafbOPbOPbOPbOPbOPaafbCDcabcfHcfIcfJcacbCDbCDbCDcfKcfLcdUbXKcfMcfNbzgbCDbgZceUbLEaaaaaaaaaaafaaaaaaceVaaaaafaaaaaaaaaaaabgZcfOcfPbrscfQcfRbRHcfScfScfTcfbbRHbQubgZcfUcfVcfWbgZcfXbECbECbECcfYcfZcgacfZcgbaagaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaacdcceecdeaafcdcceecdeaaacdcceecdeaaaaafaaaaaaaaaaaaaaaaaabCvckLbCvbELbELbCvaafaaaaafaaaaaaaafaaaaaaaafaaabCvbWmbWnbWnbWnbWnbWnbWnbWnbWnbWobWobWobWobWobWobCvcgfbCvcggcghcghcghcgicgjcgkcghcglcgmcgncgocgpcgqbSkcgrcgscgtcgscgrcgucgrcgvbUicgwaafaafaafaafaafaafaafaaaaafcbMbXKcbMaafaaabCDcgxbCDcgycgzcgAcgzcgBbzgbYQbCDceUbLEcgCcgDcgEbgZcgCcgDcuncgEbgZcgCcgDcgDcgEbgZcgFbgZcgGbgZbgZbRHbRHbRHcgHcgIbRHcgJbgZcbmblAcgKbgZccibgZbgZcgLbgZbgZbgZbgZaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHaaHaaGaafaaacdcceecdeaafcdcceecdeaaacdcceecdeaafaafaafaafcgMcgNcgNcgNcgNbCvbCvcgObELbCvcgPbWkbWkbWkbWkbWkbWkbWkbWlbCvbCvbWmbCvcgQcgRcgScgScgScgScgScgScgScgScgScgTcgTcgScgUcefcggcgVcgWcgXcgYcgZchacghchbchcchdbMjchechfchgchhchichjchkchlbOGchmchnchobOIaafaafaaaaaaaaaaaaaafaaaaafchpcfIchpaafaaabCDchqchrchschtbKPcePchuceJbLnceLchvchwchxchxchxchxchxchxchychzchzchzchzchAchAchBchCchAchAchAchDchEchFchGchHchIchEchEchEchEchJchKbgZbNhbgZchLblAblAbgZaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHaaaaafaaaaafaafchMaafaafaafchMaafaaaaafchMaafaaaaafchNchOchPchQchRchSchTcgebELchYchZciachZchZchZchZchZchZchZchZchZchZchZcibbCvbELbLXcicciccicciccicciccicciccicciccicciccidciccggcghciecifcigcihciicijcikcilcimciccinciocipciqcipciocipciqcipcircipcircisaafaafaaaaaaaaaaaaaafaaaaafaaaaaaaaaaafaaabCDchqcitcdMciucivciwcixdpQdpRdpSdpTdpNdpNdpNdpNdpNdpNdpOdpPdpNdpNdpNdpNdpNdpNdpVdpUciGciFciCciHciIciIciIciJciKciLciMciIciIciIciIciNciObgZciPbpYciQbgZaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHaaHaaGaafaaacdcceecdeaafcdcceecdeaaacdcceecdeaafaafaafaafcgMcgNcgNcgNcgNbCvbCvcgObELbCvcgPbWkbWkbWkbWkbWkbWkbWkbWlbCvbCvbWmbCvcgQcgRcgScgScgScgScgScgScgScgScgScgTcgTcgScgUcefcggcnMcgWcgXcgYcgZchacghchbchcchdbMjchechfchgchhchichjchkchlbOGchmchnchobOIaafaafaaaaaaaaaaaaaafaaaaafchpcfIchpaafaaabCDchqchrchschtbKPcePchuceJbLnceLchvchwchxchxchxchxchxchxchychzchzchzchzchAchAchBchCchAchAchAchDchEchFchGchHchIchEchEchEchEchJchKbgZbNhbgZchLblAblAbgZaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHaaaaafaaaaafaafchMaafaafaafchMaafaaaaafchMaafaaaaafchNchOchPchQchRchSchTcgebELchYchZciachZchZchZchZchZchZchZchZchZchZchZcibbCvbELbLXcicciccicciccicciccicciccicciccicciccidciccggcghciecifcigcihcECcijcikcilcimciccinciocipciqcipciocipciqcipcircipcircisaafaafaaaaaaaaaaaaaafaaaaafaaaaaaaaaaafaaabCDchqcitcdMciucivciwcixdpQdpRdpSdpTdpNdpNdpNdpNdpNdpNdpOdpPdpNdpNdpNdpNdpNdpNdpVdpUciGciFciCciHciIciIciIciJciKciLciMciIciIciIciIciNciObgZciPbpYciQbgZaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGaafciRciSciSciTciUciUciUciUciUciUciUciUciUciUciUciVciXciYciXciZcjacjbcbHchZcjdcjecjfbCvcjgcjhcjhcjhcjhcjhcjhcjhcjibCvbELcjjcjkcjlcjmciccjncjncjociccjpcjqcjrcjscjtcjucjvcjwcjxcjycghcjzcjAcjBcjCcjDcjEcjFcjGduncicaafcjIaafcjJaafcjIaafcjJaafcjKaafcjKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaabCDbXKcjLcjMcjNcjOcjPbFodpMcjRbCDbgZcgCcgDcgDcgEbgZcgCcgDcgDcgEbgZcgCcgDcgDcgEbgZcpGblAbgZcjScbmbgZbgZcgCcgEbgZbgZcjTblAcjTbgZcjUcjVbpWbgZbgZbgZbgZbgZaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHaaaaafaaaaafaafcjWaafaaaaafcjWaafaaaaafcjWaafaaaaaachNchOcjXcjYcjZckacgNbELbELbELbELbCvaaaaaaaafaaaaaaaafaaaaaaaafbCvckdbELbCvbEMckecicckfckgckhckickjckkcklckmcknckockpckqckrckscghcktckuckvcjCckwcghckxckycnqcicbOPckzbReckzbOPckzbReckzbOPckAbReckBbOPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaabCDbCDbCDbXKckCcjMccPcnCbCDbCDbCDaaaaaaaafaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaabgZcnyckEbgZcjTblAbgZaaaaaaaaaaaabgZblAblAckFckGckGckHckIckGaaaaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHaaHaaGaafaafcdcckJcdeaaacdcckJcdeaaacdcckJcdeaafaafaafaafckKcgNcgNcgNcgNckccmlbELbELbCvaafaafbGvbGvbGvbGvbGvbGvbGvbCvbCvbCvbCvcdjckOcicckPckhckhckickQckRckSckSckSckRckRckTckUckVcghckWckXckYckZclacghclbchccnRcicbOPcldcnDclfbOPclgcnXclibOPcljcnYcllbOPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaabCDcfKclmcnZcacbCDbCDaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabgZcnUbgZbgZcloblAbgZbgZcgCcgEbgZbgZblAclpckEckGclqclrclsckGaaaaaaaafaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacdcckJcdeaafcdcckJcdeaaacdcckJcdeaaaaaaaaaaaaaaaaaaaaaaaabCvbCvbCvbXlbELbCvaaaaaabGvcmUcmpcmocmncmmcmPclzbSYbELbELbELckOcicclAclAclBcicclCclDclEclFclFckUclGclHclIclJcghclKclLclMclNclOclPclQclRcnScicbOPclTclUclTbOPclVclWclVbOPclXclYclZbOPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcmaahlaaaaafaaaaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaacmccmdcmebgZcoGbpYbgZcmgblAblAbgZblAblAblAblAcbmblAcmhckGcmicmjcmkckGaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGcaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGaafcdcckJcdeaaacdcckJcdeaaacdcckJcdeaafaaaaaaaaaaaaaaaaaaaaacgccgdcgcbELbELbCvaaaaaabGvcmUcmVcmUcmYcmXcnBcmrcmsbVlbVlbVlcmtcicclAclAclBciccmucmvcmwcmxcmycmzcmAcjwcmzcmBcmvcmCcmDcmEcmFcmGcmHcmEcmIcotcicbOPclTcmKclTbOPclVcmLclVbOPclZcmMclZbOPaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcmNahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaafcbnblAcmObgZcphblAbgZcmQblAblAbrqblAbgZbgZbgZcgCcgEbgZckGcmRcmScmTckGaaaaaaaafaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGaafcdcckJcdeaaacdcckJcdeaafcdcckJcdeaafaafaafaafaafaafaafaafbCvbCvbCvbCvbELbCvaafaafbGvcoacoBcoAcodcobbGvcmZcnaciccnbciccnccicclAclBclBciccndcnecnfcngclFcmGcnhcnicnhcnjcnkcnlcnmcnncnocnncnncnncnpcqMcicbOPbOPbOPbOPbOPbOPbOPbOPbOPbOPbOPbOPbOPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaafaagcbncnrblAbrqcpGblAbgZbgZbgZbgZbgZblAbgZaaaaafaaaaafaaacnscntcnucnvcnwaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaRaafcdccnxcdeaaacdccnxcdeaaacdccnxcdeaafaaGaafaaaaaaaaaaaaaaaaaaaaaaaabLWbELcaqaaaaaabGvcoDcoHcmUcoZcoIbGvcoEcoFciccnEciccnFciccicciccicciccnGcnHcnIcnJcnJcnKcnKcnKcnLcnMcnNcnOcnOcnPcnPcnQcnPcnPdufduecicaafaaaaaaaaaaafaafaaaaaaaafaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaagcbnblAbvkbgZdpwblAblAblAblAblAblAblAbgZaaaaafaaaaafaaaaafcnVcnWcnVaafaaaaaaaafaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGaaaaafaaaaaaaaaaafaafaafaaaaaaaafaafaaaaaGaafaafaaaaaaaaaaaaaaaaaaaaabRMbELbRMaaaaaabGvcpecpkcmUcpjcpibGvcpFcpEbGvcoecofcogcohcoicojcokcolcomconcoocopckUcoqclcciccorciccorcicclccoqckUckUcosckUduhdugcpfduicicciccicciccmvcmvcmvcicaaaaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoucmdcmebgZcnUbgZbgZcovcowckEcoxbgZbgZaaaaafaaaaaaaaaaafcoycnucoyaafaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHaaaaafaaaaafaafcjWaafaaaaafcjWaafaaaaafcjWaafaaaaaachNchOcjXcjYcjZckacgNbELbELbELbELbCvaaaaaaaafaaaaaaaafaaaaaaaafbCvckdbELbCvbEMckecicckfckgckhckickjckkcklckmcknbvCbYIbZUckrbhycghbhAckuckvcjCckwcghckxckycnqcicbOPckzbReckzbOPckzbReckzbOPckAbReckBbOPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaabCDbCDbCDbXKckCcjMccPcnCbCDbCDbCDaaaaaaaafaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaabgZcnyckEbgZcjTblAbgZaaaaaaaaaaaabgZblAblAckFckGckGckHckIckGaaaaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHaaHaaGaafaafcdcckJcdeaaacdcckJcdeaaacdcckJcdeaafaafaafaafckKcgNcgNcgNcgNckccmlbELbELbCvaafaafbGvbGvbGvbGvbGvbGvbGvbCvbCvbCvbCvcdjckOcicckPckhckhckickQckRckSckScgVciicnHcnPckockUcghckWckXckYckZclacghclbchccnRcicbOPcldcnDclfbOPclgcnXclibOPcljcnYcllbOPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaabCDcfKclmcnZcacbCDbCDaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabgZcnUbgZbgZcloblAbgZbgZcgCcgEbgZbgZblAclpckEckGclqclrclsckGaaaaaaaafaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacdcckJcdeaafcdcckJcdeaaacdcckJcdeaaaaaaaaaaaaaaaaaaaaaaaabCvbCvbCvbXlbELbCvaaaaaabGvcmUcmpcmocmncmmcmPclzbSYbELbELbELckOcicclAclAclBcicclCclDclEclFckqcmFckscktckpckpcghclKclLclMclNclOclPclQclRcnScicbOPclTclUclTbOPclVclWclVbOPclXclYclZbOPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcmaahlaaaaafaaaaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaacmccmdcmebgZcoGbpYbgZcmgblAblAbgZblAblAblAblAcbmblAcmhckGcmicmjcmkckGaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGcaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGaafcdcckJcdeaaacdcckJcdeaaacdcckJcdeaafaaaaaaaaaaaaaaaaaaaaacgccgdcgcbELbELbCvaaaaaabGvcmUcmVcmUcmYcmXcnBcmrcmsbVlbVlbVlcmtcicclAclAclBciccmucmvcmwcmxckVclGckTcmvcmzcmAcmvcmCcmDcmEcmFcmGcmHcmEcmIcotcicbOPclTcmKclTbOPclVcmLclVbOPclZcmMclZbOPaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcmNahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaafcbnblAcmObgZcphblAbgZcmQblAblAbrqblAbgZbgZbgZcgCcgEbgZckGcmRcmScmTckGaaaaaaaafaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGaafcdcckJcdeaaacdcckJcdeaafcdcckJcdeaafaafaafaafaafaafaafaafbCvbCvbCvbCvbELbCvaafaafbGvcoacoBcoAcodcobbGvcmZcnaciccnbciccnccicclAclBclBciccndcnecnfcngckqclIclJcmyclHclHcnkcnlcnmcnncnocnncnncnncnpcqMcicbOPbOPbOPbOPbOPbOPbOPbOPbOPbOPbOPbOPbOPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaafaagcbncnrblAbrqcpGblAbgZbgZbgZbgZbgZblAbgZaaaaafaaaaafaaacnscntcnucnvcnwaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaRaafcdccnxcdeaaacdccnxcdeaaacdccnxcdeaafaaGaafaaaaaaaaaaaaaaaaaaaaaaaabLWbELcaqaaaaaabGvcoDcoHcmUcoZcoIbGvcoEcoFciccnEciccnFciccicciccicciccnGcnHcnIcnJcnhcnKcmBcnKcnLcnicnNcnOcnOcnPcnPcnQcnPcnPdufduecicaafaaaaaaaaaaafaafaaaaaaaafaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaagcbnblAbvkbgZdpwblAblAblAblAblAblAblAbgZaaaaafaaaaafaaaaafcnVcnWcnVaafaaaaaaaafaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGaaaaafaaaaaaaaaaafaafaafaaaaaaaafaafaaaaaGaafaafaaaaaaaaaaaaaaaaaaaaabRMbELbRMaaaaaabGvcpecpkcmUcpjcpibGvcpFcpEbGvcoecofcogcohcoicojcokcolcomconcoocopcnjcoqclcciccorciccorcicclccoqckUckUcosckUduhdugcpfduicicciccicciccmvcmvcmvcicaaaaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoucmdcmebgZcnUbgZbgZcovcowckEcoxbgZbgZaaaaafaaaaaaaaaaafcoycnucoyaafaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHaaHaaGaaHaaHaaRaaGaaGaaGaaGaaHaaGaaGaaHcozaaaaafaafaaaaaaaaaaaaaaaaafbRMbELbRMaafaafbGvcpYcuqcridptdhldpvdpudpydpxcoJcnPcoKcoLcoMcoNcoOcoPcmFckUcoQcoRckUcoSciccoTcoUcoVcoUcoWciccoXckUcoRcoYckUdujcnPcnPcqNcnPdsHcicdsWdsXcpacpbcpbcpcahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcmbaaabgZbgZcgCcgEbgZbgZaafaafaaaaaaaaaaaaaafaaacpdaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaacdmbELcdmaaaaaabGvcbScbRcaYcaXcaWbGvbSrbHWbGvckUckUcmFckUcmIcplcpmcpncmFcopckUckjcpocpocppcpqcprcpscptcpucpvcpwcpwcpxckUcopcmFckUckUbpackUbvHboSckhckhcpAcpBcpCcpDahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaabqzaaaaaaaafaaaaafaaaaaaaafaafaafaaaaaaaaaaafaaacpdaaaaafaaaaaaaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaabCvbCvbTZbCvbCvaaabGvcluccOcbTbGvbGvbGvbGvbGvciccpHckUcmFckUcjFcpIcpJcpKcmFcpLcpMcpNcpOcpPciccpQcpRcpScopcpTciccpUcpVcpVcpMcpLcmFcpWciycdHclSbxfcicbxeckhcpZcpbcpbcqaahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaafaaaaaacqbcqbcqbcqcaafaafaafaafcpdaafaafaafaafaafaaRcqbcqbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -9348,18 +9360,18 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahldpXdqfdqRdpHdpHdquaXNdqDbanbcybcybcybandqDaXNdqudpHdpHdqSdqmdpXahlahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacslcslcslcslcslcslcslcslcslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahldpXdqfdpYdqmdquaXNdqFdqDdqGbcydqIbcydqGdqDdqHaXNdqudqfdpZdqmdpXahlahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacslcslcslcslcslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsmcsmcsmcsmcsmcsmcsmcsmcsmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahldpXdqfdpYdqmahldquaXNdqDbandqKdqLdqJbandqDaXNdquahldqfdpZdqmdpXahlahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacslcslcslcslcslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsdcsdcsdcsdcsdaaacsdcsdcsdcsdcsdaaacsdcsdcsdcsdcsdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsmcsmcsmcsmcsmcsmcsmcsmcsmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahldpXdqfdpYdqmahldquaXNbhybanbandqzbanbanbhyaXNdquahldqfdpZdqmdpXahlahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacslcslcslcslcslcslcslcslcslcslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsdcsdcsdcsdcsdaaacsdcsdcsdcsdcsdaaacsdcsdcsdcsdcsdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsmcsmcsmcsmcsmcsmcsmcsmcsmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahldpXdqfdpYdqmahldquaXNdqDdqEdqAdqBdqDdqEdqDaXNdquahldqfdpZdqmdpXahlahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacslcslcslcslcslcslcslcslcslcslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsdcsdcsdcsdcsdaaacsdcsdcsdcsdcsdaaacsdcsdcsdcsdcsdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsmcsmcsmcsmcsmcsmcsmcsmcsmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahldpXdqfdpYdqmahldquaXNbanbanbandqzbanbanbanaXNdquahldqfdpZdqmdpXahlahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacslcslcslcslcslcslcslcslcslcslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsdcsdcsdcsdcsdaaacsdcsdcsdcsdcsdaaacsdcsdcsdcsdcsdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsmcsmcsmcsmcsmcsmcsmcsmcsmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahldpXdqfdpYdqmahldquaXNdtldqEdqAdqBdqDdqEdtlaXNdquahldqfdpZdqmdpXahlahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacslcslcslcslcslcslcslcslcslcslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsdcsdcsdcsdcsdaaaaaaaaaaaaaaaaaaaaacsdcsdcsdcsdcsdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsmcsmcsmcsmcsmcsmcsmcsmcsmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahldpXdqfdqxdpHdpHdpHdquaXNdqvaXNdqwaXNdqtaXNdqudpHdpHdpHdqsdqmdpXahlahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacslcslcslcslcslcslcslcslcslcslcslcslcslcslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsmcsmcsmcsmcsmcsmcsmcsmcsmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahldpXdqfdpYdqmahlahjahldqudqudqudqydqudqudquahlahlahldqfdpZdqmdpXaaaahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacslcslcslcslcslcslcslcslcslcslcslcslcslcslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsmcsmcsmcsmcsmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahldpXdqfdpYdqhdqidqjdqjdpHcECdpJdpKdpLdpWdpHdqidqidqidqkdpZdqmdpXaaaahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacslcslcslcslcslcslcslcslcslcslcslcslcslcslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsmcsmcsmcsmcsmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahldpXdqfdqndqqdqpdqpdqpdqcdqadqadqbdqgdqldqddqedqedqedqedqrdqmdpXaaaahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacslcslcslcslcslcslcslcslcslcslcslcslcslcslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsmcsmcsmcsmcsmcsmcsmcsmcsmcsmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahldpXahldrQdrQdrQdrQdrQdpHdsTdsSdsRdsQdsPdsOdsNdrQdrQdtZdtZahldpXaaaahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacslcslcslcslcslcslcslcslcslcslcslcslcslcslcslcslcslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsmcsmcsmcsmcsmcsmcsmcsmcsmcsmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlaaGaaGaaGaaGdpXdpXdpXdpHdsKdsMdsLdsJdsIdpHdpXdpXdpXdpXdpXdpXdpXaaaahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacslcslcslcslcslcslcslcslcslcslcslcslcslcslcslcslcslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsmcsmcsmcsmcsmcsmcsmcsmcsmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahldpXdqfdpYdqmahlahlahldqudqudqudtjdqudqudquahlahlahldqfdpZdqmdpXahlahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacslcslcslcslcslcslcslcslcslcslcslcslcslcslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsmcsmcsmcsmcsmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahldpXdqfdpYdqmahlahjahldpHdpWdpLdqbdqgdqydpHahlahlahldqfdpZdqmdpXaaaahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacslcslcslcslcslcslcslcslcslcslcslcslcslcslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsmcsmcsmcsmcsmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahldpXdqfdpYdqhdqidqjdqjdpHdtgdsPdtfdthdtidpHdqidqidqidqkdpZdqmdpXaaaahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacslcslcslcslcslcslcslcslcslcslcslcslcslcslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsmcsmcsmcsmcsmcsmcsmcsmcsmcsmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahldpXdqfdqndqqdqpdqpdqpdqcdqadtpdtodtndqldqddqedqedqedqedqrdqmdpXaaaahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacslcslcslcslcslcslcslcslcslcslcslcslcslcslcslcslcslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsmcsmcsmcsmcsmcsmcsmcsmcsmcsmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahldpXahldrQdrQdrQdrQdrQdpHdsTdsSdsRdsQdtmdsOdsNdrQdrQdtZdtZahldpXaaaahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacslcslcslcslcslcslcslcslcslcslcslcslcslcslcslcslcslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlaaGaaGaaGaaGdpXdpXdpXdpHdsKdsMdsLdsJdsIdpHdpXdpXdpXdpXdpXdpXdpXaaaahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacslcslcslcslcslcslcslcslcslcslcslcslcslcslcslcslcslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahjahjdpHdpHdsGdsUdsVdpHdpHahlahlahjahjahjahlahlaaaahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacslcslcslcslcslcslcslcslcslcslcslcslcslcslcslcslcslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahjahlahlahlahlahlahlahlahlahlahlahjahjahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacslcslcslcslcslcslcslcslcslcslcslcslcslcslcslcslcslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacslcslcslcslcslcslcslcslcslcslcslcslcslcslcslcslcslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacslcslcslcslcslcslcslcslcslcslcslcslcslcslcslcslcslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahjahlahlahlahlahlahlahlahlahlahlahjahjahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacslcslcslcslcslcslcslcslcslcslcslcslcslcslcslcslcslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacslcslcslcslcslcslcslcslcslcslcslcslcslcslcslcslcslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacslcslcslcslcslaaacslcslcslcslcslaaacslcslcslcslcslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacslcslcslcslcslaaacslcslcslcslcslaaacslcslcslcslcslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacslcslcslcslcslaaaaaaaaaaaaaaaaaaaaacslcslcslcslcslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -10339,7 +10351,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaAda aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaAdaAdaAdaAdaAdaAdaAdaAdaAdaAdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaAdaAdaEdaEdaEdaEdaEdaEdcldcldcldcldcldcldcldcldiudivdiwdcldcldcldaEdaAdaAdaAdaAdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaAdaAdaAdaAdaAdaEdaEdaEdaEdaEdaEdaEdaAdaAdaAdaAdaAdaAdaAdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdiadixdiadiadiadiadiadiadigdiydcldcldcldcldcldcldcldcldcldcldclaaaaaaaaaaaaaaaaaaaaaaaaaaadaEdaEdaEdaEdaEdaEdaEdcldcldcldcldcldhodeCdeDdcldcldcldcldcldcldcldcldcldaEdaEdaEdaEdaEdaHdaHdaHdaHdaHdaHdaHdaHdaHdaEdaEdaEdaEdaEdaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaAdaAdaAdaAdaAdaAdaAdaAdaAdaAdaAdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaAdaEdaEdcldcldizdizdizdizdizdizdiAdiBdiBdiCdizdizdizdizdiDdcldcldaEdaAdaAdaAdaAdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaAdaAdaAdaAdaEdaEdcldcldcldcldcldaEdaEdaEdaEdaEdaAdaAdaAdaAdaAdaAdaAdaCdaCdaCdaCdiadiadiadiadiEdiFdiGdiadiediHdiadimdiadiadiadiIdiJdiKdiadcldcldcldcldcldclaaaaaaaaaaaaaaaaaaaaaaaaaaadaEdaEdaEdaEdaEdcldcldcldcldcldcldeydePdeAdcldcldcldcldcldcldcldcldcldaEdaEdaEdaEdaEdaHdaHdaHdaHdaHdaHdaHdaHdaEdaEdaEdaEdaEdaEdaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaAaaaaaadaAdaAdaAdaAdaAdaAdaAdaAdaAdaAdaAdaAdaCdaCdaCdaCdaCdaCdaCdaAdaAdaEdcldcldcldizdiLdiMdiNdiOdiPdiQdiRdiSdiSdiTdiUdiVdiWdeDdcldcldaEdaEdaEdaEdaAdaAdaAdaAdaAdaAdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaAdaAdaAdaAdaAdaEdaEdcldcldcldcldcldcldcldcldcldcldaEdaEdaEdaEdaEdaAdaAdaAdaAdaAdaCdaCdiadiXdiYdiZdjadjbdjcdiadiidijdjddigdiadjedjfdjgdjgdjgdipdcldcldcldcldcldcldclaaaaaaaaaaaaaaaaaaaaaaaaaaadaEdaEdaEdcldcldcldcldcldcldcldcldjhdjidjjdjkdjidjidcldcldcldcldcldcldaEdaEdaEdaEdaEdaHdaHdaHdaHdaHdaHdaHdaEdaEdaEdaEdaEdaEdaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaAdaAdaAdaAdaAdaAdaAdaAdaAdaAdaAdaAdaAdaCdaCdaCdaCdaCdaCdaAdaAdaEdcldcldcldizdjldiUdjmdjndiUdiUdiUdiUdiUdjodiUdiVdjpdjqdcldcldcldcldcldaEdaEdaEdaAdaAdaAdaAdaAdaAdaAdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaAdaAdaAdaEdaEdaEdcldcldcldcldcldcldcldcldcldcldcldcldcldcldcldaEdaEdaAdaAdaAdaAdaAdaCdiadjrdjbdjsdjtdjudjvdiadiadiadiadigdiadjedjwdjwdjwdjxdisdcldcldcldcldcldcldclaaaaaaaaaaaaaaaaaaaaaaaaaaadcldcldcldcldcldcldcldcldcldcldcldjhdjydjydjydjzdjidcldjAdcldcldcldcldaEdaEdaEdaEdaEdaHdaHdaHdaHdaHdaHdaHdaEdaEdaEdaEdaEdaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaAdaAdaAdaAdaAdaAdaAdaAdaAdaAdaAdaAdaAdaCdaCdaCdaCdaCdaCdaAdaAdaEdcldcldcldizdjldiUdjmdjndiUdiUdiUdiUdiUdjodiUdiVdjpdjqdcldcldcldcldcldaEdaEdaEdaAdaAdaAdaAdaAdaAdaAdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaAdaAdaAdaEdaEdaEdcldcldcldcldcldcldcldcldcldcldcldcldcldcldcldaEdaEdaAdaAdaAdaAdaAdaCdiadjrdjbdjsdjtdjudjvdiadiadiadiadigdiadjedjwdjwdjwdjxdisdcldcldcldcldcldcldclaaaaaaaaaaaaaaaaaaaaaaaaaaadcldcldcldcldcldcldcldcldcldcldcldjhdtrdtqdtqdtqdjidcldjAdcldcldcldcldaEdaEdaEdaEdaEdaHdaHdaHdaHdaHdaHdaHdaEdaEdaEdaEdaEdaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaAdaAdaAdaAdaAdaAdaAdaAdaAdaAdaAdaAdaAdaAdaAdaAdaCdaCdaCdaAdaAdaEdcldcldcldizdjBdiUdiUdjCdiUdiUdiUdiUdiUdiTdjDdjEdiTdeAdcldcldcldcldcldcldcldaEdaEdaEdaEdaAdaAdaAdaAdaAdaCdaCdaCdaCdaCdaCdaCdaCdaAdaAdaAdaAdaEdaEdcldcldcldcldcldcldcldcldcldcldcldcldcldcldcldcldcldcldaEdaEdaEdaEdaAdaAdaCdiadjFdjbdjGdjbdjHdjbdjIdjxdjJdjKdjLdiadjMdjwdjNdjwdjOdiydcldcldcldcldcldclaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcldcldcldcldcldjPdjPdjQdjRdjhdjSdjTdjTdjUdjidjidjidjidcldcldcldcldaEdaEdaEdaEdaHdaHdaHdaHdaHdaHdaHdaEdaEdaEdaEdaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaAdaAdaAdaAdaAdaAdaAdaAdaAdaAdaAdaAdaAdaAdaAdaAdaAdaAdaAdaEdaEdcldcldizdjVdiUdjWdjXdjYdjZdkadiUdkbdizdizdizdizdizdhodeDdcldcldcldcldcldcldcldcldaEdaEdaEdaAdaAdaAdaCdaCdaCdaCdaCdaCdaCdaCdaAdaAdaAdaAdaEdcldcldcldcldcldcldcldcldcldcldcldhodeDdcldcldcldcldcldcldcldcldcldaEdaEdaAdaAdiadiadiadiadiadiadiadkcdkddkedkcdkddiadiadiadiadiadkfdiadiadkgdkhdcldclaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcldcldkidjRdkjdkkdkldkmdkndkodkodkpdkqdkrdksdktdeDdcldcldclddadaEdaEdaEdaEdaEdaHdaHdaHdaHdaHdaEdaEdaEdaEdaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaAdaAaaadaAdaAdaAdaAdaAdaAdaAdaAdaAdaAdaAdaAdaAdaAdaAdaAdaEdcldcldizdkudiUdkvdjndkwdkxdkydiUdkzdkAdkBdkCdkDdkEdhvdhwdgSdgSdgSdgSdgSdfQdcldcldcldcldaEdaEdaEdaAdaAdaCdaCdaCdaCdaCdaCdaAdaAdaAdaAdaEdaEdcldcldhpdgSdgSdgSdgSdgSdgSdgSdgSdhvdhwdgSdgSdgSdgSdfQdcldcldcldcldcldaEdaAdaAdaAdaAdaAdiadkFdkGdkHdjwdjOdkIdjxdjOdjIdkJdkKdjwdjxdjOdjwdjwdkLdkMdiJdiKdkNdkOdkOdkOdkOdkOdkOdkOdkPdkPdkPdkPdkPdkPdkPdjQdkQdkRdkSdkkdkTdkUdkVdkWdkodkodkodkXdkYdkZdladjqdcldcldclddadaEdaEdaEdaEdaEdaHdaHdaHdaHdaHdaEdaEdaEdaEdaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm index 64b81956da8..9f40bca0737 100644 --- a/code/game/machinery/suit_storage_unit.dm +++ b/code/game/machinery/suit_storage_unit.dm @@ -35,6 +35,35 @@ HELMET_TYPE = /obj/item/clothing/head/helmet/space MASK_TYPE = /obj/item/clothing/mask/breath +/obj/machinery/suit_storage_unit/captain + SUIT_TYPE = /obj/item/clothing/suit/space/captain + HELMET_TYPE = /obj/item/clothing/head/helmet/space/capspace + MASK_TYPE = /obj/item/clothing/mask/gas + +/obj/machinery/suit_storage_unit/engine + SUIT_TYPE = /obj/item/clothing/suit/space/rig + HELMET_TYPE = /obj/item/clothing/head/helmet/space/rig + MASK_TYPE = /obj/item/clothing/mask/breath + + /obj/machinery/suit_storage_unit/ce + SUIT_TYPE = /obj/item/clothing/suit/space/rig/elite + HELMET_TYPE = /obj/item/clothing/head/helmet/space/rig/elite + MASK_TYPE = /obj/item/clothing/mask/breath + +/obj/machinery/suit_storage_unit/security + SUIT_TYPE = /obj/item/clothing/suit/space/rig/security + HELMET_TYPE = /obj/item/clothing/head/helmet/space/rig/security + MASK_TYPE = /obj/item/clothing/mask/gas/sechailer + +/obj/machinery/suit_storage_unit/atmos + SUIT_TYPE = /obj/item/clothing/suit/space/rig/atmos + HELMET_TYPE = /obj/item/clothing/head/helmet/space/rig/atmos + MASK_TYPE = /obj/item/clothing/mask/gas + +/obj/machinery/suit_storage_unit/mining + SUIT_TYPE = /obj/item/clothing/suit/space/rig/mining + HELMET_TYPE = /obj/item/clothing/head/helmet/space/rig/mining + MASK_TYPE = /obj/item/clothing/mask/breath /obj/machinery/suit_storage_unit/New() src.update_icon() @@ -108,10 +137,10 @@ return if(src.panelopen) //The maintenance panel is open. Time for some shady stuff dat+= "Suit storage unit: Maintenance panel" - dat+= "Maintenance panel controls
" - dat+= "The panel is ridden with controls, button and meters, labeled in strange signs and symbols that
you cannot understand. Probably the manufactoring world's language.
Among other things, a few controls catch your eye.

" - dat+= text("A small dial with a \"ë\" symbol embroidded on it. It's pointing towards a gauge that reads [].
Turn towards []
",(src.issuperUV ? "15nm" : "185nm"),src,(src.issuperUV ? "185nm" : "15nm") ) - dat+= text("A thick old-style button, with 2 grimy LED lights next to it. The [] LED is on.
Press button",(src.safetieson? "GREEN" : "RED"),src) + dat+= "Maintenance panel controls
" + dat+= "The panel is ridden with controls, button and meters, labeled in strange signs and symbols that
you cannot understand. Probably the manufactoring world's language.
Among other things, a few controls catch your eye.

" + dat+= text("A small dial with a \"ë\" symbol embroidded on it. It's pointing towards a gauge that reads [].
Turn towards []
",(src.issuperUV ? "15nm" : "185nm"),src,(src.issuperUV ? "185nm" : "15nm") ) + dat+= text("A thick old-style button, with 2 grimy LED lights next to it. The [] LED is on.
Press button",(src.safetieson? "GREEN" : "RED"),src) dat+= text("

Close panel", user) //user << browse(dat, "window=ssu_m_panel;size=400x500") //onclose(user, "ssu_m_panel") @@ -125,21 +154,21 @@ else if(!src.isbroken) dat+= "Suit storage unit" - dat+= "U-Stor-It Suit Storage Unit, model DS1900
" + dat+= "U-Stor-It Suit Storage Unit, model DS1900
" dat+= "Welcome to the Unit control panel.
" - dat+= text("Helmet storage compartment: []
",(src.HELMET ? HELMET.name : "
No helmet detected.") ) + dat+= text("Helmet storage compartment: []
",(src.HELMET ? HELMET.name : "No helmet detected.") ) if(HELMET && src.isopen) dat+=text("Dispense helmet
",src) - dat+= text("Suit storage compartment: []
",(src.SUIT ? SUIT.name : "
No exosuit detected.") ) + dat+= text("Suit storage compartment: []
",(src.SUIT ? SUIT.name : "No exosuit detected.") ) if(SUIT && src.isopen) dat+=text("Dispense suit
",src) - dat+= text("Breathmask storage compartment: []
",(src.MASK ? MASK.name : "
No breathmask detected.") ) + dat+= text("Breathmask storage compartment: []
",(src.MASK ? MASK.name : "No breathmask detected.") ) if(MASK && src.isopen) dat+=text("Dispense mask
",src) if(src.OCCUPANT) dat+= "
WARNING: Biological entity detected inside the Unit's storage. Please remove.
" dat+= "Eject extra load" - dat+= text("
Unit is: [] - [] Unit ",(src.isopen ? "Open" : "Closed"),src,(src.isopen ? "Close" : "Open")) + dat+= text("
Unit is: [] - [] Unit ",(src.isopen ? "Open" : "Closed"),src,(src.isopen ? "Close" : "Open")) if(src.isopen) dat+="
" else @@ -151,19 +180,23 @@ //onclose(user, "Suit Storage Unit") else //Ohhhh shit it's dirty or broken! Let's inform the guy. dat+= "Suit storage unit" - dat+= "Unit chamber is too contaminated to continue usage. Please call for a qualified individual to perform maintenance.

" + dat+= "Unit chamber is too contaminated to continue usage. Please call for a qualified individual to perform maintenance.

" dat+= text("
Close control panel", user) //user << browse(dat, "window=suit_storage_unit;size=400x500") //onclose(user, "suit_storage_unit") - user << browse(dat, "window=suit_storage_unit;size=400x500") - onclose(user, "suit_storage_unit") + var/datum/browser/popup = new(user, "suit_storage_unit", "Suit Storage Unit", 440, 500) + popup.set_content(dat) + popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) + popup.open() return /obj/machinery/suit_storage_unit/Topic(href, href_list) //I fucking HATE this proc if(..()) return + if(usr == src.OCCUPANT) //No unlocking yourself out! + return if ((usr.contents.Find(src) || ((get_dist(src, usr) <= 1) && istype(src.loc, /turf))) || (istype(usr, /mob/living/silicon/ai))) usr.set_machine(src) if (href_list["toggleUV"]) @@ -454,12 +487,10 @@ return -/obj/machinery/suit_storage_unit/verb/move_inside() - set name = "Hide in Suit Storage Unit" - set category = "Object" - set src in oview(1) - - if (usr.stat != 0) +/obj/machinery/suit_storage_unit/MouseDrop_T(mob/M as mob, mob/user as mob) + if(!istype(M)) + return + if (user.stat != 0) return if (!src.isopen) usr << "The unit's doors are shut." @@ -471,20 +502,16 @@ usr << "It's too cluttered inside for you to fit in!" return visible_message("[usr] starts squeezing into the suit storage unit!", 3) - if(do_after(usr, 10)) - usr.stop_pulling() - usr.client.perspective = EYE_PERSPECTIVE - usr.client.eye = src - usr.loc = src -// usr.metabslow = 1 + if(do_after(user, 10)) + user.stop_pulling() + user.client.perspective = EYE_PERSPECTIVE + user.client.eye = src + user.loc = src src.OCCUPANT = usr src.isopen = 0 //Close the thing after the guy gets inside src.update_icon() -// for(var/obj/O in src) -// qdel(O) - - src.add_fingerprint(usr) + src.add_fingerprint(user) src.updateUsrDialog() return else diff --git a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm index c839164a1bf..16cb0fc9253 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm @@ -26,14 +26,13 @@ new /obj/item/device/radio/headset/heads/ce(src) new /obj/item/weapon/storage/toolbox/mechanical(src) new /obj/item/clothing/suit/hazardvest(src) + new /obj/item/clothing/shoes/magboots/advance(src) new /obj/item/weapon/airlock_painter(src) new /obj/item/clothing/mask/gas(src) new /obj/item/device/multitool(src) new /obj/item/device/flash(src) return - - /obj/structure/closet/secure_closet/engineering_electrical name = "electrical supplies locker" req_access = list(access_engine_equip) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm index 9708aeb96f4..74d87dd10db 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm @@ -24,12 +24,11 @@ new /obj/item/clothing/head/helmet/swat(src) new /obj/item/clothing/shoes/brown(src) new /obj/item/device/radio/headset/heads/captain(src) + new /obj/item/weapon/tank/jetpack/oxygen(src) new /obj/item/clothing/gloves/captain(src) new /obj/item/weapon/gun/energy/gun(src) return - - /obj/structure/closet/secure_closet/hop name = "\proper head of personnel's locker" req_access = list(access_hop) From 03c183bb7dac5949fa3d88c944750baf8aff616e Mon Sep 17 00:00:00 2001 From: AnturK Date: Wed, 7 May 2014 11:33:56 +0200 Subject: [PATCH 073/185] Fixes one-way locks --- .../objects/items/weapons/storage/lockbox.dm | 92 ++++++++++--------- .../objects/items/weapons/storage/secure.dm | 6 ++ 2 files changed, 53 insertions(+), 45 deletions(-) diff --git a/code/game/objects/items/weapons/storage/lockbox.dm b/code/game/objects/items/weapons/storage/lockbox.dm index 5cfb8cb1178..d4789e638c6 100644 --- a/code/game/objects/items/weapons/storage/lockbox.dm +++ b/code/game/objects/items/weapons/storage/lockbox.dm @@ -17,57 +17,59 @@ var/icon_broken = "lockbox+b" - attackby(obj/item/weapon/W as obj, mob/user as mob) - if (istype(W, /obj/item/weapon/card/id)) - if(src.broken) - user << "\red It appears to be broken." - return - if(src.allowed(user)) - src.locked = !( src.locked ) - if(src.locked) - src.icon_state = src.icon_locked - user << "\red You lock the [src.name]!" - return - else - src.icon_state = src.icon_closed - user << "\red You unlock the [src.name]!" - return - else - user << "\red Access Denied." - return - else if((istype(W, /obj/item/weapon/card/emag)||istype(W, /obj/item/weapon/melee/energy/blade)) && !src.broken) - broken = 1 - locked = 0 - desc = "It appears to be broken." - icon_state = src.icon_broken - if(istype(W, /obj/item/weapon/melee/energy/blade)) - var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread() - spark_system.set_up(5, 0, src.loc) - spark_system.start() - playsound(src.loc, 'sound/weapons/blade1.ogg', 50, 1) - playsound(src.loc, "sparks", 50, 1) - for(var/mob/O in viewers(user, 3)) - O.show_message(text("\blue \The [src] has been sliced open by [] with an energy blade!", user), 1, text("\red You hear metal being sliced and sparks flying."), 2) +/obj/item/weapon/storage/lockbox/attackby(obj/item/weapon/W as obj, mob/user as mob) + if (istype(W, /obj/item/weapon/card/id)) + if(src.broken) + user << "\red It appears to be broken." + return + if(src.allowed(user)) + src.locked = !( src.locked ) + if(src.locked) + src.icon_state = src.icon_locked + user << "\red You lock the [src.name]!" return else - for(var/mob/O in viewers(user, 3)) - O.show_message(text("\blue \The [src] has been broken by [] with an electromagnetic card!", user), 1, text("You hear a faint electrical spark."), 2) + src.icon_state = src.icon_closed + user << "\red You unlock the [src.name]!" return - - if(!locked) - ..() else - user << "\red It's locked!" - return - - - show_to(mob/user as mob) - if(locked) - user << "\red It's locked!" + user << "\red Access Denied." + return + else if((istype(W, /obj/item/weapon/card/emag)||istype(W, /obj/item/weapon/melee/energy/blade)) && !src.broken) + broken = 1 + locked = 0 + desc = "It appears to be broken." + icon_state = src.icon_broken + if(istype(W, /obj/item/weapon/melee/energy/blade)) + var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread() + spark_system.set_up(5, 0, src.loc) + spark_system.start() + playsound(src.loc, 'sound/weapons/blade1.ogg', 50, 1) + playsound(src.loc, "sparks", 50, 1) + for(var/mob/O in viewers(user, 3)) + O.show_message(text("\blue \The [src] has been sliced open by [] with an energy blade!", user), 1, text("\red You hear metal being sliced and sparks flying."), 2) + return else - ..() - return + for(var/mob/O in viewers(user, 3)) + O.show_message(text("\blue \The [src] has been broken by [] with an electromagnetic card!", user), 1, text("You hear a faint electrical spark."), 2) + return + if(!locked) + ..() + else + user << "\red It's locked!" + return +/obj/item/weapon/storage/lockbox/show_to(mob/user as mob) + if(locked) + user << "\red It's locked!" + else + ..() + return + +/obj/item/weapon/storage/lockbox/can_be_inserted(obj/item/W, stop_messages = 0) + if(locked) + return 0 + return ..() /obj/item/weapon/storage/lockbox/loyalty name = "lockbox of loyalty implants" diff --git a/code/game/objects/items/weapons/storage/secure.dm b/code/game/objects/items/weapons/storage/secure.dm index 7eec058615b..fe4ced687cc 100644 --- a/code/game/objects/items/weapons/storage/secure.dm +++ b/code/game/objects/items/weapons/storage/secure.dm @@ -137,6 +137,12 @@ return return +/obj/item/weapon/storage/secure/can_be_inserted(obj/item/W, stop_messages = 0) + if(locked) + return 0 + return ..() + + // ----------------------------- // Secure Briefcase // ----------------------------- From f2493b4c3764ae2f6f97fa4908338f40259c03d7 Mon Sep 17 00:00:00 2001 From: Rolan7 Date: Wed, 7 May 2014 04:32:26 -0400 Subject: [PATCH 074/185] Makes trays a subclass of bag. This somewhat changes how items are placed on them, but for the better as it's more consistent with existing mechanics. Hitting someone with the tray still scatters the contents around! Works on nonhumans. Placing icons on the tray still makes them show up on the tray. Using the tray on a table now places the items onto the table, or places the tray itself if it's empty. Robots can't lose their tray this way, I checked. Service borgs can actually use their tray to carry things! Trays can hold all sorts of stuff, as long as it's small... A service borg can carry the nuke disk around. The pinpointer does follow it correctly. If the service borg stashes its tray module, dies, explodes, gibselfs, or is forced to stash its modules by damage, it drops all the tray's contents on the ground. Fixes #236 (service borgs can't use trays) and #2991 (Items on food trays can't be picked up). Didn't address #1919, the layer issue. Fixes the "bajillion lines changed" with the maps. --- _maps/map_files/MetaStation.v39K.dmm | 2 +- _maps/map_files/MiniStation/MiniStation.dmm | 2 +- _maps/map_files/tgstation.2.1.2.dmm | 2 +- _maps/map_files/tgstation.2.1.3.dmm | 2 +- code/game/machinery/kitchen/smartfridge.dm | 9 - code/game/machinery/vending.dm | 2 +- code/game/objects/items.dm | 4 +- code/game/objects/items/weapons/kitchen.dm | 228 +----------------- .../objects/items/weapons/storage/bags.dm | 55 +++++ .../objects/items/weapons/storage/storage.dm | 22 +- code/game/objects/structures/tables_racks.dm | 13 + .../mob/living/silicon/robot/inventory.dm | 3 + .../mob/living/silicon/robot/robot_modules.dm | 2 +- .../reagent_containers/food/snacks.dm | 2 +- 14 files changed, 92 insertions(+), 256 deletions(-) diff --git a/_maps/map_files/MetaStation.v39K.dmm b/_maps/map_files/MetaStation.v39K.dmm index 85d87c7d053..2d0318cf6ea 100644 --- a/_maps/map_files/MetaStation.v39K.dmm +++ b/_maps/map_files/MetaStation.v39K.dmm @@ -8010,7 +8010,7 @@ "cYb" = (/turf/simulated/floor/airless{dir = 10; icon_state = "warning"},/area/tcommsat/chamber) "cYc" = (/obj/structure/grille,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/derelict/bridge/access) "cYd" = (/turf/simulated/floor/airless{dir = 6; icon_state = "warning"},/area/tcommsat/chamber) -"cYe" = (/obj/structure/table/woodentable,/obj/item/weapon/tray,/obj/item/weapon/reagent_containers/food/snacks/burger/spell,/turf/unsimulated/floor{dir = 10; icon_state = "carpetside"},/area/wizard_station) +"cYe" = (/obj/structure/table/woodentable,/obj/item/weapon/storage/bag/tray,/obj/item/weapon/reagent_containers/food/snacks/burger/spell,/turf/unsimulated/floor{dir = 10; icon_state = "carpetside"},/area/wizard_station) "cYf" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/tcommsat/chamber) "cYg" = (/obj/machinery/door/airlock/hatch,/turf/simulated/floor,/area/tcommsat/chamber) "cYh" = (/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/tcommsat/chamber) diff --git a/_maps/map_files/MiniStation/MiniStation.dmm b/_maps/map_files/MiniStation/MiniStation.dmm index 052b83b8a64..6ee1d5cabdb 100644 --- a/_maps/map_files/MiniStation/MiniStation.dmm +++ b/_maps/map_files/MiniStation/MiniStation.dmm @@ -2271,7 +2271,7 @@ "aRI" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/syndicate,/obj/item/weapon/grenade/syndieminibomb,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) "aRJ" = (/obj/structure/bookcase{name = "bookcase (Tactics)"},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) "aRK" = (/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; freerange = 1; frequency = 1213; name = "Syndicate Intercom"; pixel_x = 32; subspace_transmission = 1; syndie = 1},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) -"aRL" = (/obj/structure/table/woodentable,/obj/item/weapon/tray,/obj/item/weapon/reagent_containers/food/snacks/burger/spell,/turf/unsimulated/floor{dir = 10; icon_state = "carpetside"},/area/wizard_station) +"aRL" = (/obj/structure/table/woodentable,/obj/item/weapon/storage/bag/tray,/obj/item/weapon/reagent_containers/food/snacks/burger/spell,/turf/unsimulated/floor{dir = 10; icon_state = "carpetside"},/area/wizard_station) "aRM" = (/turf/unsimulated/floor{dir = 2; icon_state = "carpetside"},/area/wizard_station) "aRN" = (/obj/structure/table/woodentable,/obj/effect/landmark{name = "Teleport-Scroll"},/turf/unsimulated/floor{dir = 6; icon_state = "carpetside"},/area/wizard_station) "aRO" = (/obj/machinery/recharger{pixel_y = 4},/obj/effect/landmark{name = "tdome2"},/turf/unsimulated/floor{name = "plating"},/area/tdome/tdome2) diff --git a/_maps/map_files/tgstation.2.1.2.dmm b/_maps/map_files/tgstation.2.1.2.dmm index b58f81d3a8d..f2b72b0ebe7 100644 --- a/_maps/map_files/tgstation.2.1.2.dmm +++ b/_maps/map_files/tgstation.2.1.2.dmm @@ -6497,7 +6497,7 @@ "cuW" = (/obj/structure/table,/obj/item/device/sbeacondrop/bomb,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) "cuX" = (/obj/structure/bookcase{name = "bookcase (Tactics)"},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) "cuY" = (/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; freerange = 1; frequency = 1213; name = "Syndicate Intercom"; pixel_x = 32; subspace_transmission = 1; syndie = 1},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) -"cuZ" = (/obj/structure/table/woodentable,/obj/item/weapon/tray,/obj/item/weapon/reagent_containers/food/snacks/burger/spell,/turf/unsimulated/floor{dir = 10; icon_state = "carpetside"},/area/wizard_station) +"cuZ" = (/obj/structure/table/woodentable,/obj/item/weapon/storage/bag/tray,/obj/item/weapon/reagent_containers/food/snacks/burger/spell,/turf/unsimulated/floor{dir = 10; icon_state = "carpetside"},/area/wizard_station) "cva" = (/turf/unsimulated/floor{dir = 2; icon_state = "carpetside"},/area/wizard_station) "cvb" = (/obj/structure/table/woodentable,/obj/effect/landmark{name = "Teleport-Scroll"},/turf/unsimulated/floor{dir = 6; icon_state = "carpetside"},/area/wizard_station) "cvc" = (/obj/machinery/recharger{pixel_y = 4},/obj/effect/landmark{name = "tdome2"},/turf/unsimulated/floor{name = "plating"},/area/tdome/tdome2) diff --git a/_maps/map_files/tgstation.2.1.3.dmm b/_maps/map_files/tgstation.2.1.3.dmm index 09bd53f6a84..63d42f91b89 100644 --- a/_maps/map_files/tgstation.2.1.3.dmm +++ b/_maps/map_files/tgstation.2.1.3.dmm @@ -7113,7 +7113,7 @@ "cGO" = (/obj/structure/table,/obj/item/device/sbeacondrop/bomb,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) "cGP" = (/obj/structure/bookcase{name = "bookcase (Tactics)"},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) "cGQ" = (/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; freerange = 1; frequency = 1213; name = "Syndicate Intercom"; pixel_x = 32; subspace_transmission = 1; syndie = 1},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) -"cGR" = (/obj/structure/table/woodentable,/obj/item/weapon/tray,/obj/item/weapon/reagent_containers/food/snacks/burger/spell,/turf/unsimulated/floor{dir = 10; icon_state = "carpetside"},/area/wizard_station) +"cGR" = (/obj/structure/table/woodentable,/obj/item/weapon/storage/bag/tray,/obj/item/weapon/reagent_containers/food/snacks/burger/spell,/turf/unsimulated/floor{dir = 10; icon_state = "carpetside"},/area/wizard_station) "cGS" = (/turf/unsimulated/floor{dir = 2; icon_state = "carpetside"},/area/wizard_station) "cGT" = (/obj/structure/table/woodentable,/obj/effect/landmark{name = "Teleport-Scroll"},/turf/unsimulated/floor{dir = 6; icon_state = "carpetside"},/area/wizard_station) "cGU" = (/obj/machinery/recharger{pixel_y = 4},/obj/effect/landmark{name = "tdome2"},/turf/unsimulated/floor{name = "plating"},/area/tdome/tdome2) diff --git a/code/game/machinery/kitchen/smartfridge.dm b/code/game/machinery/kitchen/smartfridge.dm index a2b378ba426..85f712a4079 100644 --- a/code/game/machinery/kitchen/smartfridge.dm +++ b/code/game/machinery/kitchen/smartfridge.dm @@ -60,15 +60,6 @@ if(accept_check(G)) load(G) loaded++ - else if(istype(O, /obj/item/weapon/tray)) - var/obj/item/weapon/tray/T = O - for(var/obj/item/snack in T) - if(contents.len >= max_n_of_items) - break - if(accept_check(snack)) - T.carrying -= snack - load(snack) - loaded++ else user << "\The [src] smartly refuses [O]." updateUsrDialog() diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index ec83db9dcee..2a7ecd44cc8 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -803,7 +803,7 @@ desc = "A kitchen and restaurant equipment vendor" product_ads = "Mm, food stuffs!;Food and food accessories.;Get your plates!;You like forks?;I like forks.;Woo, utensils.;You don't really need these..." icon_state = "dinnerware" - products = list(/obj/item/weapon/tray = 8,/obj/item/weapon/kitchen/utensil/fork = 6,/obj/item/weapon/kitchenknife = 3,/obj/item/weapon/reagent_containers/food/drinks/drinkingglass = 8,/obj/item/clothing/suit/chef/classic = 2,/obj/item/weapon/reagent_containers/food/condiment/pack/ketchup = 5,/obj/item/weapon/reagent_containers/food/condiment/pack/hotsauce = 5) + products = list(/obj/item/weapon/storage/bag/tray = 8,/obj/item/weapon/kitchen/utensil/fork = 6,/obj/item/weapon/kitchenknife = 3,/obj/item/weapon/reagent_containers/food/drinks/drinkingglass = 8,/obj/item/clothing/suit/chef/classic = 2,/obj/item/weapon/reagent_containers/food/condiment/pack/ketchup = 5,/obj/item/weapon/reagent_containers/food/condiment/pack/hotsauce = 5) contraband = list(/obj/item/weapon/kitchen/rollingpin = 2, /obj/item/weapon/butch = 2) /obj/machinery/vending/sovietsoda diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 2425331ded6..ff296e1dfec 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -208,9 +208,9 @@ success = 1 S.handle_item_insertion(I, 1) //The 1 stops the "You put the [src] into [S]" insertion message from being displayed. if(success && !failure) - user << "You put everything in [S]." + user << "You put everything [S.preposition] [S]." else if(success) - user << "You put some things in [S]." + user << "You put some things [S.preposition] [S]." else user << "You fail to pick anything up with [S]." diff --git a/code/game/objects/items/weapons/kitchen.dm b/code/game/objects/items/weapons/kitchen.dm index 2db80a1c890..74dd7e645a4 100644 --- a/code/game/objects/items/weapons/kitchen.dm +++ b/code/game/objects/items/weapons/kitchen.dm @@ -192,230 +192,4 @@ return ..() -/* - * Trays - Agouri - */ -/obj/item/weapon/tray - name = "tray" - icon = 'icons/obj/food.dmi' - icon_state = "tray" - desc = "A metal tray to lay food on." - throwforce = 10.0 - throw_speed = 3 - throw_range = 5 - w_class = 3.0 - flags = CONDUCT - m_amt = 3000 - var/list/carrying = list() // List of things on the tray. - Doohl - var/max_carry = 10 // w_class = 1 -- takes up 1 - // w_class = 2 -- takes up 3 - // w_class = 3 -- takes up 5 - -/obj/item/weapon/tray/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob) - - // Drop all the things. All of them. - overlays.Cut() - for(var/obj/item/I in carrying) - I.loc = M.loc - carrying.Remove(I) - if(isturf(I.loc)) - spawn() - for(var/i = 1, i <= rand(1,2), i++) - if(I) - step(I, pick(NORTH,SOUTH,EAST,WEST)) - sleep(rand(2,4)) - - - if((CLUMSY in user.mutations) && prob(50)) //What if he's a clown? - user << " You accidentally slam yourself with the [src]!" - user.Weaken(1) - user.take_organ_damage(2) - if(prob(50)) - playsound(M, 'sound/items/trayhit1.ogg', 50, 1) - return - else - playsound(M, 'sound/items/trayhit2.ogg', 50, 1) //sound playin' - return //it always returns, but I feel like adding an extra return just for safety's sakes. EDIT; Oh well I won't :3 - - add_logs(user, M, "attacked", object="[src.name]") - - if(istype(M, /mob/living/carbon/human)) - - var/mob/living/carbon/human/H = M ///////////////////////////////////// /Let's have this ready for later. - - if(prob(50)) - playsound(M, 'sound/items/trayhit1.ogg', 50, 1) - else - playsound(M, 'sound/items/trayhit2.ogg', 50, 1) - - - if(prob(33)) - src.add_blood(H) - var/turf/location = H.loc - if (istype(location, /turf/simulated)) //Addin' blood! At least on the floor. - location.add_blood(H) - - if(!(user.zone_sel.selecting == ("eyes" || "head"))) //////////////hitting anything else other than the eyes - - H.visible_message("[user] slams [H] with the tray!", \ - "[user] slams [H] with the tray!") - - if(prob(15)) - M.Weaken(3) - M.take_organ_damage(3) - return - else - M.take_organ_damage(5) - return - - - if((H.head && H.head.flags & HEADCOVERSEYES) || (H.wear_mask && H.wear_mask.flags & MASKCOVERSEYES) || (H.glasses && H.glasses.flags & GLASSESCOVERSEYES)) - if(prob(33)) - if (H.wear_mask) - H.wear_mask.add_blood(H) //adding blood on the items. - if (H.head) - H.head.add_blood(H) - if (H.glasses && prob(33)) - H.glasses.add_blood(H) - - - M.visible_message("[user] slams [M] in the face with the tray!", \ - "[user] slams [M] in the face with the tray, against your mask!") - - if(prob(10)) - M.Stun(rand(1,3)) - M.take_organ_damage(3) - return - else - M.take_organ_damage(5) - return - - else //No eye or head protection, tough luck! - - M.visible_message("[user] slams [M] in the face with the tray!", \ - "[user] slams [M] in the face with the tray!") - if(prob(30)) - M.Stun(rand(2,4)) - M.take_organ_damage(4) - return - else - M.take_organ_damage(8) - if(prob(30)) - M.Weaken(2) - return - return - - else - ..() - - -/* -===============~~~~~================================~~~~~==================== -= = -= Code for trays carrying things. By Doohl for Doohl erryday Doohl Doohl~ = -= = -===============~~~~~================================~~~~~==================== -*/ -/obj/item/weapon/tray/proc/calc_carry() - // calculate the weight of the items on the tray - var/val = 0 // value to return - - for(var/obj/item/I in carrying) - if(I.w_class == 1.0) - val ++ - else if(I.w_class == 2.0) - val += 3 - else - val += 5 - - return val - -/obj/item/weapon/tray/pickup(mob/user) - - if(!isturf(loc)) - return - - for(var/obj/item/I in loc) - if( I != src && !I.anchored && !istype(I, /obj/item/clothing/under) && !istype(I, /obj/item/clothing/suit) && !istype(I, /obj/item/projectile) ) - var/add = 0 - if(I.w_class == 1.0) - add = 1 - else if(I.w_class == 2.0) - add = 3 - else - add = 5 - if(calc_carry() + add >= max_carry) - break - - I.loc = src - carrying.Add(I) - overlays += image("icon" = I.icon, "icon_state" = I.icon_state, "layer" = 30 + I.layer) - -/obj/item/weapon/tray/dropped(mob/user) - - var/mob/living/M - for(M in src.loc) //to handle hand switching - return - - var/foundtable = 0 - for(var/obj/structure/table/T in loc) - foundtable = 1 - break - - overlays.Cut() - - for(var/obj/item/I in carrying) - I.loc = loc - carrying.Remove(I) - if(!foundtable && isturf(loc)) - // if no table, presume that the person just shittily dropped the tray on the ground and made a mess everywhere! - spawn() - for(var/i = 1, i <= rand(1,2), i++) - if(I) - step(I, pick(NORTH,SOUTH,EAST,WEST)) - sleep(rand(2,4)) - - - - - -///////////////////////////////////////////////////////////////////////////////////////// -//Enough with the violent stuff, here's what happens if you try putting food on it -///////////////////////////////////////////////////////////////////////////////////////////// - - - -/*/obj/item/weapon/tray/attackby(obj/item/weapon/W as obj, mob/user as mob) - if(istype(W,/obj/item/weapon/kitchen/utensil/fork)) - if (W.icon_state == "forkloaded") - user << "\red You already have omelette on your fork." - return - W.icon = 'icons/obj/kitchen.dmi' - W.icon_state = "forkloaded" - viewers(3,user) << "[user] takes a piece of omelette with his fork!" - reagents.remove_reagent("nutriment", 1) - if (reagents.total_volume <= 0) - qdel(src)*/ - - -/* if (prob(33)) - var/turf/location = H.loc - if (istype(location, /turf/simulated)) - location.add_blood(H) - if (H.wear_mask) - H.wear_mask.add_blood(H) - if (H.head) - H.head.add_blood(H) - if (H.glasses && prob(33)) - H.glasses.add_blood(H) - if (istype(user, /mob/living/carbon/human)) - var/mob/living/carbon/human/user2 = user - if (user2.gloves) - user2.gloves.add_blood(H) - else - user2.add_blood(H) - if (prob(15)) - if (user2.wear_suit) - user2.wear_suit.add_blood(H) - else if (user2.w_uniform) - user2.w_uniform.add_blood(H)*/ +/* Trays moved to /obj/item/weapon/storage/bag */ diff --git a/code/game/objects/items/weapons/storage/bags.dm b/code/game/objects/items/weapons/storage/bags.dm index d10a7e3963b..3eb49debd48 100644 --- a/code/game/objects/items/weapons/storage/bags.dm +++ b/code/game/objects/items/weapons/storage/bags.dm @@ -262,3 +262,58 @@ max_w_class = 3 w_class = 4 //Bigger than a book because physics can_hold = list(/obj/item/weapon/book, /obj/item/weapon/spellbook) //No bibles, consistent with bookcase + +/* + * Trays - Agouri + */ +/obj/item/weapon/storage/bag/tray + name = "tray" + icon = 'icons/obj/food.dmi' + icon_state = "tray" + desc = "A metal tray to lay food on." + force = 5 + throwforce = 10.0 + throw_speed = 3 + throw_range = 5 + w_class = 4.0 + flags = CONDUCT + m_amt = 3000 + preposition = "on" + +/obj/item/weapon/storage/bag/tray/attack(mob/living/M as mob, mob/living/user as mob) + ..() + // Drop all the things. All of them. + var/list/obj/item/oldContents = contents.Copy() + quick_empty() + + // Make each item scatter a bit + for(var/obj/item/I in oldContents) + spawn() + for(var/i = 1, i <= rand(1,2), i++) + if(I) + step(I, pick(NORTH,SOUTH,EAST,WEST)) + sleep(rand(2,4)) + + if(prob(50)) + playsound(M, 'sound/items/trayhit1.ogg', 50, 1) + else + playsound(M, 'sound/items/trayhit2.ogg', 50, 1) + + if(ishuman(M) || ismonkey(M)) + if(prob(10)) + M.Weaken(2) + +/obj/item/weapon/storage/bag/tray/proc/rebuild_overlays() + overlays.Cut() + for(var/obj/item/I in contents) + overlays += image("icon" = I.icon, "icon_state" = I.icon_state, "layer" = 30 + I.layer) + +/obj/item/weapon/storage/bag/tray/remove_from_storage(obj/item/W as obj, atom/new_location) + ..() + rebuild_overlays() + +/obj/item/weapon/storage/bag/tray/handle_item_insertion(obj/item/I, prevent_warning = 0) + overlays += image("icon" = I.icon, "icon_state" = I.icon_state, "layer" = 30 + I.layer) + ..() + + diff --git a/code/game/objects/items/weapons/storage/storage.dm b/code/game/objects/items/weapons/storage/storage.dm index 85da667cd4c..9abc023b4cd 100644 --- a/code/game/objects/items/weapons/storage/storage.dm +++ b/code/game/objects/items/weapons/storage/storage.dm @@ -21,6 +21,7 @@ var/allow_quick_empty //Set this variable to allow the object to have the 'empty' verb, which dumps all the contents on the floor. var/allow_quick_gather //Set this variable to allow the object to have the 'toggle mode' verb, which quickly collects all items from a tile. var/collection_mode = 1; //0 = pick one at a time, 1 = pick all on tile, 2 = pick all of a type + var/preposition = "in" // You put things 'in' a bag, but trays need 'on'. /obj/item/weapon/storage/MouseDrop(obj/over_object) @@ -262,11 +263,11 @@ if(!prevent_warning && !istype(W, /obj/item/weapon/gun/energy/crossbow)) for(var/mob/M in viewers(usr, null)) if(M == usr) - usr << "You put [W] into [src]." + usr << "You put [W] [preposition]to [src]." else if(in_range(M, usr)) //If someone is standing close enough, they can tell what it is... - M.show_message("[usr] puts [W] into [src].") + M.show_message("[usr] puts [W] [preposition]to [src].") else if(W && W.w_class >= 3.0) //Otherwise they can only see large or normal items from a distance... - M.show_message("[usr] puts [W] into [src].") + M.show_message("[usr] puts [W] [preposition]to [src].") orient2hud(usr) if(usr.s_active) @@ -321,12 +322,6 @@ if(!can_be_inserted(W)) return 0 - if(istype(W, /obj/item/weapon/tray)) //THIS ISN'T HOW OOP WORKS - var/obj/item/weapon/tray/T = W - if(T.calc_carry() > 0) - user << "[T] won't fit in [src]." - return 1 - handle_item_insertion(W) return 1 @@ -376,7 +371,7 @@ if(0) usr << "[src] now picks up one item at a time." - +// Empty all the contents onto the current turf /obj/item/weapon/storage/verb/quick_empty() set name = "Empty Contents" set category = "Object" @@ -384,8 +379,13 @@ if((!ishuman(usr) && (loc != usr)) || usr.stat || usr.restrained()) return + do_quick_empty() + +// Empty all the contents onto the current turf, without checking the user's status. +/obj/item/weapon/storage/proc/do_quick_empty() var/turf/T = get_turf(src) - hide_from(usr) + if(usr) + hide_from(usr) for(var/obj/item/I in contents) remove_from_storage(I, T) diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index bc44ecd7791..a884c27809f 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -559,6 +559,19 @@ if (istype(I, /obj/item/weapon/wrench)) table_destroy(2, user) return + + if (istype(I, /obj/item/weapon/storage/bag/tray)) + var/obj/item/weapon/storage/bag/tray/T = I + if(T.contents.len > 0) // If the tray isn't empty + var/list/obj/item/oldContents = T.contents.Copy() + T.quick_empty() + + for(var/obj/item/C in oldContents) + C.loc = src.loc + + user.visible_message("[user] empties [I] on [src].") + return + // If the tray IS empty, continue on (tray will be placed on the table like other items) if(isrobot(user)) return diff --git a/code/modules/mob/living/silicon/robot/inventory.dm b/code/modules/mob/living/silicon/robot/inventory.dm index 0139fd0e33f..08109272c81 100644 --- a/code/modules/mob/living/silicon/robot/inventory.dm +++ b/code/modules/mob/living/silicon/robot/inventory.dm @@ -20,6 +20,9 @@ if(F.on) F.on = 0 F.update_brightness(src) + else if(istype(O, /obj/item/weapon/storage/bag/tray/)) + var/obj/item/weapon/storage/bag/tray/T = O + T.do_quick_empty() if(client) client.screen -= O contents -= O diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index 2401c132ad5..277bacfe30b 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -193,7 +193,7 @@ L.lit = 1 modules += L - modules += new /obj/item/weapon/tray(src) + modules += new /obj/item/weapon/storage/bag/tray(src) modules += new /obj/item/weapon/reagent_containers/borghypo/borgshaker(src) emag = new /obj/item/weapon/reagent_containers/food/drinks/beer(src) diff --git a/code/modules/reagents/reagent_containers/food/snacks.dm b/code/modules/reagents/reagent_containers/food/snacks.dm index f0c7e7eaf8e..e58d54e3195 100644 --- a/code/modules/reagents/reagent_containers/food/snacks.dm +++ b/code/modules/reagents/reagent_containers/food/snacks.dm @@ -161,7 +161,7 @@ !isturf(src.loc) || \ !(locate(/obj/structure/table) in src.loc) && \ !(locate(/obj/structure/optable) in src.loc) && \ - !(locate(/obj/item/weapon/tray) in src.loc) \ + !(locate(/obj/item/weapon/storage/bag/tray) in src.loc) \ ) user << "You cannot slice [src] here! You need a table or at least a tray." return 1 From fc5418d0754bac004e4c11e37c86c8d324d30c6f Mon Sep 17 00:00:00 2001 From: phil235 Date: Wed, 7 May 2014 19:49:04 +0200 Subject: [PATCH 075/185] Fixing checks when forcing windoor. --- code/game/machinery/doors/windowdoor.dm | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm index 248d5225067..24f933d858f 100644 --- a/code/game/machinery/doors/windowdoor.dm +++ b/code/game/machinery/doors/windowdoor.dm @@ -99,8 +99,11 @@ return 0 if (!ticker) return 0 + if(!forced) + if(stat & NOPOWER) + return 0 if(forced < 2) - if( (stat & NOPOWER) || emagged ) + if(emagged) return 0 if(!src.operating) //in case of emag src.operating = 1 @@ -122,8 +125,11 @@ /obj/machinery/door/window/close(var/forced=0) if (src.operating) return 0 + if(!forced) + if(stat & NOPOWER) + return 0 if(forced < 2) - if(emagged || (stat & NOPOWER)) + if(emagged) return 0 src.operating = 1 flick(text("[]closing", src.base_state), src) From 23d88fd3e9cf6719b96d8cb54f5afd465e433d6e Mon Sep 17 00:00:00 2001 From: phil235 Date: Wed, 7 May 2014 20:22:34 +0200 Subject: [PATCH 076/185] changeling armblade can force open unpowered windoors. --- code/game/gamemodes/changeling/powers/mutations.dm | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/code/game/gamemodes/changeling/powers/mutations.dm b/code/game/gamemodes/changeling/powers/mutations.dm index 6ab4db1fe08..dc08ee1ec20 100644 --- a/code/game/gamemodes/changeling/powers/mutations.dm +++ b/code/game/gamemodes/changeling/powers/mutations.dm @@ -90,6 +90,19 @@ user.visible_message("[user] forces the door to open with \his [src]!", "We force the door to open.", "You hear a metal screeching sound.") A.open(1) + else if(istype(target, /obj/machinery/door/window)) + var/obj/machinery/door/window/W = target + + if(!W.requiresID() || W.allowed(user)) + return + + if(!(W.stat & NOPOWER)) + user << "[W]'s motors resist our efforts to force it." + return + else + user.visible_message("[user] forces the door to open with \his [src]!", "We force the door to open.", "You hear a glass screeching sound.") + W.open(1) + //Space Suit & Helmet /obj/effect/proc_holder/changeling/organic_space_suit name = "Organic Space Suit" From 5b219ea119d34dc1bfc71c124558d5db72105804 Mon Sep 17 00:00:00 2001 From: Rolan7 Date: Wed, 7 May 2014 14:54:35 -0400 Subject: [PATCH 077/185] Fixes issue #146, borgs placing modules on people Simple fix for this one... --- code/modules/mob/mob.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 5aae6fa1b3f..4cfa3f958e6 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -501,6 +501,8 @@ var/list/slot_equipment_priority = list( \ if(what && Adjacent(usr)) unEquip(what) else + if(isrobot(usr)) // Borgs can't give people their items... + return what = usr.get_active_hand() if(what && (what.flags & NODROP)) usr << "You can't put \the [what.name] on [src], it's stuck to your hand!" From 1867d32a8a0dd4f252f74e1e945641494cb5b750 Mon Sep 17 00:00:00 2001 From: Menshin Date: Wed, 7 May 2014 21:03:11 +0200 Subject: [PATCH 078/185] *Corrected right/left on mob sprites for the energy gun, the taser and the disabler (fixes #3636). --- icons/mob/items_lefthand.dmi | Bin 161714 -> 161835 bytes icons/mob/items_righthand.dmi | Bin 162315 -> 162837 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/mob/items_lefthand.dmi b/icons/mob/items_lefthand.dmi index 05372ffc31bf6a62f5e6b75d51c860be38c60cfb..1bd703fc284e4261bd738bfad3ce0a353e51cf12 100644 GIT binary patch delta 40260 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%0DyuX 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

4Y}p~Hs6X{N8>oMt}De9 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�HCq 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 Date: Thu, 8 May 2014 11:57:01 -0500 Subject: [PATCH 079/185] Cleans up the cleanbot a little! --- code/game/machinery/bots/cleanbot.dm | 28 ++++++++++++---------------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/code/game/machinery/bots/cleanbot.dm b/code/game/machinery/bots/cleanbot.dm index 47dcf7116b9..8f4a3e2d90d 100644 --- a/code/game/machinery/bots/cleanbot.dm +++ b/code/game/machinery/bots/cleanbot.dm @@ -25,8 +25,6 @@ health = 25 maxhealth = 25 var/cleaning = 0 - var/screwloose = 0 - var/oddbutton = 0 var/blood = 1 var/list/target_types = list() var/obj/effect/decal/cleanable/target @@ -92,12 +90,12 @@ text("[src.on ? "On" : "Off"]")) dat += text({"
Cleans Blood: []
"}, text("[src.blood ? "Yes" : "No"]")) dat += text({"
Patrol station: []
"}, text("[src.should_patrol ? "Yes" : "No"]")) // dat += text({"
Beacon frequency: []
"}, text("[src.beacon_freq]")) - if(src.open && !src.locked) +/* if(src.open && !src.locked) dat += text({" Odd looking screw twiddled: []
Weird button pressed: []"}, text("[src.screwloose ? "Yes" : "No"]"), -text("[src.oddbutton ? "Yes" : "No"]")) +text("[src.oddbutton ? "Yes" : "No"]"))*/ user << browse("Cleaner v1.0 controls[dat]", "window=autocleaner") onclose(user, "autocleaner") @@ -127,18 +125,17 @@ text("[src.oddbutton ? "Yes" : "No" if (freq > 0) src.beacon_freq = freq src.updateUsrDialog() - if("screw") +/* if("screw") src.screwloose = !src.screwloose usr << "You press the weird button." - src.updateUsrDialog() + src.updateUsrDialog() */ if("hack") - if(!src.oddbutton) - src.emagged = 2 //Cleanbots are odd, this is here to ensure the "compromised" status updates properly. - src.oddbutton = 1 + if(!src.emagged) + src.emagged = 2 src.hacked = 1 usr << "You corrupt [src]'s cleaning software." else if(!src.hacked) @@ -146,7 +143,6 @@ text("[src.oddbutton ? "Yes" : "No" else src.hacked = 0 src.emagged = 0 - src.oddbutton = 0 usr << "[src]'s software has been reset!" src.updateUsrDialog() @@ -168,9 +164,8 @@ text("[src.oddbutton ? "Yes" : "No" /obj/machinery/bot/cleanbot/Emag(mob/user as mob) ..() if(open && !locked) - if(user) user << "The [src] buzzes and beeps." - src.oddbutton = 1 - src.screwloose = 1 + if(user) user << "[src] buzzes and beeps." + src.emagged = 2 /obj/machinery/bot/cleanbot/process() set background = BACKGROUND_ENABLED @@ -181,17 +176,18 @@ text("[src.oddbutton ? "Yes" : "No" return var/list/cleanbottargets = list() - if(!src.screwloose && !src.oddbutton && prob(5)) + if(!src.emagged && prob(5)) visible_message("[src] makes an excited beeping booping sound!") - if(src.screwloose && prob(5)) + if(src.emagged && prob(10)) //Wets floors randomly if(istype(loc,/turf/simulated)) var/turf/simulated/T = src.loc T.MakeSlippery() - if(src.oddbutton && prob(5)) + if(src.emagged && prob(5)) //Spawns foam! visible_message("[src] whirs and bubbles violently, before releasing a plume of froth!") new /obj/effect/effect/foam(src.loc) + if(!src.target || src.target == null) for (var/obj/effect/decal/cleanable/D in view(7,src)) for(var/T in src.target_types) From 6a7a7a390ff43f464d8627397730da9979911865 Mon Sep 17 00:00:00 2001 From: MrStonedOne Date: Thu, 8 May 2014 13:14:55 -0700 Subject: [PATCH 080/185] Admins without +varedit will no longer see a error when they open a nested variable in view variables --- code/datums/datumvars.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/datums/datumvars.dm b/code/datums/datumvars.dm index d333851fb73..4dba24ce357 100644 --- a/code/datums/datumvars.dm +++ b/code/datums/datumvars.dm @@ -405,7 +405,7 @@ client if(href_list["Vars"]) debug_variables(locate(href_list["Vars"])) - if(href_list["datumrefresh"]) + else if(href_list["datumrefresh"]) var/datum/DAT = locate(href_list["datumrefresh"]) if(!istype(DAT, /datum)) return From b607d50e7a19eec83801b5e0de364d870cfeba5e Mon Sep 17 00:00:00 2001 From: MrStonedOne Date: Thu, 8 May 2014 13:17:23 -0700 Subject: [PATCH 081/185] Admins lacking +admin get admin pm stuff They can use like 50 herf links to do this already, including rightclick mob -> view vars -> player panel -> pm --- code/modules/admin/admin_verbs.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 54209b4b4b4..384b2171c29 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -13,7 +13,9 @@ var/list/admin_verbs_default = list( /client/proc/toggle_hear_radio, /*toggles whether we hear the radio*/ /client/proc/investigate_show, /*various admintools for investigation. Such as a singulo grief-log*/ /client/proc/secrets, - /client/proc/reload_admins + /client/proc/reload_admins, + /client/proc/cmd_admin_pm_context, /*right-click adminPM interface*/ + /client/proc/cmd_admin_pm_panel /*admin-pm list*/ ) var/list/admin_verbs_admin = list( /client/proc/player_panel, /*shows an interface for all players, with links to various panels (old style)*/ @@ -33,8 +35,6 @@ var/list/admin_verbs_admin = list( /client/proc/toggle_view_range, /*changes how far we can see*/ /datum/admins/proc/view_txt_log, /*shows the server log (diary) for today*/ /datum/admins/proc/view_atk_log, /*shows the server combat-log, doesn't do anything presently*/ - /client/proc/cmd_admin_pm_context, /*right-click adminPM interface*/ - /client/proc/cmd_admin_pm_panel, /*admin-pm list*/ /client/proc/cmd_admin_subtle_message, /*send an message to somebody as a 'voice in their head'*/ /client/proc/cmd_admin_delete, /*delete an instance/object/mob/etc*/ /client/proc/cmd_admin_check_contents, /*displays the contents of an instance*/ From a4e4e2bcce7cfe8a01790ff30b1e45c76f3b384b Mon Sep 17 00:00:00 2001 From: MrStonedOne Date: Thu, 8 May 2014 13:19:26 -0700 Subject: [PATCH 082/185] Admins without +admin can use jmp herfs while ghosted They already have access to jump to mob and follow, so no reason to deny them this. Only allows access to jmp herfs while ghosted. --- code/modules/admin/topic.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index de8d3aad943..693732973a6 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -1203,7 +1203,7 @@ show_player_panel(M) else if(href_list["adminplayerobservejump"]) - if(!check_rights(R_ADMIN)) return + if(!isobserver(usr) && !check_rights(R_ADMIN)) return var/mob/M = locate(href_list["adminplayerobservejump"]) @@ -1213,7 +1213,7 @@ C.jumptomob(M) else if(href_list["adminplayerobservecoodjump"]) - if(!check_rights(R_ADMIN)) return + if(!isobserver(usr) && !check_rights(R_ADMIN)) return var/x = text2num(href_list["X"]) var/y = text2num(href_list["Y"]) @@ -1372,7 +1372,7 @@ H << "You hear something crackle in your ears for a moment before a voice speaks. \"Please stand by for a message from your benefactor. Message as follows, agent. [input]. Message ends.\"" else if(href_list["jumpto"]) - if(!check_rights(R_ADMIN)) return + if(!isobserver(usr) && !check_rights(R_ADMIN)) return var/mob/M = locate(href_list["jumpto"]) usr.client.jumptomob(M) From 72c2c9e0162396e2ca210536463f5df321967d14 Mon Sep 17 00:00:00 2001 From: ikarrus Date: Thu, 8 May 2014 21:22:45 -0600 Subject: [PATCH 083/185] -Merged centcom and announcements news channel into a single "Station Announcements" channel -RC Announcements now produce news stories, too -The AI may now make priority announcements via communications console that emulates the automated messages --- code/defines/procs/priority_announce.dm | 10 ++++---- .../game/machinery/computer/communications.dm | 23 ++++++++++++++++--- code/game/machinery/newscaster.dm | 3 +-- code/game/machinery/requests_console.dm | 1 + 4 files changed, 28 insertions(+), 9 deletions(-) diff --git a/code/defines/procs/priority_announce.dm b/code/defines/procs/priority_announce.dm index 067dc3a50c9..9ac61a04173 100644 --- a/code/defines/procs/priority_announce.dm +++ b/code/defines/procs/priority_announce.dm @@ -1,4 +1,6 @@ -/proc/priority_announce(var/text, var/title = "", var/sound = 'sound/AI/attention.ogg', var/type, var/auth_id) +/proc/priority_announce(var/text, var/title = "", var/sound = 'sound/AI/attention.ogg', var/type) + if(!text) + return var/announcement @@ -6,16 +8,16 @@ announcement += "

Priority Announcement

" else if(type == "Captain") - news_network.SubmitArticle(text, auth_id, "Captain's Announcements", null) + news_network.SubmitArticle(text, "Captain's Announcements", "Station Announcements", null) announcement += "

Captain Announces

" else if (title && length(title) > 0) announcement += "

[html_encode(title)]

" if(title == "") - news_network.SubmitArticle(text, "Central Command", "Central Command Updates", null) + news_network.SubmitArticle(text, "Central Command Update", "Station Announcements", null) else - news_network.SubmitArticle(title + "

" + text, "Central Command", "Central Command Updates", null) + news_network.SubmitArticle(title + "

" + text, "Central Command", "Station Announcements", null) announcement += "

[command_name()] Update

" announcement += "
[html_encode(text)]
" diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm index a7fc4f0baf6..9a592ae2482 100644 --- a/code/game/machinery/computer/communications.dm +++ b/code/game/machinery/computer/communications.dm @@ -19,6 +19,7 @@ var/const/CALL_SHUTTLE_REASON_LENGTH = 12 var/state = STATE_DEFAULT var/aistate = STATE_DEFAULT var/message_cooldown = 0 + var/ai_message_cooldown = 0 var/centcom_message_cooldown = 0 var/tmp_alertlevel = 0 var/const/STATE_DEFAULT = 1 @@ -115,7 +116,7 @@ var/const/CALL_SHUTTLE_REASON_LENGTH = 12 var/input = stripped_input(usr, "Please choose a message to announce to the station crew.", "What?") if(!input || !(usr in view(1,src))) return - priority_announce(input, null, 'sound/misc/announce.ogg', "Captain", auth_id) + priority_announce(input, null, 'sound/misc/announce.ogg', "Captain") log_say("[key_name(usr)] has made a captain announcement: [input]") message_admins("[key_name_admin(usr)] has made a captain announcement.", 1) message_cooldown = 1 @@ -278,7 +279,17 @@ var/const/CALL_SHUTTLE_REASON_LENGTH = 12 src.aistate = STATE_MESSAGELIST if("ai-status") src.aistate = STATE_STATUSDISPLAY - + if("ai-announce") + if(ai_message_cooldown) return + var/input = stripped_input(usr, "Please choose a message to announce to the station crew.", "What?") + if(!input) + return + priority_announce(input, null, null, "Priority") + log_say("[key_name(usr)] has made a priority announcement: [input]") + message_admins("[key_name_admin(usr)] has made a priority announcement.", 1) + ai_message_cooldown = 1 + spawn(600)//One minute cooldown + ai_message_cooldown = 0 if("ai-securitylevel") src.tmp_alertlevel = text2num( href_list["newalertlevel"] ) if(!tmp_alertlevel) tmp_alertlevel = 0 @@ -493,11 +504,17 @@ var/const/CALL_SHUTTLE_REASON_LENGTH = 12 dat += "
Latest emergency signal trace attempt successful.
Last signal origin: [format_text(emergency_shuttle.last_call_loc.name)].
" else dat += "
Latest emergency signal trace attempt failed.
" - + if(authenticated) + dat += "Current login: [auth_id]" + else + dat += "Current login: None" + dat += "

General Functions" dat += "
\[
Message List \]" if(emergency_shuttle.location==0 && !emergency_shuttle.online) dat += "
\[ Call Emergency Shuttle \]" dat += "
\[ Set Status Display \]" + dat += "

Special Functions" + dat += "
\[ Make a Priority Announcement \]" dat += "
\[ Change Alert Level \]" dat += "
\[ Emergency Maintenance Access \]" if(STATE_CALLSHUTTLE) diff --git a/code/game/machinery/newscaster.dm b/code/game/machinery/newscaster.dm index 3d7bf0c2e97..1ea98bb5c4b 100644 --- a/code/game/machinery/newscaster.dm +++ b/code/game/machinery/newscaster.dm @@ -44,8 +44,7 @@ var/datum/feed_message/wanted_issue /datum/feed_network/New() - CreateFeedChannel("Central Command Updates", "Central Command", 1) - CreateFeedChannel("Captain's Announcements", "SS13", 1) + CreateFeedChannel("Station Announcements", "SS13", 1) /datum/feed_network/proc/CreateFeedChannel(var/channel_name, var/author, var/locked, var/adminChannel = 0) var/datum/feed_channel/newChannel = new /datum/feed_channel diff --git a/code/game/machinery/requests_console.dm b/code/game/machinery/requests_console.dm index 9a4f1c6c9d8..e39e53257a8 100644 --- a/code/game/machinery/requests_console.dm +++ b/code/game/machinery/requests_console.dm @@ -283,6 +283,7 @@ var/list/obj/machinery/requests_console/allConsoles = list() for(var/mob/M in player_list) if(!istype(M,/mob/new_player)) M << "[department] announcement: [message]" + news_network.SubmitArticle(message, department, "Station Announcements", null) announceAuth = 0 message = "" screen = 0 From fd4a0c86eb179ea4c1a6569af7f201491e5949e6 Mon Sep 17 00:00:00 2001 From: ikarrus Date: Thu, 8 May 2014 22:53:10 -0600 Subject: [PATCH 084/185] -Added an auxiliary storage compartment in SSUs to store one item -Moved CE's magboots and captain's jetpack into them -Updated it so that any mob can be placed inside the SSU now. Including Corgis. --- code/game/machinery/suit_storage_unit.dm | 133 +++++++++--------- .../closets/secure/engineering.dm | 1 - .../crates_lockers/closets/secure/security.dm | 1 - icons/obj/suitstorage.dmi | Bin 9625 -> 9734 bytes 4 files changed, 70 insertions(+), 65 deletions(-) diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm index 9f40bca0737..4cbed943c87 100644 --- a/code/game/machinery/suit_storage_unit.dm +++ b/code/game/machinery/suit_storage_unit.dm @@ -10,13 +10,15 @@ icon_state = "close" anchored = 1 density = 1 - var/mob/living/carbon/human/OCCUPANT = null + var/mob/living/OCCUPANT = null var/obj/item/clothing/suit/space/SUIT = null var/SUIT_TYPE = null var/obj/item/clothing/head/helmet/space/HELMET = null var/HELMET_TYPE = null var/obj/item/clothing/mask/MASK = null //All the stuff that's gonna be stored insiiiiiiiiiiiiiiiiiiide, nyoro~n var/MASK_TYPE = null //Erro's idea on standarising SSUs whle keeping creation of other SSU types easy: Make a child SSU, name it something then set the TYPE vars to your desired suit output. New() should take it from there by itself. + var/obj/item/STORAGE = null //One-slot storage slot for anything... food not recommended + var/STORAGE_TYPE = null var/isopen = 0 var/islocked = 0 var/isUV = 0 @@ -39,16 +41,18 @@ SUIT_TYPE = /obj/item/clothing/suit/space/captain HELMET_TYPE = /obj/item/clothing/head/helmet/space/capspace MASK_TYPE = /obj/item/clothing/mask/gas + STORAGE_TYPE = /obj/item/weapon/tank/jetpack/oxygen /obj/machinery/suit_storage_unit/engine SUIT_TYPE = /obj/item/clothing/suit/space/rig HELMET_TYPE = /obj/item/clothing/head/helmet/space/rig MASK_TYPE = /obj/item/clothing/mask/breath - /obj/machinery/suit_storage_unit/ce +/obj/machinery/suit_storage_unit/ce SUIT_TYPE = /obj/item/clothing/suit/space/rig/elite HELMET_TYPE = /obj/item/clothing/head/helmet/space/rig/elite MASK_TYPE = /obj/item/clothing/mask/breath + STORAGE_TYPE= /obj/item/clothing/shoes/magboots/advance /obj/machinery/suit_storage_unit/security SUIT_TYPE = /obj/item/clothing/suit/space/rig/security @@ -73,6 +77,8 @@ HELMET = new HELMET_TYPE(src) if(MASK_TYPE) MASK = new MASK_TYPE(src) + if(STORAGE_TYPE) + STORAGE = new STORAGE_TYPE(src) /obj/machinery/suit_storage_unit/update_icon() //overlays yaaaay - Jordie src.overlays = 0 @@ -93,6 +99,8 @@ overlays += "suit" if(HELMET && isopen) overlays += "helm" + if(STORAGE && isopen) + overlays += "storage" if(isbroken && isopen) overlays += "broken" return @@ -165,6 +173,9 @@ dat+= text("Breathmask storage compartment: []
",(src.MASK ? MASK.name : "No breathmask detected.") ) if(MASK && src.isopen) dat+=text("Dispense mask
",src) + dat+= text("Auxiliary storage compartment: []
",(src.STORAGE ? STORAGE.name : "Contents empty.") ) + if(STORAGE && src.isopen) + dat+=text("Eject contents
",src) if(src.OCCUPANT) dat+= "
WARNING: Biological entity detected inside the Unit's storage. Please remove.
" dat+= "Eject extra load" @@ -201,40 +212,26 @@ usr.set_machine(src) if (href_list["toggleUV"]) src.toggleUV(usr) - src.updateUsrDialog() - src.update_icon() if (href_list["togglesafeties"]) src.togglesafeties(usr) - src.updateUsrDialog() - src.update_icon() if (href_list["dispense_helmet"]) src.dispense_helmet(usr) - src.updateUsrDialog() - src.update_icon() if (href_list["dispense_suit"]) src.dispense_suit(usr) - src.updateUsrDialog() - src.update_icon() if (href_list["dispense_mask"]) src.dispense_mask(usr) - src.updateUsrDialog() - src.update_icon() + if (href_list["eject_storage"]) + src.eject_storage(usr) if (href_list["toggle_open"]) src.toggle_open(usr) - src.updateUsrDialog() - src.update_icon() if (href_list["toggle_lock"]) src.toggle_lock(usr) - src.updateUsrDialog() - src.update_icon() if (href_list["start_UV"]) src.start_UV(usr) - src.updateUsrDialog() - src.update_icon() if (href_list["eject_guy"]) src.eject_occupant(usr) - src.updateUsrDialog() - src.update_icon() + src.updateUsrDialog() + src.update_icon() /*if (href_list["refresh"]) src.updateUsrDialog()*/ src.add_fingerprint(usr) @@ -314,6 +311,13 @@ src.MASK = null return +/obj/machinery/suit_storage_unit/proc/eject_storage(mob/user as mob) + if(!src.STORAGE) + return + else + src.STORAGE.loc = src.loc + src.STORAGE = null + return /obj/machinery/suit_storage_unit/proc/dump_everything() src.islocked = 0 //locks go free @@ -326,6 +330,9 @@ if(src.MASK) src.MASK.loc = src.loc src.MASK = null + if(src.STORAGE) + src.STORAGE.loc = src.loc + src.STORAGE = null if(src.OCCUPANT) src.eject_occupant(OCCUPANT) return @@ -358,7 +365,7 @@ if(src.OCCUPANT && src.safetieson) user << "WARNING: Biological entity detected in the confines of the Unit's storage. Cannot initiate cycle." return - if(!src.HELMET && !src.MASK && !src.SUIT && !src.OCCUPANT ) //shit's empty yo + if(!src.HELMET && !src.MASK && !src.SUIT && !src.STORAGE && !src.OCCUPANT ) //shit's empty yo user << "Unit storage bays empty. Nothing to disinfect -- Aborting." return user << "You start the Unit's cauterisation cycle." @@ -373,14 +380,14 @@ for(i=0,i<4,i++) sleep(50) if(src.OCCUPANT) + var/burndamage = rand(6,10) if(src.issuperUV) - var/burndamage = rand(28,35) + burndamage = rand(28,35) + if(iscarbon(OCCUPANT)) OCCUPANT.take_organ_damage(0,burndamage) OCCUPANT.emote("scream") else - var/burndamage = rand(6,10) - OCCUPANT.take_organ_damage(0,burndamage) - OCCUPANT.emote("scream") + OCCUPANT.take_organ_damage(burndamage) if(i==3) //End of the cycle if(!src.issuperUV) if(src.HELMET) @@ -389,6 +396,11 @@ SUIT.clean_blood() if(src.MASK) MASK.clean_blood() + if(src.STORAGE) + if(istype(STORAGE, /obj/item/weapon/reagent_containers/food)) + src.STORAGE = null //ew why would you put food in here + else + STORAGE.clean_blood() else //It was supercycling, destroy everything if(src.HELMET) src.HELMET = null @@ -396,6 +408,8 @@ src.SUIT = null if(src.MASK) src.MASK = null + if(src.STORAGE) + src.STORAGE = null visible_message("With a loud whining noise, the Suit Storage Unit's door grinds open. Puffs of ashen smoke come out of its chamber.", 3) src.isbroken = 1 src.isopen = 1 @@ -488,6 +502,9 @@ /obj/machinery/suit_storage_unit/MouseDrop_T(mob/M as mob, mob/user as mob) + store_mob(M, user) + +/obj/machinery/suit_storage_unit/proc/store_mob(mob/living/M as mob, mob/user as mob) if(!istype(M)) return if (user.stat != 0) @@ -498,24 +515,26 @@ if (!src.ispowered || src.isbroken) usr << "The unit is not operational." return - if ( (src.OCCUPANT) || (src.HELMET) || (src.SUIT) ) - usr << "It's too cluttered inside for you to fit in!" + if ( (src.OCCUPANT) || (src.HELMET) || (src.SUIT) || (src.STORAGE)) + usr << "It's too cluttered inside to fit in!" return - visible_message("[usr] starts squeezing into the suit storage unit!", 3) + if(M == user) + visible_message("[user] starts squeezing into the suit storage unit!", 3) + else + visible_message("[user] starts putting [M.name] into the Suit Storage Unit.", 3) if(do_after(user, 10)) user.stop_pulling() - user.client.perspective = EYE_PERSPECTIVE - user.client.eye = src - user.loc = src - src.OCCUPANT = usr + if(M.client) + M.client.perspective = EYE_PERSPECTIVE + M.client.eye = src + M.loc = src + src.OCCUPANT = M src.isopen = 0 //Close the thing after the guy gets inside src.update_icon() src.add_fingerprint(user) src.updateUsrDialog() return - else - src.OCCUPANT = null //Testing this as a backup sanity test return @@ -530,35 +549,7 @@ return if ( istype(I, /obj/item/weapon/grab) ) var/obj/item/weapon/grab/G = I - if( !(ismob(G.affecting)) ) - return - if (!src.isopen) - usr << "The unit's doors are shut." - return - if (!src.ispowered || src.isbroken) - usr << "The unit is not operational." - return - if ( (src.OCCUPANT) || (src.HELMET) || (src.SUIT) ) //Unit needs to be absolutely empty - user << "The unit's storage area is too cluttered." - return - visible_message("[user] starts putting [G.affecting.name] into the Suit Storage Unit.", 3) - if(do_after(user, 20)) - if(!G || !G.affecting) return //derpcheck - var/mob/M = G.affecting - if (M.client) - M.client.perspective = EYE_PERSPECTIVE - M.client.eye = src - M.loc = src - src.OCCUPANT = M - src.isopen = 0 //close ittt - - //for(var/obj/O in src) - // O.loc = src.loc - src.add_fingerprint(user) - qdel(G) - src.updateUsrDialog() - src.update_icon() - return + store_mob(G.affecting, user) return if( istype(I,/obj/item/clothing/suit/space) ) if(!src.isopen || src.isbroken) @@ -608,6 +599,22 @@ src.update_icon() src.updateUsrDialog() return + if( istype(I,/obj/item) ) + if(!src.isopen || src.isbroken) + return + var/obj/item/ITEM = I + if(src.STORAGE) + user << "The auxiliary storage compartment is full." + return + if(!user.drop_item()) + user << "\The [ITEM] is stuck to your hand, you cannot put it in the Suit Storage Unit!" + return + user << "You load the [ITEM.name] into the storage compartment." + ITEM.loc = src + src.STORAGE = ITEM + src.update_icon() + src.updateUsrDialog() + return src.update_icon() src.updateUsrDialog() return diff --git a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm index 16cb0fc9253..260bb0b61dd 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm @@ -26,7 +26,6 @@ new /obj/item/device/radio/headset/heads/ce(src) new /obj/item/weapon/storage/toolbox/mechanical(src) new /obj/item/clothing/suit/hazardvest(src) - new /obj/item/clothing/shoes/magboots/advance(src) new /obj/item/weapon/airlock_painter(src) new /obj/item/clothing/mask/gas(src) new /obj/item/device/multitool(src) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm index 74d87dd10db..9de8c771d24 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm @@ -24,7 +24,6 @@ new /obj/item/clothing/head/helmet/swat(src) new /obj/item/clothing/shoes/brown(src) new /obj/item/device/radio/headset/heads/captain(src) - new /obj/item/weapon/tank/jetpack/oxygen(src) new /obj/item/clothing/gloves/captain(src) new /obj/item/weapon/gun/energy/gun(src) return diff --git a/icons/obj/suitstorage.dmi b/icons/obj/suitstorage.dmi index 1af7b3dd0967d4ff58f76afd9dedf7c62f8197d0..8d43fa84775f89d9437511e9e9737e4cb72e6961 100644 GIT binary patch literal 9734 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 U8$M(TD*ylh07*qoM6N<$f^>1ol>h($ literal 9625 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 P00000NkvXXu0mjfPlM9v From d871779432860057be18078a6136b0a58e729f58 Mon Sep 17 00:00:00 2001 From: Rolan7 Date: Fri, 9 May 2014 18:03:49 -0400 Subject: [PATCH 085/185] Replaced the isRobot() check with two new functions, one of which is overloaded for robots. Object oriented programming intensifies! --- code/modules/mob/living/living.dm | 28 +++++++++++++++++++ code/modules/mob/living/silicon/silicon.dm | 7 ++++- code/modules/mob/mob.dm | 32 ++++++++-------------- 3 files changed, 45 insertions(+), 22 deletions(-) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 3e0316e0491..a7d13ffef88 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -580,3 +580,31 @@ /mob/living/proc/Exhaust() src << "You're too exhausted to keep going..." Weaken(5) + +// The src mob is trying to strip an item from someone +// Override if a certain type of mob should be behave differently when stripping items (can't, for example) +/mob/living/stripPanelUnequip(mob/who, obj/item/what, where) + if(what.flags & NODROP) + src << "You can't remove \the [what.name], it appears to be stuck!" + return + visible_message("[src] tries to remove [who]'s [what.name].", \ + "[src] tries to remove [who]'s [what.name].") + what.add_fingerprint(src) + if(do_mob(src, who, STRIP_DELAY)) + if(what && Adjacent(who)) + who.unEquip(what) + +// The src mob is trying to place an item on someone +// Override if a certain mob should be behave differently when placing items (can't, for example) +/mob/living/stripPanelEquip(mob/who, obj/item/what, where) + what = src.get_active_hand() + if(what && (what.flags & NODROP)) + src << "You can't put \the [what.name] on [who], it's stuck to your hand!" + return + if(what && what.mob_can_equip(who, where, 1)) + visible_message("[src] tries to put [what] on [who].") + if(do_mob(src, who, STRIP_DELAY * 0.5)) + if(what && Adjacent(who)) + src.unEquip(what) + who.equip_to_slot_if_possible(what, where, 0, 1) + diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm index 00137619c42..2d36c56e227 100644 --- a/code/modules/mob/living/silicon/silicon.dm +++ b/code/modules/mob/living/silicon/silicon.dm @@ -300,5 +300,10 @@ step(AM, t) now_pushing = null -/mob/living/silicon/put_in_hand_check() +/mob/living/silicon/put_in_hand_check() // This check is for borgs being able to receive items, not put them in others' hands. + return 0 + +// The src mob is trying to place an item on someone +// But the src mob is a silicon!! Disable. +/mob/living/silicon/stripPanelEquip(obj/item/what, mob/who, slot) return 0 \ No newline at end of file diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 4cfa3f958e6..b3f3e3137ce 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -491,28 +491,9 @@ var/list/slot_equipment_priority = list( \ var/obj/item/what = get_item_by_slot(slot) if(what) - if(what.flags & NODROP) - usr << "You can't remove \the [what.name], it appears to be stuck!" - return - visible_message("[usr] tries to remove [src]'s [what.name].", \ - "[usr] tries to remove [src]'s [what.name].") - what.add_fingerprint(usr) - if(do_mob(usr, src, STRIP_DELAY)) - if(what && Adjacent(usr)) - unEquip(what) + usr.stripPanelUnequip(src,what,slot) else - if(isrobot(usr)) // Borgs can't give people their items... - return - what = usr.get_active_hand() - if(what && (what.flags & NODROP)) - usr << "You can't put \the [what.name] on [src], it's stuck to your hand!" - return - if(what && what.mob_can_equip(src, slot, 1)) - visible_message("[usr] tries to put [what] on [src].") - if(do_mob(usr, src, STRIP_DELAY * 0.5)) - if(what && Adjacent(usr)) - usr.unEquip(what) - equip_to_slot_if_possible(what, slot, 0, 1) + usr.stripPanelEquip(src,what,slot) if(usr.machine == src) if(Adjacent(usr)) @@ -520,6 +501,15 @@ var/list/slot_equipment_priority = list( \ else usr << browse(null,"window=mob\ref[src]") +// The src mob is trying to strip an item from someone +// Defined in living.dm +/mob/proc/stripPanelUnequip(obj/item/what, mob/who) + return + +// The src mob is trying to place an item on someone +// Defined in living.dm +/mob/proc/stripPanelEquip(obj/item/what, mob/who) + return /mob/MouseDrop(mob/M) ..() From 170af99fec4e1a595a1d1ade1b7b16e588c879d7 Mon Sep 17 00:00:00 2001 From: VistaPOWA Date: Sat, 10 May 2014 00:36:24 +0200 Subject: [PATCH 086/185] Minor fix for the PR announcer. Also includes a config file made specifically for /tg/ Sibyl. --- tools/PR_announcer_bot/config_for_tg.txt | 8 ++++++++ tools/PR_announcer_bot/sendkeys_ss13.exe | Bin 12800 -> 12800 bytes .../PR_announcer_bot/sendkeys_ss13/Program.cs | 4 ++-- 3 files changed, 10 insertions(+), 2 deletions(-) create mode 100644 tools/PR_announcer_bot/config_for_tg.txt diff --git a/tools/PR_announcer_bot/config_for_tg.txt b/tools/PR_announcer_bot/config_for_tg.txt new file mode 100644 index 00000000000..4bf44fb2adc --- /dev/null +++ b/tools/PR_announcer_bot/config_for_tg.txt @@ -0,0 +1,8 @@ +serverip = 127.0.0.1 //SS13 server IP +serverport = 1337 //SS13 server port +commskey = fill_your_own_in //API key of the server +GitHub_bot_name = TheGhostOfWhibyl1 //It'll get the data from this bot +IRC_bot_name = PR_Listener_Bot //This'll be our name +IRC_server = irc.rizon.net:6670 //format - server:port +IRC_channel = #coderbus +Nickserv_auth = _NONE_ //leave _NONE_ if your bot does not require nickserv authentication \ No newline at end of file diff --git a/tools/PR_announcer_bot/sendkeys_ss13.exe b/tools/PR_announcer_bot/sendkeys_ss13.exe index 82af6be9543879ab56086eb44c3aea9a4d62579f..5985be093a8429e4d90732fb900717d4509ccc9d 100644 GIT binary patch delta 400 zcmZojX-JvS!R!&1JF#1qao)t0;fx-W85z}C1zZ^zWF{*z=}eAfRA*c=xskD6u)&Q1 z3_O4&69X&5g3W?VuUQyNC;w#=mknV83QEo@Qek5#&@f>Po8Ky8=F|acvXh3+I8J!q78FDlsynT%B3|tITwLrW!iPMaJ zKtuj)p3VPCfIX2RkD-LYYI2=|&gLBoDa-;QS#3K`^a%KG4_#9+=~VZ`%{nS4m~??5 z6%5i1a)1obWjerc(gE5W6zmdwZFO$s&)^z|J(KhHPYV2N%D!1qot;sr02*u{ZG9lN g!bC+e#)i#-8gm&p^J)EJWm;giS}U4` z3#bd~a@BD&FtAt}FamXm&nk-A?8srsDCj5yGL?Y=D97LkWcY0E<^0NOS)mTHb0WhO zMk@w(1_uoYZ!@D411E!zCWN<-(Vc;dp;QaRYm+$5=m#|9&gR|xuLLG|eVW9xqP5-&tYaJg>OiJ7AqjG{t7Z?h`AR|DokO4Z5#}$Zy z)&~W<1YcX78~HQ1#$nIoy#12`|C+LGc2s9)6bgU_2}oNWh^;VDQH(KRbD_pu#>oau W3Y+<~ez7t&m~9p`c+WV|fE@rb3so8b diff --git a/tools/PR_announcer_bot/sendkeys_ss13/Program.cs b/tools/PR_announcer_bot/sendkeys_ss13/Program.cs index dbfd53c90f6..ebb05c7f153 100644 --- a/tools/PR_announcer_bot/sendkeys_ss13/Program.cs +++ b/tools/PR_announcer_bot/sendkeys_ss13/Program.cs @@ -232,7 +232,7 @@ namespace sendkeys_ss13 { if (msg.Length >= 4) { - if (msg[3] == "Merge") //Someone is merging something + if (msg[3] == "Merge" && msg[1] != "meant:") //Someone is merging something { mergedPR = msg[6]; if (merge_archive != null) @@ -249,7 +249,7 @@ namespace sendkeys_ss13 } } } - if (msg[2] == "closed") + if (msg[2] == "closed" && msg[1] != "meant:") { merge_archive = msg; if (mergedPR != null) From b94c7e10bdf1636434a62ae3fe283c2667acd5fb Mon Sep 17 00:00:00 2001 From: ikarrus Date: Sat, 10 May 2014 00:32:05 -0600 Subject: [PATCH 087/185] Special cameras can no longer break during initialization I consider this an issue as special cameras often serve important functions that should be reliable at round start. -No more AIs that cannot see themselves -No more busted singularity cameras -Fairly certain this also means that motion-alarmed areas are reliably motion-alarmed --- code/game/machinery/camera/camera.dm | 3 ++- code/game/machinery/camera/presets.dm | 6 ++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm index e95d6c5b50d..8d5385d11f7 100644 --- a/code/game/machinery/camera/camera.dm +++ b/code/game/machinery/camera/camera.dm @@ -14,6 +14,7 @@ var/c_tag_order = 999 var/status = 1.0 anchored = 1.0 + var/start_active = 0 //If it ignores the random chance to start broken on round start var/invuln = null var/obj/item/device/camera_bug/bug = null var/obj/item/weapon/camera_assembly/assembly = null @@ -45,7 +46,7 @@ ..() /obj/machinery/camera/initialize() - if(z == 1 && prob(3)) + if(z == 1 && prob(3) && !start_active) deactivate() /obj/machinery/camera/Destroy() diff --git a/code/game/machinery/camera/presets.dm b/code/game/machinery/camera/presets.dm index b0fe45d3696..cc1139e511d 100644 --- a/code/game/machinery/camera/presets.dm +++ b/code/game/machinery/camera/presets.dm @@ -1,6 +1,8 @@ // PRESETS // EMP +/obj/machinery/camera/emp_proof + start_active = 1 /obj/machinery/camera/emp_proof/New() ..() @@ -9,6 +11,7 @@ // X-RAY /obj/machinery/camera/xray + start_active = 1 icon_state = "xraycam" // Thanks to Krutchen for the icons. /obj/machinery/camera/xray/New() @@ -17,6 +20,7 @@ // MOTION /obj/machinery/camera/motion + start_active = 1 name = "motion-sensitive security camera" /obj/machinery/camera/motion/New() @@ -24,6 +28,8 @@ upgradeMotion() // ALL UPGRADES +/obj/machinery/camera/all + start_active = 1 /obj/machinery/camera/all/New() ..() From 63a9c5b5afd8461c9e4f8e2eec8d7f40d2b7fd85 Mon Sep 17 00:00:00 2001 From: Kelenius Date: Sat, 10 May 2014 19:47:29 +0400 Subject: [PATCH 088/185] Fixed hurting yourself with toy double esword while clumsy --- code/game/objects/items/weapons/twohanded.dm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/code/game/objects/items/weapons/twohanded.dm b/code/game/objects/items/weapons/twohanded.dm index e0c2b78c927..1282681387e 100644 --- a/code/game/objects/items/weapons/twohanded.dm +++ b/code/game/objects/items/weapons/twohanded.dm @@ -213,9 +213,10 @@ obj/item/weapon/twohanded/ /obj/item/weapon/twohanded/dualsaber/attack(target as mob, mob/living/user as mob) ..() - if((CLUMSY in user.mutations) && (wielded) &&prob(40)) + if((CLUMSY in user.mutations) && (wielded) && prob(40)) user << "\red You twirl around a bit before losing your balance and impaling yourself on the [src]." - user.take_organ_damage(20,25) + if (force_wielded) + user.take_organ_damage(20,25) return if((wielded) && prob(50)) spawn(0) From 610a0002261f3fe00946b191770c0c668b8554c6 Mon Sep 17 00:00:00 2001 From: ikarrus Date: Sat, 10 May 2014 11:52:53 -0600 Subject: [PATCH 089/185] Replaced a do_after with a do_mob so you can't teleport-stuff people into the SSU --- code/game/machinery/suit_storage_unit.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm index 4cbed943c87..bf805ed5d3d 100644 --- a/code/game/machinery/suit_storage_unit.dm +++ b/code/game/machinery/suit_storage_unit.dm @@ -522,7 +522,7 @@ visible_message("[user] starts squeezing into the suit storage unit!", 3) else visible_message("[user] starts putting [M.name] into the Suit Storage Unit.", 3) - if(do_after(user, 10)) + if(do_mob(user, M, 10)) user.stop_pulling() if(M.client) M.client.perspective = EYE_PERSPECTIVE From a76d067b3a5a1a0b68095113bd42a5b82e03d89d Mon Sep 17 00:00:00 2001 From: Kelenius Date: Sun, 11 May 2014 00:45:59 +0400 Subject: [PATCH 090/185] Attempt two --- code/game/objects/items/weapons/twohanded.dm | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/code/game/objects/items/weapons/twohanded.dm b/code/game/objects/items/weapons/twohanded.dm index 1282681387e..25bc721ab43 100644 --- a/code/game/objects/items/weapons/twohanded.dm +++ b/code/game/objects/items/weapons/twohanded.dm @@ -214,9 +214,7 @@ obj/item/weapon/twohanded/ /obj/item/weapon/twohanded/dualsaber/attack(target as mob, mob/living/user as mob) ..() if((CLUMSY in user.mutations) && (wielded) && prob(40)) - user << "\red You twirl around a bit before losing your balance and impaling yourself on the [src]." - if (force_wielded) - user.take_organ_damage(20,25) + Impale(user) return if((wielded) && prob(50)) spawn(0) @@ -224,6 +222,13 @@ obj/item/weapon/twohanded/ user.dir = i sleep(1) +/obj/item/weapon/twohanded/dualsaber/proc/Impale(mob/living/user as mob) + user << "You twirl around a bit before losing your balance and impaling yourself on the [src]." + if (force_wielded) + user.take_organ_damage(20,25) + else + user.adjustStaminaLoss(25) + /obj/item/weapon/twohanded/dualsaber/IsShield() if(wielded) return 1 From d41ee9ee8a2130b1674931b2ae8981390b9f3b84 Mon Sep 17 00:00:00 2001 From: Kelenius Date: Sun, 11 May 2014 00:47:16 +0400 Subject: [PATCH 091/185] Why the hell not --- code/modules/mob/living/carbon/metroid/life.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/mob/living/carbon/metroid/life.dm b/code/modules/mob/living/carbon/metroid/life.dm index fb8760262eb..52d7fa5dc9d 100644 --- a/code/modules/mob/living/carbon/metroid/life.dm +++ b/code/modules/mob/living/carbon/metroid/life.dm @@ -503,6 +503,7 @@ phrases += "I want to eat..." phrases += "Rawr..." phrases += "Blop..." + phrases += "Blorble..." if (rabid || attacked) phrases += "Hrr..." phrases += "Nhuu..." From 2269a2f16823fb8c05a0246e140192424a22ca5c Mon Sep 17 00:00:00 2001 From: Menshin Date: Sun, 11 May 2014 00:04:49 +0200 Subject: [PATCH 092/185] Alternative version of the powernets refactoring (cables connects if they have matching ends) --- code/modules/power/cable.dm | 144 +++++++++++++++++++++++++----------- code/modules/power/power.dm | 8 +- 2 files changed, 104 insertions(+), 48 deletions(-) diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm index e3d767af8a2..1a403514d09 100644 --- a/code/modules/power/cable.dm +++ b/code/modules/power/cable.dm @@ -243,13 +243,60 @@ obj/structure/cable/proc/avail() // Cable laying helpers //////////////////////////////////////////////// +//handles merging diagonally matching cables +//for info : direction^3 is flipping horizontally, direction^12 is flipping vertically +/obj/structure/cable/proc/mergeDiagonalsNetworks(var/direction) + + //search for and merge diagonally matching cables from the first direction component (north/south) + var/turf/T = get_step(src, direction&3)//go north/south + + for(var/obj/structure/cable/C in T) + + if(!C) + continue + + if(src == C) + continue + + if(C.d1 == (direction^3) || C.d2 == (direction^3)) //we've got a diagonally matching cable + if(!C.powernet) //if the matching cable somehow got no powernet, make him one (should not happen for cables) + var/datum/powernet/newPN = new() + newPN.add_cable(C) + + if(powernet) //if we already have a powernet, then merge the two powernets + merge_powernets(powernet,C.powernet) + else + C.powernet.add_cable(src) //else, we simply connect to the matching cable powernet + + //the same from the second direction component (east/west) + T = get_step(src, direction&12)//go east/west + + for(var/obj/structure/cable/C in T) + + if(!C) + continue + + if(src == C) + continue + if(C.d1 == (direction^12) || C.d2 == (direction^12)) //we've got a diagonally matching cable + if(!C.powernet) //if the matching cable somehow got no powernet, make him one (should not happen for cables) + var/datum/powernet/newPN = new() + newPN.add_cable(C) + + if(powernet) //if we already have a powernet, then merge the two powernets + merge_powernets(powernet,C.powernet) + else + C.powernet.add_cable(src) //else, we simply connect to the matching cable powernet + // merge with the powernets of power objects in the given direction /obj/structure/cable/proc/mergeConnectedNetworks(var/direction) - var/turf/TB + var/fdir = (!direction)? 0 : turn(direction, 180) //flip the direction, to match with the source position on its turf + if(!(d1 == direction || d2 == direction)) //if the cable is not pointed in this direction, do nothing return - TB = get_step(src, direction) + + var/turf/TB = get_step(src, direction) for(var/obj/structure/cable/C in TB) @@ -278,7 +325,7 @@ obj/structure/cable/proc/avail() for(var/AM in loc) if(istype(AM,/obj/structure/cable)) var/obj/structure/cable/C = AM - if(C.d1 == 0 && d1==0) //only connected if they are both "nodes" + if(C.d1 == d1 || C.d2 == d1 || C.d1 == d2 || C.d2 == d2) //only connected if they have a common direction if(C.powernet == powernet) continue if(C.powernet) merge_powernets(powernet, C.powernet) @@ -305,28 +352,40 @@ obj/structure/cable/proc/avail() // Powernets handling helpers ////////////////////////////////////////////// -/obj/structure/cable/proc/get_connections() - . = list() // this will be a list of all connected power objects without a powernet - var/turf/T = loc - - if(d1) T = get_step(src, d1) - if(T) . += power_list(T, src, d1, 1) //only returns these with no powernets - - T = get_step(src, d2) - if(T) . += power_list(T, src, d2, 1) //only returns these with no powernets - - return . - -// will get both marked and unmarked connections (i.e with or without powernets) -/obj/structure/cable/proc/get_marked_connections() +//if powernetless_only = 1, will only get connections without powernet +/obj/structure/cable/proc/get_connections(var/powernetless_only = 0) . = list() // this will be a list of all connected power objects - var/turf/T = loc + var/turf/T - if(d1) T = get_step(src, d1) - if(T) . += power_list(T, src, d1, 0) + //get matching cables from the first direction + if(d1) //if not a node cable + T = get_step(src, d1) + if(T) + . += power_list(T, src, turn(d1, 180), powernetless_only) //get adjacents matching cables + if(d1&(d1-1)) //diagonal direction, must check the 4 possibles adjacents tiles + T = get_step(src,d1&3) // go north/south + if(T) + . += power_list(T, src, d1 ^ 3, powernetless_only) //get diagonally matching cables + T = get_step(src,d1&12) // go east/west + if(T) + . += power_list(T, src, d1 ^ 12, powernetless_only) //get diagonally matching cables + + . += power_list(loc, src, d1, powernetless_only) //get on turf matching cables + + //do the same on the second direction (which can't be 0) T = get_step(src, d2) - if(T) . += power_list(T, src, d2, 0) + if(T) + . += power_list(T, src, turn(d2, 180), powernetless_only) //get adjacents matching cables + + if(d2&(d2-1)) //diagonal direction, must check the 4 possibles adjacents tiles + T = get_step(src,d2&3) // go north/south + if(T) + . += power_list(T, src, d2 ^ 3, powernetless_only) //get diagonally matching cables + T = get_step(src,d2&12) // go east/west + if(T) + . += power_list(T, src, d2 ^ 12, powernetless_only) //get diagonally matching cables + . += power_list(loc, src, d2, powernetless_only) //get on turf matching cables return . @@ -347,15 +406,13 @@ obj/structure/cable/proc/avail() // cut the cable's powernet at this cable and updates the powergrid /obj/structure/cable/proc/cut_cable_from_powernet() var/turf/T1 = loc + var/list/P_list if(!T1) return + if(d1) + T1 = get_step(T1, d1) + P_list = power_list(T1, src, turn(d1,180),0,cable_only = 1) // what adjacently joins on to cut cable... - var/turf/T2 - if(d2) T2 = get_step(T1, d2) - if(d1) T1 = get_step(T1, d1) - - - var/list/P_list = power_list(T1, src, d1,0,cable_only = 1) // what joins on to cut cable... - P_list += power_list(T2, src, d2,0, cable_only = 1) //...in both directions + P_list += power_list(loc, src, d1, 0, cable_only = 1)//... and on turf if(P_list.len == 0)//if nothing in both list, then the cable was a lone cable, just delete it and its powernet @@ -366,25 +423,12 @@ obj/structure/cable/proc/avail() P.disconnect_from_network() //remove from current network (and delete powernet) return - - var/i - var/obj/structure/cable/Cable_i - - //removes every adjacents cables, from the powernet, except the first found (to save processing) - //that way we'll know if there was a loop somewhere - for (i = 2, i <= P_list.len, i++) - Cable_i = P_list[i] - powernet.remove_cable(Cable_i) - // remove the cut cable from its turf and powernet, so that it doesn't get count in propagate_network worklist loc = null powernet.remove_cable(src) //remove the cut cable from its powernet - for (i = 2, i <= P_list.len, i++) // propagate network to every powernetless adjacents cables - Cable_i = P_list[i] - if(Cable_i.powernet == null) //if not null, there was a loop and the cable is already part of a powernet - var/datum/powernet/newPN = new() - propagate_network(P_list[i], newPN) + var/datum/powernet/newPN = new()// creates a new powernet... + propagate_network(P_list[1], newPN)//... and propagates it to the other side of the cable // Disconnect machines connected to nodes if(d1 == 0) // if we cut a node (O-X) cable @@ -577,7 +621,7 @@ obj/structure/cable/proc/avail() dirn = get_dir(F, user) for(var/obj/structure/cable/LC in F) - if((LC.d1 == dirn && LC.d2 == 0 ) || ( LC.d2 == dirn && LC.d1 == 0)) + if(LC.d2 == dirn && LC.d1 == 0) user << "There's already a cable at that position." return @@ -598,6 +642,9 @@ obj/structure/cable/proc/avail() C.mergeConnectedNetworks(C.d2) //merge the powernet with adjacents powernets C.mergeConnectedNetworksOnTurf() //merge the powernet with on turf powernets + if(C.d2 & (C.d2 - 1))// if the cable is layed diagonally, check the others 2 possible directions + C.mergeDiagonalsNetworks(C.d2) + use(1) @@ -660,6 +707,9 @@ obj/structure/cable/proc/avail() NC.mergeConnectedNetworks(NC.d2) //merge the powernet with adjacents powernets NC.mergeConnectedNetworksOnTurf() //merge the powernet with on turf powernets + if(NC.d2 & (NC.d2 - 1))// if the cable is layed diagonally, check the others 2 possible directions + NC.mergeDiagonalsNetworks(NC.d2) + use(1) if (NC.shock(user, 50)) @@ -702,6 +752,12 @@ obj/structure/cable/proc/avail() C.mergeConnectedNetworks(C.d2) //...in the two new cable directions C.mergeConnectedNetworksOnTurf() + if(C.d1 & (C.d1 - 1))// if the cable is layed diagonally, check the others 2 possible directions + C.mergeDiagonalsNetworks(C.d1) + + if(C.d2 & (C.d2 - 1))// if the cable is layed diagonally, check the others 2 possible directions + C.mergeDiagonalsNetworks(C.d2) + use(1) if (C.shock(user, 50)) diff --git a/code/modules/power/power.dm b/code/modules/power/power.dm index e87476c2310..e67982bd887 100644 --- a/code/modules/power/power.dm +++ b/code/modules/power/power.dm @@ -186,8 +186,8 @@ // if unmarked==1, only return those with no powernet /proc/power_list(var/turf/T, var/source, var/d, var/unmarked=0, var/cable_only = 0) . = list() - var/fdir = (!d)? 0 : turn(d, 180) // the opposite direction to d (or 0 if d==0) -// world.log << "d=[d] fdir=[fdir]" + //var/fdir = (!d)? 0 : turn(d, 180) // the opposite direction to d (or 0 if d==0) + for(var/AM in T) if(AM == source) continue //we don't want to return source @@ -203,7 +203,7 @@ var/obj/structure/cable/C = AM if(!unmarked || !C.powernet) - if(C.d1 == fdir || C.d2 == fdir) + if(C.d1 == d || C.d2 == d) . += C return . @@ -237,7 +237,7 @@ var/obj/structure/cable/C = P if(C.powernet != PN) //add it to the powernet, if it isn't already there PN.add_cable(C) - worklist |= C.get_marked_connections() //get adjacents power objects, with or without a powernet + worklist |= C.get_connections() //get adjacents power objects, with or without a powernet else if(P.anchored && istype(P,/obj/machinery/power)) var/obj/machinery/power/M = P From 593c95cc4f3d2c73c682574f582640b9e1262128 Mon Sep 17 00:00:00 2001 From: ikarrus Date: Sat, 10 May 2014 19:53:48 -0600 Subject: [PATCH 093/185] [MAP] Firing Range Instructions -Added instructions to the firing range. -Set a default path for the controls -Controls are no longer dense --- _maps/map_files/tgstation.2.1.3.dmm | 8 ++++---- code/game/machinery/magnet.dm | 4 ++-- code/modules/paperwork/paper.dm | 6 +++++- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/_maps/map_files/tgstation.2.1.3.dmm b/_maps/map_files/tgstation.2.1.3.dmm index 3b7693e3b34..2b318bdf2a7 100644 --- a/_maps/map_files/tgstation.2.1.3.dmm +++ b/_maps/map_files/tgstation.2.1.3.dmm @@ -4181,7 +4181,9 @@ "bCu" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plating,/area/maintenance/aft) "bCv" = (/turf/simulated/wall,/area/maintenance/aft) "bCw" = (/turf/simulated/wall,/area/storage/tech) +"bCx" = (/obj/structure/table/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/recharger{pixel_y = 4},/obj/item/weapon/paper/range,/turf/simulated/floor/plating{tag = "icon-warnplate (SOUTHEAST)"; icon_state = "warnplate"; dir = 6},/area/toxins/misc_lab) "bCy" = (/obj/structure/table,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/item/stack/cable_coil/random,/obj/item/stack/cable_coil/random,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) +"bCz" = (/obj/structure/rack,/obj/item/weapon/gun/energy/laser/practice,/obj/item/clothing/ears/earmuffs,/turf/simulated/floor,/area/toxins/misc_lab) "bCA" = (/turf/simulated/wall,/area/janitor) "bCB" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall,/area/janitor) "bCC" = (/obj/machinery/door/airlock{name = "Custodial Closet"; req_access_txt = "26"},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/janitor) @@ -5304,7 +5306,6 @@ "bYb" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/toxins/misc_lab) "bYc" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/misc_lab) "bYd" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/toxins/misc_lab) -"bYe" = (/obj/structure/table/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/recharger{pixel_y = 4},/obj/item/weapon/gun/energy/laser/practice,/turf/simulated/floor/plating{tag = "icon-warnplate (SOUTHEAST)"; icon_state = "warnplate"; dir = 6},/area/toxins/misc_lab) "bYf" = (/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/toxins/misc_lab) "bYg" = (/obj/structure/table/reinforced,/obj/machinery/door/window/brigdoor{base_state = "rightsecure"; dir = 8; icon_state = "rightsecure"; name = "Armory Desk"; req_access_txt = "3"},/obj/machinery/door/window/eastleft{name = "Reception Desk"; req_access_txt = "1"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/ai_monitored/security/armory) "bYh" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plating,/area/toxins/misc_lab) @@ -5416,7 +5417,6 @@ "caj" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/toxins/misc_lab) "cak" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/toxins/misc_lab) "cal" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor,/area/toxins/misc_lab) -"cam" = (/obj/structure/rack,/turf/simulated/floor,/area/toxins/misc_lab) "can" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/asmaint2) "cao" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/incinerator) "cap" = (/obj/structure/lattice,/obj/structure/lattice,/turf/space,/area/space) @@ -9291,9 +9291,9 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabTXaaaaafaafbTYbTYbTYbTYbTYbTYbTYbTYbCvbCvbTZbCvbCvbCvbPtbPubPvbCvbCvbLXbCvckdbELbCvbTbbOqbOqbUabOqbOqbOqbOqbOqbOqbOqbUbbUcbQMbUdbMjbNrbNrbUebUfbUgbUhbOGbOGbOGbTnbUibONbONbUjbUkbUlbPLbUmbUnbUobUpbPQbPRbUqbUrbUrbOPaafbzgbNIbNJbNJbNJbNJbNKbUsbUtbUubUvbUwbUxbUybUybUzbRobNJbTIbSCbEhbEhbEhbUAbUBbSIbUCbMNbUDbUEbSEbSEbUFbJWbUGbUHbUIbRxbUJbRBbSQbUKbTRbULbQubUMbUMbUMbRHbUNbQubNhbgZaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabUObUPbUQbURbUSbURbUTbUUbUVbUWbUXbUYbUZbTYbVabVbbVbbVbbVbbVbbVbbVbbVbbVbbVcbVdbVebVebVebVebVfbVgbVgbVhbVibVjbVkbVlbVlbVlbVmbVnbMgbQMbVobVpbVqbONbONbONbVrbVsbONbONbVtbVubVvbOGbVwbVxbVybVzbOGbVAbVBbVCbRdaafbRebVDbVEbVFbOPaafbVGbVHbVIbVIbVIbVJbNJbVKbOXbVLbVMbVNbVObSybVPbSzbVQbNJbTIbSCbJWbJWbJWbJWbVRbVSbTLbVTbVRbJWbJWbJWbJWbJWbVUbVVbVWbVXbVYbVZbVZbVZbWabWbbSSbUMbUMbWcbRHbWdbQubNhbgZbgZbgZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabWebWebWebWebWebWfbWgbWhbWibWibWhbTYbELbWjbWkbWkbWkbWkbWkbWkbWlbCvbWmbWnbWnbWnbWnbWnbWnbWnbWnbWobWobWpbWobWobWqbELbCvbWrbMgbQMbVobWsbWtbWubWvbSfbWwbWxbSfbSfbWybWzbWAbWBbWCbWDbWEbWFbOGbVAbWGbWHbWIbSobPRbWJbUrbUrbOPaafbWKbWLbCDbCDbCDbWMbNJbWNbWObUzbWPbWQbUtbWRbWSbWTbUtbNJbTIbSCbSDbSEbSEbWUbSGbMNbSHbSIbWVbWWbEhbEhbEhbJWbWXbWYbWZbRxbRybRxbRybRybXabXbbQubUMbUMbUMbRHbWdbQubNhblAblAbgZaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbXcbXdbXebXfbXebXgbXhbXibXjbXjbXkbTYbXlbXmaaaaaaaafaaaaaaaafaaabCvbWmbWnbXnbXobXpbXqbXrbXsbXnbXtbXubXvbXwbWobWobELbCvbXxbMgbQMbXybXzbXAbXBbXCbMjbMobMjbMjbMjbXDbXEbNrbNrbNrbXFbOGbVybOGbVAbVBbXGbRdaafbOPbOPbOPbOPbOPaafbXHbXIbCDbXJbXKbWMbNJbXLbRqbXMbXNbWQbOXbXObWSbXPbXQbNJbTIbSCbEhbXRbEhbXSbTKbMNbTLbMNbTMbXTbEhbXRbEhbJWbXUbXVbXWbXXbXYbXZbYabYbbYcbYdbSSbYebYfchUbRHbYhbQubYibgZblAbgZbgZbgZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbXcbXdbXebXfbXebXgbXhbXibXjbXjbXkbTYbXlbXmaaaaaaaafaaaaaaaafaaabCvbWmbWnbXnbXobXpbXqbXrbXsbXnbXtbXubXvbXwbWobWobELbCvbXxbMgbQMbXybXzbXAbXBbXCbMjbMobMjbMjbMjbXDbXEbNrbNrbNrbXFbOGbVybOGbVAbVBbXGbRdaafbOPbOPbOPbOPbOPaafbXHbXIbCDbXJbXKbWMbNJbXLbRqbXMbXNbWQbOXbXObWSbXPbXQbNJbTIbSCbEhbXRbEhbXSbTKbMNbTLbMNbTMbXTbEhbXRbEhbJWbXUbXVbXWbXXbXYbXZbYabYbbYcbYdbSSbCxbYfchUbRHbYhbQubYibgZblAbgZbgZbgZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafbXcbYjbYkbYlbYmbWhbYnbWhbYobWhbWhbYpbELbXmaaaaaaaafaaaaaaaafaaabCvbWmbWnbXnbYqbYrbYsbYtbYubXnbYvbYwbYxbYybYzbWobELbCvbWrbMgbQMbYAbYBbMobYCbYDbMjbYEbYFbYGbMjbYHbTnbYIbNrbYJbWFbOGbWDbYKbYLbUnbYMbUpbPQbPRbYNbYObYPbOPaafbCDbXIbCDbYQbXKbWMbNJbYRbYSbYTbYUbYVbOQbYWdprchWchXbNJbTIbSCbEhbEhbEhbYZbZabSIbUCbMNbUDbZbbSEbSEbUFbDcbRHbZcbZdbZebRHbRHbZfbZgbZhbZibZjbVYbVZbZkbUMbYhbQubNhbgZbrqbgZbZlbgZaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafbXcbZmbZnbZobZnbZpbZqbZrbZsbZtbZubTYbZvbZwaaaaaaaaaaaaaaaaaaaaabCvbWmbWnbZxbZybZzbYsbZAbZxbZxbYvbZBbZCbZDbZEbZFbZGbZHbZIbZJbZKbZLbZMbZNbZObZPbZQbZRbZSbZTbMjbOGbTnbZUbZVbYJbZWbOGbWDbYKbVAbVBbZXbRdaafbReclkbZZcaabOPaafbCDbXIbCDcabcacbWMbNJbNJcadcaebNJbNNbNJbNJbSubNJbNJbNJbTIbSCbJWbJWbJWbJWbVRcafbTLcagbVRbJWbJWbJWbJWbDcbTRcahbTRbTRbTRbRHbZfbZgcaicajcakcalbRxcambRHbYhbQubNhbgZblAblAblAcanaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafbXcbZmbZnbZobZnbZpbZqbZrbZsbZtbZubTYbZvbZwaaaaaaaaaaaaaaaaaaaaabCvbWmbWnbZxbZybZzbYsbZAbZxbZxbYvbZBbZCbZDbZEbZFbZGbZHbZIbZJbZKbZLbZMbZNbZObZPbZQbZRbZSbZTbMjbOGbTnbZUbZVbYJbZWbOGbWDbYKbVAbVBbZXbRdaafbReclkbZZcaabOPaafbCDbXIbCDcabcacbWMbNJbNJcadcaebNJbNNbNJbNJbSubNJbNJbNJbTIbSCbJWbJWbJWbJWbVRcafbTLcagbVRbJWbJWbJWbJWbDcbTRcahbTRbTRbTRbRHbZfbZgcaicajcakcalbRxbCzbRHbYhbQubNhbgZblAblAblAcanaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafbWebWebWebWebWebTYbTYcaobTYbTYbTYbTYaafaaaaaaaPYaaaaaaaaaaaaaaacaqbWmbWnbZxbZxcarcasbXnbZxcatcaucavcawcaxcaybWobELbCvcazcaAcaBcaCcaDcaEcaFcaGcaHcaIcaJcaKbMjcaLcaMbZUbNrbYJcaNbOGcaObYKbVAcaPcaQbWIbSobPRcaRbYObYObOPaafcaSbXIbCDcaTbXKbWMcaUbNJbNJcaVbNJdpGdpFdpEdpzcaZcbabXKbTIbSCbSDbSEbSEcbbbSGbMNbSHbSIcbccbdbEhbEhbEhbDccbebTRdtebTRbTRbRHcbfcbgcbhcbibQubQubRxbQubRHcbjbQubNhbgZcbkcblcbmcbnaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHaaHaaHaaGaaGaaHaaGaaGaaGaaRaaGaaGaaGaaHaaGaafaafbCvbELbELbELbELbELbELbELbELcbocbpaafaaaaaaaafaagaFFaaaaaaaaabRMbWmbWncbscbtcascbubXnbXncbvcbwcbvcbxbYycbybWobELbTZbQLbMgcbzcbAcbBcaEcbCcbDcbEcbFciWcjcckbbPHcbIbNrbNrbNrcbJbOGcbKcbLbVAbVBbOGbRdaafbOPbOPbOPbOPbOPaafcbMbXIbCDcbNcbObVHbVIbVIcbPcbQbNKdpCdpBdpDdpzcbUcbVcbVcbWbSCbEhbEhbEhcbXbTKbMNbTLbMNbTMcbYbEhbEhbEhbDccbZbTRccabTRbTRccbcccccdcceccfbQubRxbRxccgbRHcchblAccibgZccjcckblAcclaafaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHaaaaaaaafaafaaaaafaafaaaaaaaafaafaafaaaaaGaaaaaabCvccmbELbCvbCvbTZbCvbCvbCvbCvbCvaaaaaaaaaaagaDIauKaagaagaafbRMbWmbWnccpbZxbXnbXnbXnbZxcatccqccrbYyccscctbZFbZHbZHccuccvccwcbAcbAccxcaFccycczccAccBccCbMjbOGbOJccDccEccFbQWccGccHccIbYLbUnccJbUpbPQbPRccKccLccLbOPaafbXHbXIbCDbCDbCDbXKbCDbCDccMccNbNKbNKdpAbNKdpzccNbFoccPccQbSCbEhbEhbEhccRccSbSIccTbMNbUDccUbSEbSEbUFbDcbTRbTRccVbTRbTRbRHcbfcbgccWccXbQuccYccZcdabRHcdbblAbNhbgZbgZbgZblAbgZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/code/game/machinery/magnet.dm b/code/game/machinery/magnet.dm index 174c80104e1..71d44429c2e 100644 --- a/code/game/machinery/magnet.dm +++ b/code/game/machinery/magnet.dm @@ -197,7 +197,7 @@ name = "magnetic control console" icon = 'icons/obj/airlock_machines.dmi' // uses an airlock machine icon, THINK GREEN HELP THE ENVIRONMENT - RECYCLING! icon_state = "airlock_control_standby" - density = 1 + density = 0 anchored = 1.0 use_power = 1 idle_power_usage = 45 @@ -208,7 +208,7 @@ var/autolink = 0 // if set to 1, can't probe for other magnets! var/pathpos = 1 // position in the path - var/path = "NULL" // text path of the magnet + var/path = "w;e;e;w;s;n;n;s" // text path of the magnet var/speed = 1 // lowest = 1, highest = 10 var/list/rpath = list() // real path of the magnet, used in iterator diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index b2663a00cdc..6c10e756d78 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -252,7 +252,7 @@ return t = parsepencode(t, i, usr, iscrayon) // Encode everything from pencode to html - + if(t != null) //No input from the user means nothing needs to be added if(id!="end") addtofield(text2num(id), t) // He wants to edit a field, let him. @@ -341,6 +341,10 @@ name = "paper- 'Official Bulletin'" info = "
Centcom Security
Port Division
Official Bulletin

Inspector,
There is an emergency shuttle arriving today.

Approval is restricted to Nanotrasen employees only. Deny all other entrants.

Centcom Port Commissioner" +/obj/item/weapon/paper/range + name = "paper- Firing Range Instructions" + info = "Directions:
First you'll want to make sure there is a target stake in the center of the magnetic platform. Next, take an aluminum target from the crates back there and slip it into the stake. Make sure it clicks! Next, there should be a control console mounted on the wall somewhere in the room.

This control console dictates the behaviors of the magnetic platform, which can move your firing target around to simulate real-world combat situations. From here, you can turn off the magnets or adjust their electromagnetic levels and magnetic fields. The electricity level dictates the strength of the pull - you will usually want this to be the same value as the speed. The magnetic field level dictates how far the magnetic pull reaches.

Speed and path are the next two settings. Speed is associated with how fast the machine loops through the designated path. Paths dictate where the magnetic field will be centered at what times. There should be a pre-fabricated path input already. You can enable moving to observe how the path affects the way the stake moves. To script your own path, look at the following key:


N: North
S: South
E: East
W: West
C: Center
R: Random (results may vary)
; or &: separators. They are not necessary but can make the path string better visible." + /obj/item/weapon/paper/crumpled name = "paper scrap" icon_state = "scrap" From e09e0e01853a849c69666249b17c18009acc63f5 Mon Sep 17 00:00:00 2001 From: ikarrus Date: Sun, 11 May 2014 10:54:37 -0600 Subject: [PATCH 094/185] Converted early shuttle launch notices to priority announcements --- code/game/machinery/computer/shuttle.dm | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/code/game/machinery/computer/shuttle.dm b/code/game/machinery/computer/shuttle.dm index d43833b955f..73bf7b1eb11 100644 --- a/code/game/machinery/computer/shuttle.dm +++ b/code/game/machinery/computer/shuttle.dm @@ -36,11 +36,11 @@ if (src.auth_need - src.authorized.len > 0) message_admins("[key_name(user.client)](?) has authorized early shuttle launch in ([x],[y],[z] - JMP)",0,1) log_game("[user.ckey]([user]) has authorized early shuttle launch in ([x],[y],[z])") - world << text("\blue Alert: [] authorizations needed until shuttle is launched early", src.auth_need - src.authorized.len) + priority_announce("[src.auth_need - src.authorized.len] more authorization(s) needed until shuttle is launched early", null, null, "Priority") else message_admins("[key_name(user.client)](?) has launched the emergency shuttle in ([x],[y],[z] - JMP)",0,1) log_game("[user.ckey]([user]) has launched the emergency shuttle in ([x],[y],[z])") - world << "\blue Alert: Shuttle launch time shortened to 10 seconds!" + priority_announce("The emergency shuttle will launch in 10 seconds", null, null, "Priority") emergency_shuttle.online = 1 emergency_shuttle.settimeleft(10) //src.authorized = null @@ -49,10 +49,10 @@ if("Repeal") src.authorized -= W:registered_name - world << text("\blue Alert: [] authorizations needed until shuttle is launched early", src.auth_need - src.authorized.len) + priority_announce("[src.auth_need - src.authorized.len] authorizations needed until shuttle is launched early", null, null, "Priority") if("Abort") - world << "\blue All authorizations to shorting time for shuttle launch have been revoked!" + priority_announce("All authorizations to launch the shuttle early have been revoked.", null, null, "Priority") src.authorized.len = 0 src.authorized = list( ) @@ -64,7 +64,7 @@ if("Launch") message_admins("[key_name(user.client)](?) has emagged the emergency shuttle in ([x],[y],[z] - JMP)",0,1) log_game("[user.ckey]([user]) has emagged the emergency shuttle in ([x],[y],[z])") - world << "\blue Alert: Shuttle launch time shortened to 10 seconds!" + priority_announce("System Error: The emergency shuttle will launch in 10 seconds", null, null, "Priority") emergency_shuttle.settimeleft( 10 ) emagged = 1 if("Cancel") From 00d9bc8098f7f280617c9ce15432dbd5a087d53e Mon Sep 17 00:00:00 2001 From: CollenN Date: Sun, 11 May 2014 13:25:27 -0400 Subject: [PATCH 095/185] Robot Item Sprites Adds a file called robot_items.dmi. Did some minor tweaks to the borg goggle/hudglasses sprites to make them look slightly mechanical, and added a sprite for the electric arm, which is animated, replacing the old warning triangle sign. --- code/game/objects/items/robot/robot_items.dm | 10 +++++----- icons/mob/robot_items.dmi | Bin 0 -> 920 bytes 2 files changed, 5 insertions(+), 5 deletions(-) create mode 100644 icons/mob/robot_items.dmi diff --git a/code/game/objects/items/robot/robot_items.dm b/code/game/objects/items/robot/robot_items.dm index bd34595c8a1..92f4e2fdd57 100644 --- a/code/game/objects/items/robot/robot_items.dm +++ b/code/game/objects/items/robot/robot_items.dm @@ -6,8 +6,8 @@ //Might want to move this into several files later but for now it works here /obj/item/borg/stun name = "electrified arm" - icon = 'icons/obj/decals.dmi' - icon_state = "shock" + icon = 'icons/mob/robot_items.dmi' + icon_state = "elecarm" attack(mob/M as mob, mob/living/silicon/robot/user as mob) @@ -45,14 +45,14 @@ /obj/item/borg/sight/thermal name = "\proper thermal vision" sight_mode = BORGTHERM - icon = 'icons/obj/clothing/glasses.dmi' + icon = 'icons/mob/robot_items.dmi' icon_state = "thermal" /obj/item/borg/sight/meson name = "\proper meson vision" sight_mode = BORGMESON - icon = 'icons/obj/clothing/glasses.dmi' + icon = 'icons/mob/robot_items.dmi' icon_state = "meson" @@ -63,7 +63,7 @@ /obj/item/borg/sight/hud/med name = "medical hud" - icon = 'icons/obj/clothing/glasses.dmi' + icon = 'icons/mob/robot_items.dmi' icon_state = "healthhud" diff --git a/icons/mob/robot_items.dmi b/icons/mob/robot_items.dmi new file mode 100644 index 0000000000000000000000000000000000000000..35a2148f5380cf1728ff9ca520457375685b5c00 GIT binary patch literal 920 zcmV;J184k+P)Gg$vA|3xXJ001j1HKnDc znE(KpnVEoqfM#ZZSy^%a{{a90Gdemt?vg$H00001bW%=J06^y0W&i*HrFv9YbVOxy zV{&P5bZKvH004NLjgZR5DKjvaZG)y z)s1a}Ie#oc;NJR055amt9NnTBp&OZG{>KFmo#pz0(9Hk<0uf0>K~!jg?U-Rt!Y~kq3$?7$QBgN0(@m*kg8cvgXS*p8)?OQ6 zPR+f9^uu$#_tuq=J3>$>6zYF!0&qkTaOXG)b0n0Jx`8aPm%Pj>6@hJ4^Hf2zA#D@-4$|tFLQ-+0S zjelm&reIOjF~}SL-0;%In+kN^34Io=|8a!2ZupCoHonLf+P^3!1!IwZ#hnw#m)gH9 zC#9Vm2g=$--w|pF@bE=u{ELDWIw0!a@?~!P%aWCLehKYMv(+EKQ79A&g+ifFzeCBu ze5K%+zIm!%6-kHVL{)1wBqwTJt7<^5BkD>G$%$eNPS7(aN^4MFzrEE!MBkjKO|soU z2{zjV=I8DInLF?f1}L=(;LaQk2ONBy%fyfN%e63WY-9d;sSI zI3K|Iz#o|pxEqVh%m<*xCFmVP?Rmf*SV8S`NdFH$fM@>D_U}Lj!_S{DxE0pl`{xU% u^6>dUPdvE4?~7k(K5#n6`2Y$vggyY6qFn0>{aE$@0000 Date: Sun, 11 May 2014 23:33:46 +0400 Subject: [PATCH 096/185] Yes. Lowercase. How could I forget. --- code/game/objects/items/weapons/twohanded.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/objects/items/weapons/twohanded.dm b/code/game/objects/items/weapons/twohanded.dm index 25bc721ab43..10e8b342b0b 100644 --- a/code/game/objects/items/weapons/twohanded.dm +++ b/code/game/objects/items/weapons/twohanded.dm @@ -214,7 +214,7 @@ obj/item/weapon/twohanded/ /obj/item/weapon/twohanded/dualsaber/attack(target as mob, mob/living/user as mob) ..() if((CLUMSY in user.mutations) && (wielded) && prob(40)) - Impale(user) + impale(user) return if((wielded) && prob(50)) spawn(0) @@ -222,7 +222,7 @@ obj/item/weapon/twohanded/ user.dir = i sleep(1) -/obj/item/weapon/twohanded/dualsaber/proc/Impale(mob/living/user as mob) +/obj/item/weapon/twohanded/dualsaber/proc/impale(mob/living/user as mob) user << "You twirl around a bit before losing your balance and impaling yourself on the [src]." if (force_wielded) user.take_organ_damage(20,25) From b0a5761ae6da58ace8b63a604ca5f16747ee6dcc Mon Sep 17 00:00:00 2001 From: John Smith Date: Sun, 11 May 2014 19:55:52 -0700 Subject: [PATCH 097/185] Ministation Compile Fix Fixes line 196 of MiniStation.dmm to compile correctly with new code. --- _maps/map_files/MiniStation/MiniStation.dmm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_maps/map_files/MiniStation/MiniStation.dmm b/_maps/map_files/MiniStation/MiniStation.dmm index 052b83b8a64..b06a3e861d5 100644 --- a/_maps/map_files/MiniStation/MiniStation.dmm +++ b/_maps/map_files/MiniStation/MiniStation.dmm @@ -193,7 +193,7 @@ "adK" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"},/turf/simulated/wall,/area/medical/research{name = "Research Division"}) "adL" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "adM" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) -"adN" = (/obj/machinery/mineral/equipment_locker,/turf/simulated/floor{icon_state = "browncorner"; dir = 8},/area/quartermaster/storage) +"adN" = (/obj/machinery/mineral/equipment_vendor,/turf/simulated/floor{icon_state = "browncorner"; dir = 8},/area/quartermaster/storage) "adO" = (/obj/effect/landmark/start{name = "Cargo Technician"},/turf/simulated/floor,/area/quartermaster/storage) "adP" = (/obj/effect/landmark/start{name = "Cargo Tech"},/turf/simulated/floor,/area/quartermaster/storage) "adQ" = (/obj/structure/dispenser/oxygen,/turf/simulated/floor,/area/quartermaster/storage) From 4fedd9fa28e3788f3c0580947d23c480c3e09069 Mon Sep 17 00:00:00 2001 From: ikarrus Date: Sun, 11 May 2014 22:00:28 -0600 Subject: [PATCH 098/185] Medbots no longer waste chemicals Medbots will no longer expend the entire contents of their internal beaker on one patient. --- code/game/machinery/bots/medbot.dm | 52 ++++++++++++++++-------------- 1 file changed, 27 insertions(+), 25 deletions(-) diff --git a/code/game/machinery/bots/medbot.dm b/code/game/machinery/bots/medbot.dm index c701f672c9f..13ecb80f601 100644 --- a/code/game/machinery/bots/medbot.dm +++ b/code/game/machinery/bots/medbot.dm @@ -347,9 +347,8 @@ //If they're injured, we're using a beaker, and don't have one of our WONDERCHEMS. if((src.reagent_glass) && (src.use_beaker) && ((C.getBruteLoss() >= heal_threshold) || (C.getToxLoss() >= heal_threshold) || (C.getToxLoss() >= heal_threshold) || (C.getOxyLoss() >= (heal_threshold + 15)))) for(var/datum/reagent/R in src.reagent_glass.reagents.reagent_list) - if(!C.reagents.has_reagent(R)) + if(!C.reagents.has_reagent(R.id)) return 1 - continue //They're injured enough for it! if((C.getBruteLoss() >= heal_threshold) && (!C.reagents.has_reagent(src.treatment_brute))) @@ -395,36 +394,40 @@ var/reagent_id = null - //Use whatever is inside the loaded beaker. If there is one. - if((src.use_beaker) && (src.reagent_glass) && (src.reagent_glass.reagents.total_volume)) - reagent_id = "internal_beaker" - if(src.emagged == 2) //Emagged! Time to poison everybody. reagent_id = "toxin" - var/virus = 0 - for(var/datum/disease/D in C.viruses) - virus = 1 + else + var/virus = 0 + for(var/datum/disease/D in C.viruses) + virus = 1 - if (!reagent_id && (virus)) - if(!C.reagents.has_reagent(src.treatment_virus)) - reagent_id = src.treatment_virus + if (!reagent_id && (virus)) + if(!C.reagents.has_reagent(src.treatment_virus)) + reagent_id = src.treatment_virus - if (!reagent_id && (C.getBruteLoss() >= heal_threshold)) - if(!C.reagents.has_reagent(src.treatment_brute)) - reagent_id = src.treatment_brute + if (!reagent_id && (C.getBruteLoss() >= heal_threshold)) + if(!C.reagents.has_reagent(src.treatment_brute)) + reagent_id = src.treatment_brute - if (!reagent_id && (C.getOxyLoss() >= (15 + heal_threshold))) - if(!C.reagents.has_reagent(src.treatment_oxy)) - reagent_id = src.treatment_oxy + if (!reagent_id && (C.getOxyLoss() >= (15 + heal_threshold))) + if(!C.reagents.has_reagent(src.treatment_oxy)) + reagent_id = src.treatment_oxy - if (!reagent_id && (C.getFireLoss() >= heal_threshold)) - if(!C.reagents.has_reagent(src.treatment_fire)) - reagent_id = src.treatment_fire + if (!reagent_id && (C.getFireLoss() >= heal_threshold)) + if(!C.reagents.has_reagent(src.treatment_fire)) + reagent_id = src.treatment_fire - if (!reagent_id && (C.getToxLoss() >= heal_threshold)) - if(!C.reagents.has_reagent(src.treatment_tox)) - reagent_id = src.treatment_tox + if (!reagent_id && (C.getToxLoss() >= heal_threshold)) + if(!C.reagents.has_reagent(src.treatment_tox)) + reagent_id = src.treatment_tox + + //If the patient is injured but doesn't have our special reagent in them then we should give it to them first + if(reagent_id && src.use_beaker && src.reagent_glass && src.reagent_glass.reagents.total_volume) + for(var/datum/reagent/R in src.reagent_glass.reagents.reagent_list) + if(!C.reagents.has_reagent(R.id)) + reagent_id = "internal_beaker" + break if(!reagent_id) //If they don't need any of that they're probably cured! src.oldpatient = src.patient @@ -453,7 +456,6 @@ src.currently_healing = 0 return -// src.speak(reagent_id) reagent_id = null return From 6e58efa6c473c3a6451d2c1368b59a132606665b Mon Sep 17 00:00:00 2001 From: Jordie0608 Date: Mon, 12 May 2014 23:55:07 +1000 Subject: [PATCH 099/185] Frequency spellfix --- code/game/machinery/bots/cleanbot.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/machinery/bots/cleanbot.dm b/code/game/machinery/bots/cleanbot.dm index 481ba304c38..083036d6def 100644 --- a/code/game/machinery/bots/cleanbot.dm +++ b/code/game/machinery/bots/cleanbot.dm @@ -123,7 +123,7 @@ text("[src.oddbutton ? "Yes" : "No" src.patrol_path = null src.updateUsrDialog() if("freq") - var/freq = text2num(input("Select frequency for navigation beacons", "Frequnecy", num2text(beacon_freq / 10))) * 10 + var/freq = text2num(input("Select frequency for navigation beacons", "Frequency", num2text(beacon_freq / 10))) * 10 if (freq > 0) src.beacon_freq = freq src.updateUsrDialog() From dfd2cc4b6047e76dc8b4302893a5042f711c213c Mon Sep 17 00:00:00 2001 From: Jordie0608 Date: Tue, 13 May 2014 01:44:29 +1000 Subject: [PATCH 100/185] Changed suicide messages to visible_messages and fixed relative pathing --- code/defines/obj/weapon.dm | 4 +-- .../game/objects/items/stacks/sheets/glass.dm | 6 ++--- code/game/objects/items/toys.dm | 26 +++++++++---------- code/game/objects/items/weapons/explosives.dm | 2 +- code/game/objects/items/weapons/kitchen.dm | 24 ++++++++--------- .../objects/items/weapons/melee/energy.dm | 6 ++--- code/game/objects/items/weapons/melee/misc.dm | 2 +- .../game/objects/items/weapons/power_cells.dm | 4 +-- code/game/objects/items/weapons/stunbaton.dm | 4 +-- code/game/objects/items/weapons/tools.dm | 6 ++--- code/game/objects/items/weapons/weaponry.dm | 20 +++++++------- code/modules/hydroponics/growninedible.dm | 8 +++--- code/modules/hydroponics/hydroitemdefines.dm | 20 +++++++------- code/modules/power/cable.dm | 12 ++++----- code/modules/surgery/tools.dm | 18 ++++++------- 15 files changed, 81 insertions(+), 81 deletions(-) diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm index 21f89fb2e7b..230194070b9 100644 --- a/code/defines/obj/weapon.dm +++ b/code/defines/obj/weapon.dm @@ -175,8 +175,8 @@ desc = "A trap used to catch bears and other legged creatures." var/armed = 0 - suicide_act(mob/user) - viewers(user) << "[user] is putting the [src.name] on \his head! It looks like \he's trying to commit suicide." + /obj/item/weapon/legcuffs/beartrap/suicide_act(mob/user) + user.visible_message("[user] is putting the [src.name] on \his head! It looks like \he's trying to commit suicide.") return (BRUTELOSS) /obj/item/weapon/legcuffs/beartrap/attack_self(mob/user as mob) diff --git a/code/game/objects/items/stacks/sheets/glass.dm b/code/game/objects/items/stacks/sheets/glass.dm index 7b09833e591..aa1a50edca7 100644 --- a/code/game/objects/items/stacks/sheets/glass.dm +++ b/code/game/objects/items/stacks/sheets/glass.dm @@ -250,9 +250,9 @@ attack_verb = list("stabbed", "slashed", "sliced", "cut") hitsound = 'sound/weapons/bladeslice.ogg' - suicide_act(mob/user) - viewers(user) << pick("[user] is slitting \his wrists with the shard of glass! It looks like \he's trying to commit suicide.", \ - "[user] is slitting \his throat with the shard of glass! It looks like \he's trying to commit suicide.") + /obj/item/weapon/shard/suicide_act(mob/user) + user.visible_message(pick("[user] is slitting \his wrists with the shard of glass! It looks like \he's trying to commit suicide.", \ + "[user] is slitting \his throat with the shard of glass! It looks like \he's trying to commit suicide.")) return (BRUTELOSS) diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index 71e978a4529..7537f0cb915 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -121,14 +121,14 @@ attack_verb = list("struck", "pistol whipped", "hit", "bashed") var/bullets = 7.0 - examine() + /obj/item/toy/gun/examine() set src in usr src.desc = text("There are [] cap\s left. Looks almost like the real thing! Ages 8 and up.", src.bullets) ..() return - attackby(obj/item/toy/ammo/gun/A as obj, mob/user as mob) + /obj/item/toy/gun/attackby(obj/item/toy/ammo/gun/A as obj, mob/user as mob) if (istype(A, /obj/item/toy/ammo/gun)) if (src.bullets >= 7) @@ -149,7 +149,7 @@ return 1 return - afterattack(atom/target as mob|obj|turf|area, mob/user as mob, flag) + /obj/item/toy/gun/afterattack(atom/target as mob|obj|turf|area, mob/user as mob, flag) if (flag) return if (!(istype(usr, /mob/living/carbon/human) || ticker) && ticker.mode.name != "monkey") @@ -193,13 +193,13 @@ attack_verb = list("attacked", "struck", "hit") var/bullets = 5 - examine() + /obj/item/toy/crossbow/examine() set src in view(2) ..() if (bullets) usr << "\blue It is loaded with [bullets] foam darts!" - attackby(obj/item/I as obj, mob/user as mob) + /obj/item/toy/crossbow/attackby(obj/item/I as obj, mob/user as mob) if(istype(I, /obj/item/toy/ammo/crossbow)) if(bullets <= 4) user.drop_item() @@ -210,7 +210,7 @@ usr << "\red It's already fully loaded." - afterattack(atom/target as mob|obj|turf|area, mob/user as mob, flag) + /obj/item/toy/crossbow/afterattack(atom/target as mob|obj|turf|area, mob/user as mob, flag) if(!isturf(target.loc) || target == user) return if(flag) return @@ -258,7 +258,7 @@ O.show_message(text("\red [] realized they were out of ammo and starting scrounging for some!", user), 1) - attack(mob/M as mob, mob/user as mob) + /obj/item/toy/crossbow/attack(mob/M as mob, mob/user as mob) src.add_fingerprint(user) // ******* Check @@ -310,7 +310,7 @@ attack_verb = list("attacked", "struck", "hit") var/hacked = 0 - attack_self(mob/user as mob) + /obj/item/toy/sword/attack_self(mob/user as mob) active = !( active ) if (active) user << "\blue You extend the plastic blade with a quick flick of your wrist." @@ -418,10 +418,10 @@ var/uses = 30 //0 for unlimited uses var/instant = 0 var/colourName = "red" //for updateIcon purposes - suicide_act(mob/user) - viewers(user) << "[user] is jamming the [src.name] up \his nose and into \his brain. It looks like \he's trying to commit suicide." + /obj/item/toy/crayon/suicide_act(mob/user) + user.visible_message("[user] is jamming the [src.name] up \his nose and into \his brain. It looks like \he's trying to commit suicide.") return (BRUTELOSS|OXYLOSS) - New() + /obj/item/toy/crayon/New() ..() name = "[colourName] crayon" //Makes crayons identifiable in things like grinders /* @@ -434,13 +434,13 @@ icon_state = "snappop" w_class = 1 - throw_impact(atom/hit_atom) + /obj/item/toy/snappop/throw_impact(atom/hit_atom) ..() var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(3, 1, src) s.start() new /obj/effect/decal/cleanable/ash(src.loc) - src.visible_message("\red The [src.name] explodes!","\red You hear a snap!") + src.visible_message(" The [src.name] explodes!"," You hear a snap!") playsound(src, 'sound/effects/snap.ogg', 50, 1) qdel(src) diff --git a/code/game/objects/items/weapons/explosives.dm b/code/game/objects/items/weapons/explosives.dm index 9ff6e7bfd03..c5c2f83e071 100644 --- a/code/game/objects/items/weapons/explosives.dm +++ b/code/game/objects/items/weapons/explosives.dm @@ -23,7 +23,7 @@ /obj/item/weapon/plastique/suicide_act(var/mob/user) . = (BRUTELOSS) - viewers(user) << "[user] activates the C4 and holds it above his head! It looks like \he's going out with a bang!" + user.visible_message("[user] activates the C4 and holds it above his head! It looks like \he's going out with a bang!") var/message_say = "FOR NO RAISIN!" if(user.mind) if(user.mind.special_role) diff --git a/code/game/objects/items/weapons/kitchen.dm b/code/game/objects/items/weapons/kitchen.dm index 2db80a1c890..f7bd2811a24 100644 --- a/code/game/objects/items/weapons/kitchen.dm +++ b/code/game/objects/items/weapons/kitchen.dm @@ -82,10 +82,10 @@ force = 10.0 throwforce = 10.0 - suicide_act(mob/user) - viewers(user) << pick("[user] is slitting \his wrists with the [src.name]! It looks like \he's trying to commit suicide.", \ + /obj/item/weapon/kitchen/utensil/knife/suicide_act(mob/user) + user.visible_message(pick("[user] is slitting \his wrists with the [src.name]! It looks like \he's trying to commit suicide.", \ "[user] is slitting \his throat with the [src.name]! It looks like \he's trying to commit suicide.", \ - "[user] is slitting \his stomach open with the [src.name]! It looks like \he's trying to commit seppuku.") + "[user] is slitting \his stomach open with the [src.name]! It looks like \he's trying to commit seppuku.")) return (BRUTELOSS) /obj/item/weapon/kitchen/utensil/knife/attack(target as mob, mob/living/user as mob) @@ -114,10 +114,10 @@ origin_tech = "materials=1" attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") - suicide_act(mob/user) - viewers(user) << pick("[user] is slitting \his wrists with the [src.name]! It looks like \he's trying to commit suicide.", \ + /obj/item/weapon/kitchenknife/suicide_act(mob/user) + user.visible_message(pick("[user] is slitting \his wrists with the [src.name]! It looks like \he's trying to commit suicide.", \ "[user] is slitting \his throat with the [src.name]! It looks like \he's trying to commit suicide.", \ - "[user] is slitting \his stomach open with the [src.name]! It looks like \he's trying to commit seppuku.") + "[user] is slitting \his stomach open with the [src.name]! It looks like \he's trying to commit seppuku.")) return (BRUTELOSS) /obj/item/weapon/kitchenknife/ritual @@ -238,13 +238,13 @@ return //it always returns, but I feel like adding an extra return just for safety's sakes. EDIT; Oh well I won't :3 add_logs(user, M, "attacked", object="[src.name]") - + if(istype(M, /mob/living/carbon/human)) - + var/mob/living/carbon/human/H = M ///////////////////////////////////// /Let's have this ready for later. if(prob(50)) - playsound(M, 'sound/items/trayhit1.ogg', 50, 1) + playsound(M, 'sound/items/trayhit1.ogg', 50, 1) else playsound(M, 'sound/items/trayhit2.ogg', 50, 1) @@ -277,8 +277,8 @@ H.head.add_blood(H) if (H.glasses && prob(33)) H.glasses.add_blood(H) - - + + M.visible_message("[user] slams [M] in the face with the tray!", \ "[user] slams [M] in the face with the tray, against your mask!") @@ -304,7 +304,7 @@ M.Weaken(2) return return - + else ..() diff --git a/code/game/objects/items/weapons/melee/energy.dm b/code/game/objects/items/weapons/melee/energy.dm index 6683467952a..27cae71883b 100644 --- a/code/game/objects/items/weapons/melee/energy.dm +++ b/code/game/objects/items/weapons/melee/energy.dm @@ -2,8 +2,8 @@ var/active = 0 /obj/item/weapon/melee/energy/suicide_act(mob/user) - viewers(user) << pick("[user] is slitting \his stomach open with the [src.name]! It looks like \he's trying to commit seppuku.", \ - "[user] is falling on the [src.name]! It looks like \he's trying to commit suicide.") + user.visible_message(pick("[user] is slitting \his stomach open with the [src.name]! It looks like \he's trying to commit seppuku.", \ + "[user] is falling on the [src.name]! It looks like \he's trying to commit suicide.")) return (BRUTELOSS|FIRELOSS) /obj/item/weapon/melee/energy/rejects_blood() @@ -24,7 +24,7 @@ attack_verb = list("attacked", "chopped", "cleaved", "torn", "cut") /obj/item/weapon/melee/energy/axe/suicide_act(mob/user) - viewers(user) << "[user] swings the [src.name] towards /his head! It looks like \he's trying to commit suicide." + user.visible_message("[user] swings the [src.name] towards /his head! It looks like \he's trying to commit suicide.") return (BRUTELOSS|FIRELOSS) /obj/item/weapon/melee/energy/axe/attack_self(mob/user) diff --git a/code/game/objects/items/weapons/melee/misc.dm b/code/game/objects/items/weapons/melee/misc.dm index c9ee6618903..5faf9b065c3 100644 --- a/code/game/objects/items/weapons/melee/misc.dm +++ b/code/game/objects/items/weapons/melee/misc.dm @@ -13,7 +13,7 @@ hitsound = 'sound/weapons/slash.ogg' //pls replace /obj/item/weapon/melee/chainofcommand/suicide_act(mob/user) - viewers(user) << "[user] is strangling \himself with the [src.name]! It looks like \he's trying to commit suicide." + user.visible_message("[user] is strangling \himself with the [src.name]! It looks like \he's trying to commit suicide.") return (OXYLOSS) diff --git a/code/game/objects/items/weapons/power_cells.dm b/code/game/objects/items/weapons/power_cells.dm index 1d2e273aaee..821d19f6b67 100644 --- a/code/game/objects/items/weapons/power_cells.dm +++ b/code/game/objects/items/weapons/power_cells.dm @@ -19,8 +19,8 @@ var/construction_cost = list("metal"=750,"glass"=75) var/construction_time=100 - suicide_act(mob/user) - viewers(user) << "[user] is licking the electrodes of the [src.name]! It looks like \he's trying to commit suicide." + /obj/item/weapon/stock_parts/cell/suicide_act(mob/user) + user.visible_message("[user] is licking the electrodes of the [src.name]! It looks like \he's trying to commit suicide.") return (FIRELOSS) /obj/item/weapon/stock_parts/cell/crap diff --git a/code/game/objects/items/weapons/stunbaton.dm b/code/game/objects/items/weapons/stunbaton.dm index 45cff3703d0..79d5cff3d1b 100644 --- a/code/game/objects/items/weapons/stunbaton.dm +++ b/code/game/objects/items/weapons/stunbaton.dm @@ -14,8 +14,8 @@ var/obj/item/weapon/stock_parts/cell/high/bcell = null var/hitcost = 1000 - suicide_act(mob/user) - viewers(user) << "[user] is putting the live [name] in \his mouth! It looks like \he's trying to commit suicide." + /obj/item/weapon/melee/baton/suicide_act(mob/user) + user.visible_message("[user] is putting the live [name] in \his mouth! It looks like \he's trying to commit suicide.") return (FIRELOSS) /obj/item/weapon/melee/baton/New() diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm index 07c08f3f4f2..52de1d4eae4 100644 --- a/code/game/objects/items/weapons/tools.dm +++ b/code/game/objects/items/weapons/tools.dm @@ -49,9 +49,9 @@ attack_verb = list("stabbed") hitsound = 'sound/weapons/bladeslice.ogg' - suicide_act(mob/user) - viewers(user) << pick("[user] is stabbing the [src.name] into \his temple! It looks like \he's trying to commit suicide.", \ - "[user] is stabbing the [src.name] into \his heart! It looks like \he's trying to commit suicide.") + /obj/item/weapon/screwdriver/suicide_act(mob/user) + user.visible_message(pick("[user] is stabbing the [src.name] into \his temple! It looks like \he's trying to commit suicide.", \ + "[user] is stabbing the [src.name] into \his heart! It looks like \he's trying to commit suicide.")) return(BRUTELOSS) /obj/item/weapon/screwdriver/New() diff --git a/code/game/objects/items/weapons/weaponry.dm b/code/game/objects/items/weapons/weaponry.dm index da07f221a55..a50dc71f0c5 100644 --- a/code/game/objects/items/weapons/weaponry.dm +++ b/code/game/objects/items/weapons/weaponry.dm @@ -11,7 +11,7 @@ attack_verb = list("banned") /obj/item/weapon/banhammer/suicide_act(mob/user) - viewers(user) << "[user] is hitting \himself with the [src.name]! It looks like \he's trying to ban \himself from life." + user.visible_message("[user] is hitting \himself with the [src.name]! It looks like \he's trying to ban \himself from life.") return (BRUTELOSS|FIRELOSS|TOXLOSS|OXYLOSS) /obj/item/weapon/banhammer/attack(mob/M, mob/user) @@ -32,8 +32,8 @@ throwforce = 10 w_class = 1 - suicide_act(mob/user) - viewers(user) << "[user] is impaling \himself with the [src.name]! It looks like \he's trying to commit suicide." + /obj/item/weapon/nullrod/suicide_act(mob/user) + user.visible_message("[user] is impaling \himself with the [src.name]! It looks like \he's trying to commit suicide.") return (BRUTELOSS|FIRELOSS) /obj/item/weapon/sord @@ -48,8 +48,8 @@ hitsound = 'sound/weapons/bladeslice.ogg' attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") - suicide_act(mob/user) - viewers(user) << "[user] is impaling \himself with the [src.name]! It looks like \he's trying to commit suicide." + /obj/item/weapon/sord/suicide_act(mob/user) + user.visible_message("[user] is impaling \himself with the [src.name]! It looks like \he's trying to commit suicide.") return(BRUTELOSS) /obj/item/weapon/claymore @@ -65,11 +65,11 @@ w_class = 3 attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") - IsShield() + /obj/item/weapon/claymore/IsShield() return 1 - suicide_act(mob/user) - viewers(user) << "[user] is falling on the [src.name]! It looks like \he's trying to commit suicide." + /obj/item/weapon/claymore/suicide_act(mob/user) + user.visible_message("[user] is falling on the [src.name]! It looks like \he's trying to commit suicide.") return(BRUTELOSS) /obj/item/weapon/katana @@ -85,8 +85,8 @@ hitsound = 'sound/weapons/bladeslice.ogg' attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") - suicide_act(mob/user) - viewers(user) << "[user] is slitting \his stomach open with the [src.name]! It looks like \he's trying to commit seppuku." + /obj/item/weapon/katana/suicide_act(mob/user) + user.visible_message("[user] is slitting \his stomach open with the [src.name]! It looks like \he's trying to commit seppuku.") return(BRUTELOSS) /obj/item/weapon/katana/IsShield() diff --git a/code/modules/hydroponics/growninedible.dm b/code/modules/hydroponics/growninedible.dm index 5332fa4f892..ef4bff6b79c 100644 --- a/code/modules/hydroponics/growninedible.dm +++ b/code/modules/hydroponics/growninedible.dm @@ -52,7 +52,7 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiavulgaris, /obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiadeus, /obj/item/weapon/reagent_containers/food/snacks/grown/wheat) - + New(var/loc, var/potency = 10) ..() @@ -98,7 +98,7 @@ throw_range = 3 plant_type = 0 seed = "/obj/item/seeds/sunflowerseed" - + New(var/loc, var/potency = 10) ..() @@ -169,8 +169,8 @@ reagents.add_reagent("pacid", round(potency, 1)) force = round((5+potency/2.5), 1) - suicide_act(mob/user) - viewers(user) << "[user] is eating some of the [src.name]! It looks like \he's trying to commit suicide." + /obj/item/weapon/grown/deathnettle/suicide_act(mob/user) + user.visible_message("[user] is eating some of the [src.name]! It looks like \he's trying to commit suicide.") return (BRUTELOSS|TOXLOSS) /obj/item/weapon/grown/bananapeel diff --git a/code/modules/hydroponics/hydroitemdefines.dm b/code/modules/hydroponics/hydroitemdefines.dm index 8334d7f015a..225b0e580eb 100644 --- a/code/modules/hydroponics/hydroitemdefines.dm +++ b/code/modules/hydroponics/hydroitemdefines.dm @@ -7,7 +7,7 @@ item_state = "analyzer" origin_tech = "magnets=1;biotech=1" - attack_self(mob/user as mob) + /obj/item/device/analyzer/plant_analyzer/attack_self(mob/user as mob) return 0 // ************************************* @@ -28,12 +28,12 @@ throw_speed = 3 throw_range = 10 - New() + /obj/item/weapon/reagent_containers/spray/weedspray/New() ..() reagents.add_reagent("weedkiller", 100) - suicide_act(mob/user) - viewers(user) << "[user] is huffing the [src.name]! It looks like \he's trying to commit suicide." + /obj/item/weapon/reagent_containers/spray/weedspray/suicide_act(mob/user) + user.visible_message("[user] is huffing the [src.name]! It looks like \he's trying to commit suicide.") return (TOXLOSS) /obj/item/weapon/reagent_containers/spray/pestspray // -- Skie @@ -50,11 +50,11 @@ throw_speed = 3 throw_range = 10 - New() + /obj/item/weapon/reagent_containers/spray/pestspray/New() ..() reagents.add_reagent("pestkiller", 100) - suicide_act(mob/user) + /obj/item/weapon/reagent_containers/spray/pestspray/suicide_act(mob/user) viewers(user) << "[user] is huffing the [src.name]! It looks like \he's trying to commit suicide." return (TOXLOSS) @@ -84,7 +84,7 @@ icon_state = "bottle16" w_class = 1.0 - New() + /obj/item/weapon/reagent_containers/glass/bottle/nutrient/New() ..() src.pixel_x = rand(-5.0, 5) src.pixel_y = rand(-5.0, 5) @@ -94,7 +94,7 @@ name = "bottle of E-Z-Nutrient" icon = 'icons/obj/chemical.dmi' icon_state = "bottle16" - New() + /obj/item/weapon/reagent_containers/glass/bottle/nutrient/ez/New() ..() reagents.add_reagent("eznutriment", 30) @@ -102,7 +102,7 @@ name = "bottle of Left 4 Zed" icon = 'icons/obj/chemical.dmi' icon_state = "bottle18" - New() + /obj/item/weapon/reagent_containers/glass/bottle/nutrient/l4z/New() ..() reagents.add_reagent("left4zednutriment", 30) @@ -110,6 +110,6 @@ name = "bottle of Robust Harvest" icon = 'icons/obj/chemical.dmi' icon_state = "bottle15" - New() + /obj/item/weapon/reagent_containers/glass/bottle/nutrient/rh/New() ..() reagents.add_reagent("robustharvestnutriment", 30) diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm index ba011c6777c..a349a9be420 100644 --- a/code/modules/power/cable.dm +++ b/code/modules/power/cable.dm @@ -207,12 +207,12 @@ slot_flags = SLOT_BELT attack_verb = list("whipped", "lashed", "disciplined", "flogged") - suicide_act(mob/user) - if(locate(/obj/structure/stool) in user.loc) - viewers(user) << "[user] is making a noose with the [src.name]! It looks like \he's trying to commit suicide." - else - viewers(user) << "[user] is strangling \himself with the [src.name]! It looks like \he's trying to commit suicide." - return(OXYLOSS) +/obj/item/stack/cable_coil/suicide_act(mob/user) + if(locate(/obj/structure/stool) in user.loc) + user.visible_message("[user] is making a noose with the [src.name]! It looks like \he's trying to commit suicide.") + else + user.visible_message("[user] is strangling \himself with the [src.name]! It looks like \he's trying to commit suicide.") + return(OXYLOSS) /obj/item/stack/cable_coil/attack(mob/living/carbon/human/H, mob/user) if(!istype(H)) diff --git a/code/modules/surgery/tools.dm b/code/modules/surgery/tools.dm index ebcc675cf43..d8db9381aaa 100644 --- a/code/modules/surgery/tools.dm +++ b/code/modules/surgery/tools.dm @@ -50,10 +50,10 @@ origin_tech = "materials=1;biotech=1" attack_verb = list("drilled") - suicide_act(mob/user) - viewers(user) << pick("[user] is pressing [src] to \his temple and activating it! It looks like \he's trying to commit suicide.", \ - "[user] is pressing [src] to \his chest and activating it! It looks like \he's trying to commit suicide.") - return (BRUTELOSS) +/obj/item/weapon/scalpel/suicide_act(mob/user) + user.visible_message(pick("[user] is pressing [src] to \his temple and activating it! It looks like \he's trying to commit suicide.", \ + "[user] is pressing [src] to \his chest and activating it! It looks like \he's trying to commit suicide.")) + return (BRUTELOSS) /obj/item/weapon/scalpel @@ -73,11 +73,11 @@ attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") hitsound = 'sound/weapons/bladeslice.ogg' - suicide_act(mob/user) - viewers(user) << pick("[user] is slitting \his wrists with [src]! It looks like \he's trying to commit suicide.", \ - "[user] is slitting \his throat with [src]! It looks like \he's trying to commit suicide.", \ - "[user] is slitting \his stomach open with [src]! It looks like \he's trying to commit seppuku.") - return (BRUTELOSS) +/obj/item/weapon/scalpel/suicide_act(mob/user) + user.visible_message(pick("[user] is slitting \his wrists with [src]! It looks like \he's trying to commit suicide.", \ + "[user] is slitting \his throat with [src]! It looks like \he's trying to commit suicide.", \ + "[user] is slitting \his stomach open with [src]! It looks like \he's trying to commit seppuku.")) + return (BRUTELOSS) /obj/item/weapon/circular_saw From 4078973a5cf09903838c8b54f71270e6ee18cd05 Mon Sep 17 00:00:00 2001 From: Jordie0608 Date: Tue, 13 May 2014 02:18:21 +1000 Subject: [PATCH 101/185] Unidentinization --- code/defines/obj/weapon.dm | 6 +- .../game/objects/items/stacks/sheets/glass.dm | 8 +-- code/game/objects/items/toys.dm | 68 +++++++++---------- code/game/objects/items/weapons/kitchen.dm | 20 +++--- .../game/objects/items/weapons/power_cells.dm | 6 +- code/game/objects/items/weapons/stunbaton.dm | 6 +- code/game/objects/items/weapons/tools.dm | 8 +-- code/game/objects/items/weapons/weaponry.dm | 28 ++++---- code/game/verbs/suicide.dm | 4 +- code/modules/hydroponics/growninedible.dm | 58 ++++++++-------- code/modules/hydroponics/hydroitemdefines.dm | 54 +++++++-------- 11 files changed, 133 insertions(+), 133 deletions(-) diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm index 230194070b9..e0786a1eb9f 100644 --- a/code/defines/obj/weapon.dm +++ b/code/defines/obj/weapon.dm @@ -175,9 +175,9 @@ desc = "A trap used to catch bears and other legged creatures." var/armed = 0 - /obj/item/weapon/legcuffs/beartrap/suicide_act(mob/user) - user.visible_message("[user] is putting the [src.name] on \his head! It looks like \he's trying to commit suicide.") - return (BRUTELOSS) +/obj/item/weapon/legcuffs/beartrap/suicide_act(mob/user) + user.visible_message("[user] is putting the [src.name] on \his head! It looks like \he's trying to commit suicide.") + return (BRUTELOSS) /obj/item/weapon/legcuffs/beartrap/attack_self(mob/user as mob) ..() diff --git a/code/game/objects/items/stacks/sheets/glass.dm b/code/game/objects/items/stacks/sheets/glass.dm index aa1a50edca7..758cd47b1e3 100644 --- a/code/game/objects/items/stacks/sheets/glass.dm +++ b/code/game/objects/items/stacks/sheets/glass.dm @@ -250,10 +250,10 @@ attack_verb = list("stabbed", "slashed", "sliced", "cut") hitsound = 'sound/weapons/bladeslice.ogg' - /obj/item/weapon/shard/suicide_act(mob/user) - user.visible_message(pick("[user] is slitting \his wrists with the shard of glass! It looks like \he's trying to commit suicide.", \ - "[user] is slitting \his throat with the shard of glass! It looks like \he's trying to commit suicide.")) - return (BRUTELOSS) +/obj/item/weapon/shard/suicide_act(mob/user) + user.visible_message(pick("[user] is slitting \his wrists with the shard of glass! It looks like \he's trying to commit suicide.", \ + "[user] is slitting \his throat with the shard of glass! It looks like \he's trying to commit suicide.")) + return (BRUTELOSS) /obj/item/weapon/shard/New() diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index 7537f0cb915..348ab2fe6e5 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -310,26 +310,26 @@ attack_verb = list("attacked", "struck", "hit") var/hacked = 0 - /obj/item/toy/sword/attack_self(mob/user as mob) - active = !( active ) - if (active) - user << "\blue You extend the plastic blade with a quick flick of your wrist." - playsound(user, 'sound/weapons/saberon.ogg', 20, 1) - if(hacked) - icon_state = "swordrainbow" - item_state = "swordrainbow" - else - icon_state = "swordblue" - item_state = "swordblue" - w_class = 4 +/obj/item/toy/sword/attack_self(mob/user as mob) + active = !( active ) + if (active) + user << "\blue You extend the plastic blade with a quick flick of your wrist." + playsound(user, 'sound/weapons/saberon.ogg', 20, 1) + if(hacked) + icon_state = "swordrainbow" + item_state = "swordrainbow" else - user << "\blue You push the plastic blade back down into the handle." - playsound(user, 'sound/weapons/saberoff.ogg', 20, 1) - icon_state = "sword0" - item_state = "sword0" - w_class = 2 - add_fingerprint(user) - return + icon_state = "swordblue" + item_state = "swordblue" + w_class = 4 + else + user << "\blue You push the plastic blade back down into the handle." + playsound(user, 'sound/weapons/saberoff.ogg', 20, 1) + icon_state = "sword0" + item_state = "sword0" + w_class = 2 + add_fingerprint(user) + return // Copied from /obj/item/weapon/melee/energy/sword/attackby /obj/item/toy/sword/attackby(obj/item/weapon/W, mob/living/user) @@ -418,12 +418,12 @@ var/uses = 30 //0 for unlimited uses var/instant = 0 var/colourName = "red" //for updateIcon purposes - /obj/item/toy/crayon/suicide_act(mob/user) - user.visible_message("[user] is jamming the [src.name] up \his nose and into \his brain. It looks like \he's trying to commit suicide.") - return (BRUTELOSS|OXYLOSS) - /obj/item/toy/crayon/New() - ..() - name = "[colourName] crayon" //Makes crayons identifiable in things like grinders +/obj/item/toy/crayon/suicide_act(mob/user) + user.visible_message("[user] is jamming the [src.name] up \his nose and into \his brain. It looks like \he's trying to commit suicide.") + return (BRUTELOSS|OXYLOSS) +/obj/item/toy/crayon/New() + ..() + name = "[colourName] crayon" //Makes crayons identifiable in things like grinders /* * Snap pops */ @@ -434,15 +434,15 @@ icon_state = "snappop" w_class = 1 - /obj/item/toy/snappop/throw_impact(atom/hit_atom) - ..() - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread - s.set_up(3, 1, src) - s.start() - new /obj/effect/decal/cleanable/ash(src.loc) - src.visible_message(" The [src.name] explodes!"," You hear a snap!") - playsound(src, 'sound/effects/snap.ogg', 50, 1) - qdel(src) +/obj/item/toy/snappop/throw_impact(atom/hit_atom) + ..() + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + s.set_up(3, 1, src) + s.start() + new /obj/effect/decal/cleanable/ash(src.loc) + src.visible_message(" The [src.name] explodes!"," You hear a snap!") + playsound(src, 'sound/effects/snap.ogg', 50, 1) + qdel(src) /obj/item/toy/snappop/Crossed(H as mob|obj) if((ishuman(H))) //i guess carp and shit shouldn't set them off diff --git a/code/game/objects/items/weapons/kitchen.dm b/code/game/objects/items/weapons/kitchen.dm index f7bd2811a24..6dd0b5ca2f2 100644 --- a/code/game/objects/items/weapons/kitchen.dm +++ b/code/game/objects/items/weapons/kitchen.dm @@ -82,11 +82,11 @@ force = 10.0 throwforce = 10.0 - /obj/item/weapon/kitchen/utensil/knife/suicide_act(mob/user) - user.visible_message(pick("[user] is slitting \his wrists with the [src.name]! It looks like \he's trying to commit suicide.", \ - "[user] is slitting \his throat with the [src.name]! It looks like \he's trying to commit suicide.", \ - "[user] is slitting \his stomach open with the [src.name]! It looks like \he's trying to commit seppuku.")) - return (BRUTELOSS) +/obj/item/weapon/kitchen/utensil/knife/suicide_act(mob/user) + user.visible_message(pick("[user] is slitting \his wrists with the [src.name]! It looks like \he's trying to commit suicide.", \ + "[user] is slitting \his throat with the [src.name]! It looks like \he's trying to commit suicide.", \ + "[user] is slitting \his stomach open with the [src.name]! It looks like \he's trying to commit seppuku.")) + return (BRUTELOSS) /obj/item/weapon/kitchen/utensil/knife/attack(target as mob, mob/living/user as mob) if ((CLUMSY in user.mutations) && prob(50)) @@ -114,11 +114,11 @@ origin_tech = "materials=1" attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") - /obj/item/weapon/kitchenknife/suicide_act(mob/user) - user.visible_message(pick("[user] is slitting \his wrists with the [src.name]! It looks like \he's trying to commit suicide.", \ - "[user] is slitting \his throat with the [src.name]! It looks like \he's trying to commit suicide.", \ - "[user] is slitting \his stomach open with the [src.name]! It looks like \he's trying to commit seppuku.")) - return (BRUTELOSS) +/obj/item/weapon/kitchenknife/suicide_act(mob/user) + user.visible_message(pick("[user] is slitting \his wrists with the [src.name]! It looks like \he's trying to commit suicide.", \ + "[user] is slitting \his throat with the [src.name]! It looks like \he's trying to commit suicide.", \ + "[user] is slitting \his stomach open with the [src.name]! It looks like \he's trying to commit seppuku.")) + return (BRUTELOSS) /obj/item/weapon/kitchenknife/ritual name = "ritual knife" diff --git a/code/game/objects/items/weapons/power_cells.dm b/code/game/objects/items/weapons/power_cells.dm index 821d19f6b67..31ce903d56c 100644 --- a/code/game/objects/items/weapons/power_cells.dm +++ b/code/game/objects/items/weapons/power_cells.dm @@ -19,9 +19,9 @@ var/construction_cost = list("metal"=750,"glass"=75) var/construction_time=100 - /obj/item/weapon/stock_parts/cell/suicide_act(mob/user) - user.visible_message("[user] is licking the electrodes of the [src.name]! It looks like \he's trying to commit suicide.") - return (FIRELOSS) +/obj/item/weapon/stock_parts/cell/suicide_act(mob/user) + user.visible_message("[user] is licking the electrodes of the [src.name]! It looks like \he's trying to commit suicide.") + return (FIRELOSS) /obj/item/weapon/stock_parts/cell/crap name = "\improper Nanotrasen brand rechargable AA battery" diff --git a/code/game/objects/items/weapons/stunbaton.dm b/code/game/objects/items/weapons/stunbaton.dm index 79d5cff3d1b..bc37ba6662f 100644 --- a/code/game/objects/items/weapons/stunbaton.dm +++ b/code/game/objects/items/weapons/stunbaton.dm @@ -14,9 +14,9 @@ var/obj/item/weapon/stock_parts/cell/high/bcell = null var/hitcost = 1000 - /obj/item/weapon/melee/baton/suicide_act(mob/user) - user.visible_message("[user] is putting the live [name] in \his mouth! It looks like \he's trying to commit suicide.") - return (FIRELOSS) +/obj/item/weapon/melee/baton/suicide_act(mob/user) + user.visible_message("[user] is putting the live [name] in \his mouth! It looks like \he's trying to commit suicide.") + return (FIRELOSS) /obj/item/weapon/melee/baton/New() ..() diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm index 52de1d4eae4..385115c97a8 100644 --- a/code/game/objects/items/weapons/tools.dm +++ b/code/game/objects/items/weapons/tools.dm @@ -49,10 +49,10 @@ attack_verb = list("stabbed") hitsound = 'sound/weapons/bladeslice.ogg' - /obj/item/weapon/screwdriver/suicide_act(mob/user) - user.visible_message(pick("[user] is stabbing the [src.name] into \his temple! It looks like \he's trying to commit suicide.", \ - "[user] is stabbing the [src.name] into \his heart! It looks like \he's trying to commit suicide.")) - return(BRUTELOSS) +/obj/item/weapon/screwdriver/suicide_act(mob/user) + user.visible_message(pick("[user] is stabbing the [src.name] into \his temple! It looks like \he's trying to commit suicide.", \ + "[user] is stabbing the [src.name] into \his heart! It looks like \he's trying to commit suicide.")) + return(BRUTELOSS) /obj/item/weapon/screwdriver/New() switch(pick("red","blue","purple","brown","green","cyan","yellow")) diff --git a/code/game/objects/items/weapons/weaponry.dm b/code/game/objects/items/weapons/weaponry.dm index a50dc71f0c5..3edaf0d1358 100644 --- a/code/game/objects/items/weapons/weaponry.dm +++ b/code/game/objects/items/weapons/weaponry.dm @@ -32,9 +32,9 @@ throwforce = 10 w_class = 1 - /obj/item/weapon/nullrod/suicide_act(mob/user) - user.visible_message("[user] is impaling \himself with the [src.name]! It looks like \he's trying to commit suicide.") - return (BRUTELOSS|FIRELOSS) +/obj/item/weapon/nullrod/suicide_act(mob/user) + user.visible_message("[user] is impaling \himself with the [src.name]! It looks like \he's trying to commit suicide.") + return (BRUTELOSS|FIRELOSS) /obj/item/weapon/sord name = "\improper SORD" @@ -48,9 +48,9 @@ hitsound = 'sound/weapons/bladeslice.ogg' attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") - /obj/item/weapon/sord/suicide_act(mob/user) - user.visible_message("[user] is impaling \himself with the [src.name]! It looks like \he's trying to commit suicide.") - return(BRUTELOSS) +/obj/item/weapon/sord/suicide_act(mob/user) + user.visible_message("[user] is impaling \himself with the [src.name]! It looks like \he's trying to commit suicide.") + return(BRUTELOSS) /obj/item/weapon/claymore name = "claymore" @@ -65,12 +65,12 @@ w_class = 3 attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") - /obj/item/weapon/claymore/IsShield() - return 1 +/obj/item/weapon/claymore/IsShield() + return 1 - /obj/item/weapon/claymore/suicide_act(mob/user) - user.visible_message("[user] is falling on the [src.name]! It looks like \he's trying to commit suicide.") - return(BRUTELOSS) +/obj/item/weapon/claymore/suicide_act(mob/user) + user.visible_message("[user] is falling on the [src.name]! It looks like \he's trying to commit suicide.") + return(BRUTELOSS) /obj/item/weapon/katana name = "katana" @@ -85,9 +85,9 @@ hitsound = 'sound/weapons/bladeslice.ogg' attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") - /obj/item/weapon/katana/suicide_act(mob/user) - user.visible_message("[user] is slitting \his stomach open with the [src.name]! It looks like \he's trying to commit seppuku.") - return(BRUTELOSS) +/obj/item/weapon/katana/suicide_act(mob/user) + user.visible_message("[user] is slitting \his stomach open with the [src.name]! It looks like \he's trying to commit seppuku.") + return(BRUTELOSS) /obj/item/weapon/katana/IsShield() return 1 diff --git a/code/game/verbs/suicide.dm b/code/game/verbs/suicide.dm index 23d91fbdbf2..86c6f76139d 100644 --- a/code/game/verbs/suicide.dm +++ b/code/game/verbs/suicide.dm @@ -65,10 +65,10 @@ return - viewers(src) << pick("\red [src] is attempting to bite \his tongue off! It looks like \he's trying to commit suicide.", \ + user.visible_message(pick("\red [src] is attempting to bite \his tongue off! It looks like \he's trying to commit suicide.", \ "\red [src] is jamming \his thumbs into \his eye sockets! It looks like \he's trying to commit suicide.", \ "\red [src] is twisting \his own neck! It looks like \he's trying to commit suicide.", \ - "\red [src] is holding \his breath! It looks like \he's trying to commit suicide.") + "\red [src] is holding \his breath! It looks like \he's trying to commit suicide.")) adjustOxyLoss(max(175 - getToxLoss() - getFireLoss() - getBruteLoss() - getOxyLoss(), 0)) updatehealth() diff --git a/code/modules/hydroponics/growninedible.dm b/code/modules/hydroponics/growninedible.dm index ef4bff6b79c..42c084760ae 100644 --- a/code/modules/hydroponics/growninedible.dm +++ b/code/modules/hydroponics/growninedible.dm @@ -53,8 +53,8 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiadeus, /obj/item/weapon/reagent_containers/food/snacks/grown/wheat) - New(var/loc, var/potency = 10) - ..() +/obj/item/weapon/grown/log/New(var/loc, var/potency = 10) + ..() /obj/item/weapon/grown/log/attackby(obj/item/weapon/W as obj, mob/user as mob) ..() @@ -99,8 +99,8 @@ plant_type = 0 seed = "/obj/item/seeds/sunflowerseed" - New(var/loc, var/potency = 10) - ..() +/obj/item/weapon/grown/sunflower/New(var/loc, var/potency = 10) + ..() /obj/item/weapon/grown/novaflower name = "novaflower" @@ -117,12 +117,12 @@ plant_type = 0 seed = "/obj/item/seeds/novaflowerseed" attack_verb = list("seared", "heated", "whacked", "steamed") - New(var/loc, var/potency = 10) - ..() - if(reagents) - reagents.add_reagent("nutriment", 1) - reagents.add_reagent("capsaicin", round(potency, 1)) - force = round((5+potency/5), 1) +/obj/item/weapon/grown/novaflower/New(var/loc, var/potency = 10) + ..() + if(reagents) + reagents.add_reagent("nutriment", 1) + reagents.add_reagent("capsaicin", round(potency, 1)) + force = round((5+potency/5), 1) /obj/item/weapon/grown/nettle // -- Skie desc = "It's probably not wise to touch it with bare hands..." @@ -139,12 +139,12 @@ plant_type = 1 origin_tech = "combat=1" seed = "/obj/item/seeds/nettleseed" - New(var/loc, var/potency = 10) - ..() - if(reagents) - reagents.add_reagent("nutriment", 1) - reagents.add_reagent("sacid", round(potency, 1)) - force = round((5+potency/5), 1) +/obj/item/weapon/grown/nettle/New(var/loc, var/potency = 10) + ..() + if(reagents) + reagents.add_reagent("nutriment", 1) + reagents.add_reagent("sacid", round(potency, 1)) + force = round((5+potency/5), 1) /obj/item/weapon/grown/deathnettle // -- Skie desc = "The \red glowing \black nettle incites \red rage\black in you just from looking at it!" @@ -162,16 +162,16 @@ seed = "/obj/item/seeds/deathnettleseed" origin_tech = "combat=3" attack_verb = list("stung") - New(var/loc, var/potency = 10) - ..() - if(reagents) - reagents.add_reagent("nutriment", 1) - reagents.add_reagent("pacid", round(potency, 1)) - force = round((5+potency/2.5), 1) +/obj/item/weapon/grown/deathnettle/New(var/loc, var/potency = 10) + ..() + if(reagents) + reagents.add_reagent("nutriment", 1) + reagents.add_reagent("pacid", round(potency, 1)) + force = round((5+potency/2.5), 1) - /obj/item/weapon/grown/deathnettle/suicide_act(mob/user) - user.visible_message("[user] is eating some of the [src.name]! It looks like \he's trying to commit suicide.") - return (BRUTELOSS|TOXLOSS) +/obj/item/weapon/grown/deathnettle/suicide_act(mob/user) + user.visible_message("[user] is eating some of the [src.name]! It looks like \he's trying to commit suicide.") + return (BRUTELOSS|TOXLOSS) /obj/item/weapon/grown/bananapeel name = "banana peel" @@ -183,8 +183,8 @@ throwforce = 0 throw_speed = 3 throw_range = 7 - New(var/loc, var/potency = 10) - ..() +/obj/item/weapon/grown/bananapeelNew(var/loc, var/potency = 10) + ..() /obj/item/weapon/grown/corncob name = "corn cob" @@ -196,5 +196,5 @@ throwforce = 0 throw_speed = 3 throw_range = 7 - New(var/loc, var/potency = 10) - ..() +/obj/item/weapon/grown/corncob/New(var/loc, var/potency = 10) + ..() diff --git a/code/modules/hydroponics/hydroitemdefines.dm b/code/modules/hydroponics/hydroitemdefines.dm index 225b0e580eb..8a35bd8ec9b 100644 --- a/code/modules/hydroponics/hydroitemdefines.dm +++ b/code/modules/hydroponics/hydroitemdefines.dm @@ -7,8 +7,8 @@ item_state = "analyzer" origin_tech = "magnets=1;biotech=1" - /obj/item/device/analyzer/plant_analyzer/attack_self(mob/user as mob) - return 0 +/obj/item/device/analyzer/plant_analyzer/attack_self(mob/user as mob) + return 0 // ************************************* // Hydroponics Tools @@ -28,13 +28,13 @@ throw_speed = 3 throw_range = 10 - /obj/item/weapon/reagent_containers/spray/weedspray/New() - ..() - reagents.add_reagent("weedkiller", 100) +/obj/item/weapon/reagent_containers/spray/weedspray/New() + ..() + reagents.add_reagent("weedkiller", 100) - /obj/item/weapon/reagent_containers/spray/weedspray/suicide_act(mob/user) - user.visible_message("[user] is huffing the [src.name]! It looks like \he's trying to commit suicide.") - return (TOXLOSS) +/obj/item/weapon/reagent_containers/spray/weedspray/suicide_act(mob/user) + user.visible_message("[user] is huffing the [src.name]! It looks like \he's trying to commit suicide.") + return (TOXLOSS) /obj/item/weapon/reagent_containers/spray/pestspray // -- Skie desc = "It's some pest eliminator spray! Do not inhale!" @@ -50,13 +50,13 @@ throw_speed = 3 throw_range = 10 - /obj/item/weapon/reagent_containers/spray/pestspray/New() - ..() - reagents.add_reagent("pestkiller", 100) +/obj/item/weapon/reagent_containers/spray/pestspray/New() + ..() + reagents.add_reagent("pestkiller", 100) - /obj/item/weapon/reagent_containers/spray/pestspray/suicide_act(mob/user) - viewers(user) << "[user] is huffing the [src.name]! It looks like \he's trying to commit suicide." - return (TOXLOSS) +/obj/item/weapon/reagent_containers/spray/pestspray/suicide_act(mob/user) + viewers(user) << "[user] is huffing the [src.name]! It looks like \he's trying to commit suicide." + return (TOXLOSS) /obj/item/weapon/minihoe // -- Numbers name = "mini hoe" @@ -84,32 +84,32 @@ icon_state = "bottle16" w_class = 1.0 - /obj/item/weapon/reagent_containers/glass/bottle/nutrient/New() - ..() - src.pixel_x = rand(-5.0, 5) - src.pixel_y = rand(-5.0, 5) +/obj/item/weapon/reagent_containers/glass/bottle/nutrient/New() + ..() + src.pixel_x = rand(-5.0, 5) + src.pixel_y = rand(-5.0, 5) /obj/item/weapon/reagent_containers/glass/bottle/nutrient/ez name = "bottle of E-Z-Nutrient" icon = 'icons/obj/chemical.dmi' icon_state = "bottle16" - /obj/item/weapon/reagent_containers/glass/bottle/nutrient/ez/New() - ..() - reagents.add_reagent("eznutriment", 30) +/obj/item/weapon/reagent_containers/glass/bottle/nutrient/ez/New() + ..() + reagents.add_reagent("eznutriment", 30) /obj/item/weapon/reagent_containers/glass/bottle/nutrient/l4z name = "bottle of Left 4 Zed" icon = 'icons/obj/chemical.dmi' icon_state = "bottle18" - /obj/item/weapon/reagent_containers/glass/bottle/nutrient/l4z/New() - ..() - reagents.add_reagent("left4zednutriment", 30) +/obj/item/weapon/reagent_containers/glass/bottle/nutrient/l4z/New() + ..() + reagents.add_reagent("left4zednutriment", 30) /obj/item/weapon/reagent_containers/glass/bottle/nutrient/rh name = "bottle of Robust Harvest" icon = 'icons/obj/chemical.dmi' icon_state = "bottle15" - /obj/item/weapon/reagent_containers/glass/bottle/nutrient/rh/New() - ..() - reagents.add_reagent("robustharvestnutriment", 30) +/obj/item/weapon/reagent_containers/glass/bottle/nutrient/rh/New() + ..() + reagents.add_reagent("robustharvestnutriment", 30) From 5b94391e6f279ef6556c86dc3e47cf25c9902439 Mon Sep 17 00:00:00 2001 From: Jordie0608 Date: Tue, 13 May 2014 02:25:14 +1000 Subject: [PATCH 102/185] Unidentinization^2 --- code/game/objects/items/toys.dm | 222 ++++++++++++++++---------------- 1 file changed, 111 insertions(+), 111 deletions(-) diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index 348ab2fe6e5..5321ba32820 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -121,48 +121,48 @@ attack_verb = list("struck", "pistol whipped", "hit", "bashed") var/bullets = 7.0 - /obj/item/toy/gun/examine() - set src in usr +/obj/item/toy/gun/examine() + set src in usr - src.desc = text("There are [] cap\s left. Looks almost like the real thing! Ages 8 and up.", src.bullets) - ..() - return + src.desc = text("There are [] cap\s left. Looks almost like the real thing! Ages 8 and up.", src.bullets) + ..() + return - /obj/item/toy/gun/attackby(obj/item/toy/ammo/gun/A as obj, mob/user as mob) +/obj/item/toy/gun/attackby(obj/item/toy/ammo/gun/A as obj, mob/user as mob) - if (istype(A, /obj/item/toy/ammo/gun)) - if (src.bullets >= 7) - user << "\blue It's already fully loaded!" - return 1 - if (A.amount_left <= 0) - user << "\red There are no more caps!" - return 1 - if (A.amount_left < (7 - src.bullets)) - src.bullets += A.amount_left - user << text("\red You reload [] cap\s!", A.amount_left) - A.amount_left = 0 - else - user << text("\red You reload [] cap\s!", 7 - src.bullets) - A.amount_left -= 7 - src.bullets - src.bullets = 7 - A.update_icon() + if (istype(A, /obj/item/toy/ammo/gun)) + if (src.bullets >= 7) + user << "\blue It's already fully loaded!" return 1 - return + if (A.amount_left <= 0) + user << "\red There are no more caps!" + return 1 + if (A.amount_left < (7 - src.bullets)) + src.bullets += A.amount_left + user << text("\red You reload [] cap\s!", A.amount_left) + A.amount_left = 0 + else + user << text("\red You reload [] cap\s!", 7 - src.bullets) + A.amount_left -= 7 - src.bullets + src.bullets = 7 + A.update_icon() + return 1 + return - /obj/item/toy/gun/afterattack(atom/target as mob|obj|turf|area, mob/user as mob, flag) - if (flag) - return - if (!(istype(usr, /mob/living/carbon/human) || ticker) && ticker.mode.name != "monkey") - usr << "\red You don't have the dexterity to do this!" - return - src.add_fingerprint(user) - if (src.bullets < 1) - user.show_message("\red *click* *click*", 2) - return - playsound(user, 'sound/weapons/Gunshot.ogg', 100, 1) - src.bullets-- - for(var/mob/O in viewers(user, null)) - O.show_message(text("\red [] fires the [src] at []!", user, target), 1, "\red You hear a gunshot", 2) +/obj/item/toy/gun/afterattack(atom/target as mob|obj|turf|area, mob/user as mob, flag) + if (flag) + return + if (!(istype(usr, /mob/living/carbon/human) || ticker) && ticker.mode.name != "monkey") + usr << "\red You don't have the dexterity to do this!" + return + src.add_fingerprint(user) + if (src.bullets < 1) + user.show_message("\red *click* *click*", 2) + return + playsound(user, 'sound/weapons/Gunshot.ogg', 100, 1) + src.bullets-- + for(var/mob/O in viewers(user, null)) + O.show_message(text("\red [] fires the [src] at []!", user, target), 1, "\red You hear a gunshot", 2) /obj/item/toy/ammo/gun name = "ammo-caps" @@ -174,10 +174,10 @@ m_amt = 10 var/amount_left = 7.0 - update_icon() - src.icon_state = text("357-[]", src.amount_left) - src.desc = text("There are [] cap\s left! Make sure to recycle the box in an autolathe when it gets empty.", src.amount_left) - return +/obj/item/toy/ammo/gun/update_icon() + src.icon_state = text("357-[]", src.amount_left) + src.desc = text("There are [] cap\s left! Make sure to recycle the box in an autolathe when it gets empty.", src.amount_left) + return /* * Toy crossbow @@ -193,91 +193,91 @@ attack_verb = list("attacked", "struck", "hit") var/bullets = 5 - /obj/item/toy/crossbow/examine() - set src in view(2) - ..() - if (bullets) - usr << "\blue It is loaded with [bullets] foam darts!" +/obj/item/toy/crossbow/examine() + set src in view(2) + ..() + if (bullets) + usr << "\blue It is loaded with [bullets] foam darts!" - /obj/item/toy/crossbow/attackby(obj/item/I as obj, mob/user as mob) - if(istype(I, /obj/item/toy/ammo/crossbow)) - if(bullets <= 4) - user.drop_item() - qdel(I) - bullets++ - user << "\blue You load the foam dart into the crossbow." - else - usr << "\red It's already fully loaded." +/obj/item/toy/crossbow/attackby(obj/item/I as obj, mob/user as mob) + if(istype(I, /obj/item/toy/ammo/crossbow)) + if(bullets <= 4) + user.drop_item() + qdel(I) + bullets++ + user << "\blue You load the foam dart into the crossbow." + else + usr << "\red It's already fully loaded." - /obj/item/toy/crossbow/afterattack(atom/target as mob|obj|turf|area, mob/user as mob, flag) - if(!isturf(target.loc) || target == user) return - if(flag) return +/obj/item/toy/crossbow/afterattack(atom/target as mob|obj|turf|area, mob/user as mob, flag) + if(!isturf(target.loc) || target == user) return + if(flag) return - if (locate (/obj/structure/table, src.loc)) - return - else if (bullets) - var/turf/trg = get_turf(target) - var/obj/effect/foam_dart_dummy/D = new/obj/effect/foam_dart_dummy(get_turf(src)) - bullets-- - D.icon_state = "foamdart" - D.name = "foam dart" - playsound(user.loc, 'sound/items/syringeproj.ogg', 50, 1) + if (locate (/obj/structure/table, src.loc)) + return + else if (bullets) + var/turf/trg = get_turf(target) + var/obj/effect/foam_dart_dummy/D = new/obj/effect/foam_dart_dummy(get_turf(src)) + bullets-- + D.icon_state = "foamdart" + D.name = "foam dart" + playsound(user.loc, 'sound/items/syringeproj.ogg', 50, 1) - for(var/i=0, i<6, i++) - if (D) - if(D.loc == trg) break - step_towards(D,trg) + for(var/i=0, i<6, i++) + if (D) + if(D.loc == trg) break + step_towards(D,trg) - for(var/mob/living/M in D.loc) - if(!istype(M,/mob/living)) continue - if(M == user) continue - for(var/mob/O in viewers(world.view, D)) - O.show_message(text("\red [] was hit by the foam dart!", M), 1) - new /obj/item/toy/ammo/crossbow(M.loc) - qdel(D) - return - - for(var/atom/A in D.loc) - if(A == user) continue - if(A.density) - new /obj/item/toy/ammo/crossbow(A.loc) - qdel(D) - - sleep(1) - - spawn(10) - if(D) - new /obj/item/toy/ammo/crossbow(D.loc) + for(var/mob/living/M in D.loc) + if(!istype(M,/mob/living)) continue + if(M == user) continue + for(var/mob/O in viewers(world.view, D)) + O.show_message(text("\red [] was hit by the foam dart!", M), 1) + new /obj/item/toy/ammo/crossbow(M.loc) qdel(D) + return - return - else if (bullets == 0) - user.Weaken(5) - for(var/mob/O in viewers(world.view, user)) - O.show_message(text("\red [] realized they were out of ammo and starting scrounging for some!", user), 1) + for(var/atom/A in D.loc) + if(A == user) continue + if(A.density) + new /obj/item/toy/ammo/crossbow(A.loc) + qdel(D) + + sleep(1) + + spawn(10) + if(D) + new /obj/item/toy/ammo/crossbow(D.loc) + qdel(D) + + return + else if (bullets == 0) + user.Weaken(5) + for(var/mob/O in viewers(world.view, user)) + O.show_message(text("\red [] realized they were out of ammo and starting scrounging for some!", user), 1) - /obj/item/toy/crossbow/attack(mob/M as mob, mob/user as mob) - src.add_fingerprint(user) +/obj/item/toy/crossbow/attack(mob/M as mob, mob/user as mob) + src.add_fingerprint(user) // ******* Check - if (src.bullets > 0 && M.lying) + if (src.bullets > 0 && M.lying) - for(var/mob/O in viewers(M, null)) - if(O.client) - O.show_message(text("\red [] casually lines up a shot with []'s head and pulls the trigger!", user, M), 1, "\red You hear the sound of foam against skull", 2) - O.show_message(text("\red [] was hit in the head by the foam dart!", M), 1) + for(var/mob/O in viewers(M, null)) + if(O.client) + O.show_message(text("\red [] casually lines up a shot with []'s head and pulls the trigger!", user, M), 1, "\red You hear the sound of foam against skull", 2) + O.show_message(text("\red [] was hit in the head by the foam dart!", M), 1) - playsound(user.loc, 'sound/items/syringeproj.ogg', 50, 1) - new /obj/item/toy/ammo/crossbow(M.loc) - src.bullets-- - else if (M.lying && src.bullets == 0) - for(var/mob/O in viewers(M, null)) - if (O.client) O.show_message(text("\red [] casually lines up a shot with []'s head, pulls the trigger, then realizes they are out of ammo and drops to the floor in search of some!", user, M), 1, "\red You hear someone fall", 2) - user.Weaken(5) - return + playsound(user.loc, 'sound/items/syringeproj.ogg', 50, 1) + new /obj/item/toy/ammo/crossbow(M.loc) + src.bullets-- + else if (M.lying && src.bullets == 0) + for(var/mob/O in viewers(M, null)) + if (O.client) O.show_message(text("\red [] casually lines up a shot with []'s head, pulls the trigger, then realizes they are out of ammo and drops to the floor in search of some!", user, M), 1, "\red You hear someone fall", 2) + user.Weaken(5) + return /obj/item/toy/ammo/crossbow name = "foam dart" From d7ce4c99fdef2bef150e4ce2eb1832c4294486e5 Mon Sep 17 00:00:00 2001 From: phil235 Date: Mon, 12 May 2014 18:28:50 +0200 Subject: [PATCH 103/185] Fixes Fire Alarms activating without power * removing var/working and using NOPOWER and BROKEN flags instead. --- code/game/machinery/alarm.dm | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/code/game/machinery/alarm.dm b/code/game/machinery/alarm.dm index d807b005d5e..4f0df133f3b 100644 --- a/code/game/machinery/alarm.dm +++ b/code/game/machinery/alarm.dm @@ -916,7 +916,6 @@ FIRE ALARM icon = 'icons/obj/monitors.dmi' icon_state = "fire0" var/detecting = 1.0 - var/working = 1.0 var/time = 10.0 var/timing = 0.0 var/lockdownbyai = 0 @@ -1136,7 +1135,7 @@ FIRE ALARM src.updateUsrDialog() /obj/machinery/firealarm/proc/reset() - if (!( src.working )) + if (stat & (NOPOWER|BROKEN)) // can't reset alarm if it's unpowered or broken. return var/area/A = src.loc A = A.loc @@ -1148,7 +1147,7 @@ FIRE ALARM return /obj/machinery/firealarm/proc/alarm() - if (!( src.working )) + if (stat & (NOPOWER|BROKEN)) // can't activate alarm if it's unpowered or broken. return var/area/A = src.loc A = A.loc @@ -1282,7 +1281,7 @@ Code shamelessly copied from apc_frame return /obj/machinery/firealarm/partyalarm/reset() - if (!( src.working )) + if (stat & (NOPOWER|BROKEN)) return var/area/A = src.loc A = A.loc @@ -1293,7 +1292,7 @@ Code shamelessly copied from apc_frame return /obj/machinery/firealarm/partyalarm/alarm() - if (!( src.working )) + if (stat & (NOPOWER|BROKEN)) return var/area/A = src.loc A = A.loc From 4761e0290465ac13e2defcb51831734859539bb7 Mon Sep 17 00:00:00 2001 From: Jordie0608 Date: Tue, 13 May 2014 02:32:56 +1000 Subject: [PATCH 104/185] Maybe i should make sure the code complies before pushing it next time --- code/game/verbs/suicide.dm | 2 +- code/modules/hydroponics/growninedible.dm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/verbs/suicide.dm b/code/game/verbs/suicide.dm index 86c6f76139d..49e7bcbd3a1 100644 --- a/code/game/verbs/suicide.dm +++ b/code/game/verbs/suicide.dm @@ -65,7 +65,7 @@ return - user.visible_message(pick("\red [src] is attempting to bite \his tongue off! It looks like \he's trying to commit suicide.", \ + visible_message(pick("\red [src] is attempting to bite \his tongue off! It looks like \he's trying to commit suicide.", \ "\red [src] is jamming \his thumbs into \his eye sockets! It looks like \he's trying to commit suicide.", \ "\red [src] is twisting \his own neck! It looks like \he's trying to commit suicide.", \ "\red [src] is holding \his breath! It looks like \he's trying to commit suicide.")) diff --git a/code/modules/hydroponics/growninedible.dm b/code/modules/hydroponics/growninedible.dm index 42c084760ae..314eae82c37 100644 --- a/code/modules/hydroponics/growninedible.dm +++ b/code/modules/hydroponics/growninedible.dm @@ -183,7 +183,7 @@ throwforce = 0 throw_speed = 3 throw_range = 7 -/obj/item/weapon/grown/bananapeelNew(var/loc, var/potency = 10) +/obj/item/weapon/grown/bananapeel/New(var/loc, var/potency = 10) ..() /obj/item/weapon/grown/corncob From 2aefeb0b81f487d1cbeafdb8f1a8cb889093ffd6 Mon Sep 17 00:00:00 2001 From: CollenN Date: Mon, 12 May 2014 16:35:30 -0400 Subject: [PATCH 105/185] Sechud uses right icon --- code/game/objects/items/robot/robot_items.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/robot/robot_items.dm b/code/game/objects/items/robot/robot_items.dm index 92f4e2fdd57..ef64a6f0d56 100644 --- a/code/game/objects/items/robot/robot_items.dm +++ b/code/game/objects/items/robot/robot_items.dm @@ -75,7 +75,7 @@ /obj/item/borg/sight/hud/sec name = "security hud" - icon = 'icons/obj/clothing/glasses.dmi' + icon = 'icons/mob/robot_items.dmi' icon_state = "securityhud" New() From 43daa24ce8171856525caf54c4bd668afd07ccf1 Mon Sep 17 00:00:00 2001 From: ikarrus Date: Mon, 12 May 2014 20:22:19 -0600 Subject: [PATCH 106/185] -SSUs will no longer eject its contents if it runs out of power unless it's already open -Unpowered SSUs can be crowbarred open if they are not locked -Some other changes from Giacom's feedback --- code/game/machinery/suit_storage_unit.dm | 36 ++++++++++-------------- 1 file changed, 15 insertions(+), 21 deletions(-) diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm index bf805ed5d3d..c9e0f751e61 100644 --- a/code/game/machinery/suit_storage_unit.dm +++ b/code/game/machinery/suit_storage_unit.dm @@ -106,19 +106,11 @@ return /obj/machinery/suit_storage_unit/power_change() - if( powered() ) - src.ispowered = 1 - stat &= ~NOPOWER - src.update_icon() - else - spawn(rand(0, 15)) - src.ispowered = 0 - stat |= NOPOWER - src.islocked = 0 - src.isopen = 1 - src.dump_everything() - src.update_icon() - + ..() + ispowered = !(stat & NOPOWER) + if((stat & NOPOWER) && isopen) + dump_everything() + update_icon() /obj/machinery/suit_storage_unit/ex_act(severity) switch(severity) @@ -341,12 +333,12 @@ /obj/machinery/suit_storage_unit/proc/toggle_open(mob/user as mob) if(src.islocked || src.isUV) user << "Unable to open unit." - return + return 0 if(src.OCCUPANT) src.eject_occupant(user) - return // eject_occupant opens the door, so we need to return + return 1 // eject_occupant opens the door, so we need to return src.isopen = !src.isopen - return + return 1 /obj/machinery/suit_storage_unit/proc/toggle_lock(mob/user as mob) @@ -540,11 +532,16 @@ /obj/machinery/suit_storage_unit/attackby(obj/item/I as obj, mob/user as mob) if(!src.ispowered) + if(istype(I, /obj/item/weapon/crowbar) && !isopen) + if(toggle_open(user)) + dump_everything() + user << text("You pry the [src] open.") + update_icon() return if(istype(I, /obj/item/weapon/screwdriver)) src.panelopen = !src.panelopen playsound(src.loc, 'sound/items/Screwdriver.ogg', 100, 1) - user << text("You [] the unit's maintenance panel.",(src.panelopen ? "open up" : "close") ) + user << text("You [] the unit's maintenance panel.",(src.panelopen ? "open up" : "close") ) src.updateUsrDialog() return if ( istype(I, /obj/item/weapon/grab) ) @@ -556,7 +553,7 @@ return var/obj/item/clothing/suit/space/S = I if(src.SUIT) - user << "The unit already contains a suit." + user << "The unit already contains a suit." return if(!user.drop_item()) user << "\The [S] is stuck to your hand, you cannot put it in the Suit Storage Unit!" @@ -612,9 +609,6 @@ user << "You load the [ITEM.name] into the storage compartment." ITEM.loc = src src.STORAGE = ITEM - src.update_icon() - src.updateUsrDialog() - return src.update_icon() src.updateUsrDialog() return From 231bf92ff9af635c7f5a6c480ced9add7a70ef08 Mon Sep 17 00:00:00 2001 From: Cheridan Date: Tue, 13 May 2014 14:11:22 -0500 Subject: [PATCH 107/185] fixing conflict in walls.dm i cry --- code/game/turfs/simulated/walls.dm | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/code/game/turfs/simulated/walls.dm b/code/game/turfs/simulated/walls.dm index d41f2aa6e91..4fd11515506 100644 --- a/code/game/turfs/simulated/walls.dm +++ b/code/game/turfs/simulated/walls.dm @@ -313,13 +313,4 @@ thermite = 0 spawn(50) if(O) qdel(O) - return - -/turf/simulated/wall/meteorhit(obj/M as obj) - if (prob(15)) - dismantle_wall() - else if(prob(70)) - ChangeTurf(/turf/simulated/floor/plating) - else - ReplaceWithLattice() - return 0 \ No newline at end of file + return \ No newline at end of file From ab1dd6fc0deeafe26b5909a068693cb8a14facab Mon Sep 17 00:00:00 2001 From: Rolan7 Date: Wed, 14 May 2014 02:14:28 -0400 Subject: [PATCH 108/185] Medal of Captaincy is no longer twice as large. Fixes issue #2883 and a minor bug where set-equipment wasn't properly equipping "assassins" with waistcoats. Both cases now use the existing attachTie method, which exists for this reason. --- code/game/jobs/job/captain.dm | 3 +-- code/modules/admin/verbs/debug.dm | 5 +++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/code/game/jobs/job/captain.dm b/code/game/jobs/job/captain.dm index 873f2419d69..dde8292119d 100644 --- a/code/game/jobs/job/captain.dm +++ b/code/game/jobs/job/captain.dm @@ -25,9 +25,8 @@ Captain /datum/job/captain/equip_items(var/mob/living/carbon/human/H) var/obj/item/clothing/under/U = new /obj/item/clothing/under/rank/captain(H) - U.hastie = new /obj/item/clothing/tie/medal/gold/captain(U) + U.attachTie(new /obj/item/clothing/tie/medal/gold/captain()) H.equip_to_slot_or_del(U, slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/vest/capcarapace(H), slot_wear_suit) H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/brown(H), slot_shoes) H.equip_to_slot_or_del(new /obj/item/clothing/head/caphat(H), slot_head) diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index 61c1703ee45..b15af9b48cc 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -834,12 +834,13 @@ var/global/list/g_fancy_list_of_safe_types = null carried_item.add_blood(M)//Oh yes, there will be blood... if("assassin") - M.equip_to_slot_or_del(new /obj/item/clothing/under/suit_jacket(M), slot_w_uniform) + var/obj/item/clothing/under/U = new /obj/item/clothing/under/suit_jacket(M) + M.equip_to_slot_or_del(U, slot_w_uniform) + U.attachTie(new /obj/item/clothing/tie/waistcoat(M)) M.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/black(M), slot_shoes) M.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(M), slot_gloves) M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears) M.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses(M), slot_glasses) - M.equip_to_slot_or_del(new /obj/item/clothing/tie/waistcoat(M), slot_wear_suit) M.equip_to_slot_or_del(new /obj/item/weapon/melee/energy/sword(M), slot_l_store) var/obj/item/weapon/storage/secure/briefcase/sec_briefcase = new(M) From 4454e91c63e19111c39a8424112dcd85416bd164 Mon Sep 17 00:00:00 2001 From: Alex Date: Wed, 14 May 2014 13:18:07 +0100 Subject: [PATCH 109/185] Created CONTRIBUTING.md Which github will automatically show when contributors create a new pull request. --- CONTRIBUTING.md | 76 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 CONTRIBUTING.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 00000000000..91bc2fa2c27 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,76 @@ +#CONTRIBUTING +Everyone is free to contribute to this project as long as they follow these simple guidelines and specifications. + +**Introduction** + +As a goal to increase code maintainability we are going to be requiring all pull requests to hold up to the standards mentioned below. This is in order for all of us to benefit, instead of having to fix the same bug more than once because of duplicated code. + +But first we want to make it clear over what powers the maintainers have over your pull request, so you do not get any surprises when submitting pull requests and it is closed for a reason you did not suspect. + +**Project Leads** + +Project Leads, which are elected by the maintainers and members of the project, have complete control over what goes through and what is reverted. They are encouraged to take control in what features are added to the game. Project Leads can also act as Project Managers when needed. + +**Project Managers** + +Project Managers are responsible for recruiting and firing maintainers, enforcing coding standards, and reverting changes that should have not been committed. Project Managers are assigned by Project Leads. On things that Project Managers disagree on they are to refer to the Project Leads for advice. It is encouraged that if you do not want to waste time working on a feature, that might be denied, that you ask a Project Manager first. + +**Maintainers** + +Maintainers are quality control. If a proposed pull request does not meet the mentioned quality specifications then it can be closed if you fail to satisfy them. Maintainers are required to give a reason for closing the pull request. + +Maintainers can revert your changes if they feel they are not worth maintaining or if they did not live up to the quality specifications. + +**Specification** + +As BYOND's Dream Maker is an object oriented language, code must be object oriented when possible in order to be more flexible when adding content to it. + +You must write BYOND code with absolute pathing, like so: + +```C++ + +/obj/item/weapon/baseball_bat + name = "baseball bat" + desc = "A baseball bat." + var/wooden = 1 + +/obj/item/weapon/baseball_bat/examine() + if(wooden) + desc = "A wooden baseball bat." + else + desc = "A metal baseball bat." + ..() + +``` + +You must not use colons to override safety checks on an object's variable/function, instead of using proper type casting. + +It is rarely allowed to put type paths in a text format, as they is no compile errors if the type path no longer exists. + +You must use tabs to indent your code. + +Hacky code, such as adding specific checks, is highly discouraged and only allowed when there is no other option. You can avoid hacky code by using object oriented methodologies, such as overriding a function (called procs in DM) or sectioning code into functions and then overriding them as required. + +Duplicated code is 99% of the time never allowed. Copying code from one place to another maybe suitable for small short time projects but /tg/station focuses on the long term and thus discourages this. Instead you can use object orientation, or simply placing repeated code in a function, to obey this specification easily. + +Code should be modular where possible, if you are working on a new class then it is best if you put it in a new file. + +Bloated code may be necessary to add a certain feature, which means there has to be a judgement over whether the feature is worth having or not. You can help make this decision easier by making sure your code is modular. + +You are expected to help maintain the code that you add, meaning if there is a problem then you are likely to be approached in order to fix any issues, runtimes or bugs. + +**Other Requirements/Information** + +Pull requests will sometimes take a while before they are looked at by a maintainer, the bigger the change the more time it will take before they are accepted into the code. + +You are expected to document all your changes in the pull request, failing to do so will risk delaying it. On the other hand you can speed up the process by making the pull request readable and easy to understand, with diagrams or before/after data. + +If you are proposing multiple changes, which change many different aspects of the code, you are to section them off into different pull requests in order to easily review them and to deny/accept the changes that are deemed acceptable. + +If your pull request is accepted, the code you add is no longer yours but everyones, everyone is free to work on it but you are also free to object to any changes being made, which will be noted by a Project Lead. + +**Getting Started** + +We have a [list of guides on the wiki](http://www.tgstation13.org/wiki/index.php/Guides#Development_and_Contribution_Guides) which will help you get started contributing to /tg/station with git and Dream Maker. + +For beginners, it is recommended you work on small projects, at first. There is an easy list of issues which are [contributor friendly, here](https://github.com/tgstation/-tg-station/issues?labels=Contributor+Friendly&page=1&state=open). From fc0e032866842a69d3498c674d7095de5c1b271f Mon Sep 17 00:00:00 2001 From: Alex Date: Wed, 14 May 2014 13:20:22 +0100 Subject: [PATCH 110/185] Added a link to CONTRIBUTING.md --- README.md | 75 +------------------------------------------------------ 1 file changed, 1 insertion(+), 74 deletions(-) diff --git a/README.md b/README.md index 31753b06a42..d33d361b9af 100644 --- a/README.md +++ b/README.md @@ -98,81 +98,8 @@ Instructions for bot setup are included in the /bot folder along with the script itself #CONTRIBUTING -Everyone is free to contribute to this project as long as they follow these simple guidelines and specifications. -**Introduction** - -As a goal to increase code maintainability we are going to be requiring all pull requests to hold up to the standards mentioned below. This is in order for all of us to benefit, instead of having to fix the same bug more than once because of duplicated code. - -But first we want to make it clear over what powers the maintainers have over your pull request, so you do not get any surprises when submitting pull requests and it is closed for a reason you did not suspect. - -**Project Leads** - -Project Leads, which are elected by the maintainers and members of the project, have complete control over what goes through and what is reverted. They are encouraged to take control in what features are added to the game. Project Leads can also act as Project Managers when needed. - -**Project Managers** - -Project Managers are responsible for recruiting and firing maintainers, enforcing coding standards, and reverting changes that should have not been committed. Project Managers are assigned by Project Leads. On things that Project Managers disagree on they are to refer to the Project Leads for advice. It is encouraged that if you do not want to waste time working on a feature, that might be denied, that you ask a Project Manager first. - -**Maintainers** - -Maintainers are quality control. If a proposed pull request does not meet the mentioned quality specifications then it can be closed if you fail to satisfy them. Maintainers are required to give a reason for closing the pull request. - -Maintainers can revert your changes if they feel they are not worth maintaining or if they did not live up to the quality specifications. - -**Specification** - -As BYOND's Dream Maker is an object oriented language, code must be object oriented when possible in order to be more flexible when adding content to it. - -You must write BYOND code with absolute pathing, like so: - -```C++ - -/obj/item/weapon/baseball_bat - name = "baseball bat" - desc = "A baseball bat." - var/wooden = 1 - -/obj/item/weapon/baseball_bat/examine() - if(wooden) - desc = "A wooden baseball bat." - else - desc = "A metal baseball bat." - ..() - -``` - -You must not use colons to override safety checks on an object's variable/function, instead of using proper type casting. - -It is rarely allowed to put type paths in a text format, as they is no compile errors if the type path no longer exists. - -You must use tabs to indent your code. - -Hacky code, such as adding specific checks, is highly discouraged and only allowed when there is no other option. You can avoid hacky code by using object oriented methodologies, such as overriding a function (called procs in DM) or sectioning code into functions and then overriding them as required. - -Duplicated code is 99% of the time never allowed. Copying code from one place to another maybe suitable for small short time projects but /tg/station focuses on the long term and thus discourages this. Instead you can use object orientation, or simply placing repeated code in a function, to obey this specification easily. - -Code should be modular where possible, if you are working on a new class then it is best if you put it in a new file. - -Bloated code may be necessary to add a certain feature, which means there has to be a judgement over whether the feature is worth having or not. You can help make this decision easier by making sure your code is modular. - -You are expected to help maintain the code that you add, meaning if there is a problem then you are likely to be approached in order to fix any issues, runtimes or bugs. - -**Other Requirements/Information** - -Pull requests will sometimes take a while before they are looked at by a maintainer, the bigger the change the more time it will take before they are accepted into the code. - -You are expected to document all your changes in the pull request, failing to do so will risk delaying it. On the other hand you can speed up the process by making the pull request readable and easy to understand, with diagrams or before/after data. - -If you are proposing multiple changes, which change many different aspects of the code, you are to section them off into different pull requests in order to easily review them and to deny/accept the changes that are deemed acceptable. - -If your pull request is accepted, the code you add is no longer yours but everyones, everyone is free to work on it but you are also free to object to any changes being made, which will be noted by a Project Lead. - -**Getting Started** - -We have a [list of guides on the wiki](http://www.tgstation13.org/wiki/index.php/Guides#Development_and_Contribution_Guides) which will help you get started contributing to /tg/station with git and Dream Maker. - -For beginners, it is recommended you work on small projects, at first. There is an easy list of issues which are [contributor friendly, here](https://github.com/tgstation/-tg-station/issues?labels=Contributor+Friendly&page=1&state=open). +Please see [CONTRIBUTING.md](CONTRIBUTING.md) #LICENSE From c783bf0ae5ab430ef2e7ccb2c3375c8b9922fa0e Mon Sep 17 00:00:00 2001 From: Alex Date: Wed, 14 May 2014 13:30:06 +0100 Subject: [PATCH 111/185] Updated CONTRIBUTING.md Added formatting and reordered some things. --- CONTRIBUTING.md | 44 +++++++++++++++++++++++--------------------- 1 file changed, 23 insertions(+), 21 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 91bc2fa2c27..8a43c33a92c 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,12 +1,20 @@ #CONTRIBUTING Everyone is free to contribute to this project as long as they follow these simple guidelines and specifications. -**Introduction** +##Introduction As a goal to increase code maintainability we are going to be requiring all pull requests to hold up to the standards mentioned below. This is in order for all of us to benefit, instead of having to fix the same bug more than once because of duplicated code. But first we want to make it clear over what powers the maintainers have over your pull request, so you do not get any surprises when submitting pull requests and it is closed for a reason you did not suspect. +##Getting Started + +We have a [list of guides on the wiki](http://www.tgstation13.org/wiki/index.php/Guides#Development_and_Contribution_Guides) which will help you get started contributing to /tg/station with git and Dream Maker. + +For beginners, it is recommended you work on small projects, at first. There is an easy list of issues which are [contributor friendly, here](https://github.com/tgstation/-tg-station/issues?labels=Contributor+Friendly&page=1&state=open). + +##Meet the Team + **Project Leads** Project Leads, which are elected by the maintainers and members of the project, have complete control over what goes through and what is reverted. They are encouraged to take control in what features are added to the game. Project Leads can also act as Project Managers when needed. @@ -21,11 +29,11 @@ Maintainers are quality control. If a proposed pull request does not meet the me Maintainers can revert your changes if they feel they are not worth maintaining or if they did not live up to the quality specifications. -**Specification** +##Specification -As BYOND's Dream Maker is an object oriented language, code must be object oriented when possible in order to be more flexible when adding content to it. +* As BYOND's Dream Maker is an object oriented language, code must be object oriented when possible in order to be more flexible when adding content to it. -You must write BYOND code with absolute pathing, like so: +* You must write BYOND code with absolute pathing, like so: ```C++ @@ -43,34 +51,28 @@ You must write BYOND code with absolute pathing, like so: ``` -You must not use colons to override safety checks on an object's variable/function, instead of using proper type casting. +* You must not use colons to override safety checks on an object's variable/function, instead of using proper type casting. -It is rarely allowed to put type paths in a text format, as they is no compile errors if the type path no longer exists. +* It is rarely allowed to put type paths in a text format, as they is no compile errors if the type path no longer exists. -You must use tabs to indent your code. +* You must use tabs to indent your code. -Hacky code, such as adding specific checks, is highly discouraged and only allowed when there is no other option. You can avoid hacky code by using object oriented methodologies, such as overriding a function (called procs in DM) or sectioning code into functions and then overriding them as required. +* Hacky code, such as adding specific checks, is highly discouraged and only allowed when there is no other option. You can avoid hacky code by using object oriented methodologies, such as overriding a function (called procs in DM) or sectioning code into functions and then overriding them as required. -Duplicated code is 99% of the time never allowed. Copying code from one place to another maybe suitable for small short time projects but /tg/station focuses on the long term and thus discourages this. Instead you can use object orientation, or simply placing repeated code in a function, to obey this specification easily. +* Duplicated code is 99% of the time never allowed. Copying code from one place to another maybe suitable for small short time projects but /tg/station focuses on the long term and thus discourages this. Instead you can use object orientation, or simply placing repeated code in a function, to obey this specification easily. -Code should be modular where possible, if you are working on a new class then it is best if you put it in a new file. +* Code should be modular where possible, if you are working on a new class then it is best if you put it in a new file. -Bloated code may be necessary to add a certain feature, which means there has to be a judgement over whether the feature is worth having or not. You can help make this decision easier by making sure your code is modular. +* Bloated code may be necessary to add a certain feature, which means there has to be a judgement over whether the feature is worth having or not. You can help make this decision easier by making sure your code is modular. -You are expected to help maintain the code that you add, meaning if there is a problem then you are likely to be approached in order to fix any issues, runtimes or bugs. +* You are expected to help maintain the code that you add, meaning if there is a problem then you are likely to be approached in order to fix any issues, runtimes or bugs. -**Other Requirements/Information** +##Other Requirements/Information -Pull requests will sometimes take a while before they are looked at by a maintainer, the bigger the change the more time it will take before they are accepted into the code. +Pull requests will sometimes take a while before they are looked at by a maintainer, the bigger the change the more time it will take before they are accepted into the code. You are expected to document all your changes in the pull request, failing to do so will risk delaying it. On the other hand you can speed up the process by making the pull request readable and easy to understand, with diagrams or before/after data. If you are proposing multiple changes, which change many different aspects of the code, you are to section them off into different pull requests in order to easily review them and to deny/accept the changes that are deemed acceptable. -If your pull request is accepted, the code you add is no longer yours but everyones, everyone is free to work on it but you are also free to object to any changes being made, which will be noted by a Project Lead. - -**Getting Started** - -We have a [list of guides on the wiki](http://www.tgstation13.org/wiki/index.php/Guides#Development_and_Contribution_Guides) which will help you get started contributing to /tg/station with git and Dream Maker. - -For beginners, it is recommended you work on small projects, at first. There is an easy list of issues which are [contributor friendly, here](https://github.com/tgstation/-tg-station/issues?labels=Contributor+Friendly&page=1&state=open). +If your pull request is accepted, the code you add is no longer exclusively yours but everyones, everyone is free to work on it but you are also free to object to any changes being made, which will be noted by a Project Lead or Project Manager. From d9b248ec85ff4dad8547a0dfc151c57d0d9d9954 Mon Sep 17 00:00:00 2001 From: MrStonedOne Date: Wed, 14 May 2014 05:46:33 -0700 Subject: [PATCH 112/185] Re work of game selection logic to be less shit Fixes #3532 (force secret only works if game mode is in random pool) --- code/game/gamemodes/gameticker.dm | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/code/game/gamemodes/gameticker.dm b/code/game/gamemodes/gameticker.dm index f508252b9ab..8946386ffc4 100644 --- a/code/game/gamemodes/gameticker.dm +++ b/code/game/gamemodes/gameticker.dm @@ -65,19 +65,19 @@ var/round_start_time = 0 src.hide_mode = 1 var/list/datum/game_mode/runnable_modes if((master_mode=="random") || (master_mode=="secret")) - runnable_modes = config.get_runnable_modes() - if (runnable_modes.len==0) - current_state = GAME_STATE_PREGAME - world << "Unable to choose playable game mode. Reverting to pre-game lobby." - return 0 - if(secret_force_mode != "secret") - for (var/datum/game_mode/M in runnable_modes) - if (M.config_tag && M.config_tag == secret_force_mode) - src.mode = M - break - if (!src.mode) - message_admins("\blue Unable to force secret [secret_force_mode].", 1) + if((master_mode=="secret") && (secret_force_mode != "secret")) + var/datum/game_mode/smode = config.pick_mode(secret_force_mode) + if (!smode.can_start()) + message_admins("\blue Unable to force secret [secret_force_mode]. [smode.required_players] players and [smode.required_enemies] eligible antagonists needed.", 1) + else + src.mode = smode + if(!src.mode) + runnable_modes = config.get_runnable_modes() + if (runnable_modes.len==0) + current_state = GAME_STATE_PREGAME + world << "Unable to choose playable game mode. Reverting to pre-game lobby." + return 0 src.mode = pickweight(runnable_modes) else From 3eb3c25609274c88588c2567411669af5a8de5de Mon Sep 17 00:00:00 2001 From: Alex Date: Wed, 14 May 2014 13:55:03 +0100 Subject: [PATCH 113/185] Updated CONTRIBUTING.md to be more friendly --- CONTRIBUTING.md | 36 +++++++++++++++++++++++++++--------- 1 file changed, 27 insertions(+), 9 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 8a43c33a92c..540b7844fac 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,18 +1,26 @@ #CONTRIBUTING -Everyone is free to contribute to this project as long as they follow these simple guidelines and specifications. + ##Introduction -As a goal to increase code maintainability we are going to be requiring all pull requests to hold up to the standards mentioned below. This is in order for all of us to benefit, instead of having to fix the same bug more than once because of duplicated code. +Hello and welcome to /tg/station's contributing page. You are here because you are curious or interested in contributing. Thanks for being interested. Everyone is free to contribute to this project as long as they follow the simple guidelines and specifications below. -But first we want to make it clear over what powers the maintainers have over your pull request, so you do not get any surprises when submitting pull requests and it is closed for a reason you did not suspect. +At /tg/station, we have a goal to increase code maintainability and to do that we are going to be requiring all pull requests to hold up to those specifications. This is in order for all of us to benefit, instead of having to fix the same bug more than once because of duplicated code. + +But first we want to make it clear how you can contribute if contributing is a new experience for you and what powers the team has over your pull request, so you do not get any surprises when submitting pull requests and it is closed for a reason you did not anticpate. ##Getting Started +At /tg/station we do not have a list of goals and features to add, we instead allow freedom for contributors to suggest and create their ideas for the game. That does not mean we aren't determined to squash bugs, which unfortunately pop up a lot due to the deep complexity of the game. + +Here are some useful getting started guides, if you want to contribute or if you want to know what challenges you can tackle with zero knowledge about the game's code structure. + We have a [list of guides on the wiki](http://www.tgstation13.org/wiki/index.php/Guides#Development_and_Contribution_Guides) which will help you get started contributing to /tg/station with git and Dream Maker. For beginners, it is recommended you work on small projects, at first. There is an easy list of issues which are [contributor friendly, here](https://github.com/tgstation/-tg-station/issues?labels=Contributor+Friendly&page=1&state=open). +You can of course, as always, ask for help at [#coderbus](irc://irc.rizon.net/coderbus) on irc.rizon.net. We are just here to have fun and help so do not expect professional support please. + ##Meet the Team **Project Leads** @@ -31,7 +39,9 @@ Maintainers can revert your changes if they feel they are not worth maintaining ##Specification -* As BYOND's Dream Maker is an object oriented language, code must be object oriented when possible in order to be more flexible when adding content to it. +As mentioned before, you are expected to follow these specifications in order to make everyone's lives easier, it will also save you and us time, with having to make the changes and us having to tell you what to change. Thank you for reading this section. + +* As BYOND's Dream Maker is an object oriented language, code must be object oriented when possible in order to be more flexible when adding content to it. If you are unfamiliar with this concept, it is highly recommended you look it up. * You must write BYOND code with absolute pathing, like so: @@ -53,9 +63,17 @@ Maintainers can revert your changes if they feel they are not worth maintaining * You must not use colons to override safety checks on an object's variable/function, instead of using proper type casting. -* It is rarely allowed to put type paths in a text format, as they is no compile errors if the type path no longer exists. +* It is rarely allowed to put type paths in a text format, as they is no compile errors if the type path no longer exists. Here is an example: -* You must use tabs to indent your code. +```C++ +//Good +var/path_type = /obj/item/weapon/baseball_bat + +//Bad +var/path_type = "/obj/item/weapon/baseball_bat" +``` + +* You must use tabs to indent your code, NOT SPACES. * Hacky code, such as adding specific checks, is highly discouraged and only allowed when there is no other option. You can avoid hacky code by using object oriented methodologies, such as overriding a function (called procs in DM) or sectioning code into functions and then overriding them as required. @@ -69,10 +87,10 @@ Maintainers can revert your changes if they feel they are not worth maintaining ##Other Requirements/Information -Pull requests will sometimes take a while before they are looked at by a maintainer, the bigger the change the more time it will take before they are accepted into the code. +Pull requests will sometimes take a while before they are looked at by a maintainer, the bigger the change the more time it will take before they are accepted into the code. Every team member is a volunteer who is giving up their own time to help maintain and contribute, so please be nice. -You are expected to document all your changes in the pull request, failing to do so will risk delaying it. On the other hand you can speed up the process by making the pull request readable and easy to understand, with diagrams or before/after data. +You are expected to document all your changes in the pull request, failing to do so will risk delaying it as we will have to question why you made the change. On the other hand you can speed up the process by making the pull request readable and easy to understand, with diagrams or before/after data. -If you are proposing multiple changes, which change many different aspects of the code, you are to section them off into different pull requests in order to easily review them and to deny/accept the changes that are deemed acceptable. +If you are proposing multiple changes, which change many different aspects of the code, you are expected to section them off into different pull requests in order to make it easier to review them and to deny/accept the changes that are deemed acceptable. If your pull request is accepted, the code you add is no longer exclusively yours but everyones, everyone is free to work on it but you are also free to object to any changes being made, which will be noted by a Project Lead or Project Manager. From 5e1d5fc5b23ce670856009867033db59fdbe7149 Mon Sep 17 00:00:00 2001 From: Alex Date: Wed, 14 May 2014 13:57:07 +0100 Subject: [PATCH 114/185] Updated CONTRIBUTING.md with grammar fixes. --- CONTRIBUTING.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 540b7844fac..4f965a82e5b 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -5,9 +5,9 @@ Hello and welcome to /tg/station's contributing page. You are here because you are curious or interested in contributing. Thanks for being interested. Everyone is free to contribute to this project as long as they follow the simple guidelines and specifications below. -At /tg/station, we have a goal to increase code maintainability and to do that we are going to be requiring all pull requests to hold up to those specifications. This is in order for all of us to benefit, instead of having to fix the same bug more than once because of duplicated code. +At /tg/station, we have a goal to increase code maintainability and to do that we are going to be requiring all pull requests to hold up to the specifications mentioned below. This is in order for all of us to benefit, instead of having to fix the same bug more than once because of duplicated code. -But first we want to make it clear how you can contribute if contributing is a new experience for you and what powers the team has over your pull request, so you do not get any surprises when submitting pull requests and it is closed for a reason you did not anticpate. +But first we want to make it clear how you can contribute, if contributing is a new experience for you, and what powers the team has over your pull request so you do not get any surprises when submitting pull requests, and it is closed for a reason you did not anticipate. ##Getting Started From 305230f0927762da1eca4363074128b43a145559 Mon Sep 17 00:00:00 2001 From: Alex Date: Wed, 14 May 2014 14:04:02 +0100 Subject: [PATCH 115/185] CONTRIBUTING.md is even friendlier and easier to read. --- CONTRIBUTING.md | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 4f965a82e5b..a6c486b0daf 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -11,13 +11,9 @@ But first we want to make it clear how you can contribute, if contributing is a ##Getting Started -At /tg/station we do not have a list of goals and features to add, we instead allow freedom for contributors to suggest and create their ideas for the game. That does not mean we aren't determined to squash bugs, which unfortunately pop up a lot due to the deep complexity of the game. +At /tg/station we do not have a list of goals and features to add, we instead allow freedom for contributors to suggest and create their ideas for the game. That does not mean we aren't determined to squash bugs, which unfortunately pop up a lot due to the deep complexity of the game. Here are some useful getting started guides, if you want to contribute or if you want to know what challenges you can tackle with zero knowledge about the game's code structure. -Here are some useful getting started guides, if you want to contribute or if you want to know what challenges you can tackle with zero knowledge about the game's code structure. - -We have a [list of guides on the wiki](http://www.tgstation13.org/wiki/index.php/Guides#Development_and_Contribution_Guides) which will help you get started contributing to /tg/station with git and Dream Maker. - -For beginners, it is recommended you work on small projects, at first. There is an easy list of issues which are [contributor friendly, here](https://github.com/tgstation/-tg-station/issues?labels=Contributor+Friendly&page=1&state=open). +We have a [list of guides on the wiki](http://www.tgstation13.org/wiki/index.php/Guides#Development_and_Contribution_Guides) which will help you get started contributing to /tg/station with git and Dream Maker. For beginners, it is recommended you work on small projects, at first. There is an easy list of issues which are [contributor friendly, here](https://github.com/tgstation/-tg-station/issues?labels=Contributor+Friendly&page=1&state=open). You can of course, as always, ask for help at [#coderbus](irc://irc.rizon.net/coderbus) on irc.rizon.net. We are just here to have fun and help so do not expect professional support please. @@ -85,12 +81,12 @@ var/path_type = "/obj/item/weapon/baseball_bat" * You are expected to help maintain the code that you add, meaning if there is a problem then you are likely to be approached in order to fix any issues, runtimes or bugs. -##Other Requirements/Information +##Pull Request Process -Pull requests will sometimes take a while before they are looked at by a maintainer, the bigger the change the more time it will take before they are accepted into the code. Every team member is a volunteer who is giving up their own time to help maintain and contribute, so please be nice. +There is no strict process when it comes to merging pull requests, pull requests will sometimes take a while before they are looked at by a maintainer, the bigger the change the more time it will take before they are accepted into the code. Every team member is a volunteer who is giving up their own time to help maintain and contribute, so please be nice. Here are some helpful ways to make it easier for you and for the maintainer when making a pull request. -You are expected to document all your changes in the pull request, failing to do so will risk delaying it as we will have to question why you made the change. On the other hand you can speed up the process by making the pull request readable and easy to understand, with diagrams or before/after data. +* You are going to be expected to document all your changes in the pull request, failing to do so will mean delaying it as we will have to question why you made the change. On the other hand you can speed up the process by making the pull request readable and easy to understand, with diagrams or before/after data. -If you are proposing multiple changes, which change many different aspects of the code, you are expected to section them off into different pull requests in order to make it easier to review them and to deny/accept the changes that are deemed acceptable. +* If you are proposing multiple changes, which change many different aspects of the code, you are expected to section them off into different pull requests in order to make it easier to review them and to deny/accept the changes that are deemed acceptable. -If your pull request is accepted, the code you add is no longer exclusively yours but everyones, everyone is free to work on it but you are also free to object to any changes being made, which will be noted by a Project Lead or Project Manager. +* If your pull request is accepted, the code you add is no longer exclusively yours but everyones, everyone is free to work on it but you are also free to object to any changes being made, which will be noted by a Project Lead or Project Manager. It is a shame this has to be explicitly told but there have been cases where this would've saved some trobule. From cfd355ecbe9e8362fa2b6d3b68833a9b3dc8e7b6 Mon Sep 17 00:00:00 2001 From: Alex Date: Wed, 14 May 2014 14:05:39 +0100 Subject: [PATCH 116/185] Fixed a typo in CONTRIBUTING.md --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index a6c486b0daf..2513b74576d 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -89,4 +89,4 @@ There is no strict process when it comes to merging pull requests, pull requests * If you are proposing multiple changes, which change many different aspects of the code, you are expected to section them off into different pull requests in order to make it easier to review them and to deny/accept the changes that are deemed acceptable. -* If your pull request is accepted, the code you add is no longer exclusively yours but everyones, everyone is free to work on it but you are also free to object to any changes being made, which will be noted by a Project Lead or Project Manager. It is a shame this has to be explicitly told but there have been cases where this would've saved some trobule. +* If your pull request is accepted, the code you add is no longer exclusively yours but everyones, everyone is free to work on it but you are also free to object to any changes being made, which will be noted by a Project Lead or Project Manager. It is a shame this has to be explicitly told but there have been cases where this would've saved some trouble. From c54deceee2cca60545db8f2b8021c4bd7e08250b Mon Sep 17 00:00:00 2001 From: Alex Date: Wed, 14 May 2014 14:08:44 +0100 Subject: [PATCH 117/185] Streamline'd the CONTRIBUTOR.md. --- CONTRIBUTING.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 2513b74576d..2c7ea1b18ff 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -3,9 +3,7 @@ ##Introduction -Hello and welcome to /tg/station's contributing page. You are here because you are curious or interested in contributing. Thanks for being interested. Everyone is free to contribute to this project as long as they follow the simple guidelines and specifications below. - -At /tg/station, we have a goal to increase code maintainability and to do that we are going to be requiring all pull requests to hold up to the specifications mentioned below. This is in order for all of us to benefit, instead of having to fix the same bug more than once because of duplicated code. +Hello and welcome to /tg/station's contributing page. You are here because you are curious or interested in contributing. Thanks for being interested. Everyone is free to contribute to this project as long as they follow the simple guidelines and specifications below, because at /tg/station, we have a goal to increase code maintainability and to do that we are going to need all pull requests to hold up to those specifications. This is in order for all of us to benefit, instead of having to fix the same bug more than once because of duplicated code. But first we want to make it clear how you can contribute, if contributing is a new experience for you, and what powers the team has over your pull request so you do not get any surprises when submitting pull requests, and it is closed for a reason you did not anticipate. From b4472ce7abb20dfd927789b99ee6ce5c514947be Mon Sep 17 00:00:00 2001 From: Jordie0608 Date: Wed, 14 May 2014 23:21:38 +1000 Subject: [PATCH 118/185] alphabetized list of ores in fabricator --- code/game/mecha/equipment/tools/tools.dm | 10 +++++----- code/game/mecha/equipment/weapons/weapons.dm | 4 ++-- code/game/mecha/mech_fabricator.dm | 8 ++++---- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/code/game/mecha/equipment/tools/tools.dm b/code/game/mecha/equipment/tools/tools.dm index 628ee7b645e..5e4fc703326 100644 --- a/code/game/mecha/equipment/tools/tools.dm +++ b/code/game/mecha/equipment/tools/tools.dm @@ -264,7 +264,7 @@ energy_drain = 250 range = MELEE|RANGED construction_time = 1200 - construction_cost = list("metal"=30000,"plasma"=25000,"silver"=20000,"gold"=20000) + construction_cost = list("metal"=30000,"gold"=20000,"plasma"=25000,"silver"=20000) var/mode = 0 //0 - deconstruct, 1 - wall or floor, 2 - airlock. var/disabled = 0 //malf @@ -632,7 +632,7 @@ equip_cooldown = 20 energy_drain = 100 range = 0 - construction_cost = list("metal"=10000,"gold"=1000,"silver"=2000,"glass"=5000) + construction_cost = list("metal"=10000,"glass"=5000,"gold"=1000,"silver"=2000) var/health_boost = 2 var/datum/global_iterator/pr_repair_droid var/icon/droid_overlay @@ -722,7 +722,7 @@ equip_cooldown = 10 energy_drain = 0 range = 0 - construction_cost = list("metal"=10000,"gold"=2000,"silver"=3000,"glass"=2000) + construction_cost = list("metal"=10000,"glass"=2000,"gold"=2000,"silver"=3000) var/datum/global_iterator/pr_energy_relay var/coeff = 100 var/list/use_channels = list(EQUIP,ENVIRON,LIGHT) @@ -834,7 +834,7 @@ equip_cooldown = 10 energy_drain = 0 range = MELEE - construction_cost = list("metal"=10000,"silver"=500,"glass"=1000) + construction_cost = list("metal"=10000,"glass"=1000,"silver"=500) var/datum/global_iterator/pr_mech_generator var/coeff = 100 var/obj/item/stack/sheet/fuel @@ -971,7 +971,7 @@ desc = "An exosuit module that generates power using uranium as fuel. Pollutes the environment." icon_state = "tesla" origin_tech = "powerstorage=3;engineering=3" - construction_cost = list("metal"=10000,"silver"=500,"glass"=1000) + construction_cost = list("metal"=10000,"glass"=1000,"silver"=500) max_fuel = 50000 fuel_per_cycle_idle = 10 fuel_per_cycle_active = 30 diff --git a/code/game/mecha/equipment/weapons/weapons.dm b/code/game/mecha/equipment/weapons/weapons.dm index 6fef8f0e1e5..de0aee86fe8 100644 --- a/code/game/mecha/equipment/weapons/weapons.dm +++ b/code/game/mecha/equipment/weapons/weapons.dm @@ -67,7 +67,7 @@ energy_drain = 120 projectile = /obj/item/projectile/ion fire_sound = 'sound/weapons/Laser.ogg' - construction_cost = list("silver" = 6000, "metal" = 20000, "uranium" = 2000) + construction_cost = list("metal"=20000,"silver"=6000,"uranium"=2000) /obj/item/mecha_parts/mecha_equipment/weapon/energy/pulse equip_cooldown = 30 @@ -319,7 +319,7 @@ equip_cooldown = 60 var/missile_speed = 2 var/missile_range = 30 - construction_cost = list("silver" = 8000, "metal" = 22000, "gold" = 6000) + construction_cost = list("metal"=22000,"gold"=6000,"silver"=8000) action(target) if(!action_checks(target)) return diff --git a/code/game/mecha/mech_fabricator.dm b/code/game/mecha/mech_fabricator.dm index d7c7771f4cc..8d6397df867 100644 --- a/code/game/mecha/mech_fabricator.dm +++ b/code/game/mecha/mech_fabricator.dm @@ -20,12 +20,12 @@ var/list/resources = list( "metal"=0, "glass"=0, - "gold"=0, - "silver"=0, + "bananium"=0, "diamond"=0, + "gold"=0, "plasma"=0, - "uranium"=0, - "bananium"=0 + "silver"=0, + "uranium"=0 ) var/res_max_amount = 200000 var/datum/research/files From 9e2f0f0fda4cc4d615305bc64bfa231da64a9a43 Mon Sep 17 00:00:00 2001 From: Deantwo Date: Wed, 14 May 2014 16:09:12 +0200 Subject: [PATCH 119/185] Fixed grenade casing not being renamed to grenade when complete Fixed grenade casing not being renamed to grenade when complete and made all assembly messages refer to the assembly as "grenade assembly". - The grenade assembly is called "grenade casing" before anything is done (like it always was) - The grenade assembly is called "unsecured grenade" when a activation mechanism is added (like before https://github.com/tgstation/-tg-station/commit/f645037dd5ffe491c94f73a39b3aac312e51d579) - The grenade assembly is called "grenade" when finished (like before https://github.com/tgstation/-tg-station/commit/f645037dd5ffe491c94f73a39b3aac312e51d579) - Renamed large chem grenade to "large grenade casing" - Made using a wrench on a unsecured grenade remove the payload on the first use, and the activation mechanism on the second use (because we don't want to always remove both at the same time) - Made cable_coil drop on the floor if it was used as activation mechanism Fixes https://github.com/tgstation/-tg-station/issues/2378 --- .../items/weapons/grenades/chem_grenade.dm | 49 ++++++++++++------- 1 file changed, 32 insertions(+), 17 deletions(-) diff --git a/code/game/objects/items/weapons/grenades/chem_grenade.dm b/code/game/objects/items/weapons/grenades/chem_grenade.dm index 54433b17d90..318d0b28031 100644 --- a/code/game/objects/items/weapons/grenades/chem_grenade.dm +++ b/code/game/objects/items/weapons/grenades/chem_grenade.dm @@ -3,7 +3,7 @@ #define READY 2 /obj/item/weapon/grenade/chem_grenade - name = "grenade casing" + name = "grenade" desc = "A do it yourself grenade casing!" icon_state = "chemg" item_state = "flashbang" @@ -18,6 +18,7 @@ /obj/item/weapon/grenade/chem_grenade/New() create_reagents(1000) + name = initial(name) + " casing" // By adding the " casing" part here we can use initial(name) to get the final name, making it nice to say "large grenade" when it is a large grenade. /obj/item/weapon/grenade/chem_grenade/examine() @@ -50,12 +51,14 @@ if(istype(I, /obj/item/weapon/screwdriver)) if(stage == WIRED) if(beakers.len) - user << "You lock the assembly." + user << "You lock the " + initial(name) +" assembly." playsound(loc, 'sound/items/Screwdriver.ogg', 25, -3) + name = initial(name) + desc = "A custom made " + initial(name) +"." icon_state = initial(icon_state) +"_locked" stage = READY else - user << "You need to add at least one beaker before locking the assembly." + user << "You need to add at least one beaker before locking the " + initial(name) +" assembly." else if(stage == READY && !nadeassembly) det_time = det_time == 50 ? 30 : 50 //toggle between 30 and 50 user << "You modify the time delay. It's set for [det_time / 10] second\s." @@ -68,7 +71,7 @@ return else if(I.reagents.total_volume) - user << "You add [I] to the assembly." + user << "You add [I] to the " + initial(name) +" assembly." user.drop_item() I.loc = src beakers += I @@ -89,34 +92,46 @@ assemblyattacher = user.ckey stage = WIRED + name = "unsecured " + initial(name) + desc = "An unsecured " + initial(name) +" assembly." icon_state = initial(icon_state) + "_ass" - user << "You add [A] to [src]!" + user << "You add [A] to the " + initial(name) +" assembly!" else if(stage == EMPTY && istype(I, /obj/item/stack/cable_coil)) var/obj/item/stack/cable_coil/C = I C.use(1) - + det_time = 50 // In case the cable_coil was removed and readded. stage = WIRED + name = "unsecured " + initial(name) + desc = "An unsecured " + initial(name) +" assembly." icon_state = initial(icon_state) + "_ass" - user << "You rig [src]." + user << "You rig the " + initial(name) +" assembly." else if(stage == READY && istype(I, /obj/item/weapon/wirecutters)) - user << "You unlock the assembly." + user << "You unlock the " + initial(name) +" assembly." + name = "unsecured " + initial(name) + desc = "An unsecured " + initial(name) +" assembly." icon_state = initial(icon_state) + "_ass" stage = WIRED else if(stage == WIRED && istype(I, /obj/item/weapon/wrench)) - user << "You open the grenade and remove the contents." - icon_state = initial(icon_state) + if(beakers.len) + for(var/obj/O in beakers) + O.loc = get_turf(src) + beakers = list() + user << "You open the " + initial(name) +" assembly and remove the payload." + return // First use of the wrench remove beakers, then use the wrench to remove the activation mechanism. stage = EMPTY if(nadeassembly) nadeassembly.loc = get_turf(src) nadeassembly.master = null nadeassembly = null - if(beakers.len) - for(var/obj/O in beakers) - O.loc = get_turf(src) - beakers = list() + else // If "nadeassembly = null && stage == WIRED", then it most have been cable_coil that was used. + new /obj/item/stack/cable_coil(get_turf(src),1) + user << "You remove the activation mechanism from the " + initial(name) +" assembly." + name = initial(name) + " casing" + desc = initial(desc) + icon_state = initial(icon_state) @@ -190,8 +205,8 @@ //Large chem grenades accept slime cores and use the appropriately. /obj/item/weapon/grenade/chem_grenade/large - name = "large chem grenade" - desc = "An oversized grenade that affects a larger area." + name = "large grenade" + desc = "An oversized grenade casing." icon_state = "large_grenade" allowed_containers = list(/obj/item/weapon/reagent_containers/glass,/obj/item/weapon/reagent_containers/food/condiment, /obj/item/weapon/reagent_containers/food/drinks) @@ -217,7 +232,7 @@ //make a special case you might as well do it explicitly. -Sayu /obj/item/weapon/grenade/chem_grenade/large/attackby(obj/item/I, mob/user) if(istype(I, /obj/item/slime_extract) && stage == WIRED) - user << "You add [I] to the assembly." + user << "You add [I] to the " + initial(name) +" assembly." user.drop_item() I.loc = src beakers += I From 96f489800bd7516e29c0b88c794c44861d12b249 Mon Sep 17 00:00:00 2001 From: ikarrus Date: Wed, 14 May 2014 08:55:12 -0600 Subject: [PATCH 120/185] Added a make_announcement proc to reduce duplicated code --- .../game/machinery/computer/communications.dm | 43 ++++++++++--------- 1 file changed, 22 insertions(+), 21 deletions(-) diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm index 9a592ae2482..5e71691c4a1 100644 --- a/code/game/machinery/computer/communications.dm +++ b/code/game/machinery/computer/communications.dm @@ -111,17 +111,8 @@ var/const/CALL_SHUTTLE_REASON_LENGTH = 12 usr << "You need to swipe your ID." if("announce") - if(src.authenticated==2) - if(message_cooldown) return - var/input = stripped_input(usr, "Please choose a message to announce to the station crew.", "What?") - if(!input || !(usr in view(1,src))) - return - priority_announce(input, null, 'sound/misc/announce.ogg', "Captain") - log_say("[key_name(usr)] has made a captain announcement: [input]") - message_admins("[key_name_admin(usr)] has made a captain announcement.", 1) - message_cooldown = 1 - spawn(600)//One minute cooldown - message_cooldown = 0 + if(src.authenticated==2 && !message_cooldown) + make_announcement(usr) if("callshuttle") src.state = STATE_DEFAULT @@ -280,16 +271,8 @@ var/const/CALL_SHUTTLE_REASON_LENGTH = 12 if("ai-status") src.aistate = STATE_STATUSDISPLAY if("ai-announce") - if(ai_message_cooldown) return - var/input = stripped_input(usr, "Please choose a message to announce to the station crew.", "What?") - if(!input) - return - priority_announce(input, null, null, "Priority") - log_say("[key_name(usr)] has made a priority announcement: [input]") - message_admins("[key_name_admin(usr)] has made a priority announcement.", 1) - ai_message_cooldown = 1 - spawn(600)//One minute cooldown - ai_message_cooldown = 0 + if(!ai_message_cooldown) + make_announcement(usr, 1) if("ai-securitylevel") src.tmp_alertlevel = text2num( href_list["newalertlevel"] ) if(!tmp_alertlevel) tmp_alertlevel = 0 @@ -570,6 +553,24 @@ var/const/CALL_SHUTTLE_REASON_LENGTH = 12 dat += "

\[ [(src.aistate != STATE_DEFAULT) ? "
Main Menu | " : ""]Close \]" return dat +/obj/machinery/computer/communications/proc/make_announcement(var/mob/living/user, var/is_silicon) + var/input = stripped_input(user, "Please choose a message to announce to the station crew.", "What?") + if(!input) + return + if(is_silicon) + priority_announce(input, null, null, "Priority") + ai_message_cooldown = 1 + spawn(600)//One minute cooldown + ai_message_cooldown = 0 + else + if(!(user in view(1,src))) + return + priority_announce(input, null, 'sound/misc/announce.ogg', "Captain") + message_cooldown = 1 + spawn(600)//One minute cooldown + message_cooldown = 0 + log_say("[key_name(user)] has made a priority announcement: [input]") + message_admins("[key_name_admin(user)] has made a priority announcement.", 1) /proc/call_shuttle_proc(var/mob/user, var/call_reason) if ((!( ticker ) || emergency_shuttle.location)) From ea3d4b35c4658765c80ebb14cb49f5bbdc2203cc Mon Sep 17 00:00:00 2001 From: Cheridan Date: Wed, 14 May 2014 10:01:29 -0500 Subject: [PATCH 121/185] fixing conflict --- code/modules/hydroponics/hydroitemdefines.dm | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/code/modules/hydroponics/hydroitemdefines.dm b/code/modules/hydroponics/hydroitemdefines.dm index 8a35bd8ec9b..ad113e110ba 100644 --- a/code/modules/hydroponics/hydroitemdefines.dm +++ b/code/modules/hydroponics/hydroitemdefines.dm @@ -78,11 +78,13 @@ /obj/item/weapon/reagent_containers/glass/bottle/nutrient - name = "bottle of nutrient" icon = 'icons/obj/chemical.dmi' icon_state = "bottle16" + volume = 50 w_class = 1.0 + amount_per_transfer_from_this = 10 + possible_transfer_amounts = list(1,2,5,10,15,25,50) /obj/item/weapon/reagent_containers/glass/bottle/nutrient/New() ..() @@ -94,22 +96,25 @@ name = "bottle of E-Z-Nutrient" icon = 'icons/obj/chemical.dmi' icon_state = "bottle16" + /obj/item/weapon/reagent_containers/glass/bottle/nutrient/ez/New() ..() - reagents.add_reagent("eznutriment", 30) + reagents.add_reagent("eznutriment", 50) /obj/item/weapon/reagent_containers/glass/bottle/nutrient/l4z name = "bottle of Left 4 Zed" icon = 'icons/obj/chemical.dmi' icon_state = "bottle18" + /obj/item/weapon/reagent_containers/glass/bottle/nutrient/l4z/New() ..() - reagents.add_reagent("left4zednutriment", 30) + reagents.add_reagent("left4zednutriment", 50) /obj/item/weapon/reagent_containers/glass/bottle/nutrient/rh name = "bottle of Robust Harvest" icon = 'icons/obj/chemical.dmi' icon_state = "bottle15" + /obj/item/weapon/reagent_containers/glass/bottle/nutrient/rh/New() ..() - reagents.add_reagent("robustharvestnutriment", 30) + reagents.add_reagent("robustharvestnutriment", 50) From 01c28c7afc4433686c960717e43f75582dbfffa9 Mon Sep 17 00:00:00 2001 From: ikarrus Date: Wed, 14 May 2014 09:02:53 -0600 Subject: [PATCH 122/185] Fixed indentations. --- code/modules/paperwork/folders.dm | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/code/modules/paperwork/folders.dm b/code/modules/paperwork/folders.dm index f4dafb5f81e..529d6ce79db 100644 --- a/code/modules/paperwork/folders.dm +++ b/code/modules/paperwork/folders.dm @@ -78,9 +78,9 @@ desc = "A folder stamped \"Top Secret - Property of Nanotrasen Corporation. Unauthorized distribution is punishable by death.\"" /obj/item/weapon/folder/documents/New() - ..() - new /obj/item/documents/nanotrasen(src) - update_icon() + ..() + new /obj/item/documents/nanotrasen(src) + update_icon() /obj/item/weapon/folder/syndicate name = "folder- 'TOP SECRET'" @@ -90,14 +90,14 @@ icon_state = "folder_sred" /obj/item/weapon/folder/syndicate/red/New() - ..() - new /obj/item/documents/syndicate/red(src) - update_icon() + ..() + new /obj/item/documents/syndicate/red(src) + update_icon() /obj/item/weapon/folder/syndicate/blue icon_state = "folder_sblue" /obj/item/weapon/folder/syndicate/blue/New() - ..() - new /obj/item/documents/syndicate/blue(src) - update_icon() \ No newline at end of file + ..() + new /obj/item/documents/syndicate/blue(src) + update_icon() \ No newline at end of file From a8cab7e3969d0e1d68589d057fc0dff2ee379a58 Mon Sep 17 00:00:00 2001 From: Deantwo Date: Wed, 14 May 2014 17:11:35 +0200 Subject: [PATCH 123/185] String building and stage_change method - --- .../items/weapons/grenades/chem_grenade.dm | 58 +++++++++---------- 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/code/game/objects/items/weapons/grenades/chem_grenade.dm b/code/game/objects/items/weapons/grenades/chem_grenade.dm index 318d0b28031..20c9b4d3bb5 100644 --- a/code/game/objects/items/weapons/grenades/chem_grenade.dm +++ b/code/game/objects/items/weapons/grenades/chem_grenade.dm @@ -18,7 +18,7 @@ /obj/item/weapon/grenade/chem_grenade/New() create_reagents(1000) - name = initial(name) + " casing" // By adding the " casing" part here we can use initial(name) to get the final name, making it nice to say "large grenade" when it is a large grenade. + name = "[initial(name)] casing" // By adding the " casing" part here we can use initial(name) to get the final name, making it nice to say "large grenade" when it is a large grenade. /obj/item/weapon/grenade/chem_grenade/examine() @@ -51,14 +51,11 @@ if(istype(I, /obj/item/weapon/screwdriver)) if(stage == WIRED) if(beakers.len) - user << "You lock the " + initial(name) +" assembly." + stage_change(READY) + user << "You lock the [initial(name)] assembly." playsound(loc, 'sound/items/Screwdriver.ogg', 25, -3) - name = initial(name) - desc = "A custom made " + initial(name) +"." - icon_state = initial(icon_state) +"_locked" - stage = READY else - user << "You need to add at least one beaker before locking the " + initial(name) +" assembly." + user << "You need to add at least one beaker before locking the [initial(name)] assembly." else if(stage == READY && !nadeassembly) det_time = det_time == 50 ? 30 : 50 //toggle between 30 and 50 user << "You modify the time delay. It's set for [det_time / 10] second\s." @@ -71,7 +68,7 @@ return else if(I.reagents.total_volume) - user << "You add [I] to the " + initial(name) +" assembly." + user << "You add [I] to the [initial(name)] assembly." user.drop_item() I.loc = src beakers += I @@ -91,48 +88,51 @@ A.loc = src assemblyattacher = user.ckey - stage = WIRED - name = "unsecured " + initial(name) - desc = "An unsecured " + initial(name) +" assembly." - icon_state = initial(icon_state) + "_ass" - user << "You add [A] to the " + initial(name) +" assembly!" + stage_change(WIRED) + user << "You add [A] to the [initial(name)] assembly!" else if(stage == EMPTY && istype(I, /obj/item/stack/cable_coil)) var/obj/item/stack/cable_coil/C = I C.use(1) det_time = 50 // In case the cable_coil was removed and readded. - stage = WIRED - name = "unsecured " + initial(name) - desc = "An unsecured " + initial(name) +" assembly." - icon_state = initial(icon_state) + "_ass" - user << "You rig the " + initial(name) +" assembly." + stage_change(WIRED) + user << "You rig the [initial(name)] assembly." else if(stage == READY && istype(I, /obj/item/weapon/wirecutters)) - user << "You unlock the " + initial(name) +" assembly." - name = "unsecured " + initial(name) - desc = "An unsecured " + initial(name) +" assembly." - icon_state = initial(icon_state) + "_ass" - stage = WIRED + stage_change(WIRED) + user << "You unlock the [initial(name)] assembly." else if(stage == WIRED && istype(I, /obj/item/weapon/wrench)) if(beakers.len) for(var/obj/O in beakers) O.loc = get_turf(src) beakers = list() - user << "You open the " + initial(name) +" assembly and remove the payload." + user << "You open the [initial(name)] assembly and remove the payload." return // First use of the wrench remove beakers, then use the wrench to remove the activation mechanism. - stage = EMPTY if(nadeassembly) nadeassembly.loc = get_turf(src) nadeassembly.master = null nadeassembly = null else // If "nadeassembly = null && stage == WIRED", then it most have been cable_coil that was used. new /obj/item/stack/cable_coil(get_turf(src),1) - user << "You remove the activation mechanism from the " + initial(name) +" assembly." - name = initial(name) + " casing" + stage_change(EMPTY) + user << "You remove the activation mechanism from the [initial(name)] assembly." + + +/obj/item/weapon/grenade/chem_grenade/stage_change(var/N) + stage = N + if (stage == EMPTY) + name = "[initial(name)] casing" desc = initial(desc) icon_state = initial(icon_state) - + else if (stage == WIRED) + name = "unsecured [initial(name)]" + desc = "An unsecured [initial(name)] assembly." + icon_state = "[initial(name)]_ass" + else if (stage == READY) + name = initial(name) + desc = "A custom made [initial(name)]." + icon_state = "[initial(name)]_locked" //assembly stuff @@ -232,7 +232,7 @@ //make a special case you might as well do it explicitly. -Sayu /obj/item/weapon/grenade/chem_grenade/large/attackby(obj/item/I, mob/user) if(istype(I, /obj/item/slime_extract) && stage == WIRED) - user << "You add [I] to the " + initial(name) +" assembly." + user << "You add [I] to the [initial(name)] assembly." user.drop_item() I.loc = src beakers += I From 903b11d3276ac3ca7d87a425e0c680c4a17eccf7 Mon Sep 17 00:00:00 2001 From: ikarrus Date: Wed, 14 May 2014 09:30:12 -0600 Subject: [PATCH 124/185] Changelog for Secret Documents #3639 --- html/changelog.html | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/html/changelog.html b/html/changelog.html index ae4e9d40655..d9522cefbf0 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -53,7 +53,17 @@ should be listed in the changelog upon commit tho. Thanks. --> -
+
+

14 May 2014

+

Ikarrus updated:

+
    +
  • In an effort to increase information security, Nanotrasen has moved away from digital information systems in matters requiring maintaining corporate secrecy.
  • +
  • Station administrators are ordered to store all sensitive information in paper document form within their Station Vaults. Unauthorized distribution of these documents is punishable by death.
  • +
  • NT Corporate Security has noticed a similar trend within the Syndicate. It is predicted that enemy agents will attempt to secretly exchange sensitive information in person within Nanotrasen Space. NT Security has posted a generous reward for any stations that are able to capture enemy intelligence and send them to Centcom via supply shuttle.
  • +
+
+ +

07 May 2014

/Tg/station Code Management updated:

    From 81509c0c66269b5ee815f392603c2003f1b2ab82 Mon Sep 17 00:00:00 2001 From: Deantwo Date: Wed, 14 May 2014 18:40:33 +0200 Subject: [PATCH 125/185] Ups fixes --- code/game/objects/items/weapons/grenades/chem_grenade.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/game/objects/items/weapons/grenades/chem_grenade.dm b/code/game/objects/items/weapons/grenades/chem_grenade.dm index 20c9b4d3bb5..8f6eab792de 100644 --- a/code/game/objects/items/weapons/grenades/chem_grenade.dm +++ b/code/game/objects/items/weapons/grenades/chem_grenade.dm @@ -119,7 +119,7 @@ user << "You remove the activation mechanism from the [initial(name)] assembly." -/obj/item/weapon/grenade/chem_grenade/stage_change(var/N) +/obj/item/weapon/grenade/chem_grenade/proc/stage_change(var/N) stage = N if (stage == EMPTY) name = "[initial(name)] casing" @@ -128,11 +128,11 @@ else if (stage == WIRED) name = "unsecured [initial(name)]" desc = "An unsecured [initial(name)] assembly." - icon_state = "[initial(name)]_ass" + icon_state = "[initial(icon_state)]_ass" else if (stage == READY) name = initial(name) desc = "A custom made [initial(name)]." - icon_state = "[initial(name)]_locked" + icon_state = "[initial(icon_state)]_locked" //assembly stuff From e66e1899a99c3527e7e0f032ae122c861185df7a Mon Sep 17 00:00:00 2001 From: Giacomand Date: Wed, 14 May 2014 22:19:58 +0100 Subject: [PATCH 126/185] Travis will now automatically compile the maps in the map_test shell script. --- .travis.yml | 2 +- tests/map_test.sh | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 tests/map_test.sh diff --git a/.travis.yml b/.travis.yml index f570dc21032..6d4e3337f61 100644 --- a/.travis.yml +++ b/.travis.yml @@ -17,4 +17,4 @@ install: - cd .. script: - - DreamMaker tgstation.dme + - bash ./tests/map_test.sh diff --git a/tests/map_test.sh b/tests/map_test.sh new file mode 100644 index 00000000000..82acd66e993 --- /dev/null +++ b/tests/map_test.sh @@ -0,0 +1,18 @@ +#!/bin/bash +dme=tgstation.dme +index=0 +exitcode=0 + +compile(){ + sed -i "$1" $dme + DreamMaker $dme + exitcode=$? + if [ $exitcode -ne 0 ]; then + exit $exitcode # Error! + fi +} + + +compile 's/tgstation2.dm/metastation.dm/g' +compile 's/metastation.dm/ministation.dm/g' +compile 's/ministation.dm/tgstation2.dm/g' # This will put it back like it was, so make sure you put the default map last. From 9b7bb678cd1286e5634bf81352b800d4d490e818 Mon Sep 17 00:00:00 2001 From: Giacomand Date: Wed, 14 May 2014 22:30:23 +0100 Subject: [PATCH 127/185] Removed an unused variable in the shell script. --- tests/map_test.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/map_test.sh b/tests/map_test.sh index 82acd66e993..35f1d72b5c7 100644 --- a/tests/map_test.sh +++ b/tests/map_test.sh @@ -1,6 +1,5 @@ #!/bin/bash dme=tgstation.dme -index=0 exitcode=0 compile(){ From 140963236f90fe4db3a5e233c48200aa2b4016a9 Mon Sep 17 00:00:00 2001 From: ikarrus Date: Wed, 14 May 2014 20:28:59 -0600 Subject: [PATCH 128/185] Changelog for Thermite change #3557 Mostly to let people know that r-walls need more thermite to burn through now --- html/changelog.html | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/html/changelog.html b/html/changelog.html index d9522cefbf0..9131c58f239 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -61,6 +61,10 @@ should be listed in the changelog upon commit tho. Thanks. -->
  • Station administrators are ordered to store all sensitive information in paper document form within their Station Vaults. Unauthorized distribution of these documents is punishable by death.
  • NT Corporate Security has noticed a similar trend within the Syndicate. It is predicted that enemy agents will attempt to secretly exchange sensitive information in person within Nanotrasen Space. NT Security has posted a generous reward for any stations that are able to capture enemy intelligence and send them to Centcom via supply shuttle.
+

Ikarrus updated:

+
    +
  • A recent breakthrough in Plasma Materials Research has led to the development of a stronger, tougher plasteel alloy that can better resist extreme heat by up to four times. A live demonstration preformed during a press conference earlier today showed a segment of reinforced wall resisting an attack by Thermite. The corporation also announces that upgrades to its existing stations is already underway.
  • +
From 5ee453901afebc2f54bd201dfcff3906917e065f Mon Sep 17 00:00:00 2001 From: ikarrus Date: Wed, 14 May 2014 20:50:46 -0600 Subject: [PATCH 129/185] Added a canUseTopic() --- code/defines/procs/priority_announce.dm | 2 +- code/game/machinery/computer/communications.dm | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/code/defines/procs/priority_announce.dm b/code/defines/procs/priority_announce.dm index 9ac61a04173..3fa44fb82e9 100644 --- a/code/defines/procs/priority_announce.dm +++ b/code/defines/procs/priority_announce.dm @@ -8,7 +8,7 @@ announcement += "

Priority Announcement

" else if(type == "Captain") - news_network.SubmitArticle(text, "Captain's Announcements", "Station Announcements", null) + news_network.SubmitArticle(text, "Captain's Announcement", "Station Announcements", null) announcement += "

Captain Announces

" else diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm index 5e71691c4a1..0bd24d7fb1b 100644 --- a/code/game/machinery/computer/communications.dm +++ b/code/game/machinery/computer/communications.dm @@ -555,7 +555,7 @@ var/const/CALL_SHUTTLE_REASON_LENGTH = 12 /obj/machinery/computer/communications/proc/make_announcement(var/mob/living/user, var/is_silicon) var/input = stripped_input(user, "Please choose a message to announce to the station crew.", "What?") - if(!input) + if(!input || !user.canUseTopic(src)) return if(is_silicon) priority_announce(input, null, null, "Priority") @@ -563,8 +563,6 @@ var/const/CALL_SHUTTLE_REASON_LENGTH = 12 spawn(600)//One minute cooldown ai_message_cooldown = 0 else - if(!(user in view(1,src))) - return priority_announce(input, null, 'sound/misc/announce.ogg', "Captain") message_cooldown = 1 spawn(600)//One minute cooldown From 2634af15a43158abc6a4d6282f90c52f4c6506ed Mon Sep 17 00:00:00 2001 From: ikarrus Date: Wed, 14 May 2014 21:37:54 -0600 Subject: [PATCH 130/185] Code optimizations --- code/game/machinery/suit_storage_unit.dm | 109 ++++++++--------------- 1 file changed, 38 insertions(+), 71 deletions(-) diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm index c9e0f751e61..e40eb880baf 100644 --- a/code/game/machinery/suit_storage_unit.dm +++ b/code/game/machinery/suit_storage_unit.dm @@ -95,14 +95,14 @@ overlays += "super" if(isopen) overlays += "open" - if(SUIT && isopen) - overlays += "suit" - if(HELMET && isopen) - overlays += "helm" - if(STORAGE && isopen) - overlays += "storage" - if(isbroken && isopen) - overlays += "broken" + if(SUIT) + overlays += "suit" + if(HELMET) + overlays += "helm" + if(STORAGE) + overlays += "storage" + if(isbroken) + overlays += "broken" return /obj/machinery/suit_storage_unit/power_change() @@ -278,53 +278,31 @@ /obj/machinery/suit_storage_unit/proc/dispense_helmet(mob/user as mob) - if(!src.HELMET) - return //Do I even need this sanity check? Nyoro~n - else - src.HELMET.loc = src.loc - src.HELMET = null - return - + eject(HELMET) + HELMET = null /obj/machinery/suit_storage_unit/proc/dispense_suit(mob/user as mob) - if(!src.SUIT) - return - else - src.SUIT.loc = src.loc - src.SUIT = null - return - + eject(SUIT) + SUIT = null /obj/machinery/suit_storage_unit/proc/dispense_mask(mob/user as mob) - if(!src.MASK) - return - else - src.MASK.loc = src.loc - src.MASK = null - return + eject(MASK) + MASK = null /obj/machinery/suit_storage_unit/proc/eject_storage(mob/user as mob) - if(!src.STORAGE) - return - else - src.STORAGE.loc = src.loc - src.STORAGE = null - return + eject(STORAGE) + STORAGE = null + +/obj/machinery/suit_storage_unit/proc/eject(atom/movable/ITEM) + ITEM.loc = src.loc /obj/machinery/suit_storage_unit/proc/dump_everything() - src.islocked = 0 //locks go free - if(src.SUIT) - src.SUIT.loc = src.loc - src.SUIT = null - if(src.HELMET) - src.HELMET.loc = src.loc - src.HELMET = null - if(src.MASK) - src.MASK.loc = src.loc - src.MASK = null - if(src.STORAGE) - src.STORAGE.loc = src.loc - src.STORAGE = null + for(var/obj/item/ITEM in src) + ITEM.loc = src.loc + src.SUIT = null + src.HELMET = null + src.MASK = null + src.STORAGE = null if(src.OCCUPANT) src.eject_occupant(OCCUPANT) return @@ -369,7 +347,7 @@ src.updateUsrDialog() var/i //our counter - for(i=0,i<4,i++) + for(i=0,i<4,++i) sleep(50) if(src.OCCUPANT) var/burndamage = rand(6,10) @@ -382,26 +360,15 @@ OCCUPANT.take_organ_damage(burndamage) if(i==3) //End of the cycle if(!src.issuperUV) - if(src.HELMET) - HELMET.clean_blood() - if(src.SUIT) - SUIT.clean_blood() - if(src.MASK) - MASK.clean_blood() - if(src.STORAGE) - if(istype(STORAGE, /obj/item/weapon/reagent_containers/food)) - src.STORAGE = null //ew why would you put food in here - else - STORAGE.clean_blood() + for(var/obj/item/ITEM in src) + ITEM.clean_blood() + if(istype(STORAGE, /obj/item/weapon/reagent_containers/food)) + src.STORAGE = null //ew why would you put food in here else //It was supercycling, destroy everything - if(src.HELMET) - src.HELMET = null - if(src.SUIT) - src.SUIT = null - if(src.MASK) - src.MASK = null - if(src.STORAGE) - src.STORAGE = null + src.HELMET = null + src.SUIT = null + src.MASK = null + src.STORAGE = null visible_message("With a loud whining noise, the Suit Storage Unit's door grinds open. Puffs of ashen smoke come out of its chamber.", 3) src.isbroken = 1 src.isopen = 1 @@ -558,7 +525,7 @@ if(!user.drop_item()) user << "\The [S] is stuck to your hand, you cannot put it in the Suit Storage Unit!" return - user << "You load the [S.name] into the storage compartment." + user << "You load the [S.name] into the suit storage compartment." S.loc = src src.SUIT = S src.update_icon() @@ -574,7 +541,7 @@ if(!user.drop_item()) user << "\The [H] is stuck to your hand, you cannot put it in the Suit Storage Unit!" return - user << "You load the [H.name] into the storage compartment." + user << "You load the [H.name] into the helmet storage compartment." H.loc = src src.HELMET = H src.update_icon() @@ -590,7 +557,7 @@ if(!user.drop_item()) user << "\The [M] is stuck to your hand, you cannot put it in the Suit Storage Unit!" return - user << "You load the [M.name] into the storage compartment." + user << "You load the [M.name] into the mask storage compartment." M.loc = src src.MASK = M src.update_icon() @@ -606,7 +573,7 @@ if(!user.drop_item()) user << "\The [ITEM] is stuck to your hand, you cannot put it in the Suit Storage Unit!" return - user << "You load the [ITEM.name] into the storage compartment." + user << "You load the [ITEM.name] into the auxiliary storage compartment." ITEM.loc = src src.STORAGE = ITEM src.update_icon() From f035b2b54aaabeb5574c6832e5ada84b03646bda Mon Sep 17 00:00:00 2001 From: ikarrus Date: Wed, 14 May 2014 21:48:15 -0600 Subject: [PATCH 131/185] Code optimizations --- code/game/machinery/suit_storage_unit.dm | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm index e40eb880baf..caee406eb62 100644 --- a/code/game/machinery/suit_storage_unit.dm +++ b/code/game/machinery/suit_storage_unit.dm @@ -277,19 +277,19 @@ src.safetieson = !src.safetieson -/obj/machinery/suit_storage_unit/proc/dispense_helmet(mob/user as mob) +/obj/machinery/suit_storage_unit/proc/dispense_helmet() eject(HELMET) HELMET = null -/obj/machinery/suit_storage_unit/proc/dispense_suit(mob/user as mob) +/obj/machinery/suit_storage_unit/proc/dispense_suit() eject(SUIT) SUIT = null -/obj/machinery/suit_storage_unit/proc/dispense_mask(mob/user as mob) +/obj/machinery/suit_storage_unit/proc/dispense_mask() eject(MASK) MASK = null -/obj/machinery/suit_storage_unit/proc/eject_storage(mob/user as mob) +/obj/machinery/suit_storage_unit/proc/eject_storage() eject(STORAGE) STORAGE = null @@ -298,7 +298,7 @@ /obj/machinery/suit_storage_unit/proc/dump_everything() for(var/obj/item/ITEM in src) - ITEM.loc = src.loc + eject(ITEM) src.SUIT = null src.HELMET = null src.MASK = null From cd04282f8757d43fb3315c155e8a02f3f08583aa Mon Sep 17 00:00:00 2001 From: inorix Date: Thu, 15 May 2014 11:35:13 +0200 Subject: [PATCH 132/185] Can no longer drag people to a non-operating sleeper. --- code/game/machinery/Sleeper.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm index 657997e2506..31a6bcab760 100644 --- a/code/game/machinery/Sleeper.dm +++ b/code/game/machinery/Sleeper.dm @@ -52,7 +52,7 @@ return 0 /obj/machinery/sleeper/MouseDrop_T(mob/target, mob/user) - if(user.stat || user.lying || !Adjacent(user) || !target.Adjacent(user)|| !iscarbon(target)) + if(stat || user.stat || user.lying || !Adjacent(user) || !target.Adjacent(user)|| !iscarbon(target)) return close_machine(target) From 9e7a3d5750104efb302b1915c2d3b8c6fe5bf559 Mon Sep 17 00:00:00 2001 From: ikarrus Date: Thu, 15 May 2014 08:59:32 -0600 Subject: [PATCH 133/185] -Optimizations -Added a watertank to atmos's SSU --- code/game/machinery/suit_storage_unit.dm | 84 +++++++++--------------- 1 file changed, 31 insertions(+), 53 deletions(-) diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm index caee406eb62..d52f2e9f224 100644 --- a/code/game/machinery/suit_storage_unit.dm +++ b/code/game/machinery/suit_storage_unit.dm @@ -63,6 +63,7 @@ SUIT_TYPE = /obj/item/clothing/suit/space/rig/atmos HELMET_TYPE = /obj/item/clothing/head/helmet/space/rig/atmos MASK_TYPE = /obj/item/clothing/mask/gas + STORAGE_TYPE = /obj/item/weapon/watertank/atmos /obj/machinery/suit_storage_unit/mining SUIT_TYPE = /obj/item/clothing/suit/space/rig/mining @@ -347,61 +348,38 @@ src.updateUsrDialog() var/i //our counter - for(i=0,i<4,++i) - sleep(50) - if(src.OCCUPANT) - var/burndamage = rand(6,10) - if(src.issuperUV) - burndamage = rand(28,35) - if(iscarbon(OCCUPANT)) - OCCUPANT.take_organ_damage(0,burndamage) - OCCUPANT.emote("scream") - else - OCCUPANT.take_organ_damage(burndamage) - if(i==3) //End of the cycle - if(!src.issuperUV) - for(var/obj/item/ITEM in src) - ITEM.clean_blood() - if(istype(STORAGE, /obj/item/weapon/reagent_containers/food)) - src.STORAGE = null //ew why would you put food in here - else //It was supercycling, destroy everything - src.HELMET = null - src.SUIT = null - src.MASK = null - src.STORAGE = null - visible_message("With a loud whining noise, the Suit Storage Unit's door grinds open. Puffs of ashen smoke come out of its chamber.", 3) - src.isbroken = 1 - src.isopen = 1 - src.islocked = 0 - src.eject_occupant(OCCUPANT) //Mixing up these two lines causes bug. DO NOT DO IT. - src.isUV = 0 //Cycle ends - src.update_icon() - src.updateUsrDialog() - return - -/* spawn(200) //Let's clean dat shit after 20 secs //Eh, this doesn't work - if(src.HELMET) - HELMET.clean_blood() - if(src.SUIT) - SUIT.clean_blood() - if(src.MASK) - MASK.clean_blood() - src.isUV = 0 //Cycle ends + spawn(0) + for(i=0,i<4,++i) + sleep(50) + if(src.OCCUPANT) + var/burndamage = rand(6,10) + if(src.issuperUV) + burndamage = rand(28,35) + if(iscarbon(OCCUPANT)) + OCCUPANT.take_organ_damage(0,burndamage) + OCCUPANT.emote("scream") + else + OCCUPANT.take_organ_damage(burndamage) + if(i==3) //End of the cycle + if(!src.issuperUV) + for(var/obj/item/ITEM in src) + ITEM.clean_blood() + if(istype(STORAGE, /obj/item/weapon/reagent_containers/food)) + del(STORAGE) + else //It was supercycling, destroy everything + src.HELMET = null + src.SUIT = null + src.MASK = null + del(STORAGE) + visible_message("With a loud whining noise, the Suit Storage Unit's door grinds open. Puffs of ashen smoke come out of its chamber.", 3) + src.isbroken = 1 + src.isopen = 1 + src.islocked = 0 + src.eject_occupant(OCCUPANT) //Mixing up these two lines causes bug. DO NOT DO IT. + src.isUV = 0 //Cycle ends src.update_icon() src.updateUsrDialog() - - var/i - for(i=0,i<4,i++) //Gradually give the guy inside some damaged based on the intensity - spawn(50) - if(src.OCCUPANT) - if(src.issuperUV) - OCCUPANT.take_organ_damage(0,40) - user << "Test. You gave him 40 damage" - else - OCCUPANT.take_organ_damage(0,8) - user << "Test. You gave him 8 damage" - return*/ - + return /obj/machinery/suit_storage_unit/proc/cycletimeleft() if(src.cycletime_left >= 1) From 36e191abd42eb4ed71c57221b31424cb465b3515 Mon Sep 17 00:00:00 2001 From: ikarrus Date: Thu, 15 May 2014 09:17:23 -0600 Subject: [PATCH 134/185] Readded my map changes back in (Fuck everything about this) --- _maps/map_files/tgstation.2.1.3.dmm | 41 +++++++++++++++++------------ 1 file changed, 24 insertions(+), 17 deletions(-) diff --git a/_maps/map_files/tgstation.2.1.3.dmm b/_maps/map_files/tgstation.2.1.3.dmm index 10c4213e946..2e82cc319fd 100644 --- a/_maps/map_files/tgstation.2.1.3.dmm +++ b/_maps/map_files/tgstation.2.1.3.dmm @@ -6994,7 +6994,7 @@ "cEz" = (/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; freerange = 1; frequency = 1213; name = "Syndicate Intercom"; pixel_y = -32; subspace_transmission = 1; syndie = 1},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) "cEA" = (/obj/structure/closet/syndicate/personal,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) "cEB" = (/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) -"cEC" = (/obj/machinery/recharge_station,/turf/simulated/floor,/area/aisat) +"cEC" = (/obj/structure/rack,/obj/item/weapon/storage/toolbox/electrical{pixel_x = -3; pixel_y = 3},/obj/item/weapon/storage/toolbox/mechanical,/obj/item/device/multitool,/turf/simulated/floor{dir = 9; icon_state = "yellow"},/area/aisat) "cED" = (/obj/structure/stool/bed/chair/comfy/teal,/turf/unsimulated/floor{icon_state = "grimy"},/area/syndicate_mothership) "cEE" = (/obj/structure/bookcase,/obj/item/weapon/book/manual/wiki/engineering_hacking,/obj/item/weapon/book/manual/robotics_cyborgs,/obj/item/weapon/book/manual/engineering_singularity_safety,/obj/item/weapon/book/manual/detective,/turf/unsimulated/floor{icon_state = "grimy"},/area/syndicate_mothership) "cEF" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows2"; dir = 6},/area/tdome/tdomeobserve) @@ -8925,8 +8925,8 @@ "dpG" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/obj/item/weapon/wrench,/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 9},/area/medical/virology) "dpH" = (/turf/simulated/wall,/area/aisat) "dpI" = (/obj/effect/landmark/start{name = "Cyborg"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/aisat_interior) -"dpJ" = (/obj/machinery/power/terminal{dir = 4},/obj/structure/rack,/obj/item/weapon/storage/toolbox/electrical{pixel_x = -3; pixel_y = 3},/obj/item/weapon/storage/toolbox/mechanical,/obj/item/device/multitool,/turf/simulated/floor{dir = 9; icon_state = "yellow"},/area/aisat) -"dpK" = (/obj/machinery/power/smes{charge = 5e+006},/obj/structure/cable,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/light{dir = 1},/turf/simulated/floor{dir = 1; icon_state = "yellow"},/area/aisat) +"dpJ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/wall/r_wall,/area/aisat) +"dpK" = (/obj/machinery/recharge_station,/turf/simulated/floor{dir = 9; icon_state = "yellow"},/area/aisat) "dpL" = (/obj/machinery/atmospherics/pipe/tank/air,/turf/simulated/floor{dir = 5; icon_state = "yellow"},/area/aisat) "dpM" = (/obj/machinery/light/small,/obj/structure/table,/obj/item/device/flashlight,/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/asmaint) "dpN" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/asmaint2) @@ -8938,17 +8938,17 @@ "dpT" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/asmaint2) "dpU" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/asmaint2) "dpV" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall,/area/maintenance/asmaint2) -"dpW" = (/obj/structure/rack,/obj/item/weapon/crowbar/red,/obj/item/weapon/wrench,/obj/item/clothing/head/welding,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_x = 28; pixel_y = 0},/turf/simulated/floor,/area/aisat) +"dpW" = (/obj/structure/rack,/obj/item/weapon/crowbar/red,/obj/item/weapon/wrench,/obj/item/clothing/head/welding,/turf/simulated/floor{dir = 5; icon_state = "yellow"},/area/aisat) "dpX" = (/obj/structure/grille,/obj/structure/lattice,/turf/space,/area) "dpY" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor/plating,/area/aisat) "dpZ" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plating,/area/aisat) "dqa" = (/obj/machinery/atmospherics/pipe/manifold{dir = 1; icon_state = "manifold"; level = 2},/turf/simulated/floor,/area/aisat) -"dqb" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/obj/machinery/atmospherics/valve{dir = 4; layer = 2},/turf/simulated/floor,/area/aisat) +"dqb" = (/obj/machinery/atmospherics/binary/pump{dir = 0; icon_state = "intact_on"; name = "Air Out"; on = 1},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/aisat) "dqc" = (/obj/machinery/door/airlock/maintenance_hatch{req_access_txt = "65"},/obj/machinery/atmospherics/pipe/simple{dir = 4; icon_state = "intact"; level = 2},/turf/simulated/floor,/area/aisat) "dqd" = (/obj/machinery/door/airlock/maintenance_hatch{req_access_txt = "65"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/aisat) "dqe" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/aisat) "dqf" = (/obj/structure/window/reinforced{dir = 4},/turf/space,/area) -"dqg" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple{dir = 9; icon_state = "intact"; level = 2},/turf/simulated/floor,/area/aisat) +"dqg" = (/obj/machinery/power/smes{charge = 5e+006},/obj/structure/cable,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/light{dir = 1},/turf/simulated/floor,/area/aisat) "dqh" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/space,/area) "dqi" = (/obj/structure/window/reinforced,/turf/space,/area) "dqj" = (/obj/structure/window/reinforced,/obj/structure/lattice,/turf/space,/area) @@ -8966,7 +8966,7 @@ "dqv" = (/obj/machinery/status_display,/turf/simulated/wall/r_wall,/area/turret_protected/ai) "dqw" = (/obj/machinery/power/smes{charge = 5e+006},/obj/structure/cable,/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai) "dqx" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/camera{c_tag = "MiniSat Exterior South West"; dir = 8; network = list("MiniSat"); pixel_x = 0; pixel_y = 0},/turf/simulated/floor/plating,/area/aisat) -"dqy" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/wall/r_wall,/area/aisat) +"dqy" = (/obj/machinery/power/apc{dir = 8; name = "MiniSat APC"; pixel_x = -24},/turf/simulated/floor,/area/aisat) "dqz" = (/obj/machinery/ai_slipper{icon_state = "motion0"; uses = 10},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "dqA" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai) "dqB" = (/obj/machinery/hologram/holopad,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai) @@ -9087,7 +9087,7 @@ "dsM" = (/obj/structure/table,/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/turf/simulated/floor{icon_state = "yellow"},/area/aisat) "dsN" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/vent{dir = 8},/turf/simulated/floor/plating/airless,/area) "dsO" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall,/area/aisat) -"dsP" = (/obj/machinery/power/apc{aidisabled = 0; cell_type = 5000; dir = 4; name = "MiniSat APC"; pixel_x = 28; pixel_y = 0},/obj/structure/cable,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; icon_state = "manifold-r-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/aisat) +"dsP" = (/obj/machinery/power/terminal{dir = 8},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/aisat) "dsQ" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor,/area/aisat) "dsR" = (/obj/structure/stool/bed/chair,/turf/simulated/floor,/area/aisat) "dsS" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor,/area/aisat) @@ -9106,7 +9106,14 @@ "dtf" = (/obj/machinery/flasher{id = "cockpit_flasher"; pixel_x = 6; pixel_y = 24},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) "dtg" = (/obj/machinery/suit_storage_unit/mining,/turf/simulated/floor,/area/mine/eva) "dth" = (/obj/structure/table,/obj/item/weapon/pickaxe,/turf/simulated/floor,/area/mine/eva) +"dti" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_x = 28; pixel_y = 0},/turf/simulated/floor,/area/aisat) +"dtj" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/wall/r_wall,/area/turret_protected/ai) "dtk" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/bluegrid,/area/assembly/chargebay) +"dtl" = (/obj/machinery/light,/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai) +"dtm" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; icon_state = "manifold-r-f"; level = 1; name = "pipe manifold"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/aisat) +"dtn" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/turf/simulated/floor{icon_state = "warningcorner"; dir = 4},/area/aisat) +"dto" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/aisat) +"dtp" = (/obj/machinery/atmospherics/pipe/manifold{dir = 4; icon_state = "manifold"; initialize_directions = 11; level = 2},/turf/simulated/floor{icon_state = "warningcorner"; dir = 8},/area/aisat) "dts" = (/obj/structure/transit_tube{tag = "icon-E-W-Pass"; icon_state = "E-W-Pass"},/turf/space,/area) "dtu" = (/obj/structure/lattice,/obj/structure/lattice,/turf/space,/area) "dty" = (/obj/structure/transit_tube{tag = "icon-S-NW"; icon_state = "S-NW"},/obj/structure/lattice,/turf/space,/area) @@ -9352,16 +9359,16 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahldpXdqfdpYdqmdquaXNdqFdqDdqGbcydqIbcydqGdqDdqHaXNdqudqfdpZdqmdpXahlahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacslcslcslcslcslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsmcsmcsmcsmcsmcsmcsmcsmcsmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahldpXdqfdpYdqmahldquaXNdqDbandqKdqLdqJbandqDaXNdquahldqfdpZdqmdpXahlahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacslcslcslcslcslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsdcsdcsdcsdcsdaaacsdcsdcsdcsdcsdaaacsdcsdcsdcsdcsdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsmcsmcsmcsmcsmcsmcsmcsmcsmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahldpXdqfdpYdqmahldquaXNbhybanbandqzbanbanbhyaXNdquahldqfdpZdqmdpXahlahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacslcslcslcslcslcslcslcslcslcslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsdcsdcsdcsdcsdaaacsdcsdcsdcsdcsdaaacsdcsdcsdcsdcsdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsmcsmcsmcsmcsmcsmcsmcsmcsmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahldpXdqfdpYdqmahldquaXNdqDdqEdqAdqBdqDdqEdqDaXNdquahldqfdpZdqmdpXahlahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacslcslcslcslcslcslcslcslcslcslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsdcsdcsdcsdcsdaaacsdcsdcsdcsdcsdaaacsdcsdcsdcsdcsdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsmcsmcsmcsmcsmcsmcsmcsmcsmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahldpXdqfdpYdqmahldquaXNdtldqEdqAdqBdqDdqEdtlaXNdquahldqfdpZdqmdpXahlahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacslcslcslcslcslcslcslcslcslcslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsdcsdcsdcsdcsdaaaaaaaaaaaaaaaaaaaaacsdcsdcsdcsdcsdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsmcsmcsmcsmcsmcsmcsmcsmcsmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahldpXdqfdqxdpHdpHdpHdquaXNdqvaXNdqwaXNdqtaXNdqudpHdpHdpHdqsdqmdpXahlahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacslcslcslcslcslcslcslcslcslcslcslcslcslcslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsmcsmcsmcsmcsmcsmcsmcsmcsmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahldpXdqfdpYdqmahlahjahldqudqudqudqydqudqudquahlahlahldqfdpZdqmdpXaaaahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacslcslcslcslcslcslcslcslcslcslcslcslcslcslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsmcsmcsmcsmcsmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahldpXdqfdpYdqhdqidqjdqjdpHcECdpJdpKdpLdpWdpHdqidqidqidqkdpZdqmdpXaaaahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacslcslcslcslcslcslcslcslcslcslcslcslcslcslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsmcsmcsmcsmcsmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahldpXdqfdqndqqdqpdqpdqpdqcdqadqadqbdqgdqldqddqedqedqedqedqrdqmdpXaaaahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacslcslcslcslcslcslcslcslcslcslcslcslcslcslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsmcsmcsmcsmcsmcsmcsmcsmcsmcsmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahldpXahldrQdrQdrQdrQdrQdpHdsTdsSdsRdsQdsPdsOdsNdrQdrQdtZdtZahldpXaaaahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacslcslcslcslcslcslcslcslcslcslcslcslcslcslcslcslcslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsmcsmcsmcsmcsmcsmcsmcsmcsmcsmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlaaGaaGaaGaaGdpXdpXdpXdpHdsKdsMdsLdsJdsIdpHdpXdpXdpXdpXdpXdpXdpXaaaahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacslcslcslcslcslcslcslcslcslcslcslcslcslcslcslcslcslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahjahjdpHdpHdsGdsUdsVdpHdpHahlahlahjahjahjahlahlaaaahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacslcslcslcslcslcslcslcslcslcslcslcslcslcslcslcslcslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahjahlahlahlahlahlahlahlahlahlahlahjahjahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacslcslcslcslcslcslcslcslcslcslcslcslcslcslcslcslcslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacslcslcslcslcslcslcslcslcslcslcslcslcslcslcslcslcslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsmcsmcsmcsmcsmcsmcsmcsmcsmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahldpXdqfdpYdqmahlahlahldqudqudqudtjdqudqudquahlahlahldqfdpZdqmdpXaaaahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacslcslcslcslcslcslcslcslcslcslcslcslcslcslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsmcsmcsmcsmcsmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahldpXdqfdpYdqmahlahjahldpHcECdpLdpJdpKdpWdpHahlahlahldqfdpZdqmdpXaaaahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacslcslcslcslcslcslcslcslcslcslcslcslcslcslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsmcsmcsmcsmcsmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahldpXdqfdpYdqhdqidqjdqjdpHdqydqbdqgdsPdtidpHdqidqidqidqkdpZdqmdpXaaaahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacslcslcslcslcslcslcslcslcslcslcslcslcslcslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsmcsmcsmcsmcsmcsmcsmcsmcsmcsmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahldpXdqfdqndqqdqpdqpdqpdqcdqadtpdtodtndqldqddqedqedqedqedqrdqmdpXaaaahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacslcslcslcslcslcslcslcslcslcslcslcslcslcslcslcslcslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsmcsmcsmcsmcsmcsmcsmcsmcsmcsmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahldpXahldrQdrQdrQdrQdrQdpHdsTdsSdsRdsQdtmdsOdsNdrQdrQdtZdtZahldpXaaaahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacslcslcslcslcslcslcslcslcslcslcslcslcslcslcslcslcslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlaaGaaGaaGaaGdpXdpXdpXdpHdsKdsMdsLdsJdsIdpHdpXdpXdpXdpXdpXdpXdpXaaaahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacslcslcslcslcslcslcslcslcslcslcslcslcslcslcslcslcslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahjahjdpHdpHdsGdsUdsVdpHdpHahlahlahjahjahjahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacslcslcslcslcslcslcslcslcslcslcslcslcslcslcslcslcslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahjahlahlahlahlahlahlahlahlahlahlahjahjahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacslcslcslcslcslcslcslcslcslcslcslcslcslcslcslcslcslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacslcslcslcslcslcslcslcslcslcslcslcslcslcslcslcslcslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacslcslcslcslcslaaacslcslcslcslcslaaacslcslcslcslcslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacslcslcslcslcslaaacslcslcslcslcslaaacslcslcslcslcslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa From ffcdb5ab9dac557d1949312ff63b468bcdf30794 Mon Sep 17 00:00:00 2001 From: ikarrus Date: Thu, 15 May 2014 09:33:25 -0600 Subject: [PATCH 135/185] usr -> user --- code/game/machinery/suit_storage_unit.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm index d52f2e9f224..933c1f3b089 100644 --- a/code/game/machinery/suit_storage_unit.dm +++ b/code/game/machinery/suit_storage_unit.dm @@ -447,13 +447,13 @@ if (user.stat != 0) return if (!src.isopen) - usr << "The unit's doors are shut." + user << "The unit's doors are shut." return if (!src.ispowered || src.isbroken) - usr << "The unit is not operational." + user << "The unit is not operational." return if ( (src.OCCUPANT) || (src.HELMET) || (src.SUIT) || (src.STORAGE)) - usr << "It's too cluttered inside to fit in!" + user << "It's too cluttered inside to fit in!" return if(M == user) visible_message("[user] starts squeezing into the suit storage unit!", 3) From b9622a353ac8b09c6faaf899736a54dfa248798a Mon Sep 17 00:00:00 2001 From: ikarrus Date: Thu, 15 May 2014 21:04:16 -0600 Subject: [PATCH 136/185] Over-eye hair improvements -Long Over eye looked like two different hairstyles layered on top of each other when it was made, giving it a weird spiky look around the face area when seen from the side. I've completely redone the side sprites. -Regular Over eye had inconsistent side sprites which made it look a lot longer than it should. --- icons/mob/human_face.dmi | Bin 30954 -> 30991 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/mob/human_face.dmi b/icons/mob/human_face.dmi index 3864d1c20919c8b049bb415532af11222ba2db7e..9e2059cafbe1e3326a8b203ad8548c3843d775fd 100644 GIT binary patch literal 30991 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 z zG6@hJUEMQw-lX1pPOeEw;$f(g?lF(kG`8#4RSOLE=uh+tmiy!Fi3aHvqwQ_xca^Yf z0-<1_-?5)%edq>tyj#t+I%!wI*{y0$R6C4AHcQVegS!@q>zQjBo0EI8L|#b#wbPFn zv6ba0k4rXK)uQ^)F;)*h?E8*Jc8LTBFst5dt2T~wNqjo3Cfo1dpTohRmt;8Tot=?V z?u`gc}uRqI%DD#*o=?ox->PW@&SzXYacRHD*^^+l~PNt(@zQ2F)Si^^@AvCPgND168=K zuPPP6CkqtK8TU7PMI``p!xap1Ezj`@BguJenie_B7kcXOMPl-)Cw62E7VR6U`t`}H zXD$|D+Mh2SBah8QKmi284R2WS`w$L^btYH^&bK={UJ|GO-R)(e+ZFld^FaENN_;4G zx0|aG#B(6&wYj+oZiJ=zAvgCXX6C2I8U}M*AJ*POaw4YG-lp1eX=W=5@uy-qBDj2I z-%mGUa%H(diWRZpla_r+OpB|NwkQgeZepMv@tP@cU-7E@; zx&u#q*s)AMSSViJ@W-F|-X;(C-kgz-XOX%B4+jY~S1HNq%dy3bv`tTHC-;EnL#-^VGS^wT+N}lWUBg~2wnrY!*>nY8ccp#g7CTfPp7{J{ml%5bT7(o0! zGble$9T5%zRMvZ?w?mVL4Zxn?#SXqyrWB_o`|zLN|L~TMulm1$H@<zWi%~K=ONk{97Q~_>|eQ@Wjub$hkIszxhUzUuIwT zT(3o_;eGm=KoITR-;sl`hax4g#D1x_X9|>F8PQXx+_YrsPl-@0Tk{@wB?P#oJ zjCRw-gPZSn9hi##AsccSR!E5b8`@H`_t-0nQ|$OLZDUF4Y1bUg-JByQvCcYXu{`S~ z6KAl&gp^aqABeI&!b!qHH$SyH$L?_ZVUOX_lJD$p9aWSm?!y&BU4-x3!O}JE|0?_b zOAiNv}Sv21?L07BTD;D?P{DfFfei)(A}MK zdIQTI&;MvJcs?NbvFUGP>+pwXcG@l<&mX$!fGX{Cr*3QxUutYzLUD%*TUT6sYZnfI z9D%^DUorJhS(+ew%EHnJTZZ~WLqmn;PrkYokKEIaF8-rKP!nxxR$141C zL`tJ6M%ecER5NSmz&anTSy)(y)~quuKRI#G?g=r-!!A0g@05b?Rx)E)W=$Qgfdj;Pu@B zu00UQ=ZDK?6A-(@LD9NTNG;3G@k2F8G54>vI*=(}39fIQBM7x|RQw-or@fq6h?ylv z6Fo6RhlGwf^6WX?7K!Fe)}-tAqkfd7GxcDuYWJgzzIxG4AKs4>K?F5IjcMo})&};$ zh+zw!Z9l25%gtqXzR(Ne9a}b4x@^38?RW@VMu#?a4hCf21n+4Os>?LWu@k+kDZ|n~s2xIE?=^V=_4HGtyP^ANZhmT-=#azwD6bI?7erB{ znCn~W`&0a+x4I+H!GIM5X*L_Nhs|!~lLz-yj(1s|zW?S`~lSwqA~6TjuDX z=ui&SU?9=yT?RBUuQ#1Z?CGy?I@moRb5MpyXgno7Frh!D$xND=W7V$C1$lUHR>AH_ zjS4LRE(_s;nD3MgZ92bYRJ>wzj0WC{;33?2QQig>=4~l49*Et?y^yerDvNv&ODCSo zQ;8Bgc_4+7#auidVRdjWNWpyn-lip)?_21VfUP+^i`tZ5=av;?bQ#i=U+uMfm?iJD z3~gX^i7Z1E1g=d~%*}EP`M=pb8F7}84TFT5J#m64Mpl6fL>xskgGV{orMae4zv)m& z)2UhU0(d5V6C0M2H}A~z8>U0vVHO%Far?R7ZCpc+DA?| zTN6Fj=r)ytUG;+QP0Z~p7rt}aZQC_?V7xne$5b3@!s=53D~R)(Q=;Z>#j8NiT-2dz zC0oV##FvRA=3$e*2z8x!n67Aox`#;RhskA?sUN;Rqq%au5GIXS}M@bVU z(6e*%(82?poD1Lt>QH6Absjy8t(%bJj`Ep2QDD7!iZO0Y>?C5}5_Kvb6^*54ih$vS zCaAg(=Js$MS&A{04^?or!SQlWW%ZIwsMppNz;ryWQo6Rs>V(3zJz>PQF2q(LTVW za(Zd0@auUJONPxXUhi5=f(|vR6#kYW_LKddFzWmUICe!o?H{_KB3MJB)<>JTy^vl~ z0?t6NZi`GP$C1n{CwtARCY0nIyVGIx^6%$Q!RL^XQk71l2p^+KncU*kvPn8U@WhYQ z)YRLG<n&ZZ!95i+K@HfzvfGKeSS;C>L;ac6gt4W#UNat^{3zZ zi}}^Rj;B8lKFABPFuI-6}V?4o=r!aq4wZ_5-N#MmsF zL~&RNDRjyQZtzs9!@$+dFEU}<3HC7`xbYe@W^kkFKL`EvSKgmbK)Lmm9Rn#PRIAmR zsKeSANMI5VDLfHZ0iWK_{7wKfmPqdvE0)~O!Il9$jmg^!H8i2a2YI2@rU?R>>Y0*k zBL4GDt!!=S?)j-3|NOMMm5ZTCvi~Nl3t`|E{%gsq#^N8eVSZ)Hup8#W=^j5uJjV?( z|KkXkX<`{ZsX+&|+vASByu62_qwIQ&Syis90wYX^50drg8ZJ)WaARe%b1bvc+d&qtSpyc;z;s_e_ZfyEx$WUdD+5*APFfy#}z zV$>uA|9X5Y!wW`mW%W5fU~f6Ac>&;2DQluYxBp15t(P_(NzAuGq^h1UD76h1f}eX> zbb54k{r7K2cMp&JK4+$f8OibhQf_&&A;^ev%uL$uAZCnotDg*`57?q}@8o9s*0C6| zY_~K*)w{Y-zVIt$d;Su$YUjN^u~;Fn{+^z<0*&bWiw3RK2-OpdWOOaM2;=eS(VVhm zbUXBLv@Yk-ko|*$S&KVl*bexQ$3+f9J=G+!W6o;KE-2dZNR1zPlAM;7#%6*6{NT2_ zJ2#h`o6B=$urD1m<_-oi_8hv9Xwrm?B)DQ86!|Flb~oNB82aRV?G%H-5a<5h({pF< zokhhPDg~NM*xcASo6Yu&(Uq;jVmV_zA}9sJ&fw@M2Gh^b&=BQO#0tl!c6xzoGK z?*A1K^S`F?rr`TOiIK*YP9GDcEUkE&E?Oc|<>q7(kdc3Kg0uhXv)&EH`+#UD#2EXG z*$z=c+&Mb8%+)MCCK*ji4|;x5*(1qbzX<0~)cL$ltgn=-N+K`$Mk{a>Z%B=&VfJIf z=YG(etWP_>(GM~Dp}FD?vqE(u@?5*DiMLAF>$8UD&^b^7NBT;9e(BG&Yte!bA=v=^;kw6wM3y&EU8Cpp%L2^`LRmASI= zc$xlmXOkCXELD)(NUH@ejNm1`v>vl228S6>Dfqrrz3_aciF^$%!Mor6rFaW`bw?YN z|2eVA;1D;fGJTftC>x)#HWmt>>~~Dy(hx0>HXCZwD$dyd)?g>2eV&o-(xpSB)R|-R z1CwAQi7HHYclW#zw}<+)w3TV{%F5l@4iLfqyZx2SLBwnn} zU1uesB|Yf@=v9VxMghoFC&tIvyxu8Ec9cf*W7qwqyu)~au9wuY+ ziMhp3_bViY=+g|2wX;#nAUs8wU*g?Adi{>fQhTI3?Ss;p|1hQ5)YY<(q4cve>CFB8 z{vA#vUj~(x+&HlCb;5(wxbN-dzcC}A3eDPJ8yjs?0&=yvc7zUo`uPy&QH3JJ(6*l@ zIFVid#d|sVa-sr6A2#+!nTcH{3ZUVQ0vBg(nzE(r6CI>h@W`C%T~4oqQnt zFY|p|7N{s6D~QO9M!EBn(SImK81c$xQ`TK4Qr(HC9*xbiGNHmEBCqlLik~~oITqcv z)e^C_=Qlar;=r46?6HjzG$BLUwtVE4F~Kt^;P%$#!s}fqFRvMOb@i6H(c$5nI4UUL z;*%8$M2m?RQAq^SEF)#YZ@R<4i+i3L@a5al@6o!l=Ou-}*GpprYRG$UY3-2_h0$Nm zYOzCAxZ2cIX%d+%j?NZ5V#fDbh53S2^0ZMWqta1LvZf@>Gdy0M{~m(V$eEN_Pd6E| z@n+R<+exr1D=Xz-2n0e?L*r%RQEP;at>ZDC6T@7ZuySq-iOvknQ3)TxaL=0C_H_;) zC9kf}86hI4mE(_u8pPf)G@NJ%q6W_ofS%&nT%X@%9cJ)KGhZN!?z2hhkds zE>J&fODg4dhH20%cY@QTyZ!Omk$T0Q4^N z$iCw6cOv0Y^~?YoLjZ=Au4jsaii%A=_WZU0$~K>_^Eg1^n&rjd#Ig5ZMcBwKO#IQu z?_O#&*J;?o0aHGh;*%m3)u@?Dsk+G_zxYWiw1Lib~5a=rKR~1cB2UVN3LB6spOLC z*mP@0g=7-T?LCE>%j2m$#GewczF~t)e5|H&<6bar_YQmo-T|NfFpd6{z%!%AVe;EG z%J#(jN}fF(`PuS}0BV{z>(aLqXHh%<8A|)`-2zU3}2*eyVBP#sznJzt6#@pc8X`+nHX3VFbf1#av5b=inUOyk2^rl0x zd)O^`Q**uPr;S5k;@4K%+jSF&Hd0bjA4MRlJ7{1bbtU;&&nxi^v7Vz9ujL& zlI-?9GVEu2s$cq6uaPM+$c7}3>$}27GwAjYW&Yr2%*vE#qq9;^k11mPMtqQcXfAC{ zO|Jf+Lg`<<@~JuIc|{kVczGEI zi<)YP1$%qTEifHFF3))Fco~k}DLAEHAgZ{1%Ia)$GvQ``Re0E)J9nZw)_S?7G(jU7 zI<$gWiwRtn4QrjgOZY1z5XU(LDUR5C8Dc4f5`BINHkTPj2%@ekqvGptK+F#S%Caen z-_wg`TafL^w}WLDbPs;`kmApdGVp;n;NT){T_%M?nu9ZX|1j64rjlZj_wAD*g-3KD zTy_ylRt&Tp>t;WkZ5PB4!D?&JR*O}k1+_L1bAf-E!+)CF|DT-Ue_DULL6Lc_43tC&G6+o+j*4Ztupms76rdtfNngMhGMRE z(C0H_{^qA&^s~1rZnI`kTj$z8aJ2EtpG*=cT~bY;b?S%QrSNJL3HjtfC8NhzS69Cw zw)0efM3a*x$DZFqO)@r~4*8>-X|$SkXB%P}^pA{K^}Wb7Oh4fs4rd!eSrz{7At9Fn zXwK@%lERU@)AT&U(I|g^%lb+TCZP~H{G#k(xk4L3q`IWnfRd@qsi3AMIWRyuje)W) zV>gB@;0wQFpl1%x?FxH(n=7dmUx;_eD{I8yNC3{(S7NbHAJdaBGBagCWxE4&#aQo0 z=cDoyV_#!hr`FeI4Pc!uzf@04DAgh**e!Ff77dHu zQ}y;G@mvxw7hwi1{fLu4+x~z}1h4y{F|$N8*0(=kWt#<&6N`a|P|Q}>ldGRVQp75Z z-!}cs7t`XQui%~49=!QTvx?f|T;!wUPcu3RrGu_L_7G1_G%_%c`xoe-JC6oij~yuL zb9P3dP#K%xhQK#@!^32Dz5bg&Yk*64_0yKADJk=R z{#=idf%d$8`_@?Pc-$HC`iG+{;HCm;E7R9Wks>k&j;fr1k{GKUGDI59e@2zLb-O!6 z$Zk=AP_USLD9p5RFYnP3iT5Y@T8BFa-sgGO*+@%EFVJWj3!>G8)fnB(SMP^eEY>`R z74MkY_njHI>|4j~0ITVSNLYWJ5q2d&$yxAT9P@)=Yg1_$drLMu{@`w8ppdz2Snke|_+l*W!8qQoX7AqN1Walcv(= zUFQ!8%jY!KO?dn@WVTQr?zT@)%KZ)U_3OReUDN1|z(EQ*Hz?$nfF4KgCq^U%vAcS4 z<-+YY_fF$w{?;9hGOt$Axod0&S)5W(&DDZ;Q!OU$AUIq>NCeS07QTu4n{AU^uhg^m zyk(oUNtgti**R>P@L>-oei1T?kPSV`2~PXn3six#FQCf4V{cTGUPKRTO|6j)57Ih) zOk$X~eqXc8_q~tFeBB@`ScTQieD6~?p(sdDpf}^GTotZ5JO(bhVFjQ&DYr#iJlBD) z;XSJ28pTa+Z`rmP?#lh@GjbAMxHs2}#WZT2E}?aLHr~_}BO$USDJdr;SO)40?~(J> zd2cx~Asg?r{K9&n>A5=TJN&Piz4gC2ce+M<;sRK%5l7$ze1Rs9ejNUx*+k;7udnYJ z#a!@!R4MoKleYSr@@YocV10HEI;dB|Z{<&SE%>|uA83Rfj zPoEVT6W;+xxT~%q-Waj9NgYj}t*1ZUoDhL1^fanW01C@2gx4VflXPW~gd8!fNNfms z9ZP=-F_3k?)1@`BDCd-?$6K(nICPr2GJUNfkmCB+=N0}6geO!iPIIYHzuG#%cQW>L z2>Y|BYJ8FPXKT!6kG-{XGQ#R3C?8@8YiEYd_{|D_weS4?>1Pfz=~&G7Ss(Kp_A-v(b{03V*aGV+>qcXam5I;OQ!ZWv=kz*y3NTeA|cz8I< z<;@n<0k3oM;tyeAVRqZ*<|g(B+>4Ko?_-u6<+zKQq|H1BtinQ0K{4FV;1>t}ZBd8+rlAfGnw|3Z0wM&kBU6#c+NBE4!~*u7(_Lcc{od#5@x$lee5r z+LgWg=qyB(XKJ338-e~T?biqre?+r#MQQ2LHaOq%pFe+E5Sk*-5T(=|AdyJR$QagF z*3>8{+~${v*7ZQ4I4wklm@5EBaeSXXT}Q3E|?n~8^NYIe#+*G&{}moGXf zZdj6U9p~7U5Gu*;vyCJ3ETY%?5)9Aju@0KP;rK?aBZ%D2_1GLzpb5!xjr^woePy1w zMd95>YvIk88-)Oj2d_our+-M@{WM86!zX2+gXCQv(snn-;9l4b8X@KF-Y7&~R%pKB zKUy}|n~4+N@#_ubkh_}7632@sG%6axGU%V4wqK(jed`*wB+PnweufOu4HE?%k1#<7Md!1j_q=_ zRln+gPlpNm-Slb!(D|7}z7V&0T=EC|KfM41v>WQcVy_P1dDk;>Ke%}eG`Y3w)2PmjWR#AKJI^Hts;A?iVf83`p zYiPA~n&wx!D1N2a`rdOWmb7(5;#{Z#e>3RbZ_tu)BBg)Mm+@mUa3(fP>GOl8iP9aj7?Ns^_%?lE&5FCPKL^y?5MV%?#SpRyUhCR1C zw99|sMw|O5{%55$f{ZYOeomDWc*-jAheUaL)$erq(5ihvi{$VMq zWVJ(ev4_r@y#UWgtXLN%0@0u`i=%a;;WX25m+OPrvM$|Wz%mIGhgoj~eh2?M3`GV{ z_lG~`SphAhs$TQ`@{vK%9Ujlqn932<*^|U8e0R zXgG#a2?H81tI3?NwG+!lNaVfg)sDz$74Iwwo>fW+hkUWct&A~ zc-WG=YIPU&S(k^P<#TQ4E%y+I4doBJ-(D0-2AO!G&d*R2E4=V}rfb#R^&%FMiY%Ka`16LLm`aT3RN#5EENeWqElfzhf|Zd;D=SVjM)xBL-tXF(hqgI`PbuQwn!tVx9Zz#8WE{TRif1WjI#^ z;`D-ENfvWB0bv>EeL{@u(xOdu()hxn@gR1|8aq7JT=8oT&Gp9YY2x(b4=_o?8mVD- zH@9!h9em}w(73lzhoz;(h{tA6rl5)87E4;`j}Aube#|QMyr#2nkvF`#R`tYawExzR z&4}5b<&mOWC+aUDFv-1i8W~W0%!wZtilF#82=`ar!&lGTUwbzrXJ<`1{vLMYq{i#v z_5$HGqidlepUZXl6n!D72O#@HHVJAUvsNp5dEOj?AV~A`^8^?@mmOec(iFQv!NbuF z0qcJi{TB?u6NSDu^X#>rQwwQovnHN})vZ!nZ}2mj3nnZ-6q&rRo@+R_8`ZDG*~cGR zkt0225)Dyyp~bBc$*SdKt_syqo>SuE5>gtRWZTwla+pt43 zD*P7h;De|`f%?;D+f$d<*D^0RUiy9fa31dg*IsMZN+dLe!Feil1V})!V_lw*@$-LY zoTm=Sz61R%1fqzACT+MYFr$yN{L|pN5MXJs^r~xT?uS7Y8kks;fEx||FC!&pq$E47`%NHc0y@P`bo9!M?N0w^YThDl4 ztVhSk-yG&{o$7N_2ThGKGx@_6xx#;XYCuIMWU(uJ5N6;F<`6jX6>o7#kY~Yao>G{6MIiYPE zyf}pNN29kNLsl5rgG49{Vl~6UieBV-p2=co%>iZGfpr=tm2b=GxmZYaXHU=QH{l>e|(*JR$y+w-^SH* z&!>B#BG>G0O?#n>QsGxr4#$Mh)>>CfC;86^PTGeMDnA@m8K_G|O3=V;8I(?ttQZ$! zk?UpYh6fYwfAFFOm6d0LBo_!?078)C`z&vmRtOE+Tym5D%5pJl?iDw8wK? zhq=IHbhi;UvkP)-0ry+OA^X%{byvN;qtp z;_1;}Zt5Y)S=R@CwM%SW(E{|I`uK1(nrp-5UM%QXx7%@&?>WwSi_;ztNhH5q;)KTq zDM6qZzB+ibD+~?vzFD*j$D@zZ1=vz_?(Q6&VAy_H&yO?9p=V+HSvDR9$3Ci_5b)(0 zd8{#5k@r!eliX}7?|>W4n??gA|CO%Hwxggl3j^oS@kDzmx$QL=>r;~KTT6PDkK`W-FCPCZ`nD}es5B#L#~(#EEb&_JeRCrHRhvbSlJPa^Idz-M*y}m%ZlI!u>RSB zH$NY)%goA}3JBRZvI|${qz@lHrOPUj?yu7s9v(iaOUU2G3bR@cZNgLA6!LD+Y|!V+ z-J3osfDE@Z<x%AT*xJnKKy|!hu;TE&XC%V0Pc11xNzJ z`onS9)fp?~%mtEW(_l*_P>T9&GtR9#?IAw*O9T}W>U?ZGx{_`lyYQFyp8R-24B&3Wv%)z^&(k%y{3)(2kX=|pvSCk zoV@)+$j%DjBYNP56hWYF>n%>8I6VK>@QeP5?*d6MAV^hj%&8_2lXmzo0lA09LW!B6 z2A(rGAHJNN=j3(SBvHuTNWSG_RRF)i-voEQy7mW|eP62~%04HHpQ)bcdXy5?5rD!+ zb5Hg4y^APf8a-|>Oqw2x&i~0IEn(@MRXb4YdP@|P z_{2#FQcHq%0eJ!j1U>_eKgec47bd2MyzyyNBoc&q6FlGTIu197?)zA~d|pmqN(`Uw zI;yu%iAL302>wO_ZH#~YgX`M)56kl&mS5~U0F{&=?h7sGscWq<6J&Tnu-+Eyu49%w0u!U~U+UWjr$G^p$l-668n#xaVhblfaZKC7p94c}_?JvurX^TDL4>u=B& z7k1-Hy^)%v5ZqHin11d7L7+IMfq2TAlW=FNr{7tvtj{@1vxsw}`l-DOl_`8>s%Hx@ z+@4wM?`d&yaWkdN^_Tw>nFR1};B!tj!*}ExSB<4s|6&1x>tB6Bta5jrVly30zXTmP z%RAuY_gmyy+6l@@yQ(ppM5#TY@r~weBW2`2HP5^D?a@!<}xy8SZ8J^Q@A{t;=h_!3+mlfG&AWdEN0 z4tmEiU@sOcMRfNvsrD=D+x+J1%2R$8fc^f85`Jve*0_tmE1D7$um=)0v^KXjQHLNXI zwuI*b*O#k>C`C!GJ(j8fExF-8pupL^ARC-*fxC-d*oyb$?nDbk`|kghhBty0RUN{Lw84RUj`ps8f%{Fb!4$`Z279t*0qAKexqYsq~RO^J#doP-Pzlh zYp`#a3~_t0Q4Mh%2UB=eDv1|J3FdlE7r2UAzIUFgSWUF#Bw0qNpNZ?Pu?`MC02$vE zgkztEL1Q~w*6pEphoN;WIhLaTnw9@c&gSugTCM`;-cbRWv})ihsby2Gl{k7$ zaX8M*Yvu8=3!WRvF)~EZGseorl{CtY)C1cVvJe}T+Fl5>#)pwdiW>xlDQ zN>`cULUUErr-5g1tL`HQaMWpK!LYnVPwl`gatJvnHmkMu8gNZ4tgNV5@mBz0`Y8fo z5W7LDA}sy^*?P6L1aLk(Q~G(Q@`G?SB#+yaY<{afLuB;NwKgnrS6{fm(9Ji}baU+KO^QZPE_I>-~*_)1N)pGb`gL*c9U;)WU?IX_TXF zH~lH!WtkR`Ih>@vf!kJSodb`Am3l`{D(3JHzPp~X{6|z1cI4)0!_`oBKCwWk0|{4$ zO>_JY-;WH6S!&x5cpSD!W%PaejiMG9q@lVA(d5z?~syHRJdvY`OKH$rl3I%$i2pjDR1Q=(TXSY6JZ~5&NPHX?XBz zL=ZSOSsx$^V}H{K46@`1L}?d!a$-)ZlO7xFL3>D z^kHrPyUgSZo|Ct_cPM&EdiPpW32yE#+J}h%kltWj(V+mDONI#Y3rJc+K-?ZB`NmUz zk*V9hi73b#P?un_)J*AdVE3s^MVXY&iH`)}_jA zHHAX!gK2Xo_B?vCD_uSn(Oaen%rk9I9d8XEJ!2l!$l4s6sjUJ=Okl^X@+2&R4kvJ9 z{(WFW8qiLFIFcqKoj2sFRIweyK&rpwzhXBNE#Dx3x--Yuy7H-MY_uGA5%zo45+rkD zTSpa%TZjDb6(xejlI>9?g(U{XX`RrVg$I2%VaG((B#Vrs+v1 z2yX1#3wV^^EM3P9>%W>YtlCkC8lflk+k_9hV#fV_Z7SK0AOJkQIqZ-S4uha9 z?7PJuN)W$6ycbWM^rqL{8@4q3Ytr0G%&Mb*kOvAowk6BnDUFQQoBeCMjw)0?twV@*`k{XH32#qp0%f!LeKKKNBmT>;+52mQ#+bLS5SQ zeLO@?&t>1oL)4RhD)NUVNC`*6malHe9w}$0-po|i`L$I-ooWt$wIiK_RGBTFx-mRD z3Ow^hPkz3Vd9nq{?*X0ufCP^!V(mmRV=7$a{xC08dc;}H+uK|1iAzhyeG2dE5bBd* zJhDPLW#3y23--y9(;on@2SD`)nJsia`R7stbu!sf8OiEcoA4t<@YTF>5>eKBm90Iq z*JD4j;zUGn;B62puqPc(omzdZkiTQG+(gcO8$8G69QF2*0RBSe+t1)3ImkR`hD{hM zg@8oAzl)U4=u5i67Y2CH5G{$5aZ!EHg$cFLbnYHG@LsW=4YD!F0Y~Oi$`nmNGp~Dp zUo_q37s)p@%LlqR;H(z!^fBdW;L22Ui(h*{de0#Tuo32UidULB!4rkdCAX%d*i{X- z6?FYQ6lL~?lz7(CyR0f6v@4!H7 z4?UyPPV*<%F&8deDDQWIfq+k~zT*ZS%?&Nr8aDde&bnXEOzxlG9bj@nIMn`&lP2Wm zlitg|y&@~I-qY*tEpw%MVP{j}e*!@~Okh!{#q)b!|4EV;w2VD7{@ggiqe^QNe?a)xGN#if+3o&U!Al$snBqJ<#}z z{;z{A5qJ~`ipg#;H=rKy>6kS$#m?JCN`iLdykiS{GC+w z5=1I!mN6QHtBn&^K9Lhx-jB6X!%j2aSN1u}p=1H+0UYGATQ7hi;4I8h<~pGN`zk>O zmg98EDP%L7ewXFz2BX(#tH1Tf#C|_pw|b-cG2KT(khf2mU9Mw$`jAT?keiRo)F$H< zuQnB`XVJsC3ON<|)|}Ue!|pwh`dd2qXv6XhTlq2V3k5*gPQ5TJs5R7PJ{eIGY)c## znjZ|-#u=Pms(;T#KY#zPAZTxe7|xt0PHqKv>E zK+IO^WtytC+39pvB6=s+GH_jU_S+fhrSV#f-!i8(b2Qz-D1YewHMVELu|j@NSjzjh zVOKYuUb{@d%CL^yXE*&eE9-Q}?j~|v3&uB1Jt$S7To9K_fg3j;J$htzVTYJK%hBi` zWe|tQXBxT#FZuNDvBbrzC2^eq;vkn8J5-6vc)5k zFGK7iXi|_h><%dggak_L>xA0!NtDBtd~B~k;VED^ftZ+WUBOmiI^Fq$~<=B&=XhPOy|?%v)|hE|h=-L}dVgs(TSD;?`~IJMvV) zE{zW^V&Q}9bG-!~+$9?lT>tFh+n!8_>q8&tpIwks4n;~ick*dkH8|_-eJ(`GsRB4s z>4sJz1`&IPxhsA!xXZH_xx4ruEK z$7^|WLb;|sF~bOv%AAwgySPD3ituUe5apXyp_%r*u<9bW+42oM^UNRZubWEZlZMTG zQ54T^gpTl=`OK*Pe6txHt;#(3;qyqFzme8Kx~gu)oK|zPh+uf_L?l?lo~URPo-X zQ@zg;F}_jirZyl_zFq^{qE;g5%=O;ac;@{=gStGwZi%N2n>#v#~DStFj$%&|xJ>-+TuQ3D7k)U{{ zzKvG>$f+fft^a-suyNVcO_+sZ*YkIylD@C0AJ049Adu0l{-F>WOiQL{=U^~?b#K5} zfF6XNj}#?$l=J}5TDI+HaesX@<>7g-rPFa~MI47d7Ho@4EKzpAskNu*TSG5iw895S z+-e-}-@0i)J8mQRT-6dWQ4x0^Y_SpUiD%S~lS#f>L`tBMUNeAs7~A6MvDp-ZHJy{u zmB(#3+4LLy^|x6yxuHoU>pCYl6G7zeBjeuzBnNmLP@o?k>^^oQH9+y{*a7eWfGC&c zmx*FCM8`Nke!SAs(75S4G2ufq`T^)X0EMonBI}nRb7+I8i#vm*6&4wNO{LpknYY`Z4*aP3!_ zI~;xM-bXh)Nco6m2l#$VI?LjcZ5=z>@M8gTpm)aardgFNC{!D-fzov+*CcpWD-53X zl>?|!IiJ6K%iZx4l@6Za?Gm6Ba@C33#gR86pbOd?@bjGq)?d6UVORXR z;K`EWYsx2VBw78fRMM}TU{7c-iNQ1b=EcD_0>Ay|kD8?hTt|%g+)>$=a)>o8b{)R?)a(A>Sw2ZnyVeHAJU@L*l~qF^O|&l#x(XQ?ZRR0M%sR zZ$62hz0EV-<4JYol-C!PJ{$gqdD$P)`{2!~lr^Di)Af|O+FemGCR07+& z@LbzASb&>T`i^~ana;>>dQX2*Wz}Un^!;(orS=cj-HSMrUdqg>x2XIPxN&n7NsPF$cPZ9!#OCL7xbA zk)xG<;0=dfIB;Zey<^`(aY8@EAYIMMA}GKYoH61TY)uE9GmcE{0A?GaszBs)F4zx) zCyJrvcVF(o3(1(^MA9vOy?7F^_4FfVvs+@n4+|T@z->!FpvO_RWh~c`H|G0fL2Xh* zu$TcGpo|a%2z&~Ljfr273G$(4c$tkaF zsK4|h23u8x`u!~>Qk&DzNnkvdc#W2M4&{UZa~qz{Vp|oC0u?2$xdV!In^i1BUSvja zDL!PC9lWAgyXM6g8xccpWZdbmTUiA%$46NcpRXLyt1N(q&uHwfPY9YoM){7c*V$s1 zgCPpgNuSx3M@6ZYn@ol?V+x7Iru9O^DEhKr5V%p7@@oQ*K+9ke6nTu-`RU;?;xftE>*RcuxrKeG;Cja;Tp)&P zs|#Vg_nm_+A8mk1%z@r}z#3yRpGo@&{IxPapH+O<;P?D6Kl^l~poi12xi|0*?wQ=}PfF}RJ)c+m&`2Qw3{3j{s zA741c@)7`hTV&vSN-Xg>;gSON0Y!i0@(T>^Cmqlpfii;)NGzcjcxU}_y(SgYXMUt4 z*XTUT50w3223_qG8G9F;DZu!gAKf^}t8g3oAhsQ6%^3$dCgy>~1gFas>IBg7bTh%A zR%n9}f+tc27rg(-?C1O3No0_N8q(yB0|Ph`ZZXGj0H7G}h-+A?o@)yh8Ejzh0}Hjs zdzB``R!oe*V^{C2Yo7jmDsS{5a6pGzBI2m98e1{q1AVEiAJJ#Q21%Il!=g(DcP)%d zmu+$f-mB`S-pTb>GGl?@T5G!0mm^9EX;`TtzrOA+!9a@0jq$du^m$YrPmTPnBAT5~ z&Mqb+=qpyP*SdYHkyxm3D}3_pt$u4P!LU;1@};fc_mSi2{*6%-i#5s1j<+fWGi~t! ztl}Z8ZqZl1(1U1nHa}$AYmQGFWZIb{5<$|msgZvYu{`o`xN|qyUNVahhJOzmb6i!&dTn8=ft@U8NRo=*!W$UcW6B^`y_aoB&{>2N8xKSm|}OHfx&c|0$gE zdd;eiXi!fIXvzYFYGmDpnVua2~UOAl*S6paIuy`XwQGSs>T?IFeR#IL1Q_c}x4hDF()de~ zn_2VEso-$X?LNhPl~1^PC=6_%f+|JYNvt=Am9U}k2mECQi+fV0d%nkMOpA}91GkCt zs-Lp>Rh+E!EInOrDIC4ze0*jKEa1Kebf1#iaL1(G{d$n*G#rzpE5Ag%Uw(1i4=S+q zn3={|nJMGxZl3qN)5fyV2Bq+KXnr>59`4J#IJf#K5XdDdX7yWcpW7o0#HD0EB?&yw zSez&Jbde+t2E@FApdM(I^Y>KN7g-Ul6Zv=#$&40bv!moZCCZ&n2p% zwE=>~PsQ!@dDUcs-eM@=g{cAlhU6!*2}R@}>)SkE&$Tt{OMNPAA|IFz1Q?B4wNGa} zCby>bd)<29KpB7qK8HM>IKEUWFdKEwhW^I6tZ z?0-7qTTc*pz=~`QedZ)E4koPk`^0HLwQoj|aJEZNtMdQcsv_)S-(RstFt&Z_fHjay zF&i+{Qv|5q(P{e7=rv^DynW@}mra=jvQ~=6jyzo_Kh@g;o5O$QlWLeMf(0H?8iaPy z$7d#!+2-;DSXfJC{#&T>E&wL=|3^COiH;QL+cvQ)gTDbL4PdV7AGOthX1s|Ddb5}y z?Z>{z389+KI7v9mpoDLBU7ljJbd%L`SW;BMq#5J(ZYfX@Ym z&oFC68K5v`6=^4xJ!Pj^vHkg4I!wETTvDo1!df*YlV5<`G%P!=3~0rqT%V+v zSy0{#Zefz*|0Ny&dCQVac+z%=*hQew;H^^wfuZ;33v~Y{370Y4|zu*97M`Grh z*q}n`wR80IRkgR&j`m)mFk4*nqC>utCI~G%yb&<6e`0)Wsu|kGCxNtA2jnkGzn1NL zP?nzP(s6l_Wbw1Dqb;La;q~L@fHalz{E1Ue;toG?Fh|m8ZF%w%Ol!Qwzjgg69kZpi zEV|G;j;g?b`p|;U7*^$(_(+p&tEO`hm+wy+)#5`6Fgcyl6)zVmDssGN{Lm;Zi2spG zyjPS8{`|e%;zef3Ri&uKcF8{WyP5s+X;(w=IFIemw$}n7t*v=KvB97V+PllB=UC7J zvb_~Ch8B+_l}Yb`#zb|q=TQ!5Jzy2Hdb(!toD|n5WPi|6b2wXb z@S{{O->%NIUo90lQ_UFd#kHdmxn6hy3$_BLwr|75TW5^YY*nQ)?{;UbiVrMnHk)a+6m?ab~1U zat?=+v_4z;B)W5!%M?sf7FMe3+qFQt?k{p4T|${Q74^3^-eGMo;Jc1n--od1ls1qa zS1$`Bm``)$26l8Z|9RB0E$cB^&6`NXy@@YEXaRWtaLr7bmA7?X(#^;MEt_`Z9cl~=wdtU^7>J6xZ?5!F8c>1P3}}TCaCn>*-h%1+h%HLyIXv` zSz5=6Pz1=LlIK_-uSJi!&)~hLUA_^cbEDWap6sZew$8Pd@8v2`Yn1yu`y%s*;9pkgUbR} zp1LPk=ntJ5wZV54|6O#*Tr(SrdANoOIT}Xb=VRaGIS*v7%7-q<@6X2ytbsESwmaC3 zYI4mtZ7M{O)Y-_KQg;4-h`E-B^~6+kdLD|{hY}m_NDAHmytsvO`~tgw@k=Qs9!C6r z=lSjr)G}`Uk1VNwi>Np3;pMS0Gcf~L6TwGbO4Qt&-ao%%sU1My{PSRggt!2 zABxX4OrV7p7j3y66N)vc`{q9rn>}$x^|?O@D14{n^ua*@J{x^-P#3xr54${d09X);a150!fRFTKSnSqit`#dtYC=q_bXi05r>evb5(DpeF&oq&cW&54ru` z1$9U1-AvcX=kLH}90d?PB3daWC_>34VsypvGI_bm>YTS>w5mY!cSxEq)2&juGVvtw}yge5lx=iuf3cWj}iS`dyaqM$7N~36Y`>g-)pM1T_$e8LqD1C`rn87onbo1{t zOZuN*e@>@`HHVn z6dooz_W91IIgVLRcr6)O?7|SR-r{9?wYss5LnD*owV`8^)UBCnnaqULzNJzf5eJZ^ z9$4GjLbn1X%#anTwu6IP7hbg}n|&SvPXk8wM1B5FwUw5a6S7(Xo8dW^gq2h)jW=&M z&D=Sr=vhF%nqlUWFh9;so>7r$C#)9cD6OjBe@$Bs(%pkym9@3e;o(#cYWqcgzx-o! z)i2o+7T%m*0c4&M@rPOe^Q^D8u6*i!4(} zba0f(q?u8*c5-rJLzF$ZgEaN?^V3DCaFZhj1iItuCc*sN)b-2A*j0FFtHjSjgrDj5 zY4zvr_T^n3CNHEnx&<^yR>`vl^{SR>AJ^V}{7>FuR4>3z7}=(7-m8_`$c zfr+^OmTF42)4Y6o9CXQ$kRlbKuf9H03N2V3SQ{^UJl@lzX~bYWaNnpSS#Rgrw0YS= z&l8!nO-GFQWOVaLl*-&&yKBEj1wQH>9Z**u6vo!xILoAe(1g_28C9ew^Mu7Y?mR)6 za+eB2y)7|Zu7~0ZY(_$$klqL6Sm^EGEMQ!fpU%_vigo);o_h66$#d}=H%quk2TVEV zP^YCo4djHz4j8{#SH79c zFYz3-6H1y-QVtm2NZEGwh1R_<2#suf?mn|-Mc-B_O}yV{(0IbFOk|pm*~6JGh$|X#|IEpF60L2a}u zOC78UD|BanKilSXgTpx{IxkyWh*^crm~vutbTkdKczPdCFiBfm+osHP50%ut@C|WX zx5Fy^jaNsU28WB?nT+rJ8;;A-D}41T*IX>9%A6(jAzhsZn8o>@sW&vz+v_o*Q#C9n zwf3ITtr(nu6N0A$7%#%{u~1S$7l)I_rH@Aw&bt$sRe~r}*lDtB?FG>CDF||b;K6&j zpHG_1>K7f)w^@x;qQ)ue{7rSyne<6$NBT;o1ZDML5jv)Uvw{!KNkzuR94RQ z_M7!6_)A9S=U=HPEbOijUy#BP;yXVrH%i3B#8iI$8qwRUrSc+EfkBG|d{D^2A7_wk zH@CL#1YO2e9C*+g8RX#Lz|F(cP9Q)vG&Ht}M}7`M>r-ARoHB*zhdKZ+Kg@sgn$T%K zRAPLcK2-VU%_r`pSPK<}n4p$K%d!~Y(;r7Z(}K)?A}!Uw=X(0W|7leE2|Hc}V5r>wEgfjT_I7cJmK#sG6F^SQOB^Ii^|% z6<(FW)Dao5I$=m3Wk;v?9{tW0r(WvF=HeGajV_8>T zb$N(*yZ-l#IO(E!{VXclgM<5p#mIHYGu)a97P!k${EhU!tLc53A}L_017n{S$2OOx z7+BiSaJ#S0<8q1?lJ_(##!=H;8se{K{^<)Jy5l znV6mJ0$%p&$bjp_`sz_750-_h97~|LWDGz3W63~Nj@Wy4dvfwZSc@ZAT%Qmu_6P)D zn+<)D@pZllemK+k+p3jff3D=F`EXT+u{+n!R<_V$&D0zPhTW#NQ3XP!C9L z;J2KjqMO!sDk3{>L;uc>a!N0r6~Y+RD9MmKk{u8jNMgs7V?SAzeFvM2>#}Cgi%xs- zqXiG>t><(5ORVd9KeTzoy8D(eOL{O{MsJP zNmiFguRhPkb;p9g{pqS6So^@ui5FU$nVL3(TXZ)5zJ9l{aqgpS_o=SI!DN;5jFG7i zJ2fG6bAdL7#b<$Meyvwn<_~3sBtOV{@=iWW?>OhhnK)X2Uu#f@(WQ}<{fd6pT%hIX z$G?9f5;n~*K&RM+;Ei3fuQgYd`7g@cZCP0de~VxJ{g%Uw;I%prH^dfAFds_&l8Pp?LVGYFAqlZ6LJr9sD~%E-4c{C4IY3Uc zt~(vzzfOB;CC~N0Z)+Lr@gmB|RD+y=5ajH=ShpEa= z&qaf>;^2F~oT}4$O%Hu&(;NC7y|LqE_mJRQ3I-?Rj5_jpw=WYjCpr6qPdbEhtw`fP z*Ve8BTqR~?)IQ@oR{Se8<8!7`C zXR5X4Gyk@3DaEqvyer-a=G93F0}26u5h+>DLv%a-Qf;g3-L?Nn|0dB|mI zJ{WZQ0`-`h->ScV{W1^SoUVF82n-Is_)3EYbo_+MdpkLG4d0IlZb=ttqX50-3xq^wft=aJ<&QkYvLo@42a%Dqk||sQRKfI*56<+Q1DdAHC*Ki(n|*(2 zoh@1C=%GT{m}}4So~7qt@aTPZk%N0OGZKN*U}dl@5w#h==+J6VdCl9s8SkR2&L||5zn6wJ_;$W| z4+JAVEAwGxpioz0#mA^?{7Jxr(6rfHm6c=t@Gu|jFOK-mMiFAM=S-s`*bJ9XGv*l< zSH_; z7=UU+x3~ZOz6c4PVL!T|=}Mnm_+kYuv3OsO`1*E(l|<};b*uC7Kn}z5**E|J8|Ys4 z4hHfUm;%tKq5*V1hT-h$CT|tXjwj(qdT@57000&HV=;6C^@bE`%@!L<)+!YzQLzO0^ac$7p^QLGm>i}v#JQn5QsdZG7{D*46A2LK09))p2=d|{NP zuU~hYNbhAS6;=|5`cUj9T8Ycl)RZi|F3pie|AAWM(kJ0)c=c9_0=vWIwe#x$VGj9x zh?Nj*LaKNFVEZq4t)u}cS^cau3plU3I%mfTX#PJvEMyAdkxd zVg5C;lxyDrb07$K?_A=}hLqb0Zq70T?+4q4p4<%#*X4w0i;EM?*{?J@D6NHs^dgZf zK#<^0@r?y3zNkoS+u|;J6B*h4^W{{nyMQ@qho=nlEeew85tRAbPaxKEuN%3%S6WxIUPs)W$Zen&4<^aj{>x(4$7^Y z{-Kcv>pYt?P0o3(qo$dq81aQ<4~SIL2@hIQ2?Edu2<-~XkzXL(O8A5Q{kA#};}Vk% z`oGc9bds+%+u+tkLM&2efJ#7GGr*0ukc3YA6NG(0aK)!UT%fd|F@QC`TL9+NnBlUZ+Jo2sc}v$i(?JBmfKoA)`TjamR;rCWmI?%kj9&&ACR2 z({bv3%Zf{t+h|YsteTpd(X%0J!8WnB`1nqHGJ0(fO4k8vTGkn5Pi$8wfm^nZ!{t^~ zumf4eP`vE@@0juN^FNoqV#0#~CVjnU8#%9Ug9LMxmY!alq{fOoc^{U)XkewOG}O(wf9T5=^~M3Ynzy^EprAlZ4ydbS-wBR+pNSg(%9m$&?OS;~P$3&d{syL#0CW^d%kVde zFfd(8{PbZ3dUH?x7ke^6Y7AHa(5h^)#Q>5JO39#0F5FJ73N)xrYR>^dQk1MPi?7>vJv8w?e z54NxF`~a9DW|yBp5e|c>_5dsCVn%j$osJHbb{5dNR7n7xaV|*G-rk;RmHCfX7v;qu zn6UevPS6JK`~Q*?wV zRkJn2Xz|QZ=x$5DLyqh7=RA8zf;>Kl;>&*WL?eQNL1cEOBagR2A>!xbC*And6Ry10 zoa;l80*N!}7UJ+Hcj)WAZf|BP(Ak0*zAcs=*=BR79~x@ttZaXZodCTT)@!MDdN*Qz zt8!UUYeV5nu0AWWoubFJ`s`gR{(f4$Qa_l;(*zxVyAu{*otlHQGd+s98$V810^fkM zFFL(85kP$V>kI4f4svgJ;AHNqOus()K`i2dhl?aqM>JFr)h+(LnDk zq@#7WI(3fQzrRD^+@?Q__EYP)>HNSC!Xw2byXgo~`~|?b7lZ3G)-peD>=3973^4!yw>CBaMvw+w`f`jDaDHjv%mA_%lBFQ32c`#DOxq_< zXdwXZN1Wu=?!Iup<>@M1K%uJ3+835%p+Q$HqI1(E zxR9cAoON(iJvlQ&2T>sctL^UT`4`-ad&R~PAL2iyO#7;OqU`@RcLV@~cLxn8%>|}S z3GsH@*)0Rwn?_osqeXIwZFtM}A&Af~-k}4=3w%PI63^h43k?uQAm25}12Gcv z_VYVa=ivZ{kHNSaubgHSHu~*c+uU5bVWq?Pyq!HlL_(G6W%q(ER|MdcX0085fI zW4E7*0Q&$^EW%l$wp+xm)zzmVhckg1Ygt`@?G+0SJ(lhH;X#p`i7OxlTNWN3PLrk5 zz_57JsLe?NmY<02;y9=(8FO6$X%Q&ZVP#I>!Y417M_DZ1MBMX=K zIKAoU>@2!JCz`E{SXCfZRRnGKK?i?OeA5qnD}3s9&5=T+CJ z2M;)Z%^1o8EaU1H5aQtJ>h9hFWh!ADpm$E)q*DUE80Jccc+!V>2Ek z%`!-^mnx$>2OM&3#H$$JhLE*Q;Q^}4&;nq(+(4`YLalM1Q2ukLsdaf-c8{9Ty7TN4 zP3Kq!?_^b7&3yMx21-JJD@d!IBw3}qq08;ya1-pSq{u~AhZDd+`jbP6tRko(50)w3 zb9cCS9SUow#&tX+0m{Cf-bcQ4n|@%;cW>|LQQq ze1b+0oJ!{R*V4*Zj_aq|jIN$#ve|Y{T;QI1(^%EoEA794O$tJ!III*9fIp4C+b-Ke z%rA$sovF1(<6d@tf=MPw)1pyg@gUtYRacwT4!359yzI0e;r2(L3!%h5ra0I?x9M|y zp4ZuVU-Ca`?_-tsSy^&lsX>N^q}Io+1A3u%sGM%Kd6s+Gv&>kjtS<=!AkH{2RJV@m z6^=}>tAR0*4@K5WYAuIMV60hd+>36GnJzF&`@1y-e|lfWHZ_qB=L}ra5efOukpssz zSKLo!Wo5Mw5{pt`A?M}_f$ZS?aK5%~yG}Y7#uj)QYRwZFH|byVIe=q^&@|v`Z+~fB z$c5`*S49tD?O=?oh)TMfJGg&mJ6AEUq}5WJf2;!D5?Z_9GF1ly?aq(v|B@v8fQ^H= z5G(`b>#Xt0VsDXRxQ-AC-*O;VeCOby!Se4onvYQ+XA}-VgZd>ZNResDB!JHV=`lfc z9i%v^K`-7?zTq`Un9@t*>(O9?JS`JA=t4|j0mRj%zid6cdUJSnKYU5jVX%R17KPl> z8hoFTp};`^&npll-t#x%XfNEm$N}uEMw09)>(ROV73>CAWV480@WLlVYlKYc% zv1$$Z^Dy5KR0ZF>(#uBYo2(eGvVGj>*{$@L8b(0C@2?(H4@FYM?|tlt3!;MU?WsS1 z{ye_2QY0rW9S)dkZm>g0WmD5sP3TzV=O&tKwJE)e;T$5EzTLqkpr5DPXI&-<$mt_H zf@0SBs>{8T?3dE~X%1=LjIDB5T|KLmIr#=60xKEGJr=W8Q)RVw&@G%#s@XZxu3yfh5C;L%8%>wb*!f00kCmEdZ=D ze>kt7JQ#yiq};2{w;7kt^L8F(h_$lPWSxWK)KBHu?|H`pJ|H0FgW!E`IoxXq&zM^>zR^;)*4tDiJ zs0lJK_fZ(OQCu+z8fm_*R86WNu~PvsqAWr^B-AJOmV_)p^Nw+ZT7oMDmq~uv<5aDC z!)m#cyB$+DZrZ&s{omMX53>z2@uB!3KFFy2$I+WUe|PK_3<9ZppBQ4F1qBCFIXZLk z#+Ns?OD7~I5`@;lZGjxv9Fy@iV{`{l_hZcC(+8urPH!&Ux{|zR#THxYpbhnFq)r|+ zEkus>f5tXWvV|V=-Pfi@hjO)EOL!;JXJJ!s^;S6C*qN(lW&j>r8BiNpD72CnMJbSQ z=YEn|A~3k}M2{B|8xyk)-=JCty&RB( zS^r^=>8-YTaG-Jbg+EnFZ=OoFRIjhp5Q&;C#|h2TW;yl-+1P=ax)qOE+o1>1$0Nt$ zIa4z;a#fVtCs`#Fh>JC)ozNCrQpGx|XW&%*6MJ@~~8Am15a{H-D0$S{%?uu6(@akHEV=XkZGc!2g zRGXgau{)(bD1olMH(%y%1~E0w1eW$XU;U$c8VkvX9BhcDn}Vez)sbK%(iQr4iLc1x zNzSP2OJramT9(Ma4XIfpT$noLAJC*fKZ?z+55JuY45EH{Gaom%)Fh6icZMXEfCj&h~6#UcZZ@YMcJ*3^#Y^ zZ&$9H>qe@JZblAJyFx5#P=GW1lpCD~8G zsz+I5_iKd(Ucxan(E6J3&RF_ ze0Z^-e6jk&To15(l~;jaw2pPuV3|LL=6cVl2P^{c@0LKTjm+-+7Ep|^k;%N-$_s|g zO@8qLI`@lDb@I%=-a+dhqtP6YgYV{=)@EA(FTUQyQ_uTDj+BKz>BR-nCxd!2?Om2E z>m@)i&hCG&e1>zi3)1tSL>K279Ax4(icaSwU$spC|G1$0zgZ0aMWKJ)JL6qQ8-4>c P(?YcF>#3LDwT<{6OhK(Q From 20b88691b14ba4ee2dd2db1a32ed3d66588f3b47 Mon Sep 17 00:00:00 2001 From: ikarrus Date: Thu, 15 May 2014 22:34:48 -0600 Subject: [PATCH 137/185] Fixed AI sat antechamber turret controls starting off despite the turrets starting on Causing mass confusion and general disarray. --- _maps/map_files/tgstation.2.1.3.dmm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_maps/map_files/tgstation.2.1.3.dmm b/_maps/map_files/tgstation.2.1.3.dmm index 2e82cc319fd..07fd417726d 100644 --- a/_maps/map_files/tgstation.2.1.3.dmm +++ b/_maps/map_files/tgstation.2.1.3.dmm @@ -9098,7 +9098,7 @@ "dsX" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/engine/engineering) "dsY" = (/obj/machinery/bot/floorbot{on = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/aisat_interior) "dsZ" = (/obj/machinery/bot/cleanbot{on = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/aisat_interior) -"dta" = (/obj/machinery/light,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/turretid{control_area = "\improper AI Satellite Antechamber"; enabled = 0; icon_state = "motion0"; name = "Antechamber Turret Control"; pixel_x = 0; pixel_y = -24; req_access = list(65)},/turf/simulated/floor,/area/aisat) +"dta" = (/obj/machinery/light,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/turretid{control_area = "\improper AI Satellite Antechamber"; enabled = 1; icon_state = "motion3"; name = "Antechamber Turret Control"; pixel_x = 0; pixel_y = -24; req_access = list(65)},/turf/simulated/floor,/area/aisat) "dtb" = (/obj/structure/transit_tube{tag = "icon-E-NW"; icon_state = "E-NW"},/turf/space,/area) "dtc" = (/obj/item/weapon/mop,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership) "dtd" = (/obj/structure/table/woodentable,/obj/item/device/paicard,/turf/unsimulated/floor{icon_state = "grimy"},/area/syndicate_mothership) From 6ba6a33427723a1e9947650a7570418eed05ff3f Mon Sep 17 00:00:00 2001 From: Giacomand Date: Fri, 16 May 2014 14:44:19 +0100 Subject: [PATCH 138/185] Fixes the MetaStation map. --- _maps/map_files/MetaStation.v39K.dmm | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/_maps/map_files/MetaStation.v39K.dmm b/_maps/map_files/MetaStation.v39K.dmm index 85d87c7d053..b1d21a6a8f6 100644 --- a/_maps/map_files/MetaStation.v39K.dmm +++ b/_maps/map_files/MetaStation.v39K.dmm @@ -747,7 +747,7 @@ "aos" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/machinery/firealarm{dir = 4; pixel_x = 28},/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/security/brig) "aot" = (/obj/structure/closet/crate,/obj/item/stack/sheet/glass{amount = 10},/obj/item/stack/rods,/turf/simulated/floor/plating/airless,/area/space) "aou" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"aov" = (/obj/item/clothing/gloves/rainbow,/obj/item/clothing/shoes/rainbow,/obj/item/clothing/under/rainbow,/obj/item/clothing/head/soft/rainbow,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"aov" = (/obj/item/clothing/gloves/rainbow,/obj/item/clothing/shoes/sneakers/rainbow,/obj/item/clothing/under/rainbow,/obj/item/clothing/head/soft/rainbow,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aow" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/security/brig) "aox" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/fore) "aoy" = (/turf/simulated/floor/plating{tag = "icon-platingdmg2"; icon_state = "platingdmg2"},/area/maintenance/disposal) @@ -1335,7 +1335,7 @@ "azI" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/module/power_control,/obj/item/weapon/stock_parts/cell{maxcharge = 2000},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/sorting{name = "\improper Warehouse"}) "azJ" = (/obj/structure/closet/emcloset,/obj/machinery/status_display{density = 0; pixel_x = 0; pixel_y = 32; supply_display = 1},/turf/simulated/floor{dir = 9; icon_state = "brown"},/area/quartermaster/miningdock{name = "\improper Mining Office"}) "azK" = (/obj/structure/closet/secure_closet/brig{anchored = 1},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/security/prison) -"azL" = (/obj/structure/rack,/obj/machinery/flasher{id = "holdingflash"; pixel_x = 25},/obj/item/clothing/under/color/orange{pixel_x = 1; pixel_y = -1},/obj/item/clothing/under/color/orange{pixel_x = 1; pixel_y = -1},/obj/item/clothing/under/color/orange{pixel_x = 1; pixel_y = -1},/obj/item/clothing/under/color/orange{pixel_x = 1; pixel_y = -1},/obj/item/clothing/under/color/orange{pixel_x = 1; pixel_y = -1},/obj/item/clothing/shoes/orange,/obj/item/clothing/shoes/orange,/obj/item/clothing/shoes/orange,/obj/item/clothing/shoes/orange,/obj/item/clothing/shoes/orange,/obj/item/weapon/handcuffs,/obj/item/weapon/handcuffs,/obj/item/weapon/handcuffs,/turf/simulated/floor{icon_state = "floorgrime"},/area/security/brig) +"azL" = (/obj/structure/rack,/obj/machinery/flasher{id = "holdingflash"; pixel_x = 25},/obj/item/clothing/under/color/orange{pixel_x = 1; pixel_y = -1},/obj/item/clothing/under/color/orange{pixel_x = 1; pixel_y = -1},/obj/item/clothing/under/color/orange{pixel_x = 1; pixel_y = -1},/obj/item/clothing/under/color/orange{pixel_x = 1; pixel_y = -1},/obj/item/clothing/under/color/orange{pixel_x = 1; pixel_y = -1},/obj/item/clothing/shoes/sneakers/orange,/obj/item/clothing/shoes/sneakers/orange,/obj/item/clothing/shoes/sneakers/orange,/obj/item/clothing/shoes/sneakers/orange,/obj/item/clothing/shoes/sneakers/orange,/obj/item/weapon/handcuffs,/obj/item/weapon/handcuffs,/obj/item/weapon/handcuffs,/turf/simulated/floor{icon_state = "floorgrime"},/area/security/brig) "azM" = (/obj/structure/closet/secure_closet/brig{anchored = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/security/prison) "azN" = (/obj/machinery/light{dir = 1},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "azO" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/sorting{name = "\improper Warehouse"}) @@ -7767,12 +7767,12 @@ "cTs" = (/turf/unsimulated/floor{dir = 8; icon_state = "chapel"},/area/wizard_station) "cTt" = (/obj/effect/decal/cleanable/blood,/mob/living/carbon/monkey,/turf/unsimulated/floor{icon_state = "chapel"},/area/wizard_station) "cTu" = (/turf/unsimulated/floor{icon_state = "chapel"},/area/wizard_station) -"cTv" = (/obj/structure/rack,/obj/item/clothing/under/color/red,/obj/item/clothing/shoes/brown,/obj/item/clothing/suit/armor/vest,/obj/item/clothing/head/helmet/swat,/obj/item/weapon/gun/energy/laser,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) +"cTv" = (/obj/structure/rack,/obj/item/clothing/under/color/red,/obj/item/clothing/shoes/sneakers/brown,/obj/item/clothing/suit/armor/vest,/obj/item/clothing/head/helmet/swat,/obj/item/weapon/gun/energy/laser,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) "cTw" = (/turf/unsimulated/wall,/area/tdome/tdomeadmin) "cTx" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/general/visible{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology) "cTy" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/general/visible{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology) "cTz" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/engine,/area/toxins/xenobiology) -"cTA" = (/obj/structure/rack,/obj/item/clothing/under/color/green,/obj/item/clothing/shoes/brown,/obj/item/clothing/suit/armor/vest,/obj/item/clothing/head/helmet/swat,/obj/item/weapon/gun/energy/laser,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) +"cTA" = (/obj/structure/rack,/obj/item/clothing/under/color/green,/obj/item/clothing/shoes/sneakers/brown,/obj/item/clothing/suit/armor/vest,/obj/item/clothing/head/helmet/swat,/obj/item/weapon/gun/energy/laser,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) "cTB" = (/turf/unsimulated/floor{dir = 1; icon_state = "chapel"},/area/wizard_station) "cTC" = (/turf/unsimulated/floor{dir = 4; icon_state = "chapel"},/area/wizard_station) "cTD" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/door/poddoor/preopen{id = "xenobio6"; name = "containment blast door"},/turf/simulated/floor/engine,/area/toxins/xenobiology) @@ -9378,9 +9378,9 @@ "dyr" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows2"; dir = 1},/area/wizard_station) "dys" = (/obj/structure/stool/bed/chair{dir = 1},/obj/effect/landmark{name = "tdomeadmin"},/turf/unsimulated/floor{icon_state = "redyellowfull"; dir = 5},/area/tdome/tdomeadmin) "dyt" = (/mob/living/simple_animal/hostile/creature{name = "Experiment 35b"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/wizard_station) -"dyu" = (/obj/structure/rack,/obj/item/clothing/under/color/red,/obj/item/clothing/shoes/brown,/obj/item/clothing/suit/armor/tdome/red,/obj/item/clothing/head/helmet/thunderdome,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/melee/energy/sword/red,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) +"dyu" = (/obj/structure/rack,/obj/item/clothing/under/color/red,/obj/item/clothing/shoes/sneakers/brown,/obj/item/clothing/suit/armor/tdome/red,/obj/item/clothing/head/helmet/thunderdome,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/melee/energy/sword/red,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) "dyv" = (/obj/structure/shuttle/engine/heater,/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/plating,/area/syndicate_station/start) -"dyw" = (/obj/structure/rack,/obj/item/clothing/under/color/green,/obj/item/clothing/shoes/brown,/obj/item/clothing/suit/armor/tdome/green,/obj/item/clothing/head/helmet/thunderdome,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/melee/energy/sword/green,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) +"dyw" = (/obj/structure/rack,/obj/item/clothing/under/color/green,/obj/item/clothing/shoes/sneakers/brown,/obj/item/clothing/suit/armor/tdome/green,/obj/item/clothing/head/helmet/thunderdome,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/melee/energy/sword/green,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) "dyx" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 8},/area/wizard_station) "dyy" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 5},/area/wizard_station) "dyz" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows2"; dir = 8},/area/wizard_station) @@ -10217,7 +10217,7 @@ "dOy" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/mine/west_outpost) "dOz" = (/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/mine/west_outpost) "dOA" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/mine/west_outpost) -"dOB" = (/obj/machinery/mineral/equipment_locker,/turf/simulated/floor,/area/mine/living_quarters) +"dOB" = (/obj/machinery/mineral/equipment_vendor,/turf/simulated/floor,/area/mine/living_quarters) "dOC" = (/obj/structure/disposalpipe/segment,/turf/simulated/wall,/area/mine/production) "dOD" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "dOE" = (/obj/machinery/atmospherics/pipe/manifold{dir = 1},/turf/simulated/floor,/area/mine/west_outpost) @@ -10487,7 +10487,7 @@ "dTI" = (/obj/structure/closet/crate,/obj/machinery/alarm{pixel_y = 28},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/mine/production) "dTJ" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor{dir = 8; icon_state = "loadingarea"},/area/mine/production) "dTK" = (/obj/machinery/mineral/mint{input_dir = 4},/turf/simulated/floor,/area/mine/production) -"dTL" = (/obj/machinery/mineral/equipment_locker,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/mine/production) +"dTL" = (/obj/machinery/mineral/equipment_vendor,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/mine/production) "dTM" = (/obj/machinery/atmospherics/pipe/simple,/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/mine/production) "dTN" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/o2{pixel_x = 2; pixel_y = 2},/obj/item/weapon/storage/firstaid/regular,/turf/simulated/floor{dir = 4; icon_state = "whiteblue"},/area/mine/living_quarters) "dTO" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple{dir = 4; level = 1},/turf/simulated/floor/plating,/area/mine/production) From 952086a6d1e7fe63fd23cbe03cfb6c6450b81aa4 Mon Sep 17 00:00:00 2001 From: Menshin Date: Fri, 16 May 2014 15:50:32 +0200 Subject: [PATCH 139/185] Re-adding missing hivelord core sprite (fix courtesy of Nerolat). --- icons/obj/food.dmi | Bin 88672 -> 88817 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/obj/food.dmi b/icons/obj/food.dmi index 3619504282e9a39ae30f0795fbec5692265b4458..a2c7a00a64731c907d8cccf81a95ab37733c6253 100644 GIT binary patch delta 14959 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 Date: Fri, 16 May 2014 15:04:08 +0100 Subject: [PATCH 140/185] Fixed errors on the MiniStation map. --- _maps/map_files/MiniStation/MiniStation.dmm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/_maps/map_files/MiniStation/MiniStation.dmm b/_maps/map_files/MiniStation/MiniStation.dmm index b06a3e861d5..610489370be 100644 --- a/_maps/map_files/MiniStation/MiniStation.dmm +++ b/_maps/map_files/MiniStation/MiniStation.dmm @@ -2257,14 +2257,14 @@ "aRu" = (/turf/unsimulated/floor{dir = 8; icon_state = "carpetside"},/area/wizard_station) "aRv" = (/obj/effect/landmark/start{name = "wizard"},/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/wizard_station) "aRw" = (/turf/unsimulated/floor{dir = 4; icon_state = "carpetside"},/area/wizard_station) -"aRx" = (/obj/structure/rack,/obj/item/clothing/under/color/red,/obj/item/clothing/shoes/brown,/obj/item/clothing/suit/armor/tdome/red,/obj/item/clothing/head/helmet/thunderdome,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/melee/energy/sword/red,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) +"aRx" = (/obj/structure/rack,/obj/item/clothing/under/color/red,/obj/item/clothing/shoes/sneakers/brown,/obj/item/clothing/suit/armor/tdome/red,/obj/item/clothing/head/helmet/thunderdome,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/melee/energy/sword/red,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) "aRy" = (/obj/machinery/door/poddoor{id = "thunderdomegen"; name = "General Supply"},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) "aRz" = (/obj/effect/landmark{name = "tdome2"},/turf/unsimulated/floor{name = "plating"},/area/tdome/tdome2) "aRA" = (/obj/machinery/door/poddoor{id = "thunderdome"; name = "Thunderdome Blast Door"},/turf/unsimulated/floor{name = "plating"},/area/tdome) "aRB" = (/turf/simulated/floor{icon_state = "red"; dir = 8},/area/tdome) "aRC" = (/turf/simulated/floor{icon_state = "green"; dir = 4},/area/tdome) "aRD" = (/obj/effect/landmark{name = "tdome1"},/turf/unsimulated/floor{name = "plating"},/area/tdome/tdome1) -"aRE" = (/obj/structure/rack,/obj/item/clothing/under/color/green,/obj/item/clothing/shoes/brown,/obj/item/clothing/suit/armor/tdome/green,/obj/item/clothing/head/helmet/thunderdome,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/melee/energy/sword/green,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) +"aRE" = (/obj/structure/rack,/obj/item/clothing/under/color/green,/obj/item/clothing/shoes/sneakers/brown,/obj/item/clothing/suit/armor/tdome/green,/obj/item/clothing/head/helmet/thunderdome,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/melee/energy/sword/green,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) "aRF" = (/obj/machinery/sleeper{icon_state = "sleeper-open"; dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) "aRG" = (/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"; name = "Infirmary"; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) "aRH" = (/obj/machinery/door/window{dir = 8; name = "Tool Storage"; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) @@ -2323,12 +2323,12 @@ "aSI" = (/turf/unsimulated/floor{dir = 8; icon_state = "chapel"},/area/wizard_station) "aSJ" = (/obj/effect/decal/cleanable/blood,/mob/living/carbon/monkey,/turf/unsimulated/floor{icon_state = "chapel"},/area/wizard_station) "aSK" = (/turf/unsimulated/floor{icon_state = "chapel"},/area/wizard_station) -"aSL" = (/obj/structure/rack,/obj/item/clothing/under/color/red,/obj/item/clothing/shoes/brown,/obj/item/clothing/suit/armor/vest,/obj/item/clothing/head/helmet/swat,/obj/item/weapon/gun/energy/laser,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) +"aSL" = (/obj/structure/rack,/obj/item/clothing/under/color/red,/obj/item/clothing/shoes/sneakers/brown,/obj/item/clothing/suit/armor/vest,/obj/item/clothing/head/helmet/swat,/obj/item/weapon/gun/energy/laser,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) "aSM" = (/turf/unsimulated/wall,/area/tdome/tdomeadmin) "aSN" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 8},/area/tdome/tdomeadmin) "aSO" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows2"; dir = 8},/area/tdome/tdomeadmin) "aSP" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 4},/area/tdome/tdomeadmin) -"aSQ" = (/obj/structure/rack,/obj/item/clothing/under/color/green,/obj/item/clothing/shoes/brown,/obj/item/clothing/suit/armor/vest,/obj/item/clothing/head/helmet/swat,/obj/item/weapon/gun/energy/laser,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) +"aSQ" = (/obj/structure/rack,/obj/item/clothing/under/color/green,/obj/item/clothing/shoes/sneakers/brown,/obj/item/clothing/suit/armor/vest,/obj/item/clothing/head/helmet/swat,/obj/item/weapon/gun/energy/laser,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) "aSR" = (/mob/living/simple_animal/hostile/creature{name = "Experiment 35b"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/wizard_station) "aSS" = (/turf/unsimulated/floor{dir = 1; icon_state = "chapel"},/area/wizard_station) "aST" = (/turf/unsimulated/floor{dir = 4; icon_state = "chapel"},/area/wizard_station) From d1cb54572c7c6fe01d573d446a537a6ca524159a Mon Sep 17 00:00:00 2001 From: Menshin Date: Fri, 16 May 2014 16:06:00 +0200 Subject: [PATCH 141/185] Changelog addition for the powernet refactoring. --- html/changelog.html | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/html/changelog.html b/html/changelog.html index 9131c58f239..6fb551c8fb3 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -53,6 +53,18 @@ should be listed in the changelog upon commit tho. Thanks. --> +
+

16 May 2014

+

Menshin updated:

+
    +
  • Thanks to Nanotrasen's Engineering division, the power wiring of the station has a received a complete overhaul. Here are the highlight features in CentCom report :
  • +
  • Improved way of connecting cables! Finished is the time of "laying and praying" : it's now as simple as matching ends of each cables!
  • +
  • Unified way of connecting machines! Every machine is connected to a powernet through a node cable (it still needs to be anchored to receive power though)!
  • +
  • Lots of improvements in the cable cutting tools! Gone is the odd magic of physically separated yet still connected powernets (contact CentCom Engineering Division if you still witness something weird, we always have a fired form ready for our engineers!)!
  • +
  • Any conscientious (or not!) Station Engineer may check an "updated wiring manual" at http://www.tgstation13.org/wiki/Wiring#Power_Wires
  • +
+
+

14 May 2014

Ikarrus updated:

From d1aade90f017c712adb553819aa3a2d020b40f43 Mon Sep 17 00:00:00 2001 From: Perakp Date: Fri, 16 May 2014 23:46:52 +0300 Subject: [PATCH 142/185] - Fixes Astar being stupid with maxnodes - Diagonal movement now costs whatever sqrt(2) rounds to. - Fixes #3665 --- code/defines/procs/AStar.dm | 8 ++++---- code/game/turfs/turf.dm | 4 +--- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/code/defines/procs/AStar.dm b/code/defines/procs/AStar.dm index 26cf272df9c..d5912a1c163 100644 --- a/code/defines/procs/AStar.dm +++ b/code/defines/procs/AStar.dm @@ -122,7 +122,8 @@ proc var/closed[] = new() var/path[] start = get_turf(start) - if(!start) return 0 + if(!start) + return 0 open.Enqueue(new /PathNode(start,null,0,call(start,dist)(end))) @@ -166,10 +167,7 @@ proc continue open.Enqueue(new /PathNode(d,cur,ng,call(d,dist)(end),cur.nt+1)) - if(maxnodes && open.L.len > maxnodes) - open.L.Cut(open.L.len) } - var/PathNode/temp while(!open.IsEmpty()) temp = open.Dequeue() @@ -179,6 +177,8 @@ proc temp.bestF = 0 closed.Cut(closed.len) + if(path && maxnodes && path.len > maxnodes+1) + return 0 if(path) for(var/i = 1; i <= path.len/2; i++) path.Swap(i,path.len-i+1) diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index d0150d440d2..0073ac1f40f 100644 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -20,7 +20,6 @@ var/blocks_air = 0 var/icon_old = null - var/pathweight = 1 flags = 0 @@ -271,8 +270,7 @@ /turf/proc/Distance(turf/t) if(get_dist(src,t) == 1) var/cost = (src.x - t.x) * (src.x - t.x) + (src.y - t.y) * (src.y - t.y) - cost *= (pathweight+t.pathweight)/2 - return cost + return sqrt(cost) else return get_dist(src,t) From d0015287deaaf5b8ed7d562ebf332faa6964a793 Mon Sep 17 00:00:00 2001 From: Hornygranny Date: Fri, 16 May 2014 14:30:04 -0700 Subject: [PATCH 143/185] carved books now turn into storage items --- code/datums/supplypacks.dm | 4 +- code/game/jobs/job/civilian_chaplain.dm | 6 +- .../objects/items/weapons/storage/bible.dm | 121 ------------------ .../mission_code/stationCollision.dm | 2 +- code/modules/clothing/suits/jobs.dm | 4 +- code/modules/clothing/suits/miscellaneous.dm | 4 +- code/modules/library/lib_items.dm | 45 ++----- code/modules/library/lib_machines.dm | 2 +- tgstation.dme | 2 +- 9 files changed, 24 insertions(+), 166 deletions(-) delete mode 100644 code/game/objects/items/weapons/storage/bible.dm diff --git a/code/datums/supplypacks.dm b/code/datums/supplypacks.dm index 10513df6032..c29b5dcff44 100644 --- a/code/datums/supplypacks.dm +++ b/code/datums/supplypacks.dm @@ -921,8 +921,8 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine name = "Religious Supplies Crate" contains = list(/obj/item/weapon/reagent_containers/food/drinks/bottle/holywater, /obj/item/weapon/reagent_containers/food/drinks/bottle/holywater, - /obj/item/weapon/storage/bible/booze, - /obj/item/weapon/storage/bible/booze, + /obj/item/weapon/storage/book/bible/booze, + /obj/item/weapon/storage/book/bible/booze, /obj/item/clothing/suit/chaplain_hoodie, /obj/item/clothing/head/chaplain_hood, /obj/item/clothing/suit/chaplain_hoodie, diff --git a/code/game/jobs/job/civilian_chaplain.dm b/code/game/jobs/job/civilian_chaplain.dm index 23559197617..b68e514ef6e 100644 --- a/code/game/jobs/job/civilian_chaplain.dm +++ b/code/game/jobs/job/civilian_chaplain.dm @@ -27,7 +27,7 @@ Chaplain //Bible itemstates var/global/list/bibleitemstates = list("bible", "koran", "scrapbook", "bible", "bible", "bible", "syringe_kit", "syringe_kit", "syringe_kit", "syringe_kit", "syringe_kit", "kingyellow", "ithaqua", "scientology", "melted", "necronomicon") -/datum/job/chaplain/proc/setupbiblespecifics(var/obj/item/weapon/storage/bible/B, var/mob/living/carbon/human/H) +/datum/job/chaplain/proc/setupbiblespecifics(var/obj/item/weapon/storage/book/bible/B, var/mob/living/carbon/human/H) switch(B.icon_state) if("honk1","honk2") new /obj/item/weapon/grown/bananapeel(B) @@ -62,7 +62,7 @@ Chaplain var/iconi = text2num(href_list["seticon"]) var/biblename = biblenames[iconi] - var/obj/item/weapon/storage/bible/B = locate(href_list["bible"]) + var/obj/item/weapon/storage/book/bible/B = locate(href_list["bible"]) B.icon_state = biblestates[iconi] B.item_state = bibleitemstates[iconi] @@ -84,7 +84,7 @@ Chaplain H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/chaplain(H), slot_w_uniform) H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/black(H), slot_shoes) - var/obj/item/weapon/storage/bible/B = new /obj/item/weapon/storage/bible/booze(H) + var/obj/item/weapon/storage/book/bible/B = new /obj/item/weapon/storage/book/bible/booze(H) spawn(0) var/religion_name = "Christianity" var/new_religion = copytext(sanitize(input(H, "You are the Chaplain. Would you like to change your religion? Default is Christianity, in SPACE.", "Name change", religion_name)),1,MAX_NAME_LEN) diff --git a/code/game/objects/items/weapons/storage/bible.dm b/code/game/objects/items/weapons/storage/bible.dm deleted file mode 100644 index 4645aea2613..00000000000 --- a/code/game/objects/items/weapons/storage/bible.dm +++ /dev/null @@ -1,121 +0,0 @@ -/obj/item/weapon/storage/bible - name = "bible" - desc = "Apply to head repeatedly." - icon_state ="bible" - throw_speed = 2 - throw_range = 5 - w_class = 3.0 - var/mob/affecting = null - var/deity_name = "Christ" - -/obj/item/weapon/storage/bible/booze - name = "bible" - desc = "To be applied to the head repeatedly." - icon_state ="bible" - -/obj/item/weapon/storage/bible/booze/New() - ..() - new /obj/item/weapon/reagent_containers/food/drinks/beer(src) - new /obj/item/weapon/reagent_containers/food/drinks/beer(src) - new /obj/item/weapon/spacecash(src) - new /obj/item/weapon/spacecash(src) - new /obj/item/weapon/spacecash(src) - -/obj/item/weapon/storage/bible/proc/bless(mob/living/carbon/M as mob) - if(ishuman(M)) - var/mob/living/carbon/human/H = M - var/heal_amt = 10 - for(var/obj/item/organ/limb/affecting in H.organs) - if(affecting.status == ORGAN_ORGANIC) //No Bible can heal a robotic arm! - if(affecting.heal_damage(heal_amt, heal_amt, 0)) - H.update_damage_overlays(0) - return - -/obj/item/weapon/storage/bible/attack(mob/living/M as mob, mob/living/user as mob) - - var/chaplain = 0 - if(user.mind && (user.mind.assigned_role == "Chaplain")) - chaplain = 1 - - add_logs(user, M, "attacked", object="[src.name]") - - if (!(istype(user, /mob/living/carbon/human) || ticker) && ticker.mode.name != "monkey") - user << "\red You don't have the dexterity to do this!" - return - if(!chaplain) - user << "\red The book sizzles in your hands." - user.take_organ_damage(0,10) - return - - if ((CLUMSY in user.mutations) && prob(50)) - user << "\red The [src] slips out of your hand and hits your head." - user.take_organ_damage(10) - user.Paralyse(20) - return - -// if(..() == BLOCKED) -// return - - if (M.stat !=2) - if(M.mind && (M.mind.assigned_role == "Chaplain")) - user << "\red You can't heal yourself!" - return - /*if((M.mind in ticker.mode.cult) && (prob(20))) - M << "\red The power of [src.deity_name] clears your mind of heresy!" - user << "\red You see how [M]'s eyes become clear, the cult no longer holds control over him!" - ticker.mode.remove_cultist(M.mind)*/ - if ((istype(M, /mob/living/carbon/human) && prob(60))) - bless(M) - if(ishuman(M)) - var/mob/living/carbon/human/H = M - var/message_halt = 0 - for(var/obj/item/organ/limb/affecting in H.organs) - if(affecting.status == ORGAN_ORGANIC) - if(message_halt == 0) - for(var/mob/O in viewers(M, null)) - O.show_message(text("\red [] heals [] with the power of [src.deity_name]!", user, M), 1) - M << "\red May the power of [src.deity_name] compel you to be healed!" - playsound(src.loc, "punch", 25, 1, -1) - message_halt = 1 - else - src << "[src.deity_name] refuses to heal this metalic taint!" - return - - - - - else - if(ishuman(M) && !istype(M:head, /obj/item/clothing/head/helmet)) - M.adjustBrainLoss(10) - M << "\red You feel dumber." - for(var/mob/O in viewers(M, null)) - O.show_message(text("\red [] beats [] over the head with []!", user, M, src), 1) - playsound(src.loc, "punch", 25, 1, -1) - - else if(M.stat == 2) - for(var/mob/O in viewers(M, null)) - O.show_message(text("\red [] smacks []'s lifeless corpse with [].", user, M, src), 1) - playsound(src.loc, "punch", 25, 1, -1) - return - -/obj/item/weapon/storage/bible/afterattack(atom/A, mob/user as mob, proximity) - if(!proximity) return - if (istype(A, /turf/simulated/floor)) - user << "\blue You hit the floor with the bible." - if(user.mind && (user.mind.assigned_role == "Chaplain")) - call(/obj/effect/rune/proc/revealrunes)(src) - if(user.mind && (user.mind.assigned_role == "Chaplain")) - if(A.reagents && A.reagents.has_reagent("water")) //blesses all the water in the holder - user << "\blue You bless [A]." - var/water2holy = A.reagents.get_reagent_amount("water") - A.reagents.del_reagent("water") - A.reagents.add_reagent("holywater",water2holy) - if(A.reagents && A.reagents.has_reagent("unholywater")) //yeah yeah, copy pasted code - sue me - user << "\blue You purify [A]." - var/unholy2clean = A.reagents.get_reagent_amount("unholywater") - A.reagents.del_reagent("unholywater") - A.reagents.add_reagent("cleaner",unholy2clean) //it cleans their soul, get it? I'll get my coat... - -/obj/item/weapon/storage/bible/attackby(obj/item/weapon/W as obj, mob/user as mob) - playsound(src.loc, "rustle", 50, 1, -5) - ..() diff --git a/code/modules/awaymissions/mission_code/stationCollision.dm b/code/modules/awaymissions/mission_code/stationCollision.dm index 2f4cdfb57ac..eeea744eb1b 100644 --- a/code/modules/awaymissions/mission_code/stationCollision.dm +++ b/code/modules/awaymissions/mission_code/stationCollision.dm @@ -47,7 +47,7 @@ name = "Safecode hint spawner" /obj/effect/landmark/sc_bible_spawner/New() - var/obj/item/weapon/storage/bible/B = new /obj/item/weapon/storage/bible/booze(src.loc) + var/obj/item/weapon/storage/book/bible/B = new /obj/item/weapon/storage/book/bible/booze(src.loc) B.name = "The Holy book of the Geometer" B.deity_name = "Narsie" B.icon_state = "melted" diff --git a/code/modules/clothing/suits/jobs.dm b/code/modules/clothing/suits/jobs.dm index bb12a94f227..b8eeb858a6b 100644 --- a/code/modules/clothing/suits/jobs.dm +++ b/code/modules/clothing/suits/jobs.dm @@ -29,7 +29,7 @@ icon_state = "chaplain_hoodie" item_state = "chaplain_hoodie" body_parts_covered = CHEST|GROIN|LEGS|ARMS - allowed = list(/obj/item/weapon/storage/bible, /obj/item/weapon/nullrod, /obj/item/weapon/reagent_containers/food/drinks/bottle/holywater, /obj/item/weapon/storage/fancy/candle_box, /obj/item/candle, /obj/item/weapon/tank/emergency_oxygen) + allowed = list(/obj/item/weapon/storage/book/bible, /obj/item/weapon/nullrod, /obj/item/weapon/reagent_containers/food/drinks/bottle/holywater, /obj/item/weapon/storage/fancy/candle_box, /obj/item/candle, /obj/item/weapon/tank/emergency_oxygen) //Chaplain /obj/item/clothing/suit/nun @@ -39,7 +39,7 @@ item_state = "nun" body_parts_covered = CHEST|GROIN|LEGS|ARMS|HANDS flags_inv = HIDESHOES|HIDEJUMPSUIT - allowed = list(/obj/item/weapon/storage/bible, /obj/item/weapon/nullrod, /obj/item/weapon/reagent_containers/food/drinks/bottle/holywater, /obj/item/weapon/storage/fancy/candle_box, /obj/item/candle, /obj/item/weapon/tank/emergency_oxygen) + allowed = list(/obj/item/weapon/storage/book/bible, /obj/item/weapon/nullrod, /obj/item/weapon/reagent_containers/food/drinks/bottle/holywater, /obj/item/weapon/storage/fancy/candle_box, /obj/item/candle, /obj/item/weapon/tank/emergency_oxygen) //Chef /obj/item/clothing/suit/chef diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm index d8e5aa92500..3209ec49b64 100644 --- a/code/modules/clothing/suits/miscellaneous.dm +++ b/code/modules/clothing/suits/miscellaneous.dm @@ -120,7 +120,7 @@ item_state = "imperium_monk" body_parts_covered = CHEST|GROIN|LEGS|ARMS flags_inv = HIDESHOES|HIDEJUMPSUIT - allowed = list(/obj/item/weapon/storage/bible, /obj/item/weapon/nullrod, /obj/item/weapon/reagent_containers/food/drinks/bottle/holywater, /obj/item/weapon/storage/fancy/candle_box, /obj/item/candle, /obj/item/weapon/tank/emergency_oxygen) + allowed = list(/obj/item/weapon/storage/book/bible, /obj/item/weapon/nullrod, /obj/item/weapon/reagent_containers/food/drinks/bottle/holywater, /obj/item/weapon/storage/fancy/candle_box, /obj/item/candle, /obj/item/weapon/tank/emergency_oxygen) /obj/item/clothing/suit/chickensuit @@ -148,7 +148,7 @@ item_state = "w_suit" body_parts_covered = CHEST|GROIN|LEGS|ARMS flags_inv = HIDEJUMPSUIT - allowed = list(/obj/item/weapon/storage/bible, /obj/item/weapon/nullrod, /obj/item/weapon/reagent_containers/food/drinks/bottle/holywater, /obj/item/weapon/storage/fancy/candle_box, /obj/item/candle, /obj/item/weapon/tank/emergency_oxygen) + allowed = list(/obj/item/weapon/storage/book/bible, /obj/item/weapon/nullrod, /obj/item/weapon/reagent_containers/food/drinks/bottle/holywater, /obj/item/weapon/storage/fancy/candle_box, /obj/item/candle, /obj/item/weapon/tank/emergency_oxygen) diff --git a/code/modules/library/lib_items.dm b/code/modules/library/lib_items.dm index 03df5c1fae9..64dc1e5da8e 100644 --- a/code/modules/library/lib_items.dm +++ b/code/modules/library/lib_items.dm @@ -179,22 +179,10 @@ var/author //Who wrote the thing, can be changed by pen or PC. It is not automatically assigned var/unique = 0 //0 - Normal book, 1 - Should not be treated as normal book, unable to be copied, unable to be modified var/title //The real name of the book. - var/carved = 0 //Has the book been hollowed out for use as a secret storage item? - var/obj/item/store //What's in the book? var/window_size = null // Specific window size for the book, i.e: "1920x1080", Size x Width /obj/item/weapon/book/attack_self(mob/user) - if(carved) - if(store) - user << "[store] falls out of [title]!" - store.loc = get_turf(loc) - store = null - return - else - user << "The pages of [title] have been cut out!" - return - if(is_blind(user)) return @@ -207,23 +195,6 @@ /obj/item/weapon/book/attackby(obj/item/I, mob/user) - if(carved) - if(!store) - if(I.w_class < 3) - if(!user.drop_item()) - user << "\The [I] is stuck to your hand, you cannot put it in [title]!" - return - I.loc = src - store = I - user << "You put [I] in [title]." - return - else - user << "[I] won't fit in [title]." - return - else - user << "There's already something in [title]!" - return - if(istype(I, /obj/item/weapon/pen)) if(is_blind(user)) return @@ -288,13 +259,21 @@ user << "[I]'s screen flashes: 'Book stored in buffer. Title added to general inventory.'" else if(istype(I, /obj/item/weapon/kitchenknife) || istype(I, /obj/item/weapon/wirecutters)) - if(carved) - return user << "You begin to carve out [title]." if(do_after(user, 30)) user << "You carve out the pages from [title]! You didn't want to read it anyway." - carved = 1 - return + var/obj/item/weapon/storage/book/B = new + B.name = src.name + B.title = src.title + if(user.l_hand == src || user.r_hand == src) + qdel(src) + user.put_in_hands(B) + return + else + B.loc = src.loc + qdel(src) + return + return else ..() diff --git a/code/modules/library/lib_machines.dm b/code/modules/library/lib_machines.dm index e0e3b36e19f..61abae5d23a 100644 --- a/code/modules/library/lib_machines.dm +++ b/code/modules/library/lib_machines.dm @@ -280,7 +280,7 @@ datum/borrowbook // Datum used to keep track of who has borrowed what when and f if("6") if(!bibledelay) - var/obj/item/weapon/storage/bible/B = new /obj/item/weapon/storage/bible(src.loc) + var/obj/item/weapon/storage/book/bible/B = new /obj/item/weapon/storage/book/bible(src.loc) if(ticker && ( ticker.Bible_icon_state && ticker.Bible_item_state) ) B.icon_state = ticker.Bible_icon_state B.item_state = ticker.Bible_item_state diff --git a/tgstation.dme b/tgstation.dme index 0094e83fc6b..5a9e33a4029 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -588,7 +588,7 @@ #include "code\game\objects\items\weapons\storage\backpack.dm" #include "code\game\objects\items\weapons\storage\bags.dm" #include "code\game\objects\items\weapons\storage\belt.dm" -#include "code\game\objects\items\weapons\storage\bible.dm" +#include "code\game\objects\items\weapons\storage\book.dm" #include "code\game\objects\items\weapons\storage\boxes.dm" #include "code\game\objects\items\weapons\storage\briefcase.dm" #include "code\game\objects\items\weapons\storage\fancy.dm" From 2552946fd5aa22c9e4a7eced0f12411846837eb4 Mon Sep 17 00:00:00 2001 From: Hornygranny Date: Fri, 16 May 2014 14:43:19 -0700 Subject: [PATCH 144/185] forgot to include the fucking book itself --- .../objects/items/weapons/storage/book.dm | 134 ++++++++++++++++++ 1 file changed, 134 insertions(+) create mode 100644 code/game/objects/items/weapons/storage/book.dm diff --git a/code/game/objects/items/weapons/storage/book.dm b/code/game/objects/items/weapons/storage/book.dm new file mode 100644 index 00000000000..fbb71c3c486 --- /dev/null +++ b/code/game/objects/items/weapons/storage/book.dm @@ -0,0 +1,134 @@ +/obj/item/weapon/storage/book + name = "hollowed book" + desc = "I guess someone didn't like it." + icon = 'icons/obj/library.dmi' + icon_state ="book" + throw_speed = 2 + throw_range = 5 + w_class = 3.0 + var/title = "book" +/obj/item/weapon/storage/book/attack_self(mob/user) + user << "The pages of [title] have been cut out!" + +/obj/item/weapon/storage/book/bible + name = "bible" + desc = "Apply to head repeatedly." + icon = 'icons/obj/storage.dmi' + icon_state ="bible" + var/mob/affecting = null + var/deity_name = "Christ" + +/obj/item/weapon/storage/book/bible/booze + name = "bible" + desc = "To be applied to the head repeatedly." + icon_state ="bible" + +/obj/item/weapon/storage/book/bible/booze/New() + ..() + new /obj/item/weapon/reagent_containers/food/drinks/beer(src) + new /obj/item/weapon/reagent_containers/food/drinks/beer(src) + new /obj/item/weapon/spacecash(src) + new /obj/item/weapon/spacecash(src) + new /obj/item/weapon/spacecash(src) + +/obj/item/weapon/storage/book/bible/attack_self(mob/user) + return + +/obj/item/weapon/storage/book/bible/proc/bless(mob/living/carbon/M as mob) + if(ishuman(M)) + var/mob/living/carbon/human/H = M + var/heal_amt = 10 + for(var/obj/item/organ/limb/affecting in H.organs) + if(affecting.status == ORGAN_ORGANIC) //No Bible can heal a robotic arm! + if(affecting.heal_damage(heal_amt, heal_amt, 0)) + H.update_damage_overlays(0) + return + +/obj/item/weapon/storage/book/bible/attack(mob/living/M as mob, mob/living/user as mob) + + var/chaplain = 0 + if(user.mind && (user.mind.assigned_role == "Chaplain")) + chaplain = 1 + + add_logs(user, M, "attacked", object="[src.name]") + + if (!(istype(user, /mob/living/carbon/human) || ticker) && ticker.mode.name != "monkey") + user << "\red You don't have the dexterity to do this!" + return + if(!chaplain) + user << "\red The book sizzles in your hands." + user.take_organ_damage(0,10) + return + + if ((CLUMSY in user.mutations) && prob(50)) + user << "\red The [src] slips out of your hand and hits your head." + user.take_organ_damage(10) + user.Paralyse(20) + return + +// if(..() == BLOCKED) +// return + + if (M.stat !=2) + if(M.mind && (M.mind.assigned_role == "Chaplain")) + user << "\red You can't heal yourself!" + return + /*if((M.mind in ticker.mode.cult) && (prob(20))) + M << "\red The power of [src.deity_name] clears your mind of heresy!" + user << "\red You see how [M]'s eyes become clear, the cult no longer holds control over him!" + ticker.mode.remove_cultist(M.mind)*/ + if ((istype(M, /mob/living/carbon/human) && prob(60))) + bless(M) + if(ishuman(M)) + var/mob/living/carbon/human/H = M + var/message_halt = 0 + for(var/obj/item/organ/limb/affecting in H.organs) + if(affecting.status == ORGAN_ORGANIC) + if(message_halt == 0) + for(var/mob/O in viewers(M, null)) + O.show_message(text("\red [] heals [] with the power of [src.deity_name]!", user, M), 1) + M << "\red May the power of [src.deity_name] compel you to be healed!" + playsound(src.loc, "punch", 25, 1, -1) + message_halt = 1 + else + src << "[src.deity_name] refuses to heal this metallic taint!" + return + + + + + else + if(ishuman(M) && !istype(M:head, /obj/item/clothing/head/helmet)) + M.adjustBrainLoss(10) + M << "\red You feel dumber." + for(var/mob/O in viewers(M, null)) + O.show_message(text("\red [] beats [] over the head with []!", user, M, src), 1) + playsound(src.loc, "punch", 25, 1, -1) + + else if(M.stat == 2) + for(var/mob/O in viewers(M, null)) + O.show_message(text("\red [] smacks []'s lifeless corpse with [].", user, M, src), 1) + playsound(src.loc, "punch", 25, 1, -1) + return + +/obj/item/weapon/storage/book/bible/afterattack(atom/A, mob/user as mob, proximity) + if(!proximity) return + if (istype(A, /turf/simulated/floor)) + user << "\blue You hit the floor with the bible." + if(user.mind && (user.mind.assigned_role == "Chaplain")) + call(/obj/effect/rune/proc/revealrunes)(src) + if(user.mind && (user.mind.assigned_role == "Chaplain")) + if(A.reagents && A.reagents.has_reagent("water")) //blesses all the water in the holder + user << "\blue You bless [A]." + var/water2holy = A.reagents.get_reagent_amount("water") + A.reagents.del_reagent("water") + A.reagents.add_reagent("holywater",water2holy) + if(A.reagents && A.reagents.has_reagent("unholywater")) //yeah yeah, copy pasted code - sue me + user << "\blue You purify [A]." + var/unholy2clean = A.reagents.get_reagent_amount("unholywater") + A.reagents.del_reagent("unholywater") + A.reagents.add_reagent("cleaner",unholy2clean) //it cleans their soul, get it? I'll get my coat... + +/obj/item/weapon/storage/book/bible/attackby(obj/item/weapon/W as obj, mob/user as mob) + playsound(src.loc, "rustle", 50, 1, -5) + ..() \ No newline at end of file From 10b4e9e138967ae7e421c98b3de37128f9489e35 Mon Sep 17 00:00:00 2001 From: Hornygranny Date: Fri, 16 May 2014 15:22:37 -0700 Subject: [PATCH 145/185] Snowflake garbage removed --- code/game/objects/items/weapons/kitchen.dm | 179 +----------------- .../items/weapons/storage/briefcase.dm | 31 --- .../objects/items/weapons/storage/secure.dm | 36 ---- 3 files changed, 3 insertions(+), 243 deletions(-) diff --git a/code/game/objects/items/weapons/kitchen.dm b/code/game/objects/items/weapons/kitchen.dm index 6dd0b5ca2f2..4d0d01027d3 100644 --- a/code/game/objects/items/weapons/kitchen.dm +++ b/code/game/objects/items/weapons/kitchen.dm @@ -158,48 +158,18 @@ throw_speed = 3 throw_range = 7 w_class = 3.0 - attack_verb = list("bashed", "battered", "bludgeoned", "thrashed", "whacked") //I think the rollingpin attackby will end up ignoring this anyway. - -/obj/item/weapon/kitchen/rollingpin/attack(mob/living/M as mob, mob/living/user as mob) - if ((CLUMSY in user.mutations) && prob(50)) - user << "The [src] slips out of your hand and hits your head." - user.take_organ_damage(10) - user.Paralyse(2) - return - - add_logs(user, M, "attacked", object="[src.name]") - - var/t = user:zone_sel.selecting - if (t == "head") - if(ishuman(M)) - var/mob/living/carbon/human/H = M - if (H.stat < 2 && H.health < 50 && prob(90)) - // ******* Check - if (istype(H, /obj/item/clothing/head) && H.flags & 8 && prob(80)) - H << " The helmet protects you from being hit hard in the head!" - return - var/time = rand(2, 6) - if (prob(75)) - H.Paralyse(time) - else - H.Stun(time) - if(H.stat != 2) H.stat = 1 - user.visible_message("[H] has been knocked unconscious!", "You knock [H] unconscious!") - return - else - H.visible_message(" [user] tried to knock [H] unconscious!", " [user] tried to knock you unconscious!") - H.eye_blurry += 3 - - return ..() + attack_verb = list("bashed", "battered", "bludgeoned", "thrashed", "whacked") /* * Trays - Agouri */ + /obj/item/weapon/tray name = "tray" icon = 'icons/obj/food.dmi' icon_state = "tray" desc = "A metal tray to lay food on." + force = 8 throwforce = 10.0 throw_speed = 3 throw_range = 5 @@ -211,104 +181,6 @@ // w_class = 2 -- takes up 3 // w_class = 3 -- takes up 5 -/obj/item/weapon/tray/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob) - - // Drop all the things. All of them. - overlays.Cut() - for(var/obj/item/I in carrying) - I.loc = M.loc - carrying.Remove(I) - if(isturf(I.loc)) - spawn() - for(var/i = 1, i <= rand(1,2), i++) - if(I) - step(I, pick(NORTH,SOUTH,EAST,WEST)) - sleep(rand(2,4)) - - - if((CLUMSY in user.mutations) && prob(50)) //What if he's a clown? - user << " You accidentally slam yourself with the [src]!" - user.Weaken(1) - user.take_organ_damage(2) - if(prob(50)) - playsound(M, 'sound/items/trayhit1.ogg', 50, 1) - return - else - playsound(M, 'sound/items/trayhit2.ogg', 50, 1) //sound playin' - return //it always returns, but I feel like adding an extra return just for safety's sakes. EDIT; Oh well I won't :3 - - add_logs(user, M, "attacked", object="[src.name]") - - if(istype(M, /mob/living/carbon/human)) - - var/mob/living/carbon/human/H = M ///////////////////////////////////// /Let's have this ready for later. - - if(prob(50)) - playsound(M, 'sound/items/trayhit1.ogg', 50, 1) - else - playsound(M, 'sound/items/trayhit2.ogg', 50, 1) - - - if(prob(33)) - src.add_blood(H) - var/turf/location = H.loc - if (istype(location, /turf/simulated)) //Addin' blood! At least on the floor. - location.add_blood(H) - - if(!(user.zone_sel.selecting == ("eyes" || "head"))) //////////////hitting anything else other than the eyes - - H.visible_message("[user] slams [H] with the tray!", \ - "[user] slams [H] with the tray!") - - if(prob(15)) - M.Weaken(3) - M.take_organ_damage(3) - return - else - M.take_organ_damage(5) - return - - - if((H.head && H.head.flags & HEADCOVERSEYES) || (H.wear_mask && H.wear_mask.flags & MASKCOVERSEYES) || (H.glasses && H.glasses.flags & GLASSESCOVERSEYES)) - if(prob(33)) - if (H.wear_mask) - H.wear_mask.add_blood(H) //adding blood on the items. - if (H.head) - H.head.add_blood(H) - if (H.glasses && prob(33)) - H.glasses.add_blood(H) - - - M.visible_message("[user] slams [M] in the face with the tray!", \ - "[user] slams [M] in the face with the tray, against your mask!") - - if(prob(10)) - M.Stun(rand(1,3)) - M.take_organ_damage(3) - return - else - M.take_organ_damage(5) - return - - else //No eye or head protection, tough luck! - - M.visible_message("[user] slams [M] in the face with the tray!", \ - "[user] slams [M] in the face with the tray!") - if(prob(30)) - M.Stun(rand(2,4)) - M.take_organ_damage(4) - return - else - M.take_organ_damage(8) - if(prob(30)) - M.Weaken(2) - return - return - - else - ..() - - /* ===============~~~~~================================~~~~~==================== = = @@ -374,48 +246,3 @@ if(I) step(I, pick(NORTH,SOUTH,EAST,WEST)) sleep(rand(2,4)) - - - - - -///////////////////////////////////////////////////////////////////////////////////////// -//Enough with the violent stuff, here's what happens if you try putting food on it -///////////////////////////////////////////////////////////////////////////////////////////// - - - -/*/obj/item/weapon/tray/attackby(obj/item/weapon/W as obj, mob/user as mob) - if(istype(W,/obj/item/weapon/kitchen/utensil/fork)) - if (W.icon_state == "forkloaded") - user << "\red You already have omelette on your fork." - return - W.icon = 'icons/obj/kitchen.dmi' - W.icon_state = "forkloaded" - viewers(3,user) << "[user] takes a piece of omelette with his fork!" - reagents.remove_reagent("nutriment", 1) - if (reagents.total_volume <= 0) - qdel(src)*/ - - -/* if (prob(33)) - var/turf/location = H.loc - if (istype(location, /turf/simulated)) - location.add_blood(H) - if (H.wear_mask) - H.wear_mask.add_blood(H) - if (H.head) - H.head.add_blood(H) - if (H.glasses && prob(33)) - H.glasses.add_blood(H) - if (istype(user, /mob/living/carbon/human)) - var/mob/living/carbon/human/user2 = user - if (user2.gloves) - user2.gloves.add_blood(H) - else - user2.add_blood(H) - if (prob(15)) - if (user2.wear_suit) - user2.wear_suit.add_blood(H) - else if (user2.w_uniform) - user2.w_uniform.add_blood(H)*/ diff --git a/code/game/objects/items/weapons/storage/briefcase.dm b/code/game/objects/items/weapons/storage/briefcase.dm index 11a730b576e..94ce4c9fb7b 100644 --- a/code/game/objects/items/weapons/storage/briefcase.dm +++ b/code/game/objects/items/weapons/storage/briefcase.dm @@ -19,34 +19,3 @@ new /obj/item/weapon/paper(src) new /obj/item/weapon/paper(src) new /obj/item/weapon/pen(src) - -/obj/item/weapon/storage/briefcase/attack(mob/living/M as mob, mob/living/user as mob) - //..() - - if ((CLUMSY in user.mutations) && prob(50)) - user << "\red The [src] slips out of your hand and hits your head." - user.take_organ_damage(10) - user.Paralyse(2) - return - - add_logs(user, M, "attacked", object="[src.name]") - - if (M.stat < 2 && M.health < 50 && prob(90)) - var/mob/H = M - // ******* Check - if ((istype(H, /mob/living/carbon/human) && istype(H, /obj/item/clothing/head) && H.flags & 8 && prob(80))) - M << "\red The helmet protects you from being hit hard in the head!" - return - var/time = rand(2, 6) - if (prob(75)) - M.Paralyse(time) - else - M.Stun(time) - if(M.stat != 2) M.stat = 1 - for(var/mob/O in viewers(M, null)) - O.show_message(text("\red [] has been knocked unconscious!", M), 1, "\red You hear someone fall.", 2) - else - M << text("\red [] tried to knock you unconcious!",user) - M.eye_blurry += 3 - - return diff --git a/code/game/objects/items/weapons/storage/secure.dm b/code/game/objects/items/weapons/storage/secure.dm index fe4ced687cc..ba36a039749 100644 --- a/code/game/objects/items/weapons/storage/secure.dm +++ b/code/game/objects/items/weapons/storage/secure.dm @@ -181,42 +181,6 @@ src.add_fingerprint(user) return - //I consider this worthless but it isn't my code so whatever. Remove or uncomment. - /*attack(mob/M as mob, mob/living/user as mob) - if ((CLUMSY in user.mutations) && prob(50)) - user << "\red The [src] slips out of your hand and hits your head." - user.take_organ_damage(10) - user.Paralyse(2) - return - - M.attack_log += text("\[[time_stamp()]\] Has been attacked with [src.name] by [user.name] ([user.ckey])") - user.attack_log += text("\[[time_stamp()]\] Used the [src.name] to attack [M.name] ([M.ckey])") - - log_attack("[user.name] ([user.ckey]) attacked [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])") - - var/t = user:zone_sel.selecting - if (t == "head") - if(ishuman(M)) - var/mob/living/carbon/human/H = M - if (H.stat < 2 && H.health < 50 && prob(90)) - // ******* Check - if (istype(H, /obj/item/clothing/head) && H.flags & 8 && prob(80)) - H << "\red The helmet protects you from being hit hard in the head!" - return - var/time = rand(2, 6) - if (prob(75)) - H.Paralyse(time) - else - H.Stun(time) - if(H.stat != 2) H.stat = 1 - for(var/mob/O in viewers(H, null)) - O.show_message(text("\red [] has been knocked unconscious!", H), 1, "\red You hear someone fall.", 2) - else - H << text("\red [] tried to knock you unconcious!",user) - H.eye_blurry += 3 - - return*/ - // ----------------------------- // Secure Safe // ----------------------------- From 937170994db14bed3e51c0c1e07e2968694b70bf Mon Sep 17 00:00:00 2001 From: Hornygranny Date: Fri, 16 May 2014 16:36:53 -0700 Subject: [PATCH 146/185] tray hit restored to glory --- code/game/objects/items/weapons/kitchen.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/game/objects/items/weapons/kitchen.dm b/code/game/objects/items/weapons/kitchen.dm index 4d0d01027d3..a35d7489767 100644 --- a/code/game/objects/items/weapons/kitchen.dm +++ b/code/game/objects/items/weapons/kitchen.dm @@ -170,6 +170,7 @@ icon_state = "tray" desc = "A metal tray to lay food on." force = 8 + hitsound = 'sound/items/trayhit1.ogg' throwforce = 10.0 throw_speed = 3 throw_range = 5 From c7fc7f48118e8650e4db9cc45fac6328f02e1fa4 Mon Sep 17 00:00:00 2001 From: ikarrus Date: Fri, 16 May 2014 22:17:06 -0600 Subject: [PATCH 147/185] Monkeys can be loyalty implanted Monkeys can still be revs, so they should be able to be loyalty implanted. This would also fall in line with the other implants, which have no race restriction. Fixes #637 --- .../game/objects/items/weapons/implants/implant.dm | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/code/game/objects/items/weapons/implants/implant.dm b/code/game/objects/items/weapons/implants/implant.dm index e576db99e45..18b9563867c 100644 --- a/code/game/objects/items/weapons/implants/implant.dm +++ b/code/game/objects/items/weapons/implants/implant.dm @@ -139,15 +139,13 @@ return dat -/obj/item/weapon/implant/loyalty/implanted(mob/M) - if(!ishuman(M)) return 0 - var/mob/living/carbon/human/H = M - if(H.mind in ticker.mode.head_revolutionaries) - H.visible_message("[H] seems to resist the implant!", "You feel the corporate tendrils of Nanotrasen try to invade your mind!") +/obj/item/weapon/implant/loyalty/implanted(mob/target) + if(target.mind in ticker.mode.head_revolutionaries) + target.visible_message("[target] seems to resist the implant!", "You feel the corporate tendrils of Nanotrasen try to invade your mind!") return 0 - else if(H.mind in ticker.mode:revolutionaries) - ticker.mode:remove_revolutionary(H.mind) - H << "You feel a surge of loyalty towards Nanotrasen." + if(target.mind in ticker.mode.revolutionaries) + ticker.mode.remove_revolutionary(target.mind) + target << "You feel a surge of loyalty towards Nanotrasen." return 1 From ac30ec10de9abc3f6b8e5542d7f8c25a5749b116 Mon Sep 17 00:00:00 2001 From: phil235 Date: Sat, 17 May 2014 17:28:30 +0200 Subject: [PATCH 148/185] Microwave fix --- code/game/machinery/kitchen/microwave.dm | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/code/game/machinery/kitchen/microwave.dm b/code/game/machinery/kitchen/microwave.dm index 540bfeeec26..30db305568b 100644 --- a/code/game/machinery/kitchen/microwave.dm +++ b/code/game/machinery/kitchen/microwave.dm @@ -59,14 +59,15 @@ ********************/ /obj/machinery/microwave/attackby(var/obj/item/O as obj, var/mob/user as mob) - if(!broken && !dirty && !operating) + if(operating) + return + if(!broken && dirty<100) if(default_deconstruction_screwdriver(user, "mw-o", "mw", O)) return if(default_unfasten_wrench(user, O)) return - - if(exchange_parts(user, O)) - return + if(exchange_parts(user, O)) + return default_deconstruction_crowbar(O) @@ -171,7 +172,7 @@ user << "\red This is ridiculous. You can not fit \the [G.affecting] in this [src]." return 1 else - user << "\red You have no idea what you can cook with this [O]." + user << "\red You have no idea what you can cook with this." return 1 src.updateUsrDialog() @@ -190,7 +191,7 @@ ********************/ /obj/machinery/microwave/interact(mob/user as mob) // The microwave Menu - if(panel_open) + if(panel_open || !anchored) return var/dat = "
" if(src.broken > 0) From 56a7655a8a839550d0408294fbe9b27f93f9d6a9 Mon Sep 17 00:00:00 2001 From: ikarrus Date: Sat, 17 May 2014 10:34:16 -0600 Subject: [PATCH 149/185] [MAP] Fixes AI Sat External APC not being wired to SMES Causing early blackout. I also removed some extraneous lights and removed the motion sensitivity on the teleporter camera. --- _maps/map_files/tgstation.2.1.3.dmm | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/_maps/map_files/tgstation.2.1.3.dmm b/_maps/map_files/tgstation.2.1.3.dmm index 2e82cc319fd..c0b1ad3091a 100644 --- a/_maps/map_files/tgstation.2.1.3.dmm +++ b/_maps/map_files/tgstation.2.1.3.dmm @@ -8942,7 +8942,7 @@ "dpX" = (/obj/structure/grille,/obj/structure/lattice,/turf/space,/area) "dpY" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor/plating,/area/aisat) "dpZ" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plating,/area/aisat) -"dqa" = (/obj/machinery/atmospherics/pipe/manifold{dir = 1; icon_state = "manifold"; level = 2},/turf/simulated/floor,/area/aisat) +"dqa" = (/obj/machinery/power/apc{dir = 8; name = "MiniSat APC"; pixel_x = -24},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor,/area/aisat) "dqb" = (/obj/machinery/atmospherics/binary/pump{dir = 0; icon_state = "intact_on"; name = "Air Out"; on = 1},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/aisat) "dqc" = (/obj/machinery/door/airlock/maintenance_hatch{req_access_txt = "65"},/obj/machinery/atmospherics/pipe/simple{dir = 4; icon_state = "intact"; level = 2},/turf/simulated/floor,/area/aisat) "dqd" = (/obj/machinery/door/airlock/maintenance_hatch{req_access_txt = "65"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/aisat) @@ -8966,7 +8966,7 @@ "dqv" = (/obj/machinery/status_display,/turf/simulated/wall/r_wall,/area/turret_protected/ai) "dqw" = (/obj/machinery/power/smes{charge = 5e+006},/obj/structure/cable,/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai) "dqx" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/camera{c_tag = "MiniSat Exterior South West"; dir = 8; network = list("MiniSat"); pixel_x = 0; pixel_y = 0},/turf/simulated/floor/plating,/area/aisat) -"dqy" = (/obj/machinery/power/apc{dir = 8; name = "MiniSat APC"; pixel_x = -24},/turf/simulated/floor,/area/aisat) +"dqy" = (/obj/machinery/teleport/hub,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/aisat) "dqz" = (/obj/machinery/ai_slipper{icon_state = "motion0"; uses = 10},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "dqA" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai) "dqB" = (/obj/machinery/hologram/holopad,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai) @@ -9060,8 +9060,8 @@ "dsl" = (/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/obj/machinery/camera{c_tag = "MiniSat Entrance"; dir = 2; network = list("MiniSat"); pixel_x = 0; pixel_y = 0},/turf/simulated/floor,/area/aisat) "dsm" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/sign/securearea,/turf/simulated/wall,/area/aisat) "dsn" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall/r_wall,/area/aisat) -"dso" = (/obj/machinery/light,/obj/machinery/camera/motion{c_tag = "MiniSat Teleport Room"; dir = 8; name = "motion-sensitive security camera"; network = list("SS13","RD","MiniSat")},/obj/machinery/teleport/hub,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/aisat) -"dsp" = (/obj/machinery/door_control{id = "teledoor"; name = "AI Satellite Teleport Shutters Control"; pixel_x = 0; pixel_y = -25; req_access_txt = "17;65"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1},/turf/simulated/floor,/area/aisat) +"dso" = (/obj/machinery/door_control{id = "teledoor"; name = "AI Satellite Teleport Shutters Control"; pixel_x = 0; pixel_y = -25; req_access_txt = "17;65"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1},/obj/machinery/camera{c_tag = "MiniSat Teleporter"; dir = 1; network = list("MiniSat"); pixel_x = 0; pixel_y = 0},/turf/simulated/floor,/area/aisat) +"dsp" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/obj/structure/table,/obj/item/device/radio/off,/obj/item/weapon/crowbar,/turf/simulated/floor,/area/aisat) "dsq" = (/obj/machinery/door/poddoor/shutters{id = "teledoor"; name = "AI Satellite Teleport Access"},/turf/simulated/floor,/area/aisat) "dsr" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor,/area/aisat) "dss" = (/obj/structure/transit_tube{dir = 1; icon_state = "Block"; tag = "icon-Block (NORTH)"},/obj/machinery/light,/turf/simulated/floor{icon_state = "warningcorner"; dir = 8},/area/aisat) @@ -9071,7 +9071,7 @@ "dsw" = (/obj/structure/transit_tube/station{dir = 4; icon_state = "closed"; reverse_launch = 1; tag = "icon-closed (EAST)"},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/aisat) "dsx" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/flora/kirbyplants,/turf/simulated/floor,/area/aisat) "dsy" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/aisat) -"dsz" = (/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/obj/structure/table,/obj/item/device/radio/off,/obj/item/weapon/crowbar,/turf/simulated/floor,/area/aisat) +"dsz" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/aisat) "dsA" = (/obj/structure/transit_tube{icon_state = "N-S"},/turf/simulated/floor{icon_state = "warningcorner"; dir = 2},/area/aisat) "dsB" = (/obj/machinery/computer/teleporter,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/aisat) "dsC" = (/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor,/area/aisat) @@ -9112,8 +9112,8 @@ "dtl" = (/obj/machinery/light,/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai) "dtm" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; icon_state = "manifold-r-f"; level = 1; name = "pipe manifold"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/aisat) "dtn" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/turf/simulated/floor{icon_state = "warningcorner"; dir = 4},/area/aisat) -"dto" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/aisat) -"dtp" = (/obj/machinery/atmospherics/pipe/manifold{dir = 4; icon_state = "manifold"; initialize_directions = 11; level = 2},/turf/simulated/floor{icon_state = "warningcorner"; dir = 8},/area/aisat) +"dto" = (/obj/machinery/atmospherics/pipe/manifold{dir = 4; icon_state = "manifold"; initialize_directions = 11; level = 2},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "warningcorner"; dir = 8},/area/aisat) +"dtp" = (/obj/machinery/atmospherics/pipe/manifold{dir = 1; icon_state = "manifold"; level = 2},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/aisat) "dts" = (/obj/structure/transit_tube{tag = "icon-E-W-Pass"; icon_state = "E-W-Pass"},/turf/space,/area) "dtu" = (/obj/structure/lattice,/obj/structure/lattice,/turf/space,/area) "dty" = (/obj/structure/transit_tube{tag = "icon-S-NW"; icon_state = "S-NW"},/obj/structure/lattice,/turf/space,/area) @@ -9339,9 +9339,9 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacicciccrRcrHaaaaaaaafaaacrYaafaagaagaagaafaafcrIaafaaaaaacrHcrRciccicaaaaaaaafaafaafaaaahlahlahlahlaaaahlahlahlahlahlahlahlahlahlahlahjahlahlahldtzdtBdtAahlahjahjahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaacqbaafcrjcrkcrkcrkcrkcrZcsacrZcrncrncrncrncroaafcqbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaciccrPcrQcrHaaaaaaaafaaaaaaaafaafaafaafaafaaaaaaaafaaaaaacrHcrNcrOcicaaaahlahlaafaagaafahlahlahlahlaaaahlahlahlahlahlahlahlahlahlahlahjahlahlahlahjdtzdtyahjahjahjahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaacqbaafcrBcrBcrBcrBcrBaaacpdaaacrBcrBcrBcrBcrBaaacqbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaciccrCcrHcsbaaaaaacscaaaaaaaaaaafaaaaaaaaaaaaaaaaafaaaaaacrHcrHcrCcicaaaahlahlaaeaafaaaahlahlahlahlaaaahlahlahlahlahlahlahlahlahlahlahjahlahlahlahjdpHdsEdpHdsGdsFdqudqudqudquahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaacqbaaaaaaaafaafaafaaaaaacpdaafaaaaaaaafaafaaaaaacqbaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsdcsdcsdcsdcsdcsdcsdcsdcsdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaciccsecsfcrHaafaafaafcrIaaaaaacrIaaaaaaaaaaaacrIaafcsgaafcrHcshcsicicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahldtuahjahjahjahjdpHdsAdszdsydsxdsDdsCdsBdquahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaeaaaaaaaaaaaacqbcqbcqbcqbcqbaaaaaaaaacpdaaaaaaaaacqbcqbcqbcqccqbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsdcsdcsdcsdcsdcsdcsdcsdcsdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaciccsecsfcrHaafaafaafcrIaaaaaacrIaaaaaaaaaaaacrIaafcsgaafcrHcshcsicicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahldtuahjahjahjahjdpHdsAdspdsydsxdsDdsCdsBdquahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaeaaaaaaaaaaaacqbcqbcqbcqbcqbaaaaaaaaacpdaaaaaaaaacqbcqbcqbcqccqbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsdcsdcsdcsdcsdcsdcsdcsdcsdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaciccsjcsjcrHaaaaaaaafaafaafaafaafaafaafaafaafaafaafaaaaaacrHcsjcsjcicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahjahlahlahlahjdpHdswdsrdrUdrUdsudstdsvdquahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqbaafcskaafcqbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsdcsdcsdcsdcsdcsdcsdcsdcsdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaclcciccqWcrHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrHcqWcicclcaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahlahjahlahlahlahjdpHdssdsrdrUdrUdsqdspdsodquahlahlahlahjahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqbaaaaafaaacqbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsdcsdcsdcsdcsdcsdcsdcsdcsdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaclcciccqWcrHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrHcqWcicclcaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahlahjahlahlahlahjdpHdssdsrdrUdrUdsqdsodqydquahlahlahlahjahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqbaaaaafaaacqbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsdcsdcsdcsdcsdcsdcsdcsdcsdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahlahjahjahjahjahjdpHdpHdsmdrUdrUdqudsndqudquahlahlahjahjahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqbcqbcqbcqbcqbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsdcsdcsdcsdcsdcsdcsdcsdcsdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahjahjdsidsiahlahjahldsjdrWdrUdrUdsldskdsjahjahjahjdsidsiahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsdcsdcsdcsdcsdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahldpXdpXdshdshdpXdpXahldsddsedsgdsfdscdsbdsdahldpXdpXdshdshdpXdpXahlahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -9363,8 +9363,8 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsdcsdcsdcsdcsdaaaaaaaaaaaaaaaaaaaaacsdcsdcsdcsdcsdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsmcsmcsmcsmcsmcsmcsmcsmcsmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahldpXdqfdqxdpHdpHdpHdquaXNdqvaXNdqwaXNdqtaXNdqudpHdpHdpHdqsdqmdpXahlahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacslcslcslcslcslcslcslcslcslcslcslcslcslcslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsmcsmcsmcsmcsmcsmcsmcsmcsmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahldpXdqfdpYdqmahlahlahldqudqudqudtjdqudqudquahlahlahldqfdpZdqmdpXaaaahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacslcslcslcslcslcslcslcslcslcslcslcslcslcslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsmcsmcsmcsmcsmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahldpXdqfdpYdqmahlahjahldpHcECdpLdpJdpKdpWdpHahlahlahldqfdpZdqmdpXaaaahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacslcslcslcslcslcslcslcslcslcslcslcslcslcslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsmcsmcsmcsmcsmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahldpXdqfdpYdqhdqidqjdqjdpHdqydqbdqgdsPdtidpHdqidqidqidqkdpZdqmdpXaaaahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacslcslcslcslcslcslcslcslcslcslcslcslcslcslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsmcsmcsmcsmcsmcsmcsmcsmcsmcsmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahldpXdqfdqndqqdqpdqpdqpdqcdqadtpdtodtndqldqddqedqedqedqedqrdqmdpXaaaahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacslcslcslcslcslcslcslcslcslcslcslcslcslcslcslcslcslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsmcsmcsmcsmcsmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahldpXdqfdpYdqhdqidqjdqjdpHdqadqbdqgdsPdtidpHdqidqidqidqkdpZdqmdpXaaaahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacslcslcslcslcslcslcslcslcslcslcslcslcslcslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsmcsmcsmcsmcsmcsmcsmcsmcsmcsmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahldpXdqfdqndqqdqpdqpdqpdqcdtpdtodszdtndqldqddqedqedqedqedqrdqmdpXaaaahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacslcslcslcslcslcslcslcslcslcslcslcslcslcslcslcslcslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsmcsmcsmcsmcsmcsmcsmcsmcsmcsmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahldpXahldrQdrQdrQdrQdrQdpHdsTdsSdsRdsQdtmdsOdsNdrQdrQdtZdtZahldpXaaaahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacslcslcslcslcslcslcslcslcslcslcslcslcslcslcslcslcslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlaaGaaGaaGaaGdpXdpXdpXdpHdsKdsMdsLdsJdsIdpHdpXdpXdpXdpXdpXdpXdpXaaaahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacslcslcslcslcslcslcslcslcslcslcslcslcslcslcslcslcslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahjahjdpHdpHdsGdsUdsVdpHdpHahlahlahjahjahjahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacslcslcslcslcslcslcslcslcslcslcslcslcslcslcslcslcslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa From 5d4c6c8adf6ef23d0226221f275f211b17206b16 Mon Sep 17 00:00:00 2001 From: ikarrus Date: Sat, 17 May 2014 11:09:37 -0600 Subject: [PATCH 150/185] -Simplified Grav Gen access to only require power equipment. This changes nothing job-access-wise, but it does make it more intuitive for HoPs and engineers who work with access. -Added firelocks to AI sat and grav gen --- _maps/map_files/tgstation.2.1.3.dmm | 31 ++++++++++++++--------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/_maps/map_files/tgstation.2.1.3.dmm b/_maps/map_files/tgstation.2.1.3.dmm index c0b1ad3091a..ec50d722320 100644 --- a/_maps/map_files/tgstation.2.1.3.dmm +++ b/_maps/map_files/tgstation.2.1.3.dmm @@ -1066,7 +1066,7 @@ "auz" = (/obj/machinery/door/poddoor/preopen{id = "maint3"},/turf/simulated/floor/plating,/area/maintenance/fsmaint2) "auA" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = 0},/turf/simulated/wall,/area/maintenance/electrical) "auB" = (/obj/machinery/power/apc{dir = 1; name = "Electrical Maintenance APC"; pixel_y = 24},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating,/area/maintenance/electrical) -"auC" = (/obj/machinery/door/airlock/highsecurity{icon_state = "door_closed"; locked = 0; name = "AI Upload Access"; req_access_txt = "16"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload) +"auC" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/highsecurity{icon_state = "door_closed"; locked = 0; name = "AI Upload Access"; req_access_txt = "16"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload) "auD" = (/obj/structure/table,/obj/item/clothing/gloves/fyellow,/obj/item/weapon/storage/toolbox/electrical{pixel_x = 1; pixel_y = -1},/obj/item/device/multitool,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/electrical) "auE" = (/obj/machinery/door/airlock/external{name = "Escape Pod One"},/turf/simulated/floor/plating,/area/hallway/secondary/entry) "auF" = (/obj/structure/sign/pods,/turf/simulated/wall,/area/hallway/secondary/entry) @@ -3090,7 +3090,7 @@ "bhv" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=1"; dir = 1; freq = 1400; location = "Bridge"},/obj/structure/plasticflaps{opacity = 1},/turf/simulated/floor{icon_state = "bot"},/area/bridge/meeting_room) "bhw" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/wood,/area/bridge/meeting_room) "bhx" = (/obj/machinery/vending/cigarette,/turf/simulated/floor/wood,/area/bridge/meeting_room) -"bhy" = (/obj/machinery/light,/turf/simulated/floor/bluegrid,/area/turret_protected/ai) +"bhy" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Firelock North"},/obj/machinery/door/airlock/engineering{name = "Gravity Generator"; req_access_txt = "11"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/gravity_generator) "bhz" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/wall/r_wall,/area/turret_protected/ai_upload) "bhA" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor,/area/engine/engineering) "bhB" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/wood,/area/crew_quarters/captain) @@ -3261,7 +3261,7 @@ "bkK" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/bluespace_beacon,/turf/simulated/floor,/area/teleporter) "bkL" = (/obj/machinery/computer/upload/borg,/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) "bkM" = (/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) -"bkN" = (/obj/machinery/door/airlock/highsecurity{name = "Gravity Generator Room"; req_access_txt = "11;23"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/gravity_generator) +"bkN" = (/obj/structure/stool/bed/chair/office/light,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/engine/gravity_generator) "bkO" = (/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 1},/obj/structure/table,/obj/item/device/radio/beacon,/turf/simulated/floor,/area/teleporter) "bkP" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -35},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor,/area/engine/gravity_generator) "bkQ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall/r_wall,/area/crew_quarters/captain) @@ -3333,7 +3333,7 @@ "bme" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/wall,/area/crew_quarters/heads) "bmf" = (/obj/machinery/door/airlock/command{name = "Head of Personnel"; req_access = null; req_access_txt = "57"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/wood,/area/crew_quarters/heads) "bmg" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/engine/gravity_generator) -"bmh" = (/obj/structure/stool/bed/chair/office/light,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/engine/gravity_generator) +"bmh" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/glass_engineering{name = "Gravity Generator"; req_access_txt = "11"; req_one_access_txt = "0"},/turf/simulated/floor{icon_state = "dark"},/area/engine/gravity_generator) "bmi" = (/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/ai_upload) "bmj" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/engine/gravity_generator) "bmk" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall,/area/crew_quarters/captain) @@ -3901,7 +3901,7 @@ "bxa" = (/obj/machinery/recharger{pixel_y = 4},/obj/structure/table,/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/checkpoint/supply) "bxb" = (/obj/machinery/computer/secure_data,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor{icon_state = "red"; dir = 5},/area/security/checkpoint/supply) "bxc" = (/obj/machinery/door/airlock/command{name = "Head of Personnel"; req_access = null; req_access_txt = "57"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/crew_quarters/heads) -"bxd" = (/obj/machinery/door/airlock/glass_command{name = "Gravity Generator Area"; req_access_txt = "11; 23"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "dark"},/area/engine/gravity_generator) +"bxd" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai) "bxe" = (/obj/machinery/camera{c_tag = "Engineering Escape Pod"; dir = 4; network = list("SS13")},/turf/simulated/floor/plating,/area/engine/engineering) "bxf" = (/obj/structure/sign/pods{pixel_x = 32; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/engine/engineering) "bxg" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/wall/r_wall,/area/teleporter) @@ -8988,7 +8988,7 @@ "dqR" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor/plating,/area/aisat) "dqS" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/light/small{dir = 8},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plating,/area/aisat) "dqT" = (/obj/structure/sign/securearea,/turf/simulated/wall/r_wall,/area/turret_protected/ai) -"dqU" = (/obj/machinery/door/airlock/highsecurity{icon_state = "door_locked"; locked = 1; name = "AI Chamber"; req_access_txt = "16"},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/ai) +"dqU" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/highsecurity{icon_state = "door_locked"; locked = 1; name = "AI Chamber"; req_access_txt = "16"},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/ai) "dqV" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai) "dqW" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall/r_wall,/area/turret_protected/ai) "dqX" = (/obj/machinery/light_switch{pixel_y = 28},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) @@ -8997,7 +8997,7 @@ "dra" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/camera{c_tag = "MiniSat Exterior North West"; dir = 8; network = list("MiniSat"); pixel_x = 0; pixel_y = 0},/turf/simulated/floor/plating,/area/aisat) "drb" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/assembly/chargebay) "drc" = (/turf/simulated/wall,/area/turret_protected/aisat_interior) -"drd" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/aisat_interior) +"drd" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/aisat_interior) "dre" = (/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/aisat_interior) "drf" = (/turf/simulated/floor/carpet,/area/turret_protected/aisat_interior) "drg" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/bluegrid,/area/assembly/chargebay) @@ -9031,9 +9031,8 @@ "drI" = (/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/aisat) "drJ" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/lattice,/turf/space,/area) "drK" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/wall,/area/turret_protected/aisat_interior) -"drL" = (/obj/machinery/door/airlock/hatch{name = "MiniSat Antechamber"; req_one_access_txt = "65"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/aisat_interior) +"drL" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/hatch{name = "MiniSat Antechamber"; req_one_access_txt = "65"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/aisat_interior) "drM" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall,/area/turret_protected/aisat_interior) -"drN" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Firelock North"},/obj/machinery/door/airlock/hatch{name = "MiniSat Antechamber"; req_one_access_txt = "65"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/aisat_interior) "drO" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/lattice,/turf/space,/area) "drP" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/space,/area) "drQ" = (/obj/structure/window/reinforced{dir = 1},/turf/space,/area) @@ -9275,14 +9274,14 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaafaafaaabcRbivbiwbixbiybiybizbiAbbZbhgaOObiBbiCbiDbiDbiDbfKbfKbfKbiEbiFbiFbiFbiGaYHbiHbiIbiJbiKbiLbiMbiNbiOaYHbiPbiQbiRbiSbiTbiUbiVbiWbiXbiVbiYbiZbjabjbbjcbjdbjebjfbjgbjhbjibhwaYQaYQahjckNcnAboUcltboUcnzckNahjaYWbFabjmbaxbjnbaxbjodoNbjqaYWaXVaIuaIubeVbjrbjsbjtbjubjvbjwbgybjxbjybjzbjAbjAbjBbjCbjDbjEbjFbfbbhXbgEbhXbgEbhXbhYbjGbfcbjHbjIbjJbjKbfgbjLbjMdtkdrgdrgdrbbjPbjQbjRbjSbjSbjSbjTbjSbjUbjVbjWbjXbjYbjZbkabkbbitbkcbkdbkebfqbiubgZbgZbgZbgZbgZaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaafaafaaabcRbkfbcRbkgbkhbkhbkibcRbkjbkkaOObklbkmbklbklbklbkmbklaOOaOOaYHaYHaYHbknaYHbiNbiNbkobiNbiNbiNbiNbiNbkpbkqbkrbksbktbkubkubkubkvbkwbkxbkybkzbkAbkBbkCbkDbkEbkFbkGbkHbkIbkJaYQaafahjckNcnAboWcmWboTbDDckNahjaafbkQaYWbkRaYWaYWaYWaYWbkSaYWbkTaIuaIubeVbkUbjsbkVbhNbhObkWbgybhRbkXbkYbkZblablbbfbblcbldblebfbbhXblfbhXbgEbhXbhYbgEbfcbfgbfgbfgbfgbfgbjLbfidqNblhblibljblkbllblmblnblobloblpbijblqbflblrblsbltbfqblublvblwblxblyblzbfqbiublAceYblBblCblBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaafaafaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaafaaabcRblDblEblFbkhblGblHbcRaaaaafaafblIblIblIblIblIblIblIaaaaaablJblKblLblMblNbiNbiNbiNbiNbiNbiNbiNbiNblObhrbaZblPblQblRblSblTblUbiSblVaYNblWblXblYblZbmabmbbmbbmcbmdbmebmfbmbaafahlckNbBjbzTcltcltbyGckNahlaafbmkbmlbmmbmnbmobmpbmqbmrbmsbmtaIubmubmvbCybmxbkVbmybmzbeVbmAbhRbkXbkZbmBbgybmCbfbbmDbmEbmFbfbbmGbmHbmIbmJbmKbmLbmKbmMbmNbmObmNbmNbmNbmPbfibmQbiedqCdqobmRbmSbmTbmUbmVbmVbmWbmXbmYbflbmZblsbnabfqbnbbncbndblxbitbnebfqbiublAblAbgZbgZbgZbgZbgZbgZbgZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaafaaabcRbnfbngbnhbnibcRbcRbcRaaaaaaaaablIblIblIblIblIblIblIaaaaaabnjbnkbiNbnlbnmbnmbnmbnmbnmbnmbnmbnmbnmbnnbnobnpbnqbnrbnsbntbnubhsbnvbnwbnxbnybnzbnAblZblZbmbbnBbnCbnDbnEbnFbmbahlahlckNbvIbvJbxdbyDbyEckNahlaaabnLbnMbmmbnNbmsbnObmsbnPbmsbmtaIuaIubeVbnQbjsbkVbnRbnSbeVbnTbnUbnVbnWbnXbgybnYbnZboabobbocbfbbfcbodbfcbfcbfcboeboeboeboeboeboeboeboebjLbfiblgblhblibofbogbohboibojbojbojbmWbijbokbflbolblsbombfqbonboobonbopbitboqbfqborbosbosbosbosbosbosbosbotbgZbgZbgZbgZaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablIblIblIblIblIblIblIboubovbowboxbiNbiNbiNboyboyboyboybiNbiNbiNbiNbkpbozbaZboAboBboCboDboEbhsboFbaZboGboHboIboJboKbgBboMboNboOboPboQbjlbmbaafahlckNbmhbnHcoCbmjbmwckNahlaafbmkbpbbpcbpdbmsbpebmsbnPbmsbpfaIuaIubeVbpgbjsbkVbphbpibeVbpjbhRbgybpkbplbpmbpnbnTbpobppbpqbprbpsbptbgybpubpvbpwbpxbpybpzbpAbpBbpCbpDbgKbgLbpGbpFbpEbpHbpIbflbpJbojbojbpKbpLbijbpMbflbpNbpObpPbfqbpQbpRbpSbpTbpUbpVbfqbpWbpXbpXbpXbpXbpXbpXbpXbiubgZbpYbpZbgZbgZaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaafaaabcRbnfbngbnhbnibcRbcRbcRaaaaaaaaablIblIblIblIblIblIblIaaaaaabnjbnkbiNbnlbnmbnmbnmbnmbnmbnmbnmbnmbnmbnnbnobnpbnqbnrbnsbntbnubhsbnvbnwbnxbnybnzbnAblZblZbmbbnBbnCbnDbnEbnFbmbahlahlckNbvIbvJbmhbyDbyEckNahlaaabnLbnMbmmbnNbmsbnObmsbnPbmsbmtaIuaIubeVbnQbjsbkVbnRbnSbeVbnTbnUbnVbnWbnXbgybnYbnZboabobbocbfbbfcbodbfcbfcbfcboeboeboeboeboeboeboeboebjLbfiblgblhblibofbogbohboibojbojbojbmWbijbokbflbolblsbombfqbonboobonbopbitboqbfqborbosbosbosbosbosbosbosbotbgZbgZbgZbgZaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablIblIblIblIblIblIblIboubovbowboxbiNbiNbiNboyboyboyboybiNbiNbiNbiNbkpbozbaZboAboBboCboDboEbhsboFbaZboGboHboIboJboKbgBboMboNboOboPboQbjlbmbaafahlckNbkNbnHcoCbmjbmwckNahlaafbmkbpbbpcbpdbmsbpebmsbnPbmsbpfaIuaIubeVbpgbjsbkVbphbpibeVbpjbhRbgybpkbplbpmbpnbnTbpobppbpqbprbpsbptbgybpubpvbpwbpxbpybpzbpAbpBbpCbpDbgKbgLbpGbpFbpEbpHbpIbflbpJbojbojbpKbpLbijbpMbflbpNbpObpPbfqbpQbpRbpSbpTbpUbpVbfqbpWbpXbpXbpXbpXbpXbpXbpXbiubgZbpYbpZbgZbgZaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablIblIblIblIblIblIblIbqabqbbqabqcbqdbiNbiNbiNbiNbiNbiNbiNbiNbqeaYHaYHbqfbaZbaZbqgbqhbqibqjbhsbqkbaZbqlbqmbnzbqnbqobqpbqqbqrbqsbqtbqubqvbmbaaaahlckNbbsbmgcpgcpgbbrckNahlaaabqBbqCbqCbqCbqCbqCbqCbqDbqCbqEbqFbqFbeVbeVbqGbqHbqIbqJbeVbqKbhRbgybgybgybgybqLbgybqMbqNbgybgybgybqNbgybgybpvbqObqPbqQbqRbqSbqTbqUboebqVbqWboVbqXbqYbqZbiebflbrabijbijbrbbrcbijbrdbrebrfbrfbrgbrhbrhbribgUbrjbgUbrhbfqbpXbpXbrkbrlbrmbrnbrobpXbrpbrqbrrbrsbrtbgZaaaaafaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablIblIblIblIblIblIblIbrubrvbrubrwbiNbiNbiNboyboyboyboybiNbiNbrxbryaYHbrzbaZbaZbqgbrAbntbqjbhsbaZbaZbqlbqmbrBaIuaQQbqpbrCbrDbrEbrFbrFbrGbmbaafaafckNckNbkPbbqbbqbbockNaafaafbrJbkObrLbrMbrNbrObrPbrQbqCbrRaIuaIubrSbrTbrUbrVbrWbrXbrYbrZbsabrZbsbbrZbrZbscbrZbsdbsebrZbrZbrZbsfbsgbsgbshbqObsibqQbsjbsjbskbslboebjLbfibsmbsnbsobspbspbflbsqbsrbssbrebstbijbsubrebsvbswbsxbsybszbsAbsBbsCbsDbsEbsFbsGbsHbsIbsJbsJbsJbsKbsLbsMbgZbsNblAbgZbgZaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablIblIblIblIblIblIblIbsObovbsPbsQbiNbiNbiNbiNbiNbiNbiNbiNbiNbrxbsRaYHbsSbcmbaZbqgbaZbsTbaZbhsbaZbsUbnxbsVbrBaIuaQQbqpbmbbsWbsXbsYbsZbtabmbahlahlaafckNckNbkNckNckNaafaaaaaabrJbtcbtdbtebkKbtgbtgbthbtibtjaIuaIubtkbtlbhRbqMbtmbtnbtobtnbtpbtnbtqbtrbtnbtsbpqbttbgybgybgybtubtvbtvbtwbtxbtybtzbqQbtAbtBbqTbslboebfhbfibtCbtCbtDbtCbtCbflbrebrebrebrebtEbtFbgSbrebtGbtHbtIbsEbsEbtJblsbtKbtLbtMbtNbtObtPbtQbtRbtRbtSbtTbpXbtUbgZbsNblAbgZaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablIblIblIblIblIblIblIbsObovbsPbsQbiNbiNbiNbiNbiNbiNbiNbiNbiNbrxbsRaYHbsSbcmbaZbqgbaZbsTbaZbhsbaZbsUbnxbsVbrBaIuaQQbqpbmbbsWbsXbsYbsZbtabmbahlahlaafckNckNbhyckNckNaafaaaaaabrJbtcbtdbtebkKbtgbtgbthbtibtjaIuaIubtkbtlbhRbqMbtmbtnbtobtnbtpbtnbtqbtrbtnbtsbpqbttbgybgybgybtubtvbtvbtwbtxbtybtzbqQbtAbtBbqTbslboebfhbfibtCbtCbtDbtCbtCbflbrebrebrebrebtEbtFbgSbrebtGbtHbtIbsEbsEbtJblsbtKbtLbtMbtNbtObtPbtQbtRbtRbtSbtTbpXbtUbgZbsNblAbgZaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaablIblIblIblIblIblIblIbrubrvbrubnkbtVbiNbiNbtWbtXbtYbtXbtXbtXbtZbuabevbubbiXbiVbucbiVbudbiWbiXbuebufboGbsVbrBaXDbugbuhbmbbuibujbukbulbumbmbahlahlaafbdrbggcoCbeMbdraafaaaaaaburbusbutbutbuubuvbuwbuxbqCbuyaIuaIubnTbnTbuzbqMbuAbuBbuCbuDbuEbuFbuGbuCbuDbuCbuDbuCbuDbuCbfabfabtvbuHbsjbuIbuJbqObqQbuKbuLbuMbuNboebuObuPbuQbuRbuSbsEbsEbuTbsEbsEbuUbuVbuWbsEbsDbsEbuXbuYbuZbvabvbbvcbvdbvebvdbvdbvdbvfbvgbvhbvibvhbvjbvhbpXbtUbgZbsNbvkbgZbgZaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablIblIblIblIblIblIblIbvlbvmbvlbvnbvobvnbvnbvnbvnbvnbvpbvqbiNbrxbvraYHbvsbaZbvtbvubvvbvwbvxbvybvzbvwbvwbvAbrBaJSbvBbqpbmbbvDbvEbvFbvGbumbmbahlahlaafbdrcocbbqboRbdraafaaaaaabrJbvKbvLbvMbvNbuvbuwbuxbqCbvOaIuaIubvPbvQbvRbqMbvSbvTbuCbvUbvVbvWbvXbvYbvZbwabwbbwabwcbuCbgybgybtvbwdbsjbwebwfbwgbwhbwibwjbwjbwkbwlbwmbwnbwobwpbwqbwrbwsbwrbwrbwtbwrbwubwvbwrbwrbwrbwwbwxbwybwzbwAbwBbwCbwDbwEbwFbvdbwGbwHbwIbwJbwKbwHbwLbpXbtUbgZbwMbrsbwNbgZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablIblIblIblIblIblIblIbwObwPbovbwQaYHbwRbovbwQbwSbwSbwSbwSbwTbwUbwVbwSbwSbwWbwWbwXbwWbvwbwYbwZbxabxbbvwbsVbrBaIvaTkaTkbmbbmbbmbbmbbmbbxcbmbaJOaJPaJUbdrbdtbkNbdsbdraJOaJPaJUbqBbqCbqCbqCbqCbqCbqCbxgbqCbvOaIubxhbuCbuCbxibxjbxkbuCbuCbxlbxmbxnbxobxpbxqbxrbxsbxtbxubxvbgybgybtvbxwbxxbxybxzbxAbxBbxCbxzbxzbxDbxEbxFbxGbxHbxHbxHbxHbxIbxHbxHbxHbxJbxKbxLbxMbxNbxObxPbxQbxRbwzbxSbxTbxUbxVbxWbxXbxYbpXbpXbxZbyabybbpXbycbpXbtUbgZbsNblAbgZbgZaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablIblIblIblIblIblIblIbwObwPbovbwQaYHbwRbovbwQbwSbwSbwSbwSbwTbwUbwVbwSbwSbwWbwWbwXbwWbvwbwYbwZbxabxbbvwbsVbrBaIvaTkaTkbmbbmbbmbbmbbmbbxcbmbaJOaJPaJUbdrbdtbhybdsbdraJOaJPaJUbqBbqCbqCbqCbqCbqCbqCbxgbqCbvOaIubxhbuCbuCbxibxjbxkbuCbuCbxlbxmbxnbxobxpbxqbxrbxsbxtbxubxvbgybgybtvbxwbxxbxybxzbxAbxBbxCbxzbxzbxDbxEbxFbxGbxHbxHbxHbxHbxIbxHbxHbxHbxJbxKbxLbxMbxNbxObxPbxQbxRbwzbxSbxTbxUbxVbxWbxXbxYbpXbpXbxZbyabybbpXbycbpXbtUbgZbsNblAbgZbgZaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablIblIblIblIblIblIblIaaaaaaaaaaaaaaaaaaaaaaaaaaabwSbydbyebyfbygbyhbyibyjbykbylbymbynbyobypbyqbyrbysbvwbytbyubyvbyvbyvbywbyxbyybbAbyzbyAbyBbyCbyCbyCbBhbyFbyIbyHbyJaIuaIuaIubbeaLFaIuaLpaIuaIuaIubyKbyLbvOaIubyMbuCbyNbyObyPbyQbyRbuCbySbxmbyTbxobxpbxqbxqbyUbyVbyWbxvbgybyXbtvbsjbyYbyZbzabzbbzcbzdbzebzfboeboebfhbzgbxHbzhbzibzjbzkbzlbzmbxHbznbzobzpbzqbzrbzsbxPbxQbxRbztbzubzvbzwbzxbzybzzbxYbzAbzAbzAbzAbzAbzAbzAbpXbtUbgZbsNblAbgZaaaaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGcaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablIblIblIblIblIblIblIaaaaaaaaaaaaaaaaaaaaaaaaaaabzBbzCbzDbzEbzFbzGbzHbzIbzJbzKbzLbylbzMbzNbzObyrbzPbvwbzQbzRaIuaIuaIuaIuaIuaIubbAaIubrBaIuaIuaIuaIuaIubzSbeKbzUaIuaIuaIuaIubbeaIuaIuaLpaIuaIuaIubzVbzWbvObzXbzYbzZbAabAbbAcbAdbAebAfbAgbAhbAibAjbuCbAkbAlbAmbAnbAobuCbgybgybtvbtvbtvbtvbtvboeboeboeboeboeboebApbAqbArbxHbAsbAtbAubAvbAwbAxbxHbAybAzbAAbABbACbADbAEbAFbAGbAHbAIbAJbAJbAKbALbAMbxYbzAbANbzAbAObzAbzAbzAbpXbtUbgZbsNblAbgZbgZaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablIblIblIblIblIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwSbAPbAQbARbASbATbAUbyjbylbylbymbylbyobAVbAWbAXbAYbvwbAZbBabBbbBbbBbbBcbBbbBbbBdbBbbBeaIubBfbBgbhIbhIbBiaWEbBkbBlbBmbBnaWEbBkbBoaWEbBpbBqaWEbBrbBsbBtbBuaIuaIubuCbBvbBwbBxbBybBzbuCbBAbBBbBAbuCbuCbuCbuCbuCbuCbuCbuCbgybgybgybBCbBDbuBbBEbBFbBGbBHbBIbBJbBKbBLbBMbBNbxHbBObBPbBQbBRbBSbBTbxHbBUbBVbBWbBXbBYbBZbCabCbbCcbCdbCebCfbCgbChbCibCjbxYbzAbzAbzAbCkbzAbzAbzAbpXbtUbrqbClbrsbrtbgZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -9346,7 +9345,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsdcsdcsdcsdcsdcsdcsdcsdcsdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahjahjdsidsiahlahjahldsjdrWdrUdrUdsldskdsjahjahjahjdsidsiahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsdcsdcsdcsdcsdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahldpXdpXdshdshdpXdpXahldsddsedsgdsfdscdsbdsdahldpXdpXdshdshdpXdpXahlahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsdcsdcsdcsdcsdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahldpXdqfdrHdrYdrXdpXdpXdrSdrWdrUdrVdrUdtadrSdpXdpXdrZdsadrIdqmdpXahlahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsdcsdcsdcsdcsdcsdcsdcsdcsdcsdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahldpXdqfdrHdrIdrOdqidrcdrcdrKdrLdrcdrNdrMdrcdrcdqidrJdrHdrIdqmdpXahlahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsdcsdcsdcsdcsdcsdcsdcsdcsdcsdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahldpXdqfdrHdrIdrOdqidrcdrcdrKdrLdrcdrLdrMdrcdrcdqidrJdrHdrIdqmdpXahlahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsdcsdcsdcsdcsdcsdcsdcsdcsdcsdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahldpXdqfdrEdrGdqpdqpdrFdrAdrzdredredredrDdrCdrBdqedqedrxdrydqmdpXahlahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahldpXdqfdpYdrRcMfdrQdrcdrpdredredrudredredrodrcdrQdrQdrPdpZdqmdpXahlahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahlaaGcKWdpYcLyahlaaadrcdrvdrwdrtdpIdrrdrsdrqdrcaaaahldqfdpZdqmdpXahlahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -9358,8 +9357,8 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahldpXdqfdqRdpHdpHdquaXNdqDbanbcybcybcybandqDaXNdqudpHdpHdqSdqmdpXahlahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacslcslcslcslcslcslcslcslcslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahldpXdqfdpYdqmdquaXNdqFdqDdqGbcydqIbcydqGdqDdqHaXNdqudqfdpZdqmdpXahlahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacslcslcslcslcslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsmcsmcsmcsmcsmcsmcsmcsmcsmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahldpXdqfdpYdqmahldquaXNdqDbandqKdqLdqJbandqDaXNdquahldqfdpZdqmdpXahlahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacslcslcslcslcslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsdcsdcsdcsdcsdaaacsdcsdcsdcsdcsdaaacsdcsdcsdcsdcsdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsmcsmcsmcsmcsmcsmcsmcsmcsmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahldpXdqfdpYdqmahldquaXNbhybanbandqzbanbanbhyaXNdquahldqfdpZdqmdpXahlahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacslcslcslcslcslcslcslcslcslcslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsdcsdcsdcsdcsdaaacsdcsdcsdcsdcsdaaacsdcsdcsdcsdcsdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsmcsmcsmcsmcsmcsmcsmcsmcsmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahldpXdqfdpYdqmahldquaXNdtldqEdqAdqBdqDdqEdtlaXNdquahldqfdpZdqmdpXahlahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacslcslcslcslcslcslcslcslcslcslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsdcsdcsdcsdcsdaaacsdcsdcsdcsdcsdaaacsdcsdcsdcsdcsdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsmcsmcsmcsmcsmcsmcsmcsmcsmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahldpXdqfdpYdqmahldquaXNbanbanbandqzbanbanbanaXNdquahldqfdpZdqmdpXahlahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacslcslcslcslcslcslcslcslcslcslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsdcsdcsdcsdcsdaaacsdcsdcsdcsdcsdaaacsdcsdcsdcsdcsdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsmcsmcsmcsmcsmcsmcsmcsmcsmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahldpXdqfdpYdqmahldquaXNdtldqEdqAdqBbxddqEdtlaXNdquahldqfdpZdqmdpXahlahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacslcslcslcslcslcslcslcslcslcslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsdcsdcsdcsdcsdaaaaaaaaaaaaaaaaaaaaacsdcsdcsdcsdcsdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsmcsmcsmcsmcsmcsmcsmcsmcsmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahldpXdqfdqxdpHdpHdpHdquaXNdqvaXNdqwaXNdqtaXNdqudpHdpHdpHdqsdqmdpXahlahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacslcslcslcslcslcslcslcslcslcslcslcslcslcslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsmcsmcsmcsmcsmcsmcsmcsmcsmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahldpXdqfdpYdqmahlahlahldqudqudqudtjdqudqudquahlahlahldqfdpZdqmdpXaaaahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacslcslcslcslcslcslcslcslcslcslcslcslcslcslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsmcsmcsmcsmcsmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahldpXdqfdpYdqmahlahjahldpHcECdpLdpJdpKdpWdpHahlahlahldqfdpZdqmdpXaaaahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacslcslcslcslcslcslcslcslcslcslcslcslcslcslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa From b3b6b94ba898cd3e8aa845ffb44b10d0de554e20 Mon Sep 17 00:00:00 2001 From: ikarrus Date: Sat, 17 May 2014 11:26:43 -0600 Subject: [PATCH 151/185] -Added windows to library -Added intercoms to Steelpoint's new areas. --- _maps/map_files/tgstation.2.1.3.dmm | 39 ++++++++++++++++------------- 1 file changed, 21 insertions(+), 18 deletions(-) diff --git a/_maps/map_files/tgstation.2.1.3.dmm b/_maps/map_files/tgstation.2.1.3.dmm index ec50d722320..b7b90a58e62 100644 --- a/_maps/map_files/tgstation.2.1.3.dmm +++ b/_maps/map_files/tgstation.2.1.3.dmm @@ -2672,9 +2672,9 @@ "aZt" = (/obj/machinery/vending/coffee,/turf/simulated/floor/wood,/area/library) "aZu" = (/obj/structure/stool/bed/chair/comfy/black{dir = 4},/turf/simulated/floor/wood,/area/library) "aZv" = (/obj/structure/table/woodentable,/obj/item/weapon/pen,/turf/simulated/floor/wood,/area/library) -"aZw" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor/wood,/area/library) -"aZx" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp/green{pixel_x = 1; pixel_y = 5},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor/wood,/area/library) -"aZy" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/wood,/area/library) +"aZw" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/library) +"aZx" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/library) +"aZy" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor/wood,/area/library) "aZz" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) "aZA" = (/turf/simulated/floor/carpet{icon_state = "carpetsymbol"},/area/chapel/main) "aZB" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) @@ -2735,7 +2735,7 @@ "baE" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass{name = "Hydroponics"; req_access_txt = "35"},/turf/simulated/floor,/area/hydroponics) "baF" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/hydroponics) "baG" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/hallway/primary/starboard) -"baH" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/wall,/area/library) +"baH" = (/obj/structure/stool/bed/chair/comfy/black{dir = 4},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor/wood,/area/library) "baI" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/wall,/area/chapel/main) "baJ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/chapel/main) "baK" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/chapel/main) @@ -2772,7 +2772,7 @@ "bbp" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/poddoor/preopen{id = "heads_meeting"; name = "privacy shutters"},/turf/simulated/floor/plating,/area/bridge/meeting_room) "bbq" = (/turf/simulated/floor,/area/engine/gravity_generator) "bbr" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable,/obj/machinery/power/smes{charge = 5e+006},/turf/simulated/floor,/area/engine/gravity_generator) -"bbs" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/apc{dir = 8; name = "Gravity Generator APC"; pixel_x = -25; pixel_y = 1},/obj/structure/table,/obj/item/weapon/paper/gravity_gen{layer = 3},/obj/item/weapon/pen/blue,/turf/simulated/floor,/area/engine/gravity_generator) +"bbs" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor/wood,/area/library) "bbt" = (/obj/machinery/vending/cigarette,/turf/simulated/floor/wood,/area/crew_quarters/captain) "bbu" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/wood,/area/crew_quarters/captain) "bbv" = (/obj/structure/stool/bed/chair/comfy/brown{dir = 4},/turf/simulated/floor/carpet,/area/crew_quarters/captain) @@ -2788,7 +2788,7 @@ "bbF" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/hallway/primary/starboard) "bbG" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/hallway/primary/starboard) "bbH" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/hallway/primary/starboard) -"bbI" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/machinery/alarm{pixel_y = 25},/turf/simulated/floor,/area/hallway/primary/starboard) +"bbI" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/hallway/primary/starboard) "bbJ" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/hallway/primary/starboard) "bbK" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = 30},/turf/simulated/floor,/area/hallway/primary/starboard) "bbL" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor,/area/hallway/primary/starboard) @@ -3259,11 +3259,11 @@ "bkI" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/wood,/area/bridge/meeting_room) "bkJ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor/wood,/area/bridge/meeting_room) "bkK" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/bluespace_beacon,/turf/simulated/floor,/area/teleporter) -"bkL" = (/obj/machinery/computer/upload/borg,/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) +"bkL" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "blue"; icon_state = "intact-b-f"; level = 1; name = "pipe"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/alarm{pixel_y = 25},/turf/simulated/floor,/area/hallway/primary/starboard) "bkM" = (/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) "bkN" = (/obj/structure/stool/bed/chair/office/light,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/engine/gravity_generator) "bkO" = (/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 1},/obj/structure/table,/obj/item/device/radio/beacon,/turf/simulated/floor,/area/teleporter) -"bkP" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -35},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor,/area/engine/gravity_generator) +"bkP" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor,/area/engine/gravity_generator) "bkQ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall/r_wall,/area/crew_quarters/captain) "bkR" = (/obj/machinery/door/airlock/command{name = "Captain's Quarters"; req_access = null; req_access_txt = "20"},/turf/simulated/floor/carpet,/area/crew_quarters/captain) "bkS" = (/obj/machinery/door/airlock/maintenance{name = "Captain's Office Maintenance"; req_access_txt = "20"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/crew_quarters/captain) @@ -9004,7 +9004,7 @@ "drh" = (/obj/machinery/bot/secbot/beepsky{auto_patrol = 0; desc = "It's Officer Pingsky! Loyal, vigilent and lonely."; name = "Officer Pingsky"},/turf/simulated/floor/carpet,/area/turret_protected/aisat_interior) "dri" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/aisat_interior) "drj" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/light/small{dir = 8},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/camera{c_tag = "MiniSat Exterior North East"; dir = 4; network = list("MiniSat"); pixel_x = 0; pixel_y = 0},/turf/simulated/floor/plating,/area/aisat) -"drk" = (/obj/machinery/camera/motion{c_tag = "MiniSat Antechamber"; dir = 1; network = list("MiniSat")},/turf/simulated/floor/carpet,/area/turret_protected/aisat_interior) +"drk" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/hologram/holopad,/turf/simulated/floor,/area/engine/gravity_generator) "drl" = (/obj/structure/closet/emcloset,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor,/area/engine/engineering) "drm" = (/obj/machinery/turret{dir = 1},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/aisat_interior) "drn" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating,/area/engine/engineering) @@ -9033,6 +9033,7 @@ "drK" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/wall,/area/turret_protected/aisat_interior) "drL" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/hatch{name = "MiniSat Antechamber"; req_one_access_txt = "65"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/aisat_interior) "drM" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall,/area/turret_protected/aisat_interior) +"drN" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/apc{dir = 8; name = "Gravity Generator APC"; pixel_x = -25; pixel_y = 1},/obj/structure/table,/obj/item/weapon/paper/gravity_gen{layer = 3},/obj/item/weapon/pen/blue,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -35},/turf/simulated/floor,/area/engine/gravity_generator) "drO" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/lattice,/turf/space,/area) "drP" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/space,/area) "drQ" = (/obj/structure/window/reinforced{dir = 1},/turf/space,/area) @@ -9068,7 +9069,7 @@ "dsu" = (/obj/machinery/door/airlock/hatch{name = "Teleporter Room"; req_access_txt = "17;65"},/turf/simulated/floor,/area/aisat) "dsv" = (/obj/machinery/teleport/station,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/aisat) "dsw" = (/obj/structure/transit_tube/station{dir = 4; icon_state = "closed"; reverse_launch = 1; tag = "icon-closed (EAST)"},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/aisat) -"dsx" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/flora/kirbyplants,/turf/simulated/floor,/area/aisat) +"dsx" = (/obj/machinery/computer/upload/borg,/obj/item/device/radio/intercom{broadcasting = 1; frequency = 1447; listening = 0; name = "Station Intercom (AI Private)"; pixel_y = -29},/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) "dsy" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/aisat) "dsz" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/aisat) "dsA" = (/obj/structure/transit_tube{icon_state = "N-S"},/turf/simulated/floor{icon_state = "warningcorner"; dir = 2},/area/aisat) @@ -9113,6 +9114,8 @@ "dtn" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/turf/simulated/floor{icon_state = "warningcorner"; dir = 4},/area/aisat) "dto" = (/obj/machinery/atmospherics/pipe/manifold{dir = 4; icon_state = "manifold"; initialize_directions = 11; level = 2},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "warningcorner"; dir = 8},/area/aisat) "dtp" = (/obj/machinery/atmospherics/pipe/manifold{dir = 1; icon_state = "manifold"; level = 2},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/aisat) +"dtq" = (/obj/item/device/radio/intercom{broadcasting = 1; frequency = 1447; listening = 0; name = "Station Intercom (AI Private)"; pixel_y = -29},/obj/machinery/camera/motion{c_tag = "MiniSat Antechamber"; dir = 1; network = list("MiniSat")},/turf/simulated/floor/carpet,/area/turret_protected/aisat_interior) +"dtr" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/flora/kirbyplants,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_x = 28; pixel_y = 0},/turf/simulated/floor,/area/aisat) "dts" = (/obj/structure/transit_tube{tag = "icon-E-W-Pass"; icon_state = "E-W-Pass"},/turf/space,/area) "dtu" = (/obj/structure/lattice,/obj/structure/lattice,/turf/space,/area) "dty" = (/obj/structure/transit_tube{tag = "icon-S-NW"; icon_state = "S-NW"},/obj/structure/lattice,/turf/space,/area) @@ -9261,13 +9264,13 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaawLaRtaRuaRuaRuaRuaRuaRuaRuaRuaRtaRuaRvawNawNaRwawNawNaRxawNaRyawNaRzaRAaRBaOOaRCaOPaRDaORaREaQnaQnaQnaQnaQnaQoaRFaQnaQnaQnaQtaOVaRGaQwaQwaOYaQyaPaaRHaRIaRIaRJaPeaRKaRLaRMaRNaROaRPaIuaIuaIvaQEaaaaaaaaaaaaaPiaPiaPiaPiaRQaRRaRSaRTaRUaRVaRWaRXaRYaRZaSaaPiaPiaPiaPiaaaaaaaaaaaaaQQaItaIuaIuaSbaKcaScaSdaSeaKcaSfaSgaSeaQUaLJaShaKcaSiaKcaSjaSkaSkaSkaSlaSmaSnaSoaSkaSpaSqaSraRhaSsaStaRhaSuaOmaIRaIUaHuaHwaHwaOraOsaHwaHwaHwaSvaSwaHwaSxaDVaKHaSyaSzaRpaRpaSAaSzaSBaDVaSCaSDaPTaSEaOFaOFaSFaPXaPXaSGaGbaGbaGbaGbaGbaGbaGbaGbaGbaGbaGbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqfaqfaSHaSIaSIaSIaSIaSIaSIaSJaqfaqfarkaSKaSLaSMaSMaSMaSNaSMaSMaSMaSOaSMaSOaOOaRCaSPaSQaORaSRaQnaQnaSSaSTaSUaSVaSSaQnaQnaQnaSWaOVaSXaSYaSZaOYaTaaPaaTbaTcaTdaTeaPeaTfaTgaThaRMaTiaTjaIuaIuaIvaJTaPhaTkaTlaPiaPiaTmaTnaToaTpaTqaTqaTraTsaTqaTtaTqaTqaTqaTuaTvaTwaTxaPiaPiaTlaTkaJOaTyaItaIuaIuaIIaTzaPuaTAaKcaKcaKcaTAaKcaQUaLJaTBaTCaKcaTDaINaSkaTEaTFaTGaTHaTIaTJaSkaTKaTLaTMaRhaTNaTOaRhaTPaTQaIRaIUaHuaTRaTRaOraOsaTSaHwaHwaTTaHwaTUaTVaDVaTWaTXaTYaRpaRpaTZaTYaFXaDVaUaaOFaPTaSEaOFaOGaUbaMnaMnaOIaGbaGbaGbaGbaGbaGbaGbaGbaGbaGbaGbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaUcaUcaUcaUcaUcaUcaUcaUcaUcaUcaUcaUcaUdazeawOaUeaUfaUgaUhaUiaUjaUkaUlaUmaUkaUnaUoaUpaUqaUraORaUsaQnaQnaSSaSUaUtaUuaSSaQnaQnaQnaQtaOVaOYaOYaUvaOYaUwaUxaUxaUxaUxaUyaUzaUAaRMaRMaRMaRMaTjaIuaIuaIvaIwaIwaUBaUCaUDaPiaUEaUFaUGaTqaTqaTqaUHaUIaUJaUKaULaUMaUNaULaUOaUPaUQaPiaURaUCaUSaUTaIwaItaIuaIuaSbaKcaPuaQTaKcaUUaKcaQTaKcaQUaLJaUVaKcaKcaKcaUWaSkaSkaUXaUYaUZaVaaTJaVbaINaVcaTMaVdaRhaRhaRhaTPaVeaIRaVfaHuaDOaDOaOraOsaVgaVhaHwaViaVjaKAaVkaVlaMjaVmaVnaVoaVoaVpaVqaVraVlaVsaVtaVuaVvaVtaVwaNsaaaaafaafaGbaGbaGbaGbaGbaGbaGbaGbaGbaGbaGbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaUcaUcaUcaUcaUcaUcaUcaUcaUcaUcaUcaUcaVxaVyaVzaxZaVAaVBaVCaVDaVEaVFaVGaVHaVIaVDaVJaVKaVLaVMaVNaORaVOaQnaQnaVPaQnaQnaQoaQnaQnaQnaQnaVQaVRaRCaVSaVTaVUaVVaVWaVXaVYaOOaVZaPeaWaaWbaWcaWdaWdaWeaIuaIuaIuaIuaIuaWfaWgaWhaWiaWjaWkaWlaWmaWnaWraWpaWqcpzaWtaWoaWsaWuaWvaWwaWxaWyaWzaWAaWBaWCaWDaWEaWFaIuaIuaIIaQSaScaSgaSeaKcaSfaSdaSeaQUaLJaTBaTBaWGaWHaINaSkaSkaSkaWIaSkaWJaTJaWKaINaOmaTMaRhaRhaRhaRhaTPaOmaIRaWLaWMaWNaWOaWPaWQaOraOraOraOraOraOraWRaWSaRpaRpaRpaRpaRpaRpaRpaWTaWUaWVaOFaOFaSEaOFaWWaNsaafaafaaaaGbaGbaGbaGbaGbaGbaGbaGbaGbaGbaGbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaUcaUcaUcaUcaUcaUcaUcaUcaUcaUcaUcaUcaVxaVyaVzaxZaVAaVBaVCaVDaVEaVFaVGaVHaVIaVDaVJaVKaVLaVMaVNaORaVOaQnaQnaVPaQnaQnaQoaQnaQnaQnaQnaVQaVRaRCaVSaVTaVUaVVaVWaVXaVYaOOaVZaPeaWaaWbaWcaWdaWdaWeaIuaIuaIuaIuaIuaWfaWgaWhaWiaWjaWkaWlaWmaWnaWraWpaWqcpzaWtaWoaWsaWuaWvaWwaWxaWyaWzaWAaWBaWCaWDaWEaWFaIuaIuaIIaQSaScaSgaSeaKcaSfaSdaSeaQUaLJaTBaTBaWGaWHaINaSkaSkaSkaWIaSkaWJaTJaWKaINaOmaTMaRhaRhaRhaRhaTPaOmaIRaWLbkLaWNaWOaWPaWQaOraOraOraOraOraOraWRaWSaRpaRpaRpaRpaRpaRpaRpaWTaWUaWVaOFaOFaSEaOFaWWaNsaafaafaaaaGbaGbaGbaGbaGbaGbaGbaGbaGbaGbaGbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaUcaUcaUcaUcaUcaUcaUcaUcaUcaUcaUcaUcaWXatwaWXawNawNaSOaWYaWZaXaaXaaXaaXaaXbaXcaSMaXdaXeaXfaXgaXhaXhaXhaXiaXhaXjaXkaXlaXmaXnaXnaXoaQtaXpaXqaXraXsaXtaXuaXvaXvaXwaXxaXyaXzaXAaXBaXBaXBaXCaPeaIuaIuaXDaXEaXFaXGaXHaXIaPiaXJaXKaXLaXMaPibqwbqwbqwauCbqwbapbqwaPiaXPaXLaXQaXRaPiaXSaXHaXTaXUaXEaXVaIuaIuaSbaKcaXWaTAaKcaKcaKcaTAaKcaQUaKcaLJaLJaKcaKcaXXaXYaXZaSkaSkaSkaYaaYbaYcaINaYdaYeaRhaYfaYfaYgaYeaYhaIRaYiaYjaYkaYlaOraOraOraOraYmaOraOraOraWRaWSaRpaRpaRpaRpaRpaRpaRpaWTaWUaWVaOFaOFaYnaOFaYoaNsaaaaafaafaGbaGbaGbaGbaGbaGbaGbaGbaGbaGbaGbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaUcaUcaUcaUcaUcaUcaUcaUcaUcaUcaUcaUcaYpaYqaVzaxZawNaYraWZaYsaXaaXaaXaaXaaYsaWZaSMaYtaYuaXfaXgaYvaYwaYxaYyaXhaYzaYAaYBaORaYCaYDaYEaQnaORaYFaYGaYHaYHaYHaYHaYIaYHaYHaYJaYKaYKaYKaYLaYKaYMaYNaYOaYOaYPaYQaYQaYQaYQaYQaYQaYRaYSaYRaYQbqwaYVbkMbkMbrIbambkMaYVbqwaYWaYWaYXaYYaYWaYWaYWaYWaYWaYWaYZaYOaYOaIIaZaaZbaZcaZdaKcaKcaKcaZeaZfaZgaKcaZhaZiaZjaINaINaINaZkaZlaZlaZlaINaINaINaZmaRhaRhaZnaZoaZpaZqaNfaIRaZraYjaZsaDOaZtaZuaZvaVhaZwaZuaZxaVhaZyaDVaZzaFXaZAaRpaRpaZAaFXaZBaDVaZCaZDaZEaSEaOFaOGaZFaMnaMnaOIaGbaGbaGbaGbaGbaGbaGbaGbaGbaGbaGbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaUcaUcaUcaUcaUcaUcaUcaUcaUcaUcaUcaUcawLaZGaOLaZHaSOaZIaZIaZIaWZaZJaZIaZKaZIaSMaZLaZMaZNaZOaZPaZPaZQaZRaZPaZSaYAaZTaORaYCaYDaYEaQnaORaZUaYGaYHaZVaZWaZWaZWaZXaYHaZYaZZbaababaYNaYNaYNaYNaIubacbadaYQbaebafbagbahbaibajbakbalbqwaYTbkMbkMbnIaXObnIbkMbkMasrbqwbaqbarbasbatbaubavbawbaxaYWaXVaIuaIuaIIaIIaIIaIIaIIbayaSbbaybazbaAaIIaIIaIIaIIaIIbaBbaCbaCbaCbaCbaCbaCbaDbaCbaBaNfbaEbaEbaFaYkaYkaYkaYkbaBaZrbaGaZsaDOaDOaDOaDOaDObaHaDOaDOaDOaDOaDVbaIbaJbaKbaKbaKbaKbaLaDVaDVbaMaOFbaNaSEaOFaOFaSGaPXaPXaSGaGbaGbaGbaGbaGbaGbaGbaGbaGbaGbaGbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqfaqfaSHaSIaSIaSIaSIaSIaSIaSJaqfaqfarkbaOaHLbaPaSMaSMaSMaSMaSMaSMaSMaSMaSMbaQaVWbaRaXgaYvbaSaYybaTaXhbaUbaVbaWaORaYCaYDaYEaQnaORaZUaYGaYHaZWbaXbaXaZWbaXaYHaZYbaYbaZbaZbbabbbbbcaYNbbdbbeaXDbcxbbgbbhbbibbjbbjbbibbkbblbqwbcpbkMbkMbnIbaobnIbkMbkMbczbqwbbtbaxbbubbvbbwbbxbaxbbyaYWaXVbbzaIubdpbbBaYkaYkaYkaYkaYkaYkaYkaYkbbCaYkaYkaYkaYkbbDaYkaYkaYkaYkaYkaYkaYkaYkbbBaYkaYkaYkaYkaYkaYkaYkaYkbbEbbFbbGbbHbbHbbHbbHbbHbbIbbJbbKbbHbbLbbHbbHbbMbbHbbHbbHbbHbbHbbHbbNbbObbPbbQbbRbbSaPVbbTbbUaMnaMnbbVaGbaGbaGbaGbaGbaGbaGbaGbaGbaGbaGbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaUcaUcaUcaUcaUcaUcaUcaUcaUcaUcaUcaUcaYpaYqaVzaxZawNaYraWZaYsaXaaXaaXaaXaaYsaWZaSMaYtaYuaXfaXgaYvaYwaYxaYyaXhaYzaYAaYBaORaYCaYDaYEaQnaORaYFaYGaYHaYHaYHaYHaYIaYHaYHaYJaYKaYKaYKaYLaYKaYMaYNaYOaYOaYPaYQaYQaYQaYQaYQaYQaYRaYSaYRaYQbqwaYVbkMbkMbrIbambkMaYVbqwaYWaYWaYXaYYaYWaYWaYWaYWaYWaYWaYZaYOaYOaIIaZaaZbaZcaZdaKcaKcaKcaZeaZfaZgaKcaZhaZiaZjaINaINaINaZkaZlaZlaZlaINaINaINaZmaRhaRhaZnaZoaZpaZqaNfaIRaZraYjaZsaDOaZtbaHaZvaVhaZyaZuaTTaVhbbsaDVaZzaFXaZAaRpaRpaZAaFXaZBaDVaZCaZDaZEaSEaOFaOGaZFaMnaMnaOIaGbaGbaGbaGbaGbaGbaGbaGbaGbaGbaGbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaUcaUcaUcaUcaUcaUcaUcaUcaUcaUcaUcaUcawLaZGaOLaZHaSOaZIaZIaZIaWZaZJaZIaZKaZIaSMaZLaZMaZNaZOaZPaZPaZQaZRaZPaZSaYAaZTaORaYCaYDaYEaQnaORaZUaYGaYHaZVaZWaZWaZWaZXaYHaZYaZZbaababaYNaYNaYNaYNaIubacbadaYQbaebafbagbahbaibajbakbalbqwaYTbkMbkMbnIaXObnIbkMbkMasrbqwbaqbarbasbatbaubavbawbaxaYWaXVaIuaIuaIIaIIaIIaIIaIIbayaSbbaybazbaAaIIaIIaIIaIIaIIbaBbaCbaCbaCbaCbaCbaCbaDbaCbaBaNfbaEbaEbaFaYkaYkaYkaYkbaBaZrbaGaZsaDOaDOaDOaZwaDOaZxaDOaZwaDOaDOaDVbaIbaJbaKbaKbaKbaKbaLaDVaDVbaMaOFbaNaSEaOFaOFaSGaPXaPXaSGaGbaGbaGbaGbaGbaGbaGbaGbaGbaGbaGbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqfaqfaSHaSIaSIaSIaSIaSIaSIaSJaqfaqfarkbaOaHLbaPaSMaSMaSMaSMaSMaSMaSMaSMaSMbaQaVWbaRaXgaYvbaSaYybaTaXhbaUbaVbaWaORaYCaYDaYEaQnaORaZUaYGaYHaZWbaXbaXaZWbaXaYHaZYbaYbaZbaZbbabbbbbcaYNbbdbbeaXDbcxbbgbbhbbibbjbbjbbibbkbblbqwbcpbkMbkMbnIbaobnIbkMbkMbczbqwbbtbaxbbubbvbbwbbxbaxbbyaYWaXVbbzaIubdpbbBaYkaYkaYkaYkaYkaYkaYkaYkbbCaYkaYkaYkaYkbbDaYkaYkaYkaYkaYkaYkaYkaYkbbBaYkaYkaYkaYkaYkaYkaYkaYkbbEbbFbbGbbHbbKbbHbbHbbHbbIbbJbbHbbHbbHbbHbbLbbMbbHbbHbbHbbHbbHbbHbbNbbObbPbbQbbRbbSaPVbbTbbUaMnaMnbbVaGbaGbaGbaGbaGbaGbaGbaGbaGbaGbaGbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaavJavNavMavMavMavMavMavMavMavMavNavMbbWawNawNbbXbbYbbZbbZbbZbbZbbZbcabcbaOObccbbYbcdaXgaXhaXhbcebcfaXhaORaORbcgaORaYCaYDbchbciaORaZUaYGaYHaZWbcjaZWbaXbckaYHaZYbclbaZbaZbaZbcmbcnaYNbcobbeaXDbbpbcqbcrbcsbctbcubcvbbkbcwbqwbbnbnIbkMbmiaYUbmibkMbnIbbfbqwbcAbcBbbubbvbcCbbxbaxbaxaYWbcDaIuaIubdpbbBaYkaYkaYkaYkaYkaYkaYkaYkbcEaYkaYkaYkaYkaYkaYkbcFbbHbbHbbHbbHbbHbbHbcGbbHbbHbbHbbHbbHbbHbbHbcHbcIbcJbcKaWNaWNaWNaWNaWNaWMaWNaWNaWNaWNaWNaWNaWNaWNaWNaWNaWNaWNbcLbcMbcNbcObcObcPaOFaOFaOFbcQaPXaPXbcQaGbaGbaGbaGbaGbaGbaGbaGbaGbaGbaGbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafawLawMawNawMawOawNawNawPawMawNawMawOawNawNawNbcRbcSbcRbcRbcRbcRbcRbcTaOOaOOaOObcTaXfaXgaYvbcUbcVbcWaXhbcXbcYbcZaORaORaORaOObbXaOOaZUaYGaYHbdaaZWbaXbdbbdcaYHaZYaYNbddbaZbaZbdebdfbdgbdhbbeaXDbuqbdjbcrbcsbdkbdlbcvbdmbdnbnGbupbuobkMbtfbunbkLbkMbrKbtbbrHbdubdvbdwbdxbdxbdybdzbdAaYWbdBbdCaIubdpbbBaYkaYkbdDaYkbdEbdFbdFbdFbdGbdFbdFbdFbdHaYkaYkaYkaYkaYkaYkbdIbdJbdKbbBaYkaYkaYkaYkaYkbdLbdMbdNbdObdPaYkaYkaYkaYkaYkbdQbdRaYkaYkaYkaYkaYkaYkaYkaYkaYkaYkaYkaYkaYkbdSbdTbdUbdVbdWaOFaOFaOGbdXaMnaMnaOIaGbaGbaGbaGbaGbaGbaGbaGbaGbaGbaGbaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafawLawMawNawMawOawNawNawPawMawNawMawOawNawNawNbcRbcSbcRbcRbcRbcRbcRbcTaOOaOOaOObcTaXfaXgaYvbcUbcVbcWaXhbcXbcYbcZaORaORaORaOObbXaOOaZUaYGaYHbdaaZWbaXbdbbdcaYHaZYaYNbddbaZbaZbdebdfbdgbdhbbeaXDbuqbdjbcrbcsbdkbdlbcvbdmbdnbnGbupbuobkMbtfbundsxbkMbrKbtbbrHbdubdvbdwbdxbdxbdybdzbdAaYWbdBbdCaIubdpbbBaYkaYkbdDaYkbdEbdFbdFbdFbdGbdFbdFbdFbdHaYkaYkaYkaYkaYkaYkbdIbdJbdKbbBaYkaYkaYkaYkaYkbdLbdMbdNbdObdPaYkaYkaYkaYkaYkbdQbdRaYkaYkaYkaYkaYkaYkaYkaYkaYkaYkaYkaYkaYkbdSbdTbdUbdVbdWaOFaOFaOGbdXaMnaMnaOIaGbaGbaGbaGbaGbaGbaGbaGbaGbaGbaGbaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarkavJbdYavJaxZawNawNayaavJbdZavJaybbeabebbebbcRbecbedbeebefbegbcRbehbeibejbejbekbelbembenbenbeobepbenbeqbeqberbeqbesaUoaUoaUoaUobetbeubevbewbexbexbeybezbevbeAbeBbeCbaZbaZbeDbeEbeFbeGbbeaXDaYQbaibeHbbibbibeIbbibbkbeJaYQbqybqwbapbqwbqwbqwbqAbqwbhzaYWbeNbeObePbeQbaxbeRbaxbeSaYWaXVaIuaIubeVbeVbeVbeVbeVbeVbeVbeWbeXbeYbeZbfabfabeWbfbbfbbfbbfbbfbbfcbfcbfcbfdbfcbfcbfcbfcbfeaYkbdQbffbfgbfhbfibfjaYkaYkbfkbfkbflbflbflbflbflbfmbfnbfnbfnbfnaYkbfnbfobfnbfnbfpbfqbfqbfqbfqbfrbfsbftbfuaNsaafaaaaafaGbaGbaGbaGbaGbaGbaGbaGbaGbaGbaGbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafazbaqfazcatwazdazeazfbfvbfwazdatwaziazjaqfazbarkbcRbfxbfybfybfybfzbcRbfAbfBaRCaRCbcTbfCaXhaYvbfDaYybfEaXhbfFbfGbfHbfHbfIbfJbfKbfKbfLbfKbfMbfNbfObfPbfObfObfQbfRbfSbfTbfUbaZbaZbfVbfWbfXbeGbbebfYaYQbfZbgabgbbaibgcbgdbgebgfaYQbqxcmqboZcltcltboXboYclybgiaYWbgjbgkbglbgmbaxbgnbaxbgoaYWaXVaIubgpbeVbgqbgrbgsbgtbgubeVbgvbgwbgwbgxbgybgybgybgzboLbjpbgCbfbbgDbgEbgEbgEbgEbgFbgGbgHbgIbgJbgIbgIbgIbgKbgLbgMbgNbgMbgObgObflbgPbgQbgRbflbgSbgTbgSbflbfmaYkbfpbfqbgUbgVbgUbfqbgWbgXbfqbgYbgZaMmaMnbhaaaaaaaaaaaGbaGbaGbaGbaGbaGbaGbaGbaGbaGbaGbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafawLbdYaAaaAbaAbaAbaAbaAcbdZawLaafaafaafaaabcRbhbbcRbhcbfybhdbhebcRaRCbbYbhfbhgbhhaXhaXhaXhaXhaXhaXhbhibhjbhkaRCbhlaYHaYHaYHbhmaYHaYHaYHbhnaYHaYHaYHaYHbhobhpbhqbhrbaZbaZbhsbhtbeFbeGbbebhuaYQbhvbgaaYRaYRaYRbaibhwbhxaYQahjckNcnAboTboUboWcnzckNahjaYWaLTbhBbhCbhDbaxbeRbhEbhFbhGbhHbhIbhJbeVbhKbhLbhMbhNbhObhPbgybhQbgybhRbgybgybhSbhTbhVbhUbhWbfbbhXbgEbhXbgEbhXbhYbgEbfcbhZbhZbiabibbfgbicbfibidbiebifbigbigbflbihbiibijbikbilbimbinbflbiobfnbipbfqbiqbirbiqbisbitbitbfqbiubgZaaaaafaaaaaaaaaaaaaaaaGbaGbaGbaGbaGbaGbaGbaGbaGbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -9276,7 +9279,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaafaafaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaafaaabcRblDblEblFbkhblGblHbcRaaaaafaafblIblIblIblIblIblIblIaaaaaablJblKblLblMblNbiNbiNbiNbiNbiNbiNbiNbiNblObhrbaZblPblQblRblSblTblUbiSblVaYNblWblXblYblZbmabmbbmbbmcbmdbmebmfbmbaafahlckNbBjbzTcltcltbyGckNahlaafbmkbmlbmmbmnbmobmpbmqbmrbmsbmtaIubmubmvbCybmxbkVbmybmzbeVbmAbhRbkXbkZbmBbgybmCbfbbmDbmEbmFbfbbmGbmHbmIbmJbmKbmLbmKbmMbmNbmObmNbmNbmNbmPbfibmQbiedqCdqobmRbmSbmTbmUbmVbmVbmWbmXbmYbflbmZblsbnabfqbnbbncbndblxbitbnebfqbiublAblAbgZbgZbgZbgZbgZbgZbgZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaafaaabcRbnfbngbnhbnibcRbcRbcRaaaaaaaaablIblIblIblIblIblIblIaaaaaabnjbnkbiNbnlbnmbnmbnmbnmbnmbnmbnmbnmbnmbnnbnobnpbnqbnrbnsbntbnubhsbnvbnwbnxbnybnzbnAblZblZbmbbnBbnCbnDbnEbnFbmbahlahlckNbvIbvJbmhbyDbyEckNahlaaabnLbnMbmmbnNbmsbnObmsbnPbmsbmtaIuaIubeVbnQbjsbkVbnRbnSbeVbnTbnUbnVbnWbnXbgybnYbnZboabobbocbfbbfcbodbfcbfcbfcboeboeboeboeboeboeboeboebjLbfiblgblhblibofbogbohboibojbojbojbmWbijbokbflbolblsbombfqbonboobonbopbitboqbfqborbosbosbosbosbosbosbosbotbgZbgZbgZbgZaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablIblIblIblIblIblIblIboubovbowboxbiNbiNbiNboyboyboyboybiNbiNbiNbiNbkpbozbaZboAboBboCboDboEbhsboFbaZboGboHboIboJboKbgBboMboNboOboPboQbjlbmbaafahlckNbkNbnHcoCbmjbmwckNahlaafbmkbpbbpcbpdbmsbpebmsbnPbmsbpfaIuaIubeVbpgbjsbkVbphbpibeVbpjbhRbgybpkbplbpmbpnbnTbpobppbpqbprbpsbptbgybpubpvbpwbpxbpybpzbpAbpBbpCbpDbgKbgLbpGbpFbpEbpHbpIbflbpJbojbojbpKbpLbijbpMbflbpNbpObpPbfqbpQbpRbpSbpTbpUbpVbfqbpWbpXbpXbpXbpXbpXbpXbpXbiubgZbpYbpZbgZbgZaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablIblIblIblIblIblIblIbqabqbbqabqcbqdbiNbiNbiNbiNbiNbiNbiNbiNbqeaYHaYHbqfbaZbaZbqgbqhbqibqjbhsbqkbaZbqlbqmbnzbqnbqobqpbqqbqrbqsbqtbqubqvbmbaaaahlckNbbsbmgcpgcpgbbrckNahlaaabqBbqCbqCbqCbqCbqCbqCbqDbqCbqEbqFbqFbeVbeVbqGbqHbqIbqJbeVbqKbhRbgybgybgybgybqLbgybqMbqNbgybgybgybqNbgybgybpvbqObqPbqQbqRbqSbqTbqUboebqVbqWboVbqXbqYbqZbiebflbrabijbijbrbbrcbijbrdbrebrfbrfbrgbrhbrhbribgUbrjbgUbrhbfqbpXbpXbrkbrlbrmbrnbrobpXbrpbrqbrrbrsbrtbgZaaaaafaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablIblIblIblIblIblIblIbqabqbbqabqcbqdbiNbiNbiNbiNbiNbiNbiNbiNbqeaYHaYHbqfbaZbaZbqgbqhbqibqjbhsbqkbaZbqlbqmbnzbqnbqobqpbqqbqrbqsbqtbqubqvbmbaaaahlckNdrNbmgdrkcpgbbrckNahlaaabqBbqCbqCbqCbqCbqCbqCbqDbqCbqEbqFbqFbeVbeVbqGbqHbqIbqJbeVbqKbhRbgybgybgybgybqLbgybqMbqNbgybgybgybqNbgybgybpvbqObqPbqQbqRbqSbqTbqUboebqVbqWboVbqXbqYbqZbiebflbrabijbijbrbbrcbijbrdbrebrfbrfbrgbrhbrhbribgUbrjbgUbrhbfqbpXbpXbrkbrlbrmbrnbrobpXbrpbrqbrrbrsbrtbgZaaaaafaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablIblIblIblIblIblIblIbrubrvbrubrwbiNbiNbiNboyboyboyboybiNbiNbrxbryaYHbrzbaZbaZbqgbrAbntbqjbhsbaZbaZbqlbqmbrBaIuaQQbqpbrCbrDbrEbrFbrFbrGbmbaafaafckNckNbkPbbqbbqbbockNaafaafbrJbkObrLbrMbrNbrObrPbrQbqCbrRaIuaIubrSbrTbrUbrVbrWbrXbrYbrZbsabrZbsbbrZbrZbscbrZbsdbsebrZbrZbrZbsfbsgbsgbshbqObsibqQbsjbsjbskbslboebjLbfibsmbsnbsobspbspbflbsqbsrbssbrebstbijbsubrebsvbswbsxbsybszbsAbsBbsCbsDbsEbsFbsGbsHbsIbsJbsJbsJbsKbsLbsMbgZbsNblAbgZbgZaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablIblIblIblIblIblIblIbsObovbsPbsQbiNbiNbiNbiNbiNbiNbiNbiNbiNbrxbsRaYHbsSbcmbaZbqgbaZbsTbaZbhsbaZbsUbnxbsVbrBaIuaQQbqpbmbbsWbsXbsYbsZbtabmbahlahlaafckNckNbhyckNckNaafaaaaaabrJbtcbtdbtebkKbtgbtgbthbtibtjaIuaIubtkbtlbhRbqMbtmbtnbtobtnbtpbtnbtqbtrbtnbtsbpqbttbgybgybgybtubtvbtvbtwbtxbtybtzbqQbtAbtBbqTbslboebfhbfibtCbtCbtDbtCbtCbflbrebrebrebrebtEbtFbgSbrebtGbtHbtIbsEbsEbtJblsbtKbtLbtMbtNbtObtPbtQbtRbtRbtSbtTbpXbtUbgZbsNblAbgZaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaablIblIblIblIblIblIblIbrubrvbrubnkbtVbiNbiNbtWbtXbtYbtXbtXbtXbtZbuabevbubbiXbiVbucbiVbudbiWbiXbuebufboGbsVbrBaXDbugbuhbmbbuibujbukbulbumbmbahlahlaafbdrbggcoCbeMbdraafaaaaaaburbusbutbutbuubuvbuwbuxbqCbuyaIuaIubnTbnTbuzbqMbuAbuBbuCbuDbuEbuFbuGbuCbuDbuCbuDbuCbuDbuCbfabfabtvbuHbsjbuIbuJbqObqQbuKbuLbuMbuNboebuObuPbuQbuRbuSbsEbsEbuTbsEbsEbuUbuVbuWbsEbsDbsEbuXbuYbuZbvabvbbvcbvdbvebvdbvdbvdbvfbvgbvhbvibvhbvjbvhbpXbtUbgZbsNbvkbgZbgZaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -9338,7 +9341,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacicciccrRcrHaaaaaaaafaaacrYaafaagaagaagaafaafcrIaafaaaaaacrHcrRciccicaaaaaaaafaafaafaaaahlahlahlahlaaaahlahlahlahlahlahlahlahlahlahlahjahlahlahldtzdtBdtAahlahjahjahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaacqbaafcrjcrkcrkcrkcrkcrZcsacrZcrncrncrncrncroaafcqbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaciccrPcrQcrHaaaaaaaafaaaaaaaafaafaafaafaafaaaaaaaafaaaaaacrHcrNcrOcicaaaahlahlaafaagaafahlahlahlahlaaaahlahlahlahlahlahlahlahlahlahlahjahlahlahlahjdtzdtyahjahjahjahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaacqbaafcrBcrBcrBcrBcrBaaacpdaaacrBcrBcrBcrBcrBaaacqbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaciccrCcrHcsbaaaaaacscaaaaaaaaaaafaaaaaaaaaaaaaaaaafaaaaaacrHcrHcrCcicaaaahlahlaaeaafaaaahlahlahlahlaaaahlahlahlahlahlahlahlahlahlahlahjahlahlahlahjdpHdsEdpHdsGdsFdqudqudqudquahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaacqbaaaaaaaafaafaafaaaaaacpdaafaaaaaaaafaafaaaaaacqbaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsdcsdcsdcsdcsdcsdcsdcsdcsdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaciccsecsfcrHaafaafaafcrIaaaaaacrIaaaaaaaaaaaacrIaafcsgaafcrHcshcsicicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahldtuahjahjahjahjdpHdsAdspdsydsxdsDdsCdsBdquahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaeaaaaaaaaaaaacqbcqbcqbcqbcqbaaaaaaaaacpdaaaaaaaaacqbcqbcqbcqccqbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsdcsdcsdcsdcsdcsdcsdcsdcsdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaciccsecsfcrHaafaafaafcrIaaaaaacrIaaaaaaaaaaaacrIaafcsgaafcrHcshcsicicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahldtuahjahjahjahjdpHdsAdspdsydtrdsDdsCdsBdquahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaeaaaaaaaaaaaacqbcqbcqbcqbcqbaaaaaaaaacpdaaaaaaaaacqbcqbcqbcqccqbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsdcsdcsdcsdcsdcsdcsdcsdcsdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaciccsjcsjcrHaaaaaaaafaafaafaafaafaafaafaafaafaafaafaaaaaacrHcsjcsjcicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahjahlahlahlahjdpHdswdsrdrUdrUdsudstdsvdquahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqbaafcskaafcqbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsdcsdcsdcsdcsdcsdcsdcsdcsdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaclcciccqWcrHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrHcqWcicclcaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahlahjahlahlahlahjdpHdssdsrdrUdrUdsqdsodqydquahlahlahlahjahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqbaaaaafaaacqbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsdcsdcsdcsdcsdcsdcsdcsdcsdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahlahjahjahjahjahjdpHdpHdsmdrUdrUdqudsndqudquahlahlahjahjahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqbcqbcqbcqbcqbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -9350,7 +9353,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahldpXdqfdpYdrRcMfdrQdrcdrpdredredrudredredrodrcdrQdrQdrPdpZdqmdpXahlahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahlaaGcKWdpYcLyahlaaadrcdrvdrwdrtdpIdrrdrsdrqdrcaaaahldqfdpZdqmdpXahlahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahlaaGcKWdradpHdpHdpHdrcdrddredrfdrhdrfdredridrcdpHdpHdpHdrjdqmdpXahlahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahlaaGcKWdpYcLyahlaaadrcdsYdrmdrkdrfdrfdrmdsZdrcaaaahldqfdpZdqmdpXahlahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacslcslcslcslcslcslcslcslcslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahlaaGcKWdpYcLyahlaaadrcdsYdrmdrfdrfdtqdrmdsZdrcaaaahldqfdpZdqmdpXahlahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacslcslcslcslcslcslcslcslcslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahldpXdqfdpYdqmahlahldqudqQdqtdqTdqUaXNdqvdqWdquahlahldqfdpZdqmdpXahlahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacslcslcslcslcslcslcslcslcslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahldpXdqfdpYdqmahldquaXNdqZdqDdqYbandqXdqDdqVaXNdquahldqfdpZdqmdpXahlahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacslcslcslcslcslcslcslcslcslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdcsdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlahlahlahlahlahldpXdqfdpYdqmahldquaXNdqMbanbandqObanbandqPaXNdquahldqfdpZdqmdpXahlahlahlahlahlahlahlahlahlahlahlahlahlahlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacslcslcslcslcslcslcslcslcslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa From df835457787e262fafb56e4397bc48993b919473 Mon Sep 17 00:00:00 2001 From: ikarrus Date: Sat, 17 May 2014 12:38:25 -0600 Subject: [PATCH 152/185] Beepsky will no longer arrest monkeys when "Check for weapon authorization" is on But he will still hate them --- code/game/machinery/bots/secbot.dm | 57 ++++++++++++++++-------------- 1 file changed, 31 insertions(+), 26 deletions(-) diff --git a/code/game/machinery/bots/secbot.dm b/code/game/machinery/bots/secbot.dm index 61a9ce0d7b7..e14f870ce67 100644 --- a/code/game/machinery/bots/secbot.dm +++ b/code/game/machinery/bots/secbot.dm @@ -37,6 +37,11 @@ var/beacon_freq = 1445 // navigation beacon frequency var/control_freq = 1447 // bot control frequency + //List of weapons that secbots will not arrest for + var/safe_weapons = list(\ + /obj/item/weapon/gun/energy/laser/bluetag,\ + /obj/item/weapon/gun/energy/laser/redtag,\ + /obj/item/weapon/gun/energy/laser/practice) var/turf/patrol_target // this is turf to navigate to (location of beacon) var/new_destination // pending new destination (waiting for beacon response) @@ -581,10 +586,8 @@ Auto Patrol: []"}, if((C.name == src.oldtarget_name) && (world.time < src.last_found + 100)) continue - if(istype(C, /mob/living/carbon/human)) + if(istype(C, /mob/living/carbon)) src.threatlevel = src.assess_perp(C) - else if((src.idcheck) && (istype(C, /mob/living/carbon/monkey))) - src.threatlevel = 4 if(!src.threatlevel) continue @@ -605,49 +608,51 @@ Auto Patrol: []"}, //If the security records say to arrest them, arrest them //Or if they have weapons and aren't security, arrest them. -/obj/machinery/bot/secbot/proc/assess_perp(mob/living/carbon/human/perp as mob) +/obj/machinery/bot/secbot/proc/assess_perp(mob/living/carbon/perp as mob) var/threatcount = 0 if(src.emagged == 2) return 10 //Everyone is a criminal! if(src.idcheck && !src.allowed(perp)) - if(istype(perp.l_hand, /obj/item/weapon/gun) || istype(perp.l_hand, /obj/item/weapon/melee)) - if(!istype(perp.l_hand, /obj/item/weapon/gun/energy/laser/bluetag) \ - && !istype(perp.l_hand, /obj/item/weapon/gun/energy/laser/redtag) \ - && !istype(perp.l_hand, /obj/item/weapon/gun/energy/laser/practice)) - threatcount += 4 + if(check_for_weapons(perp.l_hand)) + threatcount += 4 + if(check_for_weapons(perp.r_hand)) + threatcount += 4 - if(istype(perp.r_hand, /obj/item/weapon/gun) || istype(perp.r_hand, /obj/item/weapon/melee)) - if(!istype(perp.r_hand, /obj/item/weapon/gun/energy/laser/bluetag) \ - && !istype(perp.r_hand, /obj/item/weapon/gun/energy/laser/redtag) \ - && !istype(perp.r_hand, /obj/item/weapon/gun/energy/laser/practice)) - threatcount += 4 + if(istype(perp, /mob/living/carbon/human)) + var/mob/living/carbon/human/humanperp = perp - if(istype(perp:belt, /obj/item/weapon/gun) || istype(perp:belt, /obj/item/weapon/melee)) - if(!istype(perp:belt, /obj/item/weapon/gun/energy/laser/bluetag) \ - && !istype(perp:belt, /obj/item/weapon/gun/energy/laser/redtag) \ - && !istype(perp:belt, /obj/item/weapon/gun/energy/laser/practice)) + if(src.idcheck && !src.allowed(perp)) + if(check_for_weapons(humanperp.belt)) threatcount += 2 - if(istype(perp:wear_suit, /obj/item/clothing/suit/wizrobe)) + if(istype(humanperp.head, /obj/item/clothing/head/wizard) || istype(humanperp.head, /obj/item/clothing/head/helmet/space/rig/wizard)) threatcount += 2 - if(perp.dna && perp.dna.mutantrace && perp.dna.mutantrace != "none") + if(humanperp.dna && humanperp.dna.mutantrace && humanperp.dna.mutantrace != "none") threatcount += 2 //Agent cards lower threatlevel. - if(perp.wear_id && istype(perp:wear_id.GetID(), /obj/item/weapon/card/id/syndicate)) + if(humanperp.wear_id && istype(humanperp.wear_id.GetID(), /obj/item/weapon/card/id/syndicate)) threatcount -= 2 - if(check_records) //check if they are set to *Arrest* on records - var/perpname = perp.get_face_name(perp.get_id_name()) - var/datum/data/record/R = find_record("name", perpname, data_core.security) - if(R && (R.fields["criminal"] == "*Arrest*")) - threatcount += 4 + if(check_records) //check if they are set to *Arrest* on records + var/perpname = humanperp.get_face_name(humanperp.get_id_name()) + var/datum/data/record/R = find_record("name", perpname, data_core.security) + if(R && (R.fields["criminal"] == "*Arrest*")) + threatcount += 4 + else + threatcount += 2 return threatcount +/obj/machinery/bot/secbot/proc/check_for_weapons(var/obj/item/slot_item) + if(istype(slot_item, /obj/item/weapon/gun) || istype(slot_item, /obj/item/weapon/melee)) + if(!(slot_item.type in safe_weapons)) + return 1 + return 0 + /obj/machinery/bot/secbot/Bump(M as mob|obj) //Leave no door unopened! if((istype(M, /obj/machinery/door)) && (!isnull(src.botcard))) var/obj/machinery/door/D = M From f861f12075d1bf9bedd271f35347b73afd1fa1a9 Mon Sep 17 00:00:00 2001 From: ikarrus Date: Sat, 17 May 2014 14:30:24 -0600 Subject: [PATCH 153/185] Fixes Immovable Rod -Rod no longer gets deleted after hitting a few objects -Rod no longer gets stuck in the rare case it hits a shuttle at just the right angle. It now explodes. --- code/modules/events/immovable_rod.dm | 58 ++++++++++++++-------------- 1 file changed, 30 insertions(+), 28 deletions(-) diff --git a/code/modules/events/immovable_rod.dm b/code/modules/events/immovable_rod.dm index c418e498812..56056867d87 100644 --- a/code/modules/events/immovable_rod.dm +++ b/code/modules/events/immovable_rod.dm @@ -62,36 +62,38 @@ In my current plan for it, 'solid' will be defined as anything with density == 1 var/z_original = 0 var/destination - New(atom/start, atom/end) - loc = start - z_original = z - destination = end - if(end && end.z==z_original) - walk_towards(src, destination, 1) +/obj/effect/immovablerod/New(atom/start, atom/end) + loc = start + z_original = z + destination = end + if(end && end.z==z_original) + walk_towards(src, destination, 1) - Move() - if(z != z_original || loc == destination) +/obj/effect/immovablerod/Move() + if(z != z_original || loc == destination) + qdel(src) + return ..() + +/obj/effect/immovablerod/Bump(atom/clong) + playsound(src, 'sound/effects/bang.ogg', 50, 1) + for (var/mob/O in hearers(src, null)) + O.show_message("CLANG", 2) + + if(istype(clong, /turf/unsimulated) || istype(clong, /turf/simulated/shuttle)) //Unstoppable force meets immovable object + explosion(src.loc, 4, 5, 6, 7, 0) + if(src) qdel(src) - return ..() + return - Bump(atom/clong) - if (istype(clong, /turf) && !istype(clong, /turf/unsimulated)) - if(clong.density) - clong.ex_act(2) - for (var/mob/O in hearers(src, null)) - O.show_message("CLANG", 2) + if(clong && prob(25)) + src.loc = clong.loc - else if (istype(clong, /obj)) - if(clong.density) - clong.ex_act(2) - for (var/mob/O in hearers(src, null)) - O.show_message("CLANG", 2) + if (istype(clong, /turf) || istype(clong, /obj)) + if(clong.density) + clong.ex_act(2) - else if (istype(clong, /mob)) - if(clong.density || prob(10)) - clong.meteorhit(src) - else - qdel(src) - - if(clong && prob(25)) - src.loc = clong.loc + else if (istype(clong, /mob)) + if(clong.density || prob(10)) + clong.meteorhit(src) + else + qdel(src) From 054de393ccb9570a62feed0e0cd8cdd59c3e4972 Mon Sep 17 00:00:00 2001 From: AlexanderUlanH Date: Sat, 17 May 2014 18:26:18 -0400 Subject: [PATCH 154/185] Fixed ling regeneration bugs It now requires DNA, preventing infinite genomes, and now correctly displays the chemical cost, rather than leaving lings thinking that 10 chemicals would be sufficient to revive. --- code/game/gamemodes/changeling/powers/fakedeath.dm | 3 ++- code/game/gamemodes/changeling/powers/revive.dm | 1 - 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/gamemodes/changeling/powers/fakedeath.dm b/code/game/gamemodes/changeling/powers/fakedeath.dm index ad0cb2bbfe1..7a0ed702059 100644 --- a/code/game/gamemodes/changeling/powers/fakedeath.dm +++ b/code/game/gamemodes/changeling/powers/fakedeath.dm @@ -1,8 +1,9 @@ /obj/effect/proc_holder/changeling/fakedeath name = "Regenerative Stasis" desc = "We fall into a stasis, allowing us to regenerate." - chemical_cost = 10 + chemical_cost = 20 dna_cost = 0 + req_dna = 1 req_stat = DEAD max_genetic_damage = 100 diff --git a/code/game/gamemodes/changeling/powers/revive.dm b/code/game/gamemodes/changeling/powers/revive.dm index 69c09bd383f..36842d319c5 100644 --- a/code/game/gamemodes/changeling/powers/revive.dm +++ b/code/game/gamemodes/changeling/powers/revive.dm @@ -1,7 +1,6 @@ /obj/effect/proc_holder/changeling/revive name = "Regenerate" desc = "We regenerate, healing all damage from our form." - chemical_cost = 10 req_stat = DEAD //Revive from regenerative stasis From 5f7875f4de418a5c97fac3172b4b5dd3e6803828 Mon Sep 17 00:00:00 2001 From: Menshin Date: Sun, 18 May 2014 11:50:25 +0200 Subject: [PATCH 155/185] Replaced the "not used anymore" command_alert with the new "priority_annonce" proc, making the code compilable again. --- code/modules/events/meateor_wave.dm | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/code/modules/events/meateor_wave.dm b/code/modules/events/meateor_wave.dm index fae9ac4fe4e..b45140ad5ee 100644 --- a/code/modules/events/meateor_wave.dm +++ b/code/modules/events/meateor_wave.dm @@ -5,9 +5,7 @@ max_occurrences = 1 /datum/round_event/meteor_wave/meaty/announce() - command_alert("Meaty ores have been detected on collision course with the station.", "Oh Crap, Get The Mop.") - world << sound('sound/AI/meteors.ogg') - + priority_announce("Meaty ores have been detected on collision course with the station.", "Oh Crap, Get The Mop.",'sound/AI/meteors.ogg') /datum/round_event/meteor_wave/meaty/tick() if(IsMultiple(activeFor, 3)) From 89ba2a30ecc2d777e4dc5e7df2465c67557431bc Mon Sep 17 00:00:00 2001 From: ikarrus Date: Sun, 18 May 2014 11:08:39 -0600 Subject: [PATCH 156/185] Fixes newscaster spam when announcements via RCs are made It was making a new story for each player connected. I didn't catch it during local tests as there was only one player connected (me). My sincerest apologies! Fixes #3736 --- code/game/machinery/requests_console.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/machinery/requests_console.dm b/code/game/machinery/requests_console.dm index e39e53257a8..851fd8c7055 100644 --- a/code/game/machinery/requests_console.dm +++ b/code/game/machinery/requests_console.dm @@ -283,7 +283,7 @@ var/list/obj/machinery/requests_console/allConsoles = list() for(var/mob/M in player_list) if(!istype(M,/mob/new_player)) M << "[department] announcement: [message]" - news_network.SubmitArticle(message, department, "Station Announcements", null) + news_network.SubmitArticle(message, department, "Station Announcements", null) announceAuth = 0 message = "" screen = 0 From ed5f8a0ee625eaa7907e5ef64dfb3e49f65046f3 Mon Sep 17 00:00:00 2001 From: Kelenius Date: Sun, 18 May 2014 21:27:40 +0400 Subject: [PATCH 157/185] Fixes, part 1 --- code/game/objects/items/devices/scanners.dm | 4 ++-- code/modules/mob/living/carbon/metroid/death.dm | 2 +- code/modules/mob/living/carbon/metroid/life.dm | 13 ++++++++----- code/modules/mob/living/carbon/metroid/metroid.dm | 5 +++-- 4 files changed, 14 insertions(+), 10 deletions(-) diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index 7aacee5d394..0751f2a890e 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -314,8 +314,8 @@ MASS SPECTROMETER throw_range = 7 m_amt = 30 g_amt = 20 - - attack(mob/living/M as mob, mob/living/user as mob) + +/obj/item/device/slime_scanner/attack(mob/living/M as mob, mob/living/user as mob) if (!isslime(M)) user << "This device can only scan slimes!" return diff --git a/code/modules/mob/living/carbon/metroid/death.dm b/code/modules/mob/living/carbon/metroid/death.dm index ae19372c7e5..5ee5bf3eda0 100644 --- a/code/modules/mob/living/carbon/metroid/death.dm +++ b/code/modules/mob/living/carbon/metroid/death.dm @@ -15,7 +15,7 @@ if(stat == DEAD) return stat = DEAD icon_state = "[colour] baby slime dead" - overlays.Cut() + overlays = 0 for(var/mob/O in viewers(src, null)) O.show_message("The [name] seizes up and falls limp...", 1) //ded -- Urist diff --git a/code/modules/mob/living/carbon/metroid/life.dm b/code/modules/mob/living/carbon/metroid/life.dm index 52d7fa5dc9d..e23f7df22ad 100644 --- a/code/modules/mob/living/carbon/metroid/life.dm +++ b/code/modules/mob/living/carbon/metroid/life.dm @@ -193,9 +193,11 @@ else if(src.health < config.health_threshold_crit) - if(!src.reagents.has_reagent("inaprovaline")) src.adjustOxyLoss(10) + if(!src.reagents.has_reagent("inaprovaline")) + src.adjustOxyLoss(10) - if(src.stat != DEAD) src.stat = UNCONSCIOUS + if(src.stat != DEAD) + src.stat = UNCONSCIOUS if(prob(30)) adjustOxyLoss(-1) @@ -367,7 +369,8 @@ if (Target) target_patience = rand(5,7) - if (is_adult) target_patience += 3 + if (is_adult) + target_patience += 3 if(!Target) // If we have no target, we are wandering or following orders if (Leader) @@ -388,7 +391,8 @@ else if(canmove && isturf(loc) && prob(33)) step(src, pick(cardinal)) else if(!AIproc) - spawn() AIprocess() + spawn() + AIprocess() /mob/living/carbon/slime/proc/handle_speech_and_mood() //Mood starts here @@ -523,7 +527,6 @@ if (Victim) phrases += "Nom..." phrases += "Tasty..." - if (amount_grown > 8 && !is_adult) phrases += "Soon I'll evolve..." if (powerlevel > 3) phrases += "Bzzz..." if (powerlevel > 5) phrases += "Zap..." if (powerlevel > 8) phrases += "Zap... Bzz..." diff --git a/code/modules/mob/living/carbon/metroid/metroid.dm b/code/modules/mob/living/carbon/metroid/metroid.dm index c790161310d..59b643474ff 100644 --- a/code/modules/mob/living/carbon/metroid/metroid.dm +++ b/code/modules/mob/living/carbon/metroid/metroid.dm @@ -68,7 +68,7 @@ /mob/living/carbon/slime/regenerate_icons() icon_state = "[colour] [is_adult ? "adult" : "baby"] slime" - overlays.Cut() + overlays = 0 if (mood) overlays += image('icons/mob/slimes.dmi', icon_state = "aslime-[mood]") ..() @@ -290,7 +290,8 @@ updatehealth() /mob/living/carbon/slime/attack_paw(mob/living/carbon/monkey/M as mob) - if(!(istype(M, /mob/living/carbon/monkey))) return // Fix for aliens receiving double messages when attacking other aliens. + if(!(istype(M, /mob/living/carbon/monkey))) + return // Fix for aliens receiving double messages when attacking other aliens. if (!ticker) M << "You cannot attack people before the game has started." From 7ccb0121e321e5edca0360e3add158d55d6b8925 Mon Sep 17 00:00:00 2001 From: ikarrus Date: Sun, 18 May 2014 11:36:02 -0600 Subject: [PATCH 158/185] Swapped the order of subtitle and header of priority announcements --- code/defines/procs/priority_announce.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/defines/procs/priority_announce.dm b/code/defines/procs/priority_announce.dm index 3fa44fb82e9..12690ea4a41 100644 --- a/code/defines/procs/priority_announce.dm +++ b/code/defines/procs/priority_announce.dm @@ -8,17 +8,17 @@ announcement += "

Priority Announcement

" else if(type == "Captain") - news_network.SubmitArticle(text, "Captain's Announcement", "Station Announcements", null) announcement += "

Captain Announces

" + news_network.SubmitArticle(text, "Captain's Announcement", "Station Announcements", null) else + announcement += "

[command_name()] Update

" if (title && length(title) > 0) announcement += "

[html_encode(title)]

" if(title == "") news_network.SubmitArticle(text, "Central Command Update", "Station Announcements", null) else news_network.SubmitArticle(title + "

" + text, "Central Command", "Station Announcements", null) - announcement += "

[command_name()] Update

" announcement += "
[html_encode(text)]
" announcement += "
" From a576cb7fea8540ab4f5b399bf21f2c6237fba8a7 Mon Sep 17 00:00:00 2001 From: Kelenius Date: Sun, 18 May 2014 21:42:20 +0400 Subject: [PATCH 159/185] Part 2 --- code/game/objects/items/devices/scanners.dm | 54 ++++++++++----------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index 0751f2a890e..98680e5ae79 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -316,32 +316,32 @@ MASS SPECTROMETER g_amt = 20 /obj/item/device/slime_scanner/attack(mob/living/M as mob, mob/living/user as mob) - if (!isslime(M)) - user << "This device can only scan slimes!" - return - var/mob/living/carbon/slime/T = M - user.show_message("Slime scan results:") - user.show_message(text("[T.colour] [] slime", T.is_adult ? "adult" : "baby")) - user.show_message(text("Nutrition: [T.nutrition]/[]", T.get_max_nutrition())) - if (T.nutrition < T.get_starve_nutrition()) - user.show_message("Warning: slime is starving!") - else if (T.nutrition < T.get_hunger_nutrition()) - user.show_message("Warning: slime is hungry") - user.show_message("Electric change strength: [T.powerlevel]") - user.show_message("Health: [T.health]") - if (T.slime_mutation[4] == T.colour) - user.show_message("This slime does not evolve any further") - else - if (T.slime_mutation[3] == T.slime_mutation[4]) - if (T.slime_mutation[2] == T.slime_mutation[1]) - user.show_message(text("Possible mutation: []", T.slime_mutation[3])) - user.show_message("Genetic destability: [T.mutation_chance/2]% chance of mutation on splitting") - else - user.show_message(text("Possible mutations: [], [], [] (x2)", T.slime_mutation[1], T.slime_mutation[2], T.slime_mutation[3])) - user.show_message("Genetic destability: [T.mutation_chance]% chance of mutation on splitting") + if (!isslime(M)) + user << "This device can only scan slimes!" + return + var/mob/living/carbon/slime/T = M + user.show_message("Slime scan results:") + user.show_message(text("[T.colour] [] slime", T.is_adult ? "adult" : "baby")) + user.show_message(text("Nutrition: [T.nutrition]/[]", T.get_max_nutrition())) + if (T.nutrition < T.get_starve_nutrition()) + user.show_message("Warning: slime is starving!") + else if (T.nutrition < T.get_hunger_nutrition()) + user.show_message("Warning: slime is hungry") + user.show_message("Electric change strength: [T.powerlevel]") + user.show_message("Health: [T.health]") + if (T.slime_mutation[4] == T.colour) + user.show_message("This slime does not evolve any further") + else + if (T.slime_mutation[3] == T.slime_mutation[4]) + if (T.slime_mutation[2] == T.slime_mutation[1]) + user.show_message(text("Possible mutation: []", T.slime_mutation[3])) + user.show_message("Genetic destability: [T.mutation_chance/2]% chance of mutation on splitting") else - user.show_message(text("Possible mutations: [], [], [], []", T.slime_mutation[1], T.slime_mutation[2], T.slime_mutation[3], T.slime_mutation[4])) + user.show_message(text("Possible mutations: [], [], [] (x2)", T.slime_mutation[1], T.slime_mutation[2], T.slime_mutation[3])) user.show_message("Genetic destability: [T.mutation_chance]% chance of mutation on splitting") - if (T.cores > 1) - user.show_message("Anomalious slime core amount detected") - user.show_message("Growth progress: [T.amount_grown]/10") \ No newline at end of file + else + user.show_message(text("Possible mutations: [], [], [], []", T.slime_mutation[1], T.slime_mutation[2], T.slime_mutation[3], T.slime_mutation[4])) + user.show_message("Genetic destability: [T.mutation_chance]% chance of mutation on splitting") + if (T.cores > 1) + user.show_message("Anomalious slime core amount detected") + user.show_message("Growth progress: [T.amount_grown]/10") \ No newline at end of file From 584a014a12c6883680ff572b3460d4853bbc1ea7 Mon Sep 17 00:00:00 2001 From: Kelenius Date: Sun, 18 May 2014 22:46:32 +0400 Subject: [PATCH 160/185] Hopefully last change --- code/game/objects/items/devices/scanners.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index 98680e5ae79..996ce6ff0b1 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -317,7 +317,7 @@ MASS SPECTROMETER /obj/item/device/slime_scanner/attack(mob/living/M as mob, mob/living/user as mob) if (!isslime(M)) - user << "This device can only scan slimes!" + user << "This device can only scan slimes!" return var/mob/living/carbon/slime/T = M user.show_message("Slime scan results:") From 31d69ef4f56503fe1808c3f181d49623df78621d Mon Sep 17 00:00:00 2001 From: Rolan7 Date: Mon, 19 May 2014 02:48:53 -0400 Subject: [PATCH 161/185] Sets the screenloc property for items in update_icons even if there's no client at the moment (possibly because the player has lost the connection temporarily). --- .../mob/living/carbon/human/update_icons.dm | 52 ++++++++----------- 1 file changed, 22 insertions(+), 30 deletions(-) diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index 028f4b7ccf2..259f29693d5 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -314,10 +314,9 @@ Please contact me on #coderbus IRC. ~Carnie x if(istype(w_uniform, /obj/item/clothing/under)) var/obj/item/clothing/under/U = w_uniform + w_uniform.screen_loc = ui_iclothing // Set the item's location on the screen if(client && hud_used && hud_used.hud_shown) - if(hud_used.inventory_shown) //if the inventory is open ... - w_uniform.screen_loc = ui_iclothing //...draw the item in the inventory screen - client.screen += w_uniform //Either way, add the item to the HUD + client.screen += w_uniform // add the item to the HUD var/t_color = w_uniform.item_color if(!t_color) t_color = icon_state @@ -351,8 +350,8 @@ Please contact me on #coderbus IRC. ~Carnie x /mob/living/carbon/human/update_inv_wear_id() remove_overlay(ID_LAYER) if(wear_id) + wear_id.screen_loc = ui_id //TODO if(client && hud_used && hud_used.hud_shown) - wear_id.screen_loc = ui_id //TODO client.screen += wear_id overlays_standing[ID_LAYER] = image("icon"='icons/mob/mob.dmi', "icon_state"="id", "layer"=-ID_LAYER) @@ -363,10 +362,9 @@ Please contact me on #coderbus IRC. ~Carnie x /mob/living/carbon/human/update_inv_gloves() remove_overlay(GLOVES_LAYER) if(gloves) + gloves.screen_loc = ui_gloves if(client && hud_used && hud_used.hud_shown) - if(hud_used.inventory_shown) //if the inventory is open ... - gloves.screen_loc = ui_gloves //...draw the item in the inventory screen - client.screen += gloves //Either way, add the item to the HUD + client.screen += gloves // add the item to the HUD var/t_state = gloves.item_state if(!t_state) t_state = gloves.icon_state @@ -387,10 +385,9 @@ Please contact me on #coderbus IRC. ~Carnie x remove_overlay(GLASSES_LAYER) if(glasses) + glasses.screen_loc = ui_glasses if(client && hud_used && hud_used.hud_shown) - if(hud_used.inventory_shown) //if the inventory is open ... - glasses.screen_loc = ui_glasses //...draw the item in the inventory screen - client.screen += glasses //Either way, add the item to the HUD + client.screen += glasses // add the item to the HUD overlays_standing[GLASSES_LAYER] = image("icon"='icons/mob/eyes.dmi', "icon_state"="[glasses.icon_state]", "layer"=-GLASSES_LAYER) @@ -401,10 +398,9 @@ Please contact me on #coderbus IRC. ~Carnie x remove_overlay(EARS_LAYER) if(ears) + ears.screen_loc = ui_ears if(client && hud_used && hud_used.hud_shown) - if(hud_used.inventory_shown) //if the inventory is open ... - ears.screen_loc = ui_ears //...draw the item in the inventory screen - client.screen += ears //Either way, add the item to the HUD + client.screen += ears // add the item to the HUD overlays_standing[EARS_LAYER] = image("icon"='icons/mob/ears.dmi', "icon_state"="[ears.icon_state]", "layer"=-EARS_LAYER) @@ -415,10 +411,9 @@ Please contact me on #coderbus IRC. ~Carnie x remove_overlay(SHOES_LAYER) if(shoes) + shoes.screen_loc = ui_shoes if(client && hud_used && hud_used.hud_shown) - if(hud_used.inventory_shown) //if the inventory is open ... - shoes.screen_loc = ui_shoes //...draw the item in the inventory screen - client.screen += shoes //Either way, add the item to the HUD + client.screen += shoes // add the item to the HUD var/image/standing = image("icon"='icons/mob/feet.dmi', "icon_state"="[shoes.icon_state]", "layer"=-SHOES_LAYER) overlays_standing[SHOES_LAYER] = standing @@ -433,8 +428,8 @@ Please contact me on #coderbus IRC. ~Carnie x remove_overlay(SUIT_STORE_LAYER) if(s_store) + s_store.screen_loc = ui_sstore1 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 @@ -449,10 +444,9 @@ Please contact me on #coderbus IRC. ~Carnie x remove_overlay(HEAD_LAYER) if(head) + head.screen_loc = ui_head if(client && hud_used && hud_used.hud_shown) - if(hud_used.inventory_shown) //if the inventory is open ... - head.screen_loc = ui_head //TODO //...draw the item in the inventory screen - client.screen += head //Either way, add the item to the HUD + client.screen += head // add the item to the HUD var/image/standing = image("icon"='icons/mob/head.dmi', "icon_state"="[head.icon_state]", "layer"=-HEAD_LAYER) standing.color = head.color // For now, this is here solely for kitty ears, but everything should do this eventually @@ -470,8 +464,8 @@ Please contact me on #coderbus IRC. ~Carnie x remove_overlay(BELT_LAYER) if(belt) + belt.screen_loc = ui_belt if(client && hud_used && hud_used.hud_shown) - belt.screen_loc = ui_belt client.screen += belt var/t_state = belt.item_state @@ -486,10 +480,9 @@ Please contact me on #coderbus IRC. ~Carnie x remove_overlay(SUIT_LAYER) if(istype(wear_suit, /obj/item/clothing/suit)) + wear_suit.screen_loc = ui_oclothing if(client && hud_used && hud_used.hud_shown) - if(hud_used.inventory_shown) //if the inventory is open ... - wear_suit.screen_loc = ui_oclothing //TODO //...draw the item in the inventory screen - client.screen += wear_suit //Either way, add the item to the HUD + client.screen += wear_suit // add the item to the HUD var/image/standing = image("icon"='icons/mob/suit.dmi', "icon_state"="[wear_suit.icon_state]", "layer"=-SUIT_LAYER) overlays_standing[SUIT_LAYER] = standing @@ -508,12 +501,12 @@ Please contact me on #coderbus IRC. ~Carnie x /mob/living/carbon/human/update_inv_pockets() if(l_store) + l_store.screen_loc = ui_storage1 if(client && hud_used && hud_used.hud_shown) - l_store.screen_loc = ui_storage1 //TODO client.screen += l_store if(r_store) + r_store.screen_loc = ui_storage2 if(client && hud_used && hud_used.hud_shown) - r_store.screen_loc = ui_storage2 //TODO client.screen += r_store @@ -521,10 +514,9 @@ Please contact me on #coderbus IRC. ~Carnie x remove_overlay(FACEMASK_LAYER) if(istype(wear_mask, /obj/item/clothing/mask)) + wear_mask.screen_loc = ui_mask if(client && hud_used && hud_used.hud_shown) - if(hud_used.inventory_shown) //if the inventory is open ... - wear_mask.screen_loc = ui_mask //TODO //...draw the item in the inventory screen - client.screen += wear_mask //Either way, add the item to the HUD + client.screen += wear_mask // add the item to the HUD var/image/standing = image("icon"='icons/mob/mask.dmi', "icon_state"="[wear_mask.icon_state]", "layer"=-FACEMASK_LAYER) overlays_standing[FACEMASK_LAYER] = standing @@ -541,8 +533,8 @@ Please contact me on #coderbus IRC. ~Carnie x remove_overlay(BACK_LAYER) if(back) + back.screen_loc = ui_back if(client && hud_used && hud_used.hud_shown) - back.screen_loc = ui_back //TODO client.screen += back overlays_standing[BACK_LAYER] = image("icon"='icons/mob/back.dmi', "icon_state"="[back.icon_state]", "layer"=-BACK_LAYER) From 992ec337e638ed66710013d29f39060b4f7172ed Mon Sep 17 00:00:00 2001 From: Rolan7 Date: Mon, 19 May 2014 05:37:46 -0400 Subject: [PATCH 162/185] Put the hud_used.hud_shown checks back for hideable inventory slots, preventing the placed items from floating in empty space above the closed inventory. --- .../mob/living/carbon/human/update_icons.dm | 62 +++++++++++-------- 1 file changed, 35 insertions(+), 27 deletions(-) diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index 259f29693d5..70ca8c00729 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -314,9 +314,10 @@ Please contact me on #coderbus IRC. ~Carnie x if(istype(w_uniform, /obj/item/clothing/under)) var/obj/item/clothing/under/U = w_uniform - w_uniform.screen_loc = ui_iclothing // Set the item's location on the screen if(client && hud_used && hud_used.hud_shown) - client.screen += w_uniform // add the item to the HUD + if(hud_used.inventory_shown) //if the inventory is open ... + w_uniform.screen_loc = ui_iclothing //...draw the item in the inventory screen + client.screen += w_uniform //Either way, add the item to the HUD var/t_color = w_uniform.item_color if(!t_color) t_color = icon_state @@ -351,7 +352,7 @@ Please contact me on #coderbus IRC. ~Carnie x remove_overlay(ID_LAYER) if(wear_id) wear_id.screen_loc = ui_id //TODO - if(client && hud_used && hud_used.hud_shown) + if(client && hud_used) client.screen += wear_id overlays_standing[ID_LAYER] = image("icon"='icons/mob/mob.dmi', "icon_state"="id", "layer"=-ID_LAYER) @@ -362,9 +363,10 @@ Please contact me on #coderbus IRC. ~Carnie x /mob/living/carbon/human/update_inv_gloves() remove_overlay(GLOVES_LAYER) if(gloves) - gloves.screen_loc = ui_gloves if(client && hud_used && hud_used.hud_shown) - client.screen += gloves // add the item to the HUD + if(hud_used.inventory_shown) //if the inventory is open ... + gloves.screen_loc = ui_gloves //...draw the item in the inventory screen + client.screen += gloves //Either way, add the item to the HUD var/t_state = gloves.item_state if(!t_state) t_state = gloves.icon_state @@ -385,9 +387,10 @@ Please contact me on #coderbus IRC. ~Carnie x remove_overlay(GLASSES_LAYER) if(glasses) - glasses.screen_loc = ui_glasses if(client && hud_used && hud_used.hud_shown) - client.screen += glasses // add the item to the HUD + if(hud_used.inventory_shown) //if the inventory is open ... + glasses.screen_loc = ui_glasses //...draw the item in the inventory screen + client.screen += glasses //Either way, add the item to the HUD overlays_standing[GLASSES_LAYER] = image("icon"='icons/mob/eyes.dmi', "icon_state"="[glasses.icon_state]", "layer"=-GLASSES_LAYER) @@ -398,9 +401,10 @@ Please contact me on #coderbus IRC. ~Carnie x remove_overlay(EARS_LAYER) if(ears) - ears.screen_loc = ui_ears if(client && hud_used && hud_used.hud_shown) - client.screen += ears // add the item to the HUD + if(hud_used.inventory_shown) //if the inventory is open ... + ears.screen_loc = ui_ears //...draw the item in the inventory screen + client.screen += ears //Either way, add the item to the HUD overlays_standing[EARS_LAYER] = image("icon"='icons/mob/ears.dmi', "icon_state"="[ears.icon_state]", "layer"=-EARS_LAYER) @@ -411,9 +415,10 @@ Please contact me on #coderbus IRC. ~Carnie x remove_overlay(SHOES_LAYER) if(shoes) - shoes.screen_loc = ui_shoes if(client && hud_used && hud_used.hud_shown) - client.screen += shoes // add the item to the HUD + if(hud_used.inventory_shown) //if the inventory is open ... + shoes.screen_loc = ui_shoes //...draw the item in the inventory screen + client.screen += shoes //Either way, add the item to the HUD var/image/standing = image("icon"='icons/mob/feet.dmi', "icon_state"="[shoes.icon_state]", "layer"=-SHOES_LAYER) overlays_standing[SHOES_LAYER] = standing @@ -428,8 +433,8 @@ Please contact me on #coderbus IRC. ~Carnie x remove_overlay(SUIT_STORE_LAYER) if(s_store) - s_store.screen_loc = ui_sstore1 - if(client && hud_used && hud_used.hud_shown) + s_store.screen_loc = ui_sstore1 //TODO + if(client && hud_used) client.screen += s_store var/t_state = s_store.item_state @@ -444,9 +449,10 @@ Please contact me on #coderbus IRC. ~Carnie x remove_overlay(HEAD_LAYER) if(head) - head.screen_loc = ui_head if(client && hud_used && hud_used.hud_shown) - client.screen += head // add the item to the HUD + if(hud_used.inventory_shown) //if the inventory is open ... + head.screen_loc = ui_head //TODO //...draw the item in the inventory screen + client.screen += head //Either way, add the item to the HUD var/image/standing = image("icon"='icons/mob/head.dmi', "icon_state"="[head.icon_state]", "layer"=-HEAD_LAYER) standing.color = head.color // For now, this is here solely for kitty ears, but everything should do this eventually @@ -465,7 +471,7 @@ Please contact me on #coderbus IRC. ~Carnie x if(belt) belt.screen_loc = ui_belt - if(client && hud_used && hud_used.hud_shown) + if(client && hud_used) client.screen += belt var/t_state = belt.item_state @@ -480,9 +486,10 @@ Please contact me on #coderbus IRC. ~Carnie x remove_overlay(SUIT_LAYER) if(istype(wear_suit, /obj/item/clothing/suit)) - wear_suit.screen_loc = ui_oclothing if(client && hud_used && hud_used.hud_shown) - client.screen += wear_suit // add the item to the HUD + if(hud_used.inventory_shown) //if the inventory is open ... + wear_suit.screen_loc = ui_oclothing //TODO //...draw the item in the inventory screen + client.screen += wear_suit //Either way, add the item to the HUD var/image/standing = image("icon"='icons/mob/suit.dmi', "icon_state"="[wear_suit.icon_state]", "layer"=-SUIT_LAYER) overlays_standing[SUIT_LAYER] = standing @@ -501,12 +508,12 @@ Please contact me on #coderbus IRC. ~Carnie x /mob/living/carbon/human/update_inv_pockets() if(l_store) - l_store.screen_loc = ui_storage1 - if(client && hud_used && hud_used.hud_shown) + l_store.screen_loc = ui_storage1 //TODO + if(client && hud_used) client.screen += l_store if(r_store) - r_store.screen_loc = ui_storage2 - if(client && hud_used && hud_used.hud_shown) + r_store.screen_loc = ui_storage2 //TODO + if(client && hud_used) client.screen += r_store @@ -514,9 +521,10 @@ Please contact me on #coderbus IRC. ~Carnie x remove_overlay(FACEMASK_LAYER) if(istype(wear_mask, /obj/item/clothing/mask)) - wear_mask.screen_loc = ui_mask if(client && hud_used && hud_used.hud_shown) - client.screen += wear_mask // add the item to the HUD + if(hud_used.inventory_shown) //if the inventory is open ... + wear_mask.screen_loc = ui_mask //TODO //...draw the item in the inventory screen + client.screen += wear_mask //Either way, add the item to the HUD var/image/standing = image("icon"='icons/mob/mask.dmi', "icon_state"="[wear_mask.icon_state]", "layer"=-FACEMASK_LAYER) overlays_standing[FACEMASK_LAYER] = standing @@ -533,8 +541,8 @@ Please contact me on #coderbus IRC. ~Carnie x remove_overlay(BACK_LAYER) if(back) - back.screen_loc = ui_back if(client && hud_used && hud_used.hud_shown) + back.screen_loc = ui_back //TODO client.screen += back overlays_standing[BACK_LAYER] = image("icon"='icons/mob/back.dmi', "icon_state"="[back.icon_state]", "layer"=-BACK_LAYER) @@ -590,8 +598,8 @@ Please contact me on #coderbus IRC. ~Carnie x drop_r_hand() return if(r_hand) + r_hand.screen_loc = ui_rhand //TODO if(client) - r_hand.screen_loc = ui_rhand //TODO client.screen += r_hand var/t_state = r_hand.item_state @@ -609,8 +617,8 @@ Please contact me on #coderbus IRC. ~Carnie x drop_l_hand() return if(l_hand) + l_hand.screen_loc = ui_lhand //TODO if(client) - l_hand.screen_loc = ui_lhand //TODO client.screen += l_hand var/t_state = l_hand.item_state From ffb06c029a1af01690f822e232eed83e3585b0a5 Mon Sep 17 00:00:00 2001 From: Cheridan Date: Mon, 19 May 2014 12:09:13 -0500 Subject: [PATCH 163/185] mechs are stompy again --- code/game/mecha/combat/reticence.dm | 1 + code/game/mecha/mecha.dm | 7 ++++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/code/game/mecha/combat/reticence.dm b/code/game/mecha/combat/reticence.dm index e7f1039c528..6b2fa70ee3a 100644 --- a/code/game/mecha/combat/reticence.dm +++ b/code/game/mecha/combat/reticence.dm @@ -16,6 +16,7 @@ step_energy_drain = 3 color = "#87878715" stepsound = null + turnsound = null /obj/mecha/combat/reticence/loaded/New() ..() diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index 50409ca1998..df02cb26e81 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -68,7 +68,8 @@ var/max_equip = 3 var/datum/events/events - var/stepsound = 'sound/mecha/mechturn.ogg' + var/stepsound = 'sound/mecha/mechstep.ogg' + var/turnsound = 'sound/mecha/mechturn.ogg' /obj/mecha/New() @@ -310,8 +311,8 @@ /obj/mecha/proc/mechturn(direction) dir = direction - if(stepsound) - playsound(src,stepsound,40,1) + if(turnsound) + playsound(src,turnsound,40,1) return 1 /obj/mecha/proc/mechstep(direction) From 92d138533ff1f1b11f8694ed41884b475f47673f Mon Sep 17 00:00:00 2001 From: Rolan7 Date: Mon, 19 May 2014 13:30:49 -0400 Subject: [PATCH 164/185] Added the fix to the back slot, had overlooked it. --- code/modules/mob/living/carbon/human/update_icons.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index 70ca8c00729..e09d39d53dd 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -541,8 +541,8 @@ Please contact me on #coderbus IRC. ~Carnie x remove_overlay(BACK_LAYER) if(back) + back.screen_loc = ui_back if(client && hud_used && hud_used.hud_shown) - back.screen_loc = ui_back //TODO client.screen += back overlays_standing[BACK_LAYER] = image("icon"='icons/mob/back.dmi', "icon_state"="[back.icon_state]", "layer"=-BACK_LAYER) From b5f61f59d3fe1a81351cd590e19d7722193ddbe9 Mon Sep 17 00:00:00 2001 From: Miauw Date: Mon, 19 May 2014 19:33:38 +0200 Subject: [PATCH 165/185] Fixed #3740, slimes now attack simple_animals in retaliation. --- code/modules/mob/living/carbon/metroid/death.dm | 2 +- code/modules/mob/living/carbon/metroid/life.dm | 11 +++++------ code/modules/mob/living/carbon/metroid/metroid.dm | 2 +- 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/code/modules/mob/living/carbon/metroid/death.dm b/code/modules/mob/living/carbon/metroid/death.dm index 5ee5bf3eda0..b8e004e2016 100644 --- a/code/modules/mob/living/carbon/metroid/death.dm +++ b/code/modules/mob/living/carbon/metroid/death.dm @@ -15,7 +15,7 @@ if(stat == DEAD) return stat = DEAD icon_state = "[colour] baby slime dead" - overlays = 0 + overlays.len = 0 for(var/mob/O in viewers(src, null)) O.show_message("The [name] seizes up and falls limp...", 1) //ded -- Urist diff --git a/code/modules/mob/living/carbon/metroid/life.dm b/code/modules/mob/living/carbon/metroid/life.dm index e23f7df22ad..738bd13147e 100644 --- a/code/modules/mob/living/carbon/metroid/life.dm +++ b/code/modules/mob/living/carbon/metroid/life.dm @@ -324,18 +324,17 @@ for(var/mob/living/L in view(7,src)) - if(isslime(L) || L.stat == DEAD || isanimal(L)) // Ignore other slimes, dead mobs, and simple_animals + if(isslime(L) || L.stat == DEAD) // Ignore other slimes and dead mobs continue if(L in Friends) // No eating friends! continue - if(issilicon(L)) // They can't eat silicons, but they can glomp them in defence - if (rabid || attacked) - targets += L // Possible target found! + if(issilicon(L) && (rabid || attacked)) // They can't eat silicons, but they can glomp them in defence + targets += L // Possible target found! - if(!iscarbon(L)) - continue + if(isanimal(L) && (rabid || attacked)) //Simple_Animals only get retaliated against. + targets += L if(istype(L, /mob/living/carbon/human)) // Ignore slime(wo)men var/mob/living/carbon/human/H = L diff --git a/code/modules/mob/living/carbon/metroid/metroid.dm b/code/modules/mob/living/carbon/metroid/metroid.dm index e2cf043eced..096565e3093 100644 --- a/code/modules/mob/living/carbon/metroid/metroid.dm +++ b/code/modules/mob/living/carbon/metroid/metroid.dm @@ -68,7 +68,7 @@ /mob/living/carbon/slime/regenerate_icons() icon_state = "[colour] [is_adult ? "adult" : "baby"] slime" - overlays = 0 + overlays.len = 0 if (mood) overlays += image('icons/mob/slimes.dmi', icon_state = "aslime-[mood]") ..() From b79756d0d6a84b68032857cf988db60f95dfae35 Mon Sep 17 00:00:00 2001 From: Giacomand Date: Mon, 19 May 2014 19:11:14 +0100 Subject: [PATCH 166/185] Added improvements by Mloc. --- .travis.yml | 11 ++++++++--- tests/map_test.sh | 17 ----------------- 2 files changed, 8 insertions(+), 20 deletions(-) delete mode 100644 tests/map_test.sh diff --git a/.travis.yml b/.travis.yml index 6d4e3337f61..16938652cf6 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,8 +2,13 @@ language: c env: - BYOND_MAJOR="503" - BYOND_MINOR="1224" + global: + - BYOND_MAJOR="504" + - BYOND_MINOR="1232" + matrix: + - DM_MAPFILE="tgstation2" + - DM_MAPFILE="metastation" + - DM_MAPFILE="ministation" before_install: - sudo apt-get update -qq @@ -17,4 +22,4 @@ install: - cd .. script: - - bash ./tests/map_test.sh + - bash dm.sh -M${DM_MAPFILE} tgstation.dme diff --git a/tests/map_test.sh b/tests/map_test.sh deleted file mode 100644 index 35f1d72b5c7..00000000000 --- a/tests/map_test.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/bash -dme=tgstation.dme -exitcode=0 - -compile(){ - sed -i "$1" $dme - DreamMaker $dme - exitcode=$? - if [ $exitcode -ne 0 ]; then - exit $exitcode # Error! - fi -} - - -compile 's/tgstation2.dm/metastation.dm/g' -compile 's/metastation.dm/ministation.dm/g' -compile 's/ministation.dm/tgstation2.dm/g' # This will put it back like it was, so make sure you put the default map last. From 8ac429ab9cd30eff6e9c403906da794b3f294aab Mon Sep 17 00:00:00 2001 From: Miauw Date: Mon, 19 May 2014 21:03:26 +0200 Subject: [PATCH 167/185] Made slimes able to feed on simple_animals. --- .../modules/mob/living/carbon/metroid/life.dm | 12 ++-- .../mob/living/carbon/metroid/metroid.dm | 1 + .../mob/living/carbon/metroid/powers.dm | 61 ++++++++++--------- 3 files changed, 38 insertions(+), 36 deletions(-) diff --git a/code/modules/mob/living/carbon/metroid/life.dm b/code/modules/mob/living/carbon/metroid/life.dm index 738bd13147e..3dc89883751 100644 --- a/code/modules/mob/living/carbon/metroid/life.dm +++ b/code/modules/mob/living/carbon/metroid/life.dm @@ -78,9 +78,8 @@ if(Target in view(1,src)) if(istype(Target, /mob/living/silicon)) if(!Atkcool) - spawn() - Atkcool = 1 - sleep(45) + Atkcool = 1 + spawn(45) Atkcool = 0 if(Target.Adjacent(src)) @@ -90,9 +89,8 @@ if(Target.client && Target.health >= 20) if(!Atkcool) - spawn() - Atkcool = 1 - sleep(45) + Atkcool = 1 + spawn(45) Atkcool = 0 if(Target.Adjacent(src)) @@ -333,7 +331,7 @@ if(issilicon(L) && (rabid || attacked)) // They can't eat silicons, but they can glomp them in defence targets += L // Possible target found! - if(isanimal(L) && (rabid || attacked)) //Simple_Animals only get retaliated against. + if(isanimal(L) && (rabid || attacked || hungry >= 2)) //Simple_Animals only get retaliated against. targets += L if(istype(L, /mob/living/carbon/human)) // Ignore slime(wo)men diff --git a/code/modules/mob/living/carbon/metroid/metroid.dm b/code/modules/mob/living/carbon/metroid/metroid.dm index 096565e3093..3d1c6f8c70c 100644 --- a/code/modules/mob/living/carbon/metroid/metroid.dm +++ b/code/modules/mob/living/carbon/metroid/metroid.dm @@ -275,6 +275,7 @@ O.show_message(" [M] [M.attacktext] [src]!", 1) add_logs(M, src, "attacked", admin=0) var/damage = rand(M.melee_damage_lower, M.melee_damage_upper) + attacked += 10 adjustBruteLoss(damage) updatehealth() diff --git a/code/modules/mob/living/carbon/metroid/powers.dm b/code/modules/mob/living/carbon/metroid/powers.dm index 3d8e2c14f1a..cf791115c53 100644 --- a/code/modules/mob/living/carbon/metroid/powers.dm +++ b/code/modules/mob/living/carbon/metroid/powers.dm @@ -14,7 +14,7 @@ if(C!=src && !istype(C,/mob/living/carbon/slime) && Adjacent(C)) choices += C - var/mob/living/carbon/M = input(src,"Who do you wish to feed on?") in null|choices + var/mob/living/M = input(src,"Who do you wish to feed on?") in null|choices if(!M) return if(Adjacent(M)) @@ -42,12 +42,13 @@ -/mob/living/carbon/slime/proc/Feedon(var/mob/living/carbon/M) +/mob/living/carbon/slime/proc/Feedon(var/mob/living/M) Victim = M src.loc = M.loc canmove = 0 anchored = 1 var/lastnut = nutrition + var/fed_succesfully = 0 //if(M.client) M << "\red You legs become paralyzed!" if(is_adult) icon_state = "[colour] adult slime eat" @@ -70,40 +71,22 @@ "You feel extremely weak!", \ "A sharp, deep pain bathes every inch of your body!")]" + if(Victim) + for(var/mob/living/carbon/slime/slime in view(1,M)) + if(slime.Victim == M && slime != src) + slime.Feedstop() + if(istype(M, /mob/living/carbon)) Victim.adjustCloneLoss(rand(5,6)) Victim.adjustToxLoss(rand(1,2)) if(Victim.health <= 0) Victim.adjustToxLoss(rand(2,4)) - // Heal yourself - adjustToxLoss(-10) - adjustOxyLoss(-10) - adjustBruteLoss(-10) - adjustFireLoss(-10) - adjustCloneLoss(-10) + fed_succesfully = 1 - if(Victim) - for(var/mob/living/carbon/slime/slime in view(1,M)) - if(slime.Victim == M && slime != src) - slime.Feedstop() - - nutrition += rand(15,30) - if(nutrition >= lastnut + 50) - if(prob(80)) - lastnut = nutrition - powerlevel++ - if(powerlevel > 10) - powerlevel = 10 - - if (nutrition > get_max_nutrition()) - if (amount_grown < 10) - nutrition -= 20 - ++amount_grown - nutrition = min(nutrition, get_max_nutrition()) - - Victim.updatehealth() - updatehealth() + else if(istype(M, /mob/living/simple_animal)) + Victim.adjustBruteLoss(is_adult ? rand(7, 15) : rand(2, 10)) + fed_succesfully = 1 else if(prob(25)) @@ -112,6 +95,26 @@ "I am not satisified", "I can not feed from this subject", \ "I do not feel nourished", "This subject is not food")]...
" + if(fed_succesfully) + //I have no idea why this is not in handle_nutrition() + nutrition += rand(15,30) + if(nutrition >= lastnut + 50) + if(prob(80)) + lastnut = nutrition + powerlevel++ + if(powerlevel > 10) + powerlevel = 10 + adjustToxLoss(-10) + + //Heal yourself. + adjustOxyLoss(-10) + adjustBruteLoss(-10) + adjustFireLoss(-10) + adjustCloneLoss(-10) + + updatehealth() + Victim.updatehealth() + sleep(rand(15,45)) else From 2360d82c6a59fb292c6ac9794760a08891a28546 Mon Sep 17 00:00:00 2001 From: Hornygranny Date: Mon, 19 May 2014 12:43:04 -0700 Subject: [PATCH 168/185] Fixes #3744 --- code/modules/clothing/under/chameleon.dm | 121 ++++++++++++----------- 1 file changed, 61 insertions(+), 60 deletions(-) diff --git a/code/modules/clothing/under/chameleon.dm b/code/modules/clothing/under/chameleon.dm index f4e54da38fd..8fa492d81b6 100644 --- a/code/modules/clothing/under/chameleon.dm +++ b/code/modules/clothing/under/chameleon.dm @@ -7,87 +7,88 @@ desc = "It's a plain jumpsuit. It seems to have a small dial on the wrist." origin_tech = "syndicate=3" var/list/clothing_choices = list() + var/malfunctioning = 0 - New() - ..() - for(var/U in typesof(/obj/item/clothing/under/color)-(/obj/item/clothing/under/color)) - var/obj/item/clothing/under/V = new U - src.clothing_choices += V +/obj/item/clothing/under/chameleon/New() + ..() + for(var/U in typesof(/obj/item/clothing/under/color)-(/obj/item/clothing/under/color)) + var/obj/item/clothing/under/V = new U + src.clothing_choices += V - for(var/U in typesof(/obj/item/clothing/under/rank)-(/obj/item/clothing/under/rank)) - var/obj/item/clothing/under/V = new U - src.clothing_choices += V + for(var/U in typesof(/obj/item/clothing/under/rank)-(/obj/item/clothing/under/rank)) + var/obj/item/clothing/under/V = new U + src.clothing_choices += V + return + + +/obj/item/clothing/under/chameleon/attackby(obj/item/clothing/under/U as obj, mob/user as mob) + ..() + if(istype(U, /obj/item/clothing/under/chameleon)) + user << "\Nothing happens." return - - - attackby(obj/item/clothing/under/U as obj, mob/user as mob) - ..() - if(istype(U, /obj/item/clothing/under/chameleon)) - user << "\red Nothing happens." + if(istype(U, /obj/item/clothing/under)) + if(src.clothing_choices.Find(U)) + user << "Pattern is already recognised by the suit." return - if(istype(U, /obj/item/clothing/under)) - if(src.clothing_choices.Find(U)) - user << "\red Pattern is already recognised by the suit." - return - src.clothing_choices += U - user << "\red Pattern absorbed by the suit." + src.clothing_choices += U + user << "Pattern absorbed by the suit." - emp_act(severity) - name = "psychedelic" - desc = "Groovy!" - icon_state = "psyche" - item_color = "psyche" +/obj/item/clothing/under/chameleon/emp_act(severity) + name = "psychedelic" + desc = "Groovy!" + icon_state = "psyche" + item_color = "psyche" + malfunctioning = 1 + if(ismob(loc)) + var/mob/M = loc + M.update_inv_w_uniform() + M << "Your jumpsuit malfunctions!" + spawn(200) + name = "Black Jumpsuit" + icon_state = "black" + item_state = "bl_suit" + item_color = "black" + malfunctioning = 0 if(ismob(loc)) var/mob/M = loc M.update_inv_w_uniform() - M << "Your jumpsuit malfunctions!" - spawn(200) - name = "Black Jumpsuit" - icon_state = "black" - item_state = "bl_suit" - item_color = "black" - desc = null - if(ismob(loc)) - var/mob/M = loc - M.update_inv_w_uniform() - M << "Your jumpsuit is functioning normally again." - ..() + M << "Your jumpsuit is functioning normally again." + ..() - verb/change() - set name = "Change Color" - set category = "Object" - set src in usr +/obj/item/clothing/under/chameleon/verb/change() + set name = "Change Color" + set category = "Object" + set src in usr - var/obj/item/clothing/under/A - A = input("Select Colour to change it to", "BOOYEA", A) in clothing_choices - if(!A) - return + var/obj/item/clothing/under/A + A = input("Select Colour to change it to", "BOOYEA", A) in clothing_choices + if(!A) + return - if(usr.stat != CONSCIOUS) - return + if(usr.stat != CONSCIOUS) + return - if(icon_state == "psyche") - usr << "\red Your suit is malfunctioning" - return + if(malfunctioning) + usr << "Your jumpsuit is malfunctioning!" + return - desc = null - permeability_coefficient = 0.90 + desc = null + permeability_coefficient = 0.90 - desc = A.desc - name = A.name - icon_state = A.icon_state - item_state = A.item_state - item_color = A.item_color - usr.update_inv_w_uniform() //so our overlays update. + desc = A.desc + name = A.name + icon_state = A.icon_state + item_state = A.item_state + item_color = A.item_color + usr.update_inv_w_uniform() //so our overlays update. /obj/item/clothing/under/chameleon/all/New() ..() - var/blocked = list(/obj/item/clothing/under/chameleon, /obj/item/clothing/under/chameleon/all) - //to prevent an infinite loop + var/blocked = list(/obj/item/clothing/under/chameleon, /obj/item/clothing/under/chameleon/all) //to prevent an infinite loop for(var/U in typesof(/obj/item/clothing/under)-blocked) var/obj/item/clothing/under/V = new U src.clothing_choices += V From 38ab0be4ad3211d0b00810c1e48c611a1c1f4df6 Mon Sep 17 00:00:00 2001 From: Cheridan Date: Mon, 19 May 2014 15:06:54 -0500 Subject: [PATCH 169/185] Spells are now anchored. Space Carp and Bears now take damage from high temperatures. --- code/datums/spell.dm | 1 + code/modules/mob/living/simple_animal/hostile/bear.dm | 3 ++- code/modules/mob/living/simple_animal/hostile/carp.dm | 5 ++++- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/code/datums/spell.dm b/code/datums/spell.dm index f18ddd01a0f..06bedadbd4d 100644 --- a/code/datums/spell.dm +++ b/code/datums/spell.dm @@ -7,6 +7,7 @@ var/list/spells = typesof(/obj/effect/proc_holder/spell) //needed for the badmin name = "Spell" desc = "A wizard spell" panel = "Spells" + anchored = 1 // Crap like fireball projectiles are proc_holders, this is needed so fireballs don't get blown back into your face via atmos etc. density = 0 opacity = 0 diff --git a/code/modules/mob/living/simple_animal/hostile/bear.dm b/code/modules/mob/living/simple_animal/hostile/bear.dm index edd5c6e7f51..cff189be4fd 100644 --- a/code/modules/mob/living/simple_animal/hostile/bear.dm +++ b/code/modules/mob/living/simple_animal/hostile/bear.dm @@ -26,7 +26,7 @@ attacktext = "claws" friendly = "bear hugs" - //Space bears aren't affected by atmos. + //Space bears aren't affected by cold. min_oxy = 0 max_oxy = 0 min_tox = 0 @@ -36,6 +36,7 @@ min_n2 = 0 max_n2 = 0 minbodytemp = 0 + maxbodytemp = 1500 faction = "russian" diff --git a/code/modules/mob/living/simple_animal/hostile/carp.dm b/code/modules/mob/living/simple_animal/hostile/carp.dm index e79fa4b1fb8..f3e1f1d7d43 100644 --- a/code/modules/mob/living/simple_animal/hostile/carp.dm +++ b/code/modules/mob/living/simple_animal/hostile/carp.dm @@ -23,7 +23,7 @@ attacktext = "bites" attack_sound = 'sound/weapons/bite.ogg' - //Space carp aren't affected by atmos. + //Space carp aren't affected by cold. min_oxy = 0 max_oxy = 0 min_tox = 0 @@ -33,6 +33,7 @@ min_n2 = 0 max_n2 = 0 minbodytemp = 0 + maxbodytemp = 1500 faction = "carp" @@ -55,6 +56,8 @@ /mob/living/simple_animal/hostile/carp/holocarp icon_state = "holocarp" icon_living = "holocarp" + maxbodytemp = 0 + /mob/living/simple_animal/hostile/carp/holocarp/Die() qdel(src) From 08d5b5907ae8182af7d67afa3f93adf3fbe45313 Mon Sep 17 00:00:00 2001 From: Rolan7 Date: Mon, 19 May 2014 18:21:17 -0400 Subject: [PATCH 170/185] Fortune cookies can be made with blank or "blank" paper. Allows cult talisman paper to be baked into cookies, fixing the last bit of issue #298. --- code/modules/food/recipes_microwave.dm | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/code/modules/food/recipes_microwave.dm b/code/modules/food/recipes_microwave.dm index ec362e8bcb5..654ef72d22b 100644 --- a/code/modules/food/recipes_microwave.dm +++ b/code/modules/food/recipes_microwave.dm @@ -438,20 +438,13 @@ /obj/item/weapon/paper, ) result = /obj/item/weapon/reagent_containers/food/snacks/fortunecookie - make_food(var/obj/container as obj) - var/obj/item/weapon/paper/paper = locate() in container - paper.loc = null //prevent deletion - var/obj/item/weapon/reagent_containers/food/snacks/fortunecookie/being_cooked = ..(container) - paper.loc = being_cooked - being_cooked.trash = paper //so the paper is left behind as trash without special-snowflake(TM Nodrak) code ~carn - return being_cooked - check_items(var/obj/container as obj) - . = ..() - if (.) - var/obj/item/weapon/paper/paper = locate() in container - if (!paper.info) - return 0 - return . +/datum/recipe/fortunecookie/make_food(var/obj/container as obj) + var/obj/item/weapon/paper/paper = locate() in container + paper.loc = null //prevent deletion + var/obj/item/weapon/reagent_containers/food/snacks/fortunecookie/being_cooked = ..(container) + paper.loc = being_cooked + being_cooked.trash = paper //so the paper is left behind as trash without special-snowflake(TM Nodrak) code ~carn + return being_cooked /datum/recipe/meatsteak reagents = list("sodiumchloride" = 1, "blackpepper" = 1) From e980cc1bd773fe4ba9f81b80503ad39946cd5079 Mon Sep 17 00:00:00 2001 From: Cheridan Date: Mon, 19 May 2014 17:22:03 -0500 Subject: [PATCH 171/185] beach snowflakes are melted --- code/game/area/Space Station 13 areas.dm | 49 ++---------------------- 1 file changed, 3 insertions(+), 46 deletions(-) diff --git a/code/game/area/Space Station 13 areas.dm b/code/game/area/Space Station 13 areas.dm index 2584ac98d1d..673b9f0e7bf 100644 --- a/code/game/area/Space Station 13 areas.dm +++ b/code/game/area/Space Station 13 areas.dm @@ -1531,56 +1531,13 @@ proc/process_ghost_teleport_locs() /area/awaymission/beach name = "Beach" - icon_state = "null" + icon_state = "away" luminosity = 1 lighting_use_dynamic = 0 requires_power = 0 - var/sound/mysound = null + has_gravity = 1 + ambientsounds = list('sound/ambience/shore.ogg', 'sound/ambience/seag1.ogg','sound/ambience/seag2.ogg','sound/ambience/seag2.ogg') - New() - ..() - var/sound/S = new/sound() - mysound = S - S.file = 'sound/ambience/shore.ogg' - S.repeat = 1 - S.wait = 0 - S.channel = 123 - S.volume = 100 - S.priority = 255 - S.status = SOUND_UPDATE - process() - - Entered(atom/movable/Obj,atom/OldLoc) - if(ismob(Obj)) - if(Obj:client) - mysound.status = SOUND_UPDATE - Obj << mysound - return - - Exited(atom/movable/Obj) - if(ismob(Obj)) - if(Obj:client) - mysound.status = SOUND_PAUSED | SOUND_UPDATE - Obj << mysound - - proc/process() - set background = BACKGROUND_ENABLED - - var/sound/S = null - var/sound_delay = 0 - if(prob(25)) - S = sound(file=pick('sound/ambience/seag1.ogg','sound/ambience/seag2.ogg','sound/ambience/seag3.ogg'), volume=100) - sound_delay = rand(0, 50) - - for(var/mob/living/carbon/human/H in src) - if(H.client) - mysound.status = SOUND_UPDATE - H << mysound - if(S) - spawn(sound_delay) - H << S - - spawn(60) .() ///////////////////////////////////////////////////////////////////// /* From ce5b4cb26a2c1a8349ffd6426a096b843e4c67f2 Mon Sep 17 00:00:00 2001 From: Cheridan Date: Mon, 19 May 2014 19:17:59 -0500 Subject: [PATCH 172/185] Laying carpet down now works. --- code/game/turfs/simulated/floor.dm | 72 +++++++++++++++--------------- 1 file changed, 37 insertions(+), 35 deletions(-) diff --git a/code/game/turfs/simulated/floor.dm b/code/game/turfs/simulated/floor.dm index a578458d2b1..7c02b232b65 100644 --- a/code/game/turfs/simulated/floor.dm +++ b/code/game/turfs/simulated/floor.dm @@ -7,7 +7,7 @@ var/list/icons_to_ignore_at_floor_init = list("damaged1","damaged2","damaged3"," "asteroid","asteroid_dug", "asteroid0","asteroid1","asteroid2","asteroid3","asteroid4", "asteroid5","asteroid6","asteroid7","asteroid8","asteroid9","asteroid10","asteroid11","asteroid12", - "oldburning","light-on-r","light-on-y","light-on-g","light-on-b", "wood", "wood-broken", "carpet", + "oldburning","light-on-r","light-on-y","light-on-g","light-on-b", "wood", "wood-broken", "carpetcorner", "carpetside", "carpet", "ironsand1", "ironsand2", "ironsand3", "ironsand4", "ironsand5", "ironsand6", "ironsand7", "ironsand8", "ironsand9", "ironsand10", "ironsand11", "ironsand12", "ironsand13", "ironsand14", "ironsand15") @@ -113,46 +113,48 @@ turf/simulated/floor/proc/update_icon() icon_state = "grass[pick("1","2","3","4")]" else if(is_carpet_floor()) if(!broken && !burnt) - if(icon_state == "carpet") - var/connectdir = 0 - for(var/direction in cardinal) - if(istype(get_step(src,direction),/turf/simulated/floor)) - var/turf/simulated/floor/FF = get_step(src,direction) - if(FF.is_carpet_floor()) - connectdir |= direction + if(icon_state == "carpetsymbol") //le snowflake :^) + return - //Check the diagonal connections for corners, where you have, for example, connections both north and east. In this case it checks for a north-east connection to determine whether to add a corner marker or not. - var/diagonalconnect = 0 //1 = NE; 2 = SE; 4 = NW; 8 = SW + var/connectdir = 0 + for(var/direction in cardinal) + if(istype(get_step(src,direction),/turf/simulated/floor)) + var/turf/simulated/floor/FF = get_step(src,direction) + if(FF.is_carpet_floor()) + connectdir |= direction - //Northeast - if(connectdir & NORTH && connectdir & EAST) - if(istype(get_step(src,NORTHEAST),/turf/simulated/floor)) - var/turf/simulated/floor/FF = get_step(src,NORTHEAST) - if(FF.is_carpet_floor()) - diagonalconnect |= 1 + //Check the diagonal connections for corners, where you have, for example, connections both north and east. In this case it checks for a north-east connection to determine whether to add a corner marker or not. + var/diagonalconnect = 0 //1 = NE; 2 = SE; 4 = NW; 8 = SW - //Southeast - if(connectdir & SOUTH && connectdir & EAST) - if(istype(get_step(src,SOUTHEAST),/turf/simulated/floor)) - var/turf/simulated/floor/FF = get_step(src,SOUTHEAST) - if(FF.is_carpet_floor()) - diagonalconnect |= 2 + //Northeast + if(connectdir & NORTH && connectdir & EAST) + if(istype(get_step(src,NORTHEAST),/turf/simulated/floor)) + var/turf/simulated/floor/FF = get_step(src,NORTHEAST) + if(FF.is_carpet_floor()) + diagonalconnect |= 1 - //Northwest - if(connectdir & NORTH && connectdir & WEST) - if(istype(get_step(src,NORTHWEST),/turf/simulated/floor)) - var/turf/simulated/floor/FF = get_step(src,NORTHWEST) - if(FF.is_carpet_floor()) - diagonalconnect |= 4 + //Southeast + if(connectdir & SOUTH && connectdir & EAST) + if(istype(get_step(src,SOUTHEAST),/turf/simulated/floor)) + var/turf/simulated/floor/FF = get_step(src,SOUTHEAST) + if(FF.is_carpet_floor()) + diagonalconnect |= 2 - //Southwest - if(connectdir & SOUTH && connectdir & WEST) - if(istype(get_step(src,SOUTHWEST),/turf/simulated/floor)) - var/turf/simulated/floor/FF = get_step(src,SOUTHWEST) - if(FF.is_carpet_floor()) - diagonalconnect |= 8 + //Northwest + if(connectdir & NORTH && connectdir & WEST) + if(istype(get_step(src,NORTHWEST),/turf/simulated/floor)) + var/turf/simulated/floor/FF = get_step(src,NORTHWEST) + if(FF.is_carpet_floor()) + diagonalconnect |= 4 - icon_state = "carpet[connectdir]-[diagonalconnect]" + //Southwest + if(connectdir & SOUTH && connectdir & WEST) + if(istype(get_step(src,SOUTHWEST),/turf/simulated/floor)) + var/turf/simulated/floor/FF = get_step(src,SOUTHWEST) + if(FF.is_carpet_floor()) + diagonalconnect |= 8 + + icon_state = "carpet[connectdir]-[diagonalconnect]" else if(is_wood_floor()) if(!broken && !burnt) From d749563d4cbb7907d2c420665f135da21273feba Mon Sep 17 00:00:00 2001 From: Kelenius Date: Tue, 20 May 2014 13:23:28 +0400 Subject: [PATCH 173/185] dsfsdf --- config/admins.txt | 1 + tgstation.dme | 42 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+) diff --git a/config/admins.txt b/config/admins.txt index 837dfbd8ba7..4f249809c21 100644 --- a/config/admins.txt +++ b/config/admins.txt @@ -60,3 +60,4 @@ yota = Game Master firecage = Game Master donkieyo = Game Master argoneus = Game Master +kelenius = Game Master \ No newline at end of file diff --git a/tgstation.dme b/tgstation.dme index 2d9d581ecb6..8ab36a1ae54 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -6,6 +6,48 @@ // BEGIN_FILE_DIR #define FILE_DIR . +#define FILE_DIR "html" +#define FILE_DIR "icons" +#define FILE_DIR "icons/ass" +#define FILE_DIR "icons/effects" +#define FILE_DIR "icons/mecha" +#define FILE_DIR "icons/misc" +#define FILE_DIR "icons/mob" +#define FILE_DIR "icons/obj" +#define FILE_DIR "icons/obj/assemblies" +#define FILE_DIR "icons/obj/atmospherics" +#define FILE_DIR "icons/obj/clothing" +#define FILE_DIR "icons/obj/doors" +#define FILE_DIR "icons/obj/flora" +#define FILE_DIR "icons/obj/machines" +#define FILE_DIR "icons/obj/pipes" +#define FILE_DIR "icons/obj/power_cond" +#define FILE_DIR "icons/pda_icons" +#define FILE_DIR "icons/spideros_icons" +#define FILE_DIR "icons/stamp_icons" +#define FILE_DIR "icons/Testing" +#define FILE_DIR "icons/turf" +#define FILE_DIR "icons/vending_icons" +#define FILE_DIR "nano" +#define FILE_DIR "nano/images" +#define FILE_DIR "sound" +#define FILE_DIR "sound/AI" +#define FILE_DIR "sound/ambience" +#define FILE_DIR "sound/effects" +#define FILE_DIR "sound/hallucinations" +#define FILE_DIR "sound/items" +#define FILE_DIR "sound/machines" +#define FILE_DIR "sound/mecha" +#define FILE_DIR "sound/misc" +#define FILE_DIR "sound/piano" +#define FILE_DIR "sound/violin" +#define FILE_DIR "sound/voice" +#define FILE_DIR "sound/voice/complionator" +#define FILE_DIR "sound/vox_fem" +#define FILE_DIR "sound/weapons" +#define FILE_DIR "tools" +#define FILE_DIR "tools/AddToChangelog" +#define FILE_DIR "tools/AddToChangelog/AddToChangelog" // END_FILE_DIR // BEGIN_PREFERENCES From 3cf8624665502dcb08166d5f0b2d5a3e081912c8 Mon Sep 17 00:00:00 2001 From: Miauw Date: Tue, 20 May 2014 20:14:01 +0200 Subject: [PATCH 174/185] Finalizes the fixes. --- .../mob/living/carbon/metroid/powers.dm | 20 +++++++------------ 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/code/modules/mob/living/carbon/metroid/powers.dm b/code/modules/mob/living/carbon/metroid/powers.dm index cf791115c53..f5b1fcc157d 100644 --- a/code/modules/mob/living/carbon/metroid/powers.dm +++ b/code/modules/mob/living/carbon/metroid/powers.dm @@ -49,32 +49,25 @@ anchored = 1 var/lastnut = nutrition var/fed_succesfully = 0 - //if(M.client) M << "\red You legs become paralyzed!" if(is_adult) icon_state = "[colour] adult slime eat" else icon_state = "[colour] baby slime eat" while(Victim && M.health > -70 && stat != 2) - // M.canmove = 0 canmove = 0 if(Adjacent(M)) loc = M.loc if(prob(15) && M.client && istype(M, /mob/living/carbon)) - M << "\red [pick("You can feel your body becoming weak!", \ + M << "[pick("You can feel your body becoming weak!", \ "You feel like you're about to die!", \ "You feel every part of your body screaming in agony!", \ "A low, rolling pain passes through your body!", \ "Your body feels as if it's falling apart!", \ "You feel extremely weak!", \ - "A sharp, deep pain bathes every inch of your body!")]" - - if(Victim) - for(var/mob/living/carbon/slime/slime in view(1,M)) - if(slime.Victim == M && slime != src) - slime.Feedstop() + "A sharp, deep pain bathes every inch of your body!")]" if(istype(M, /mob/living/carbon)) Victim.adjustCloneLoss(rand(5,6)) @@ -85,15 +78,15 @@ fed_succesfully = 1 else if(istype(M, /mob/living/simple_animal)) - Victim.adjustBruteLoss(is_adult ? rand(7, 15) : rand(2, 10)) + Victim.adjustBruteLoss(is_adult ? rand(7, 15) : rand(4, 12)) fed_succesfully = 1 else if(prob(25)) - src << "\red [pick("This subject is incompatable", \ + src << "[pick("This subject is incompatable", \ "This subject does not have a life energy", "This subject is empty", \ "I am not satisified", "I can not feed from this subject", \ - "I do not feel nourished", "This subject is not food")]..." + "I do not feel nourished", "This subject is not food")]..." if(fed_succesfully) //I have no idea why this is not in handle_nutrition() @@ -113,7 +106,8 @@ adjustCloneLoss(-10) updatehealth() - Victim.updatehealth() + if(Victim) + Victim.updatehealth() sleep(rand(15,45)) From 9e28334d5865caa01bbcf0f921f69d1c649aec8f Mon Sep 17 00:00:00 2001 From: Kelenius Date: Wed, 21 May 2014 09:40:52 +0400 Subject: [PATCH 175/185] Slime changelog update --- html/changelog.html | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/html/changelog.html b/html/changelog.html index 6fb551c8fb3..b7f0a216130 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -53,6 +53,21 @@ should be listed in the changelog upon commit tho. Thanks. --> +
+

20 May 2014

+

Kelenius updated:

+
    +
  • After the years of extensive research into xenobiology, and thousands of scientists lost to the slimes, we have finally come to admitting that we don't have a clue how they work. However, we've outlined a few facts, and managed to breed a new kind of slimes. They will be shipped to your station on the next shifts. They are different from the ones they are used to in the following:
  • +
  • Their sight is better than ever, and now they can finally see things that are not directly pressed against them. Beware, they may appear more aggressive!
  • +
  • Their memory has also become better, and they will now remember the people who fed them. As a note, you need to grab the monkey or push it to show to the slime that you're giving it to them, and it's not just walking in.
  • +
  • Apparently, not only we have studied them, but they have also studied us. Slimes are now capable of showing various emotions, mimicking humans. Use it to your advantage.
  • +
  • There are reports of slimes showing signs of sentience. Further research is recommended.
  • +
  • One of the reported signs is their speech capability. Following facts have been gathered: they talk more often to those who feed them; they react to being called by the number, but 'slimes' is also acceptable; they are able to understand being ordered to "follow" someone, or "stop". There is a report of slime releasing the assistant after a scientist shouted at it, and then calmly ordered a slime to stop.
  • +
  • We've made a modification of a health scanner that is intended for the use on slimes. Two are available in the smartfridge.
  • +
  • We've come to a conclusion that 5 units of reagents are not necessary to cause slime core reactions. You actually only need one unit.
  • +
+
+

16 May 2014

Menshin updated:

From 2c536ba92fdb151281d4ae5528ed41152de73982 Mon Sep 17 00:00:00 2001 From: Kelenius Date: Wed, 21 May 2014 09:56:50 +0400 Subject: [PATCH 176/185] What did I break --- config/admins.txt | 5 ++--- tgstation.dme | 42 ------------------------------------------ 2 files changed, 2 insertions(+), 45 deletions(-) diff --git a/config/admins.txt b/config/admins.txt index 4f249809c21..6149115d45d 100644 --- a/config/admins.txt +++ b/config/admins.txt @@ -34,7 +34,7 @@ sieve = Game Master aranclanos = Game Master intigracy = Game Master dumpdavidson = Game Master -kazeespada = Game Master +kazeespaame Master malkevin = Game Master incoming = Game Master demas = Game Master @@ -59,5 +59,4 @@ hornygranny = Game Master yota = Game Master firecage = Game Master donkieyo = Game Master -argoneus = Game Master -kelenius = Game Master \ No newline at end of file +argoneus = Game Master \ No newline at end of file diff --git a/tgstation.dme b/tgstation.dme index 8ab36a1ae54..2d9d581ecb6 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -6,48 +6,6 @@ // BEGIN_FILE_DIR #define FILE_DIR . -#define FILE_DIR "html" -#define FILE_DIR "icons" -#define FILE_DIR "icons/ass" -#define FILE_DIR "icons/effects" -#define FILE_DIR "icons/mecha" -#define FILE_DIR "icons/misc" -#define FILE_DIR "icons/mob" -#define FILE_DIR "icons/obj" -#define FILE_DIR "icons/obj/assemblies" -#define FILE_DIR "icons/obj/atmospherics" -#define FILE_DIR "icons/obj/clothing" -#define FILE_DIR "icons/obj/doors" -#define FILE_DIR "icons/obj/flora" -#define FILE_DIR "icons/obj/machines" -#define FILE_DIR "icons/obj/pipes" -#define FILE_DIR "icons/obj/power_cond" -#define FILE_DIR "icons/pda_icons" -#define FILE_DIR "icons/spideros_icons" -#define FILE_DIR "icons/stamp_icons" -#define FILE_DIR "icons/Testing" -#define FILE_DIR "icons/turf" -#define FILE_DIR "icons/vending_icons" -#define FILE_DIR "nano" -#define FILE_DIR "nano/images" -#define FILE_DIR "sound" -#define FILE_DIR "sound/AI" -#define FILE_DIR "sound/ambience" -#define FILE_DIR "sound/effects" -#define FILE_DIR "sound/hallucinations" -#define FILE_DIR "sound/items" -#define FILE_DIR "sound/machines" -#define FILE_DIR "sound/mecha" -#define FILE_DIR "sound/misc" -#define FILE_DIR "sound/piano" -#define FILE_DIR "sound/violin" -#define FILE_DIR "sound/voice" -#define FILE_DIR "sound/voice/complionator" -#define FILE_DIR "sound/vox_fem" -#define FILE_DIR "sound/weapons" -#define FILE_DIR "tools" -#define FILE_DIR "tools/AddToChangelog" -#define FILE_DIR "tools/AddToChangelog/AddToChangelog" // END_FILE_DIR // BEGIN_PREFERENCES From 8602991b4efe48f18d45750833d3801f8de2ea99 Mon Sep 17 00:00:00 2001 From: Kelenius Date: Wed, 21 May 2014 10:03:07 +0400 Subject: [PATCH 177/185] Dammit --- config/admins.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/admins.txt b/config/admins.txt index 6149115d45d..c367783a872 100644 --- a/config/admins.txt +++ b/config/admins.txt @@ -34,7 +34,7 @@ sieve = Game Master aranclanos = Game Master intigracy = Game Master dumpdavidson = Game Master -kazeespaame Master +kazeespada = Game Master malkevin = Game Master incoming = Game Master demas = Game Master From e89a07dcf493a9526b7ada72c329674dfc761ad2 Mon Sep 17 00:00:00 2001 From: Rolan7 Date: Wed, 21 May 2014 14:37:55 -0400 Subject: [PATCH 178/185] Dodgeballs now call the super code so they can be caught, theoretically deal real impact damage, and they actually give messages on hit. Fixes #1063, and makes dodgeball not so eerily quiet. Also fixes "too large to fit in this the backpack" in storage.dm. --- code/game/machinery/computer/HolodeckControl.dm | 1 + code/game/objects/items/weapons/storage/storage.dm | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/code/game/machinery/computer/HolodeckControl.dm b/code/game/machinery/computer/HolodeckControl.dm index c05b451ba77..80575928ebf 100644 --- a/code/game/machinery/computer/HolodeckControl.dm +++ b/code/game/machinery/computer/HolodeckControl.dm @@ -422,6 +422,7 @@ desc = "Used for playing the most violent and degrading of childhood games." /obj/item/weapon/beach_ball/holoball/dodgeball/throw_impact(atom/hit_atom) + ..() if((ishuman(hit_atom))) var/mob/living/carbon/M = hit_atom playsound(src, 'sound/items/dodgeball.ogg', 50, 1) diff --git a/code/game/objects/items/weapons/storage/storage.dm b/code/game/objects/items/weapons/storage/storage.dm index 85da667cd4c..60774c314a6 100644 --- a/code/game/objects/items/weapons/storage/storage.dm +++ b/code/game/objects/items/weapons/storage/storage.dm @@ -218,7 +218,7 @@ if(W.w_class > max_w_class) if(!stop_messages) - usr << "[W] is too big for this [src]." + usr << "[W] is too big for [src]." return 0 var/sum_w_class = W.w_class From 7af6ba0caf9c9afa85f0ef3e1d020a2ad1a962ff Mon Sep 17 00:00:00 2001 From: MrStonedOne Date: Fri, 23 May 2014 07:52:52 -0700 Subject: [PATCH 179/185] Fixes possibilities: Nothing when an admin forces secret. --- code/game/gamemodes/gameticker.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/game/gamemodes/gameticker.dm b/code/game/gamemodes/gameticker.dm index 8946386ffc4..5ace34574d3 100644 --- a/code/game/gamemodes/gameticker.dm +++ b/code/game/gamemodes/gameticker.dm @@ -65,6 +65,8 @@ var/round_start_time = 0 src.hide_mode = 1 var/list/datum/game_mode/runnable_modes if((master_mode=="random") || (master_mode=="secret")) + runnable_modes = config.get_runnable_modes() + if((master_mode=="secret") && (secret_force_mode != "secret")) var/datum/game_mode/smode = config.pick_mode(secret_force_mode) if (!smode.can_start()) @@ -73,7 +75,6 @@ var/round_start_time = 0 src.mode = smode if(!src.mode) - runnable_modes = config.get_runnable_modes() if (runnable_modes.len==0) current_state = GAME_STATE_PREGAME world << "Unable to choose playable game mode. Reverting to pre-game lobby." From ab5a3a3f647c3a2d21b272a1061ed3ae78032e5b Mon Sep 17 00:00:00 2001 From: Giacomand Date: Fri, 23 May 2014 16:14:46 +0100 Subject: [PATCH 180/185] Fixes path conflicts on Metastation. --- _maps/map_files/MetaStation.v39K.dmm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/_maps/map_files/MetaStation.v39K.dmm b/_maps/map_files/MetaStation.v39K.dmm index bbb5072641e..e97892f1830 100644 --- a/_maps/map_files/MetaStation.v39K.dmm +++ b/_maps/map_files/MetaStation.v39K.dmm @@ -6537,7 +6537,7 @@ "cvK" = (/obj/structure/sign/biohazard,/turf/simulated/wall/r_wall,/area/medical/research{name = "Research Division"}) "cvL" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 6; icon_state = "warning"; tag = "icon-warnwhite (NORTHEAST)"},/area/assembly/robotics) "cvM" = (/obj/structure/stool/bed/chair/comfy/black{dir = 4},/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor{dir = 1; icon_state = "chapel"},/area/chapel/main) -"cvN" = (/obj/structure/table/woodentable,/obj/structure/noticeboard{desc = "A memorial wall for pinning up momentos"; name = "memorial board"; pixel_y = 32},/obj/item/weapon/storage/bible,/turf/simulated/floor/carpet,/area/chapel/main) +"cvN" = (/obj/structure/table/woodentable,/obj/structure/noticeboard{desc = "A memorial wall for pinning up momentos"; name = "memorial board"; pixel_y = 32},/obj/item/weapon/storage/book/bible,/turf/simulated/floor/carpet,/area/chapel/main) "cvO" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "delivery"},/area/teleporter{name = "\improper Teleporter Room"}) "cvP" = (/obj/structure/table/woodentable,/obj/structure/noticeboard{desc = "A memorial wall for pinning up momentos"; name = "memorial board"; pixel_y = 32},/obj/item/weapon/storage/fancy/candle_box,/obj/item/weapon/storage/fancy/candle_box{pixel_x = -2; pixel_y = 2},/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/carpet,/area/chapel/main) "cvQ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{tag = "icon-warningcorner (EAST)"; icon_state = "warningcorner"; dir = 4},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) @@ -6691,7 +6691,7 @@ "cyI" = (/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/medical/genetics) "cyJ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/medical/virology) "cyK" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 1; icon_state = "chapel"},/area/chapel/main) -"cyL" = (/obj/structure/table/woodentable,/obj/item/weapon/storage/bible,/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) +"cyL" = (/obj/structure/table/woodentable,/obj/item/weapon/storage/book/bible,/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) "cyM" = (/obj/structure/closet/l3closet,/turf/simulated/floor{dir = 6; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/medical/virology) "cyN" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor{dir = 4; icon_state = "chapel"},/area/chapel/main) "cyO" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/medical/morgue) @@ -7555,7 +7555,7 @@ "cPo" = (/turf/simulated/shuttle/wall{tag = "icon-swall15"; icon_state = "swall15"; dir = 2},/area/shuttle/escape/centcom) "cPp" = (/obj/structure/table,/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) "cPq" = (/obj/structure/stool{pixel_y = 8},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) -"cPr" = (/obj/structure/table/woodentable,/obj/item/weapon/storage/bible,/obj/machinery/light/small{dir = 1},/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/obj/machinery/camera{c_tag = "Chapel - Fore"; dir = 2; network = list("SS13")},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/chapel/main) +"cPr" = (/obj/structure/table/woodentable,/obj/item/weapon/storage/book/bible,/obj/machinery/light/small{dir = 1},/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/obj/machinery/camera{c_tag = "Chapel - Fore"; dir = 2; network = list("SS13")},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/chapel/main) "cPs" = (/obj/item/device/radio/intercom{pixel_y = -25},/turf/simulated/floor/engine,/area/toxins/xenobiology) "cPt" = (/obj/structure/table,/obj/item/trash/popcorn,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/medical/virology) "cPu" = (/obj/structure/rack,/obj/item/clothing/head/that,/obj/item/clothing/under/suit_jacket,/obj/item/clothing/tie/waistcoat,/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/holding) From 6f3b06f61475dc970470af9bd9ddc2d493bbeac3 Mon Sep 17 00:00:00 2001 From: phil235 Date: Fri, 23 May 2014 19:09:06 +0200 Subject: [PATCH 181/185] moving armblade stuff to windowdoor.dm --- code/game/gamemodes/changeling/powers/mutations.dm | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/code/game/gamemodes/changeling/powers/mutations.dm b/code/game/gamemodes/changeling/powers/mutations.dm index dc08ee1ec20..6ab4db1fe08 100644 --- a/code/game/gamemodes/changeling/powers/mutations.dm +++ b/code/game/gamemodes/changeling/powers/mutations.dm @@ -90,19 +90,6 @@ user.visible_message("[user] forces the door to open with \his [src]!", "We force the door to open.", "You hear a metal screeching sound.") A.open(1) - else if(istype(target, /obj/machinery/door/window)) - var/obj/machinery/door/window/W = target - - if(!W.requiresID() || W.allowed(user)) - return - - if(!(W.stat & NOPOWER)) - user << "[W]'s motors resist our efforts to force it." - return - else - user.visible_message("[user] forces the door to open with \his [src]!", "We force the door to open.", "You hear a glass screeching sound.") - W.open(1) - //Space Suit & Helmet /obj/effect/proc_holder/changeling/organic_space_suit name = "Organic Space Suit" From 34c4ff33f2ce375f701cf0f072251a944b2b610b Mon Sep 17 00:00:00 2001 From: phil235 Date: Fri, 23 May 2014 20:06:37 +0200 Subject: [PATCH 182/185] fix crowbar, fireaxe and armblade attack. adds spans. more use of take_damage --- code/game/machinery/doors/windowdoor.dm | 51 ++++++++++--------------- 1 file changed, 20 insertions(+), 31 deletions(-) diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm index 24f933d858f..af556b5319a 100644 --- a/code/game/machinery/doors/windowdoor.dm +++ b/code/game/machinery/doors/windowdoor.dm @@ -151,8 +151,9 @@ src.health = max(0, src.health - damage) if (src.health <= 0) new /obj/item/weapon/shard(src.loc) - var/obj/item/stack/cable_coil/CC = new /obj/item/stack/cable_coil(src.loc) - CC.amount = 2 + new /obj/item/weapon/shard(src.loc) + new /obj/item/stack/rods(src.loc, 2) + new /obj/item/stack/cable_coil(src.loc, 2) src.density = 0 qdel(src) return @@ -187,15 +188,10 @@ if(src.operating) return user.changeNext_move(8) - src.health = max(0, src.health - 25) playsound(src.loc, 'sound/effects/Glasshit.ogg', 75, 1) - visible_message("\red [user] smashes against the [src.name].") - if (src.health <= 0) - new /obj/item/weapon/shard(src.loc) - var/obj/item/stack/cable_coil/CC = new /obj/item/stack/cable_coil(src.loc) - CC.amount = 2 - src.density = 0 - qdel(src) + user.visible_message("[user] smashes against the [src.name].", \ + "[user] smashes against the [src.name].") + take_damage(25) else return src.attack_hand(user) @@ -220,40 +216,33 @@ spark_system.start() playsound(src.loc, "sparks", 50, 1) playsound(src.loc, 'sound/weapons/blade1.ogg', 50, 1) - visible_message("\blue The glass door was sliced open by [user]!") + visible_message(" The glass door was sliced open by [user]!") open(2) emagged = 1 return 1 open() emagged = 1 return 1 - - //If it's a weapon, smash windoor. Unless it's a crowbar, an id card, agent card, ect.. then ignore it (Cards really shouldnt damage a door anyway) - if(src.density && istype(I, /obj/item/weapon) && !istype(I, /obj/item/weapon/card) && !istype(I, /obj/item/weapon/crowbar)) - user.changeNext_move(8) - var/aforce = I.force - if(I.damtype == BRUTE || I.damtype == BURN) - src.health = max(0, src.health - aforce) - playsound(src.loc, 'sound/effects/Glasshit.ogg', 75, 1) - visible_message("\The [src] has been hit by [user] with [I].") - if (src.health <= 0) - new /obj/item/weapon/shard(src.loc) - new /obj/item/weapon/shard(src.loc) - new /obj/item/stack/rods(src.loc, 2) - new /obj/item/stack/cable_coil(src.loc, 2) - src.density = 0 - qdel(src) - return - if(istype(I, /obj/item/weapon/crowbar)) + //If windoor is unpowered, crowbar, fireaxe and armblade can force it. + if(istype(I, /obj/item/weapon/crowbar) || istype(I, /obj/item/weapon/twohanded/fireaxe) || istype(I, /obj/item/weapon/melee/arm_blade) ) if(stat & NOPOWER) if(src.density) open(2) else close(2) - else - user << " The [src.name]'s motors resist your efforts to force it." + return + //If it's a weapon, smash windoor. Unless it's an id card, agent card, ect.. then ignore it (Cards really shouldnt damage a door anyway) + if(src.density && istype(I, /obj/item/weapon) && !istype(I, /obj/item/weapon/card) ) + user.changeNext_move(8) + var/aforce = I.force + playsound(src.loc, 'sound/effects/Glasshit.ogg', 75, 1) + visible_message("\The [src] has been hit by [user] with [I].") + if(I.damtype == BURN || I.damtype == BRUTE) + take_damage(aforce) + return + src.add_fingerprint(user) if (!src.requiresID()) //don't care who they are or what they have, act as if they're NOTHING From a4c09dc140e9bbdb8f0184720f20e55884a1d392 Mon Sep 17 00:00:00 2001 From: Giacomand Date: Fri, 23 May 2014 18:06:59 +0100 Subject: [PATCH 183/185] Reverted the centcom.ogg to an uncorrupted version. Fixes #3784 --- sound/vox_fem/centcom.ogg | Bin 10015 -> 10016 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/sound/vox_fem/centcom.ogg b/sound/vox_fem/centcom.ogg index 886ebaa4a1d8d8f0d5499a17ee5cec565804d45d..9c6404df836903b1b95c68bc6dd0903fb44f6921 100644 GIT binary patch delta 18 ZcmbR5x4>`0TK44ByprVn+>M)a)BsHR2mb&7 delta 17 YcmZ4BH{Wl Date: Sat, 24 May 2014 19:08:49 +0200 Subject: [PATCH 184/185] simple animals, aliens and slimes can attack windoors --- code/game/machinery/doors/windowdoor.dm | 40 ++++++++++++++++++------- 1 file changed, 29 insertions(+), 11 deletions(-) diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm index af556b5319a..c2e928783aa 100644 --- a/code/game/machinery/doors/windowdoor.dm +++ b/code/game/machinery/doors/windowdoor.dm @@ -183,18 +183,36 @@ /obj/machinery/door/window/attack_ai(mob/user as mob) return src.attack_hand(user) -/obj/machinery/door/window/attack_paw(mob/user as mob) - if(istype(user, /mob/living/carbon/alien/humanoid) || istype(user, /mob/living/carbon/slime/)) - if(src.operating) - return - user.changeNext_move(8) - playsound(src.loc, 'sound/effects/Glasshit.ogg', 75, 1) - user.visible_message("[user] smashes against the [src.name].", \ - "[user] smashes against the [src.name].") - take_damage(25) - else - return src.attack_hand(user) +/obj/machinery/door/window/proc/attack_generic(mob/user as mob, damage = 0) + if(src.operating) + return + user.changeNext_move(8) + playsound(src.loc, 'sound/effects/Glasshit.ogg', 75, 1) + user.visible_message("[user] smashes against the [src.name].", \ + "[user] smashes against the [src.name].") + take_damage(damage) +/obj/machinery/door/window/attack_alien(mob/user as mob) + if(islarva(user)) + return + attack_generic(user, 25) + +/obj/machinery/door/window/attack_animal(mob/user as mob) + if(!isanimal(user)) + return + var/mob/living/simple_animal/M = user + if(M.melee_damage_upper <= 0) + return + attack_generic(M, M.melee_damage_upper) + + +/obj/machinery/door/window/attack_slime(mob/living/carbon/slime/user as mob) + if(!user.is_adult) + return + attack_generic(user, 25) + +/obj/machinery/door/window/attack_paw(mob/user as mob) + return src.attack_hand(user) /obj/machinery/door/window/attack_hand(mob/user as mob) return src.attackby(user, user) From a5a91eaffc1c4789142971b71bc38c853c1a81ca Mon Sep 17 00:00:00 2001 From: phil235 Date: Sat, 24 May 2014 19:34:06 +0200 Subject: [PATCH 185/185] Fixes unwrenching noise --- code/game/objects/structures/window.dm | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index f6c8893d2c7..a2a5bf5e030 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -11,6 +11,7 @@ var/ini_dir = null var/state = 0 var/reinf = 0 + var/disassembled = 0 // var/silicate = 0 // number of units of silicate // var/icon/silicateIcon = null // the silicated icon @@ -186,6 +187,7 @@ G = new (user.loc) G.add_fingerprint(user) playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) + disassembled = 1 qdel(src) else if(I.damtype == BRUTE || I.damtype == BURN) @@ -304,7 +306,8 @@ /obj/structure/window/Destroy() density = 0 air_update_turf(1) - playsound(src, "shatter", 70, 1) + if(!disassembled) + playsound(src, "shatter", 70, 1) update_nearby_icons() ..()

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 From 17b936cdc7217ba371d3625803fca6d25cc7d16b Mon Sep 17 00:00:00 2001 From: ikarrus Date: Sun, 27 Apr 2014 18:28:18 -0600 Subject: [PATCH 025/185] Added a sound effect to igniting thermite so it's not a silent stealthy move. --- code/game/turfs/simulated/walls.dm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/code/game/turfs/simulated/walls.dm b/code/game/turfs/simulated/walls.dm index 23294415c3f..a00e1328cf2 100644 --- a/code/game/turfs/simulated/walls.dm +++ b/code/game/turfs/simulated/walls.dm @@ -282,6 +282,7 @@ /turf/simulated/wall/proc/thermitemelt(mob/user as mob) if(mineral == "diamond") return + overlays = list() var/obj/effect/overlay/O = new/obj/effect/overlay( src ) O.name = "thermite" @@ -293,6 +294,8 @@ O.density = 1 O.layer = 5 + playsound(src, 'sound/items/Welder.ogg', 100, 1) + if(thermite >= 50) var/turf/simulated/floor/F = ChangeTurf(/turf/simulated/floor/plating) F.burn_tile() From 620a8170879fbd89f3429d9217017cd66e58b2d8 Mon Sep 17 00:00:00 2001 From: Deantwo Date: Mon, 28 Apr 2014 15:52:02 +0200 Subject: [PATCH 026/185] Fixes Midnight Rollover Protection * Fixed the non-existent Midnight Rollover Protection. * Moved Midnight Rollover Protection to "timeleft()". * Removed "direction == 2" check, because "direction" is never 2. --- code/controllers/shuttle_controller.dm | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/code/controllers/shuttle_controller.dm b/code/controllers/shuttle_controller.dm index 2f8c2204921..86684a3a145 100644 --- a/code/controllers/shuttle_controller.dm +++ b/code/controllers/shuttle_controller.dm @@ -86,7 +86,10 @@ datum/shuttle_controller proc/timeleft() if(online) var/timeleft = round((endtime - world.timeofday)/10 ,1) - if(direction == 1 || direction == 2) + if(timeleft > MIDNIGHT_ROLLOVER) // midnight rollover protection + endtime -= MIDNIGHT_ROLLOVER // subtract 24 hours from endtime + timeleft = round((endtime - world.timeofday)/10 ,1) // recalculate timeleft + if(direction == 1) return timeleft else return SHUTTLEARRIVETIME-timeleft @@ -146,11 +149,9 @@ datum/shuttle_controller if(!online) return var/timeleft = timeleft() - if(timeleft > 1e5) // midnight rollover protection - timeleft = 0 if(location == UNDOCKED) if(direction == -1) - if(timeleft >= timelimit) + if(timeleft >= timelimit) // Shuttle reaches CentCom after being recalled. online = 0 direction = 1 endtime = null From e63033059c40004e742b5f543fab16613ffa1880 Mon Sep 17 00:00:00 2001 From: Deantwo Date: Mon, 28 Apr 2014 19:13:50 +0200 Subject: [PATCH 027/185] 10 times less seconds in a day MIDNIGHT_ROLLOVER is number of deciseconds in a day. Added a missing "/10". --- code/controllers/shuttle_controller.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/controllers/shuttle_controller.dm b/code/controllers/shuttle_controller.dm index 86684a3a145..c2433ec28c6 100644 --- a/code/controllers/shuttle_controller.dm +++ b/code/controllers/shuttle_controller.dm @@ -86,7 +86,7 @@ datum/shuttle_controller proc/timeleft() if(online) var/timeleft = round((endtime - world.timeofday)/10 ,1) - if(timeleft > MIDNIGHT_ROLLOVER) // midnight rollover protection + if(timeleft > (MIDNIGHT_ROLLOVER/10)) // midnight rollover protection endtime -= MIDNIGHT_ROLLOVER // subtract 24 hours from endtime timeleft = round((endtime - world.timeofday)/10 ,1) // recalculate timeleft if(direction == 1) From 3661713a09c0fd7089c3e1b0686282e3135d300f Mon Sep 17 00:00:00 2001 From: ikarrus Date: Mon, 28 Apr 2014 19:30:36 -0600 Subject: [PATCH 028/185] Thermiting walls leave admin prints --- code/game/turfs/simulated/walls.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/game/turfs/simulated/walls.dm b/code/game/turfs/simulated/walls.dm index a00e1328cf2..918d9b66b06 100644 --- a/code/game/turfs/simulated/walls.dm +++ b/code/game/turfs/simulated/walls.dm @@ -300,6 +300,7 @@ var/turf/simulated/floor/F = ChangeTurf(/turf/simulated/floor/plating) F.burn_tile() F.icon_state = "wall_thermite" + F.add_hiddenprint(user) spawn(max(100,300-thermite)) if(O) qdel(O) else From 5736eb1f4486c3b68263a00436c5043051b6ab6f Mon Sep 17 00:00:00 2001 From: Aranclanos Date: Wed, 30 Apr 2014 05:25:01 -0300 Subject: [PATCH 029/185] Creates canUseTopic(), a mob proc contained for the moment in the machinery.dm The Topic() proc of machinery will use this. The first non-machinery item to use this will be the violin and piano. There are plans to make admin observers use this, to make AIs don't be able to use Topic() when they lose power (doing that currently will break gameplay) and make all items use the canUseTopic() proc if needed. I just wanted to pull the fix for the piano and violin quick, the rest is a todo. --- code/game/machinery/machinery.dm | 51 ++++++++++++++---------- code/game/objects/structures/musician.dm | 2 +- 2 files changed, 32 insertions(+), 21 deletions(-) diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm index 92a5430bc39..6f9a62c590c 100644 --- a/code/game/machinery/machinery.dm +++ b/code/game/machinery/machinery.dm @@ -202,30 +202,41 @@ Class Procs: ..() if(!interact_offline && stat & (NOPOWER|BROKEN)) return 1 - if(usr.restrained() || usr.lying || usr.stat) + if(!usr.canUseTopic(src)) return 1 - if(!(ishuman(usr) || issilicon(usr))) - usr << "You don't have the dexterity to do this!" - return 1 - - var/norange = 0 - if(istype(usr, /mob/living/carbon/human)) - var/mob/living/carbon/human/H = usr - if(istype(H.l_hand, /obj/item/tk_grab)) - norange = 1 - else if(istype(H.r_hand, /obj/item/tk_grab)) - norange = 1 - - if(!norange) - if(!issilicon(usr)) - if(!in_range(src, usr)) - return 1 - if(!isturf(loc)) - return 1 - add_fingerprint(usr) return 0 +/mob/proc/canUseTopic() //TODO: once finished, place these procs on the respective mob files + return + +/mob/dead/observer/canUseTopic() + if(check_rights(R_ADMIN)) + return + +/mob/living/canUseTopic() + src << "You don't have the dexterity to do this!" + return + +/mob/living/carbon/human/canUseTopic(atom/movable/M) + if(restrained() || lying || stat || stunned || weakened) + return + if(!in_range(M, src)) + return + if(!isturf(M.loc) && M.loc != src) + return + return 1 + +/mob/living/silicon/ai/canUseTopic() + if(stat) + return + return 1 + +/mob/living/silicon/robot/canUseTopic() + if(stat || lockcharge || stunned) + return + return 1 + /obj/machinery/attack_ai(mob/user as mob) if(isrobot(user)) // For some reason attack_robot doesn't work diff --git a/code/game/objects/structures/musician.dm b/code/game/objects/structures/musician.dm index 13f86a3785c..fd879cd10f2 100644 --- a/code/game/objects/structures/musician.dm +++ b/code/game/objects/structures/musician.dm @@ -174,7 +174,7 @@ /datum/song/Topic(href, href_list) - if(!in_range(instrumentObj, usr) || (issilicon(usr) && instrumentObj.loc != usr) || !isliving(usr) || !usr.canmove || usr.restrained()) + if(usr.canUseTopic(src)) usr << browse(null, "window=instrument") usr.unset_machine() return From 40e22082c66ea1626dfeb3081090d969d092bf84 Mon Sep 17 00:00:00 2001 From: Aranclanos Date: Wed, 30 Apr 2014 06:08:12 -0300 Subject: [PATCH 030/185] adds a weakened check for canUseTopic() of borgs --- code/game/machinery/machinery.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm index 6f9a62c590c..2f5cb7d54b6 100644 --- a/code/game/machinery/machinery.dm +++ b/code/game/machinery/machinery.dm @@ -233,7 +233,7 @@ Class Procs: return 1 /mob/living/silicon/robot/canUseTopic() - if(stat || lockcharge || stunned) + if(stat || lockcharge || stunned || weakened) return return 1 From 45dac264803f223d0c29c4c3b95f9e362833035f Mon Sep 17 00:00:00 2001 From: phil235 Date: Wed, 30 Apr 2014 20:21:36 +0200 Subject: [PATCH 031/185] Stops constructs from hitting themselves --- code/modules/mob/living/simple_animal/constructs.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/simple_animal/constructs.dm b/code/modules/mob/living/simple_animal/constructs.dm index 783b3e53585..fab74f9222e 100644 --- a/code/modules/mob/living/simple_animal/constructs.dm +++ b/code/modules/mob/living/simple_animal/constructs.dm @@ -91,7 +91,7 @@ if(istype(M, /mob/living/simple_animal/construct/builder)) health += 5 M.emote("mends some of \the [src]'s wounds.") - else + else if(src != M) if(M.melee_damage_upper <= 0) M.emote("[M.friendly] \the [src]") else @@ -324,4 +324,4 @@ if (cultist == usr) //just to be sure. return cultist.loc = usr.loc - usr.visible_message("/red [cultist] appears in a flash of red light as [usr] glows with power")*/ \ No newline at end of file + usr.visible_message("/red [cultist] appears in a flash of red light as [usr] glows with power")*/ From 11942572d7a2aa21a4c478db5b8f194ddd821f16 Mon Sep 17 00:00:00 2001 From: GunHog Date: Wed, 30 Apr 2014 14:35:39 -0500 Subject: [PATCH 032/185] Adds Nightvision Medical and Security HUDs! --- code/modules/clothing/glasses/hud.dm | 14 ++++++++++++++ code/modules/research/designs.dm | 18 ++++++++++++++++++ icons/mob/eyes.dmi | Bin 5051 -> 5777 bytes icons/obj/clothing/glasses.dmi | Bin 10358 -> 6234 bytes 4 files changed, 32 insertions(+) diff --git a/code/modules/clothing/glasses/hud.dm b/code/modules/clothing/glasses/hud.dm index bd6eeafeead..b7a2e50ea42 100644 --- a/code/modules/clothing/glasses/hud.dm +++ b/code/modules/clothing/glasses/hud.dm @@ -82,6 +82,14 @@ holder.icon_state = "hudhealthy" C.images += holder +/obj/item/clothing/glasses/hud/health/night + name = "Night Vision Health Scanner HUD" + desc = "An advanced medical head-up display that allows doctors to find patients in complete darkness." + icon_state = "healthhudnight" + item_state = "glasses" + darkness_view = 8 + invis_view = SEE_INVISIBLE_MINIMUM + /obj/item/clothing/glasses/hud/security name = "Security HUD" desc = "A heads-up display that scans the humans in view and provides accurate data about their ID status and security records." @@ -94,6 +102,12 @@ darkness_view = 1 flash_protect = 1 tint = 1 +/obj/item/clothing/glasses/hud/security/night + name = "Night Vision Security HUD" + desc = "An advanced heads-up display which provides id data and vision in complete darkness." + icon_state = "securityhudnight" + darkness_view = 8 + invis_view = SEE_INVISIBLE_MINIMUM /obj/item/clothing/glasses/hud/security/sunglasses/emp_act(severity) if(emagged == 0) diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm index 5e126658836..4d069029533 100644 --- a/code/modules/research/designs.dm +++ b/code/modules/research/designs.dm @@ -1810,6 +1810,15 @@ datum/design/health_hud materials = list("$metal" = 50, "$glass" = 50) build_path = /obj/item/clothing/glasses/hud/health +datum/design/health_hud_night + name = "Night Vision Health Scanner HUD" + desc = "An advanced medical head-up display that allows doctors to find patients in complete darkness." + id = "health_hud_night" + req_tech = list("biotech" = 4, "magnets" = 5) + build_type = PROTOLATHE + materials = list("$metal" = 200, "$glass" = 200, "$uranium" = 1000, "$silver" = 250) + build_path = /obj/item/clothing/glasses/hud/health/night + datum/design/security_hud name = "Security HUD" desc = "A heads-up display that scans the humans in view and provides accurate data about their ID status." @@ -1819,6 +1828,15 @@ datum/design/security_hud materials = list("$metal" = 50, "$glass" = 50) build_path = /obj/item/clothing/glasses/hud/security locked = 1 +datum/design/security_hud_night + name = "Night Vision Security HUD" + desc = "A heads-up display which provides id data and vision in complete darkness." + id = "security_hud_night" + req_tech = list("magnets" = 5, "combat" = 4) + build_type = PROTOLATHE + materials = list("$metal" = 200, "$glass" = 200, "$uranium" = 1000, "$gold" = 350) + build_path = /obj/item/clothing/glasses/hud/security/night + locked = 1 ///////////////////////////////////////// //////////////////Test/////////////////// diff --git a/icons/mob/eyes.dmi b/icons/mob/eyes.dmi index f38ab00909ed6e5a1606e9b326d82d7178ddd148..88c6ca25c257e76bb19d2db5c1abd2249bcda46e 100644 GIT binary patch literal 5777 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 literal 5051 zcmb_gcT`i^z79NEB%b3{nK7s-P%Ekf8`DK|tvSX+Z)B7Mchn9i_=o9He9b z0RbtB2nZnpLV!R*O@t6a4TJ=84{zRjcfC9F*4%k>|JduCv-ke(v)1q1zi)rvjF`}Ee<~qe~#gg7kwgSXW)2uCWY5jap2sW1NsZ*h?0=Y z(NdbE%#6av>H+r@_ucT2Ab8pRn#`ShQWnwGS93D(%a5N@K2Hh8r=9vv?(%v%T-fIv zu+?9x+vg=@pA4l!kRf&l9?+Q#4Ookb=yW%!l(nb3jS=gq` zR{VT#^mPzO==N3P3pSzIv~jd=3If%-{8Q-}6mQf$Klx-MZyV1GG%x*f*ZS`3%yWkZ z^6mHwO=axQZ}HE{nfa@qt3lZE>0nHYyq_nGDP3kxzx;XA{mH;_ae3P)d8drX8x4&X zHeHZAy|?0D7dx0eaT=wrHyVCSQNK3U7T1F7NF=G8db(}Qpit@4@7)ggaaT|UK&@zm zmkJ1UT9j)KNS0R|lzPYoWOXr;Ypl{(`nJHiM2wy7cfprgSr#%vNrzGFX%7Mn#k8dd znwZ37>pf6&aZ9RS^~g%0zq3f3&SWq`AW3uEp1!_s8=`l1P}5i;$b-qK!=Hk0k)#lC zH7^uurLb_oD{g@xKax?WdDa1DqH**r|3S%2Re93=tgw`>x$i-e=cFaH?uih5VlNkv z+00d;kvjNRCX}^!WL;8hrIDD^Ou!2rWGD)>dm!3H#jb0Fm=s`>kU1l zqodv1oPyz@cr6Bv=-j!@x9Q;-IIW$ytR4<4N*%I3#W0a3`ITvkwwQ5h5}9cySaJKe*k2<_Y6qkL@Vgk6A(|N5cj`! zWN{7cz}splJgxRsM_gzerRzuoP`E7d5$J!V_WZto$@O39NWB#)9QUcLg{n-tucVaC z`BM9}7j2ubr47|1PTxWy2WtGNL*(}SJ;Dzs9`cma#o#Y!3$ee{7 z_Qq*hy!wkHFsJLclsEAB?xAA2(w_`B;xsihWZ((8=(a}UhB~4V%lzPxJ=a89YrUMd zO6Ps-;eLiX;U+Cna6QZIQehB|!>l9fP-!v90{Ydg)tuQ6>e6a8lq^mCNea_aMuLrP1pQ1Rn5FzvnQ6Mh>1FhdKU z(>YG})bQ?a$!lO!@wCtO?x&XqkOtjh;i}r}lNB^%|B+@QJ+x9_yrKKf1SYNZ|?OWb!c?N#o-rje^{Q?5|w;X-5Ig!+c_GU{^>oJAKjYuw+ z{Nw*8mcIk{?{}PsNN)G37k?$#jNI63b(OI&;%01|cuZGp$t@ikX!@d#lp8?&=@E=e zUMTL7BK>g7P_6HXqMUe8Pt_ev>Vord;r3BYwr; z$c6pD;%6x)1=rQp)TGVQm6j3y>EV6L)R@*>ePqwdymx(4SLYks(wSA9VFuV>vo+&v znPZLjXH~eNhVwpqeRk2&owMCqvniIjiUh-*o+!pNK37FrNFd5wCr1n) zY>R8M3j%6Zjun+&2L8a{m`Zekl~pO`&PED3n=q-^j5{AX+?k>U5LPc$=UZzfY)5|%Dnw9 z9~}MrJLC^Ig&NgxqR2qWgjuoQJM5a4#sPP}V*!CMr^Xv+zC6b8v9mcaI{Pt`9F4oPy;UB-44|)3;^CY) zb~|jRe6Z$OLgGsnH1s(AnIU7{wPJd!n?8SX!Lj}^M*?8?sfJ&0>j#p5tlf2w%fk!Ig;LFZ@^w^o5N{Uz%a3( z&=p#n{>GSFFj!7b&b)}O|1<`KGct`qNtH?R_r6QI*rL=H42nxhi7h)O zsmvU`OOpjD1it6a<#FETR@mdrh2sK-MR>S!d3L4*&#V6T0r^)*``-((KARyC)pk1t zsU#L}y9O5^R=UNMl$2C9gD3rm&97bi5+^MGjghr#_@itNTEy}LCUV0>`mPb)dL*dm zTDp?6k{S9}o82etWYQ5*YMLur#ucDHcVGsLJoxR~FSL!FE1!HDtmP#dihCP3UaZ1S zW>tJ+s#&hG3*HHY@nv6;c^2C_@v75pB`G#GvjAo~0bdjfTr;~WBUD^e)IMrSCc5`O zE3yvIPkFIiBRV)3fR1SL_4BUMG)%gZ8PCJ>pv6F2VP(zHY2dZe_6KX`8q`n}@?t$} zDT}m~KCHt}WO96$P9BlW)?q+#0XzD6f+%;NH4W^ligf?jn6GpT6I*TJ=9X+O2TQv$ zGg4fs`hdOM0n>l5Qn+qEi^XE^)}CV~5@xg$z2NY?2BA1T#bd`XnwpwoZ=(Tj=L0i# z_8yII=N`$}-(0}w-jR5WjH5SN9z+D)7?0Ubie+ z1nIG=hQc(o6Wwm&a}4;eoq0!~Q58eMWDyroD|;Dp9Q5aK55L;xy!o1oHUUI}#9Pil z5RHlWW1aAqiQ>kg-W**ITAj;q1N^t(NWMu^`wWJVfSrFNi^Z})8?`M0f@^?8f=hNR zuV;{=F6OJ}TXpUh|5&#Hw#BaVez(uLl=a&`_x-XS2uZkXp&+6*QtgN92|2x)JO}rT zEeD7Js5Z?Arp=NpEH{Qp-aKpQMDWi#2M|Cg>nl)*5rQMt??-Aq$kS!cs#amCHUbPJ>4^0FY(UXn#Oq|coFOyT znN|Gt)oj#4UHR<%pcHcvG0V)`2_mE`JC&8^S62_j#x9IE*8QTs3!K8)oSdBE;fFoV za0rmK{d>^+`2S48{bgwWh_V4)C~$D8K9KS(A*#ouq^ygqb9z#>*Y;G!zIVcW{Gr|H z%3KorFFcrF^R%})9l8`$RBDFY2l{da;C6vYAgyk8<;ktf(<|RpP?cES=DXOVY3sZ> zi&7AXDo5$@Lwfhr>!an^qeqTZhLC2ZzXxrEBDYt56rQKRj6c=uZjw|A3t${-(S;rN z31O^0IO?K@@l2f0oK8t;Q-~%jKu-!?^_8XAXy5v9gP1}wxm;WBP<@%PI4-eS)&f($ z7O^-$;J;+dP0C2Yapr29kQ7lT4VR-7s2O+Q2d#kzvw)Xr1U>%G@&m}yr6ansA2 zDRV)N^WGTjJG~6n{&y8lGqPKy03hK*Bo)JF9fPokzye2|AdD#=-Idv5n_f=i>nv;= zNw=$hx$oleY8Cj5)oE`M;ZA>P!?#DT^kGKzhU6;ber^R@c++ahJllG29}p1{k!6m= zQQ|>7m#Tt|Y8XP_m`(h%%@kg7g=Au#`ly)|WkV{JmAfi+#)=obLsBQt=WUyBD@U4E z9b#nfs`me=8vi}9PpG9_kug8f!IfI^<|6!%KvYHh^m2o){=FX+M08Su*LPu<3k37| z_8!pjE3RO?jO}!w-vAKlC-?Xo85t!9SOfkBE?H&JsP#g_tt9m(&K(f2mx61?U@#S@ zte0hr=tc0${QMIm!6>{0aXqXK1qk&KB&nv-htLpAy~heOGm9VWP>~KeF`4;6Q5tN} zVCmhgE&bTu7_}*k-x{+{Yl7D1p_{r2PmyyEOHPC**~ZfSJ|HAJ*6Qz5Ek7D;SRJPU zWjj9ieQUc-UiK6Oa{s1BBlVrSt8Y9_ej}$-@Fw8eMp(Czs3s>gA(sUiy9ul=g*2Yg zwXk^DVi@{Kj}c2!R8ZcXGc+Vkf6y8{J~bu`dUgEYuu=c18vLDE6FBIPK-ATv+*Up& zSgIW!B@kY#AP@)%iTyo;V`F;M?C=i1`;r}@P+~4{5=00Bj+Uw=rxJufWG$Q>&ZQoa zlF|hF+Engo62lI*yc;N+ zQd2s)Ik;)+N!xAVgE0wp(DL%~p@LAK%VFW+;bG0R7yBI?_Gq&{t;#H+!5SNSk_WTQ z~f&J*Jq6DS8lMtkcIh)hAPB2)W6cmaPg~YYH4&nPoN4?*amU>9y z+|^b_eK1Tln6V5(kcb*~HuCW)?IH$R0>6eV-vPg!HQ;CKY!H2u`U#Z!iqd|LsPPA` z5J``%*E!S%E=UrfFV2niO%jBqS?(G0!u^&gIu|n0^+YS*9&ymqqJEy6>2xlh){Ex> p8UJ^#0Dez8zg^kZNPO6&GC|{R0$e2MWjpV6zT2;2}J?vh5@8oLTTx45Qbp} zxa0rR{czv+ci;EJ+2?oG{;=0xd#!bz=h=~ZI;!`G?-K(6a8F%LNgwkr`1cUvW5($5 zH~avAh3jKz?4k79-P-M~i^p4MCjjuuiA@@{!x1J89pC>#G1y!ZIMbdIS{1$l3aR}) z&jVR7c2oQV4-cI*sL006$A2PfcD2aznff3u8QC|KLLGB*iiU;pN)ieEKxH#vCy~2Z z8ke)iRGm(Uuse^el#0Zh*oBqMgO1My`}yBxf+P`-iHyOFD7%+cN!V>l8cu@~7o6@x z?me|(y^OTH?musmr z+57%MG_W?JI^M8q6$b!xl`Ie~_T+nN0x>7W;K45dZT-*V9VQFHiRa%1Yc z8QmC=5Vtdz*-?smll;OJ|~L3WuGgu(G_}0qHZgikzLa$(K@X=`gQItY846XD9A46Tw^yd;s6 zByze$2jDH5T4=|x_~Qbzb0S257h>19s<9#M9F*LrD7iEDbN`|TDpc_46P8Ua18p?k zoAEql0|RQVSgeyM-b70Z+{wkon657Qw)eiNV6-x70SLOAmc|7n%%t%EdiR(pM?1?~ z@7ex`qk$;0WAvqE^SOPV$F|_D-_e;kWaK33PRJP>I5G8=23C5a5g&7&mkM0P#($P( z*5qAgWYK1GG$G})p4zE(hq!7q>1%A(E*t_jJo)CbQIn~sGmXb5^D3LDk6Y>-?4a(Z z(CM_{Cd0O&B8!VDGc^t>pz{#beja^x=tpIoN^A}fO`9F&e*ZZC?q)&@m||Wi_3L=b z`OuL8%8;$nHD*Jf&r9?;P!5a5{ym$4qEL&M!lDWRETLf$s=M)so3 z8ni5DVUbG@R#0e%=<4h1CnO{Uk-RK>WskCd4-E}rO>nMj;yuRrSZB(g zl$0bSB7$A^D+&|B0fiiJPM)7UMFcA$<+~63m%@M(asz1w6Kw5G?oAzWp1mgdkA>vD z*!pYV4zTnr8Ve71v9MRrVy~95qP(0&v%pZ6^OMClLGR+Fib-k;;s+7?9#WOT^&Sb| zr*@$tnHwk`G0G-}a{^A*55nLo#tBj*D{K+Nk3<7{phv8VMj1i>9|m#Cr%&UPv$FaX zuNg|_t5`lSD{aVT#75ISuwzkCt0MNIc0Db`F=$|`Cuip)lZAj*L;%fIdK)YucPkLv|D;%n_&bi(c*R!OhIHY-mD+29|EcVnDl# z%M1yi@9bb|A7IeRE7!g2kfR|sHteB3 zGWG=prPk-S9W^}_n89gp^2EIH3^v9rS;q!PI-1+7+$gUCNer3ruRX|=#orRC)u@7}#z zT$Cs)XX*WA>x8kHFkr%$rxO4qAb%DI0fkza-_(xA~ zFP;PATe#d}u4_chT^B!#PM(Lev?m#_7>*)=P808{bGU24VA$-RU&dc{FYiL-F-d)< zv8;hdNn|JcGRNjFy$=9E+aa%Kabn~gy2v= z{i>N2<5K9tYXVI_^mq>mM53vTNwjw5?j;Nxdqk~d!d4o0+SbO$t96O&%T(kI3Nh{t zPG@XQwB5U#P?UXqnQSlg3-qBUu!(L);1;Vx65Xg*NW#3c&mO6+9-$=1!vf@E|LS!U-%!>q1&DzxP|OAcXE$ekxcA zbe8_zZQB;sLB`j2;zD~pYO}HQ4qP&7YHUA$3O~j<*lqquPcDfZXqmP0IFPggsavSh#q$>LVKt z)jFSj0k6+1d(uh&{Bv(+xr6#t7@s{sFeH^cq7YMOe>GuGAl-gOa-FTbpBJWEst=B3 zS5C76A6lxLg;Fm?0zt<#U$BB6CMPy?*x}}kAAzGP7x+k!$+1Uaj!Kb7p74mM_%$1w zj`Mt9w&AVl;7g~C10)NX1P#b?D1sPkv(_?9yzWfqj!{PAXjutvkQ0`3{MFwuI5J9I z&3@m&T)vAcKKrMoSPNrA;_P$(^u^p&lewKs?eVP$>iDcXpJcNg>*pGVgoG=7qhrWi zJVB0PQ8S)G^ER1y=ZDVl;*oxrbLDA53E@-HH%}mnFD3-rzZFzEiZecVAInV-(h-0> zF_P7o9tnAT7Qa5-BvbUrmw8zUKscs(n(?{BUleLeJ$}K(D#Xrqn6|ygF4?z8or*2u z#9U}YI?yEfKQ>!V9(YV=Mj){hHjeI7G53GzBt&GH0THhjva3Rhp z8?x>DJ--eH0yzg;pkV_SWtN=*r{gOkIbMZ&;x1b}Ctpr8uX>6#(F?Az+#(-d*RDv0 zj1TEw@WPbQi3#VHo_=K6jx=d+8)@B;vK@ON_S0kuZ)2oBgCunxtuS>tFP7Tf!fvM$ z5Y4iu%~y!bvfG7umCA558VLs-s&~?@ix)P2d5~^ztEPhk z$_J2he9zAnKS~P@+56I%FcQP}_afU$BvYE>U|$?(lgYswKO^sy#*hNH@OQ6xrk2{l zE>=zLwrKl9p*nXx83@|T^HswvyG?1Ii3=x=_bMe=Bl+rw$j`!u_7B36!JNfs2G`f4 zYq#}+cjl=Ywi+5#V7>STbo30%s?JliD3)yh-@n@#E>xssmi;RyGFKe!QrAh%>51Q?J(>gj?2$gG<_rT?Zx3!d?N4= zCZ^^nopl-Z6KI#zY=D@-p@?YBPtTuAc=3`dy~K|>sfdu(!XfYWg>rTv&Ya$UTX5VC z*CJKKBSLHj_n5F`o0n8b_E$0h>O>O&w9jf`E8zmpTnRY)mMY04QaCdhmMQtwlOuZ5}cP!uNM}Yk{$T{b^IuQ$^5bc_hGi+vRS_> zV;v5Td8sxJY6QnV6ck^!MpH+I!Z#GdQ4+<;g$?&OxmoBtORW172my8V)#CFX>3)vl zx2ao|LT*B7+q`+t>G9*vikFBsM)k1>;?6d16*|FmhX}Ee-;>)C`z#&&Lo@yxY{=yX?fx8a+V%L`2g((?6l_2%#5JztY5*{IOEB(OI4%fJ?9*f$xNF*$jd z`^Bo>RAzqiyYXWrz>54po`CKm5M`8-3W_76KWeATWH7N^&^m_q6WnBM0ZTMOW z>V8%$G`wN2$jB@f!zRj30#YIKZbo999aRqqBxTxEkIUq$$OpW${o?Oz(F3TX%QG*% zS}0FaUE!d0Z7;jB6j^cY(&gAxfj&`)T%Bo!#8FYBjjbomE`0(E`89hFH%vngu=U%B+1FvW|p$}j1_dw(pkK0M7tbnoi4RPtr{vc?P?lE5<;kTXkF{)`qbS-%|u4aF<>_vU?>0K|J3G7cp^&X~mQJOQn zUm+>O+srPDc$poh9WNVtdmGTvjP2P)h1`jz8BHHlebFLfT3Z3Z(AVvxad{H{@~Xlf zy$~DtTv4umw4pvS0Fmw3B)t*92XYgzwY3eJJAimZ4iU(u=n1d@E`FjDbIbxM2D3eZo8B0_cF&Ro0 zt{8JXR~tS(J?)jU@4_LS;z!uH_R^z}8i20+3za5BIr0-O##DVM6o%E5?vWgalWP9> z;*6ro?jzMW4ZZ0FpgYJ7Z+JmWLPB|jeC`EhX*}$I7CGmEA4DBT#6`8XzLMeMQ&+S$ zaY(j3vVH$$8LH{H^;ot;@+N?4a(cSQe>3;I(3noZoMKshlKy7drZ)04E9<_~c%FCMWQV0 zQ}Iyd?qwOCNz1cUm%dKP-4N>^k(B*){TI(syA%$Wt`a%IE)v!WC9TwRmc!w{?7F&e zP)*QB99X=pGA>`uYumZK&9BM+g2?gZDI|7lUY$jL^hi=j=dU%bSi4k9=QeBc_F)=M zQX|~D)M#pi0*?xGOM^N`Mr{LQ;&tWbWuNlj%YBd=ZY%? zbuqb$DBPFLy<`IiO#*VPL53K0n#|rz##MC?QNNu*y$<=u&M!Y2{%>Te|Fe*VQmMn1 zzTPQ+S5@xwB0%!K%|k6Ppv)op-Zk$(*iF3A zZQmA~u3(FH^`F%d@rEiqY@j$;y{YoVTLEvz@a|8hzr;8>*^FX)*tQV7P$vkpPX2CZ zp>lN9t6i!la{-|9f#+iIxxYU>3rl~7J2oJ+ne}65hwzARpg;VJj+OnpdR3!&Gc(4? zj|Hi!5EG2=AKwRxuhE(?y(}|Yv?MAGJ#(Dw$4CZP3!w_{bf3Cn&`ejzyIDJDEa2c5 zP4sDU@BR3X>A3Q&9#%S>8I>5Nab&33B4zC9CU#~XK455M2VJf9|9blqxQGN>;%@{0RzZ4H{4EZdqxsW>n_^OD_L%u7i*W>y&4S|akFgh zjPwy#F0#Qn&BJK4h_ z?|dbqTqg^wLXwa*taEqpm7_@l95bMOMjCPLwD*6>h_?6D6p7NA1Vn#;*zU?SsnKoc p#G^?da($!sP*Sx2Tm1|f*t7B1n>7&>jJY!a)RlFVzAHdO{tNth@9F>m literal 10358 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