From 5217227f9aff975d6d7a09f1726c3007d5fa1cc5 Mon Sep 17 00:00:00 2001 From: cib Date: Thu, 14 Feb 2013 14:45:52 +0100 Subject: [PATCH 01/10] Fixes issue #2309: Infected blood now infects again. --- code/modules/reagents/Chemistry-Reagents.dm | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm index acec96cba7c..3e014582c94 100644 --- a/code/modules/reagents/Chemistry-Reagents.dm +++ b/code/modules/reagents/Chemistry-Reagents.dm @@ -113,6 +113,12 @@ datum M.contract_disease(D) else //injected M.contract_disease(D, 1, 0) + if(self.data && self.data["virus2"]) + if(method == TOUCH) + infect_virus2(M,self.data["virus2"]) + else + infect_virus2(M,self.data["virus2"],1) + From c5301c51449fd2ac3cb0d951a201390d62ed00b0 Mon Sep 17 00:00:00 2001 From: cib Date: Thu, 14 Feb 2013 15:06:10 +0100 Subject: [PATCH 02/10] Fixes issue #2296: Humans will not react to sleep toxins in smaller amounts than can be scrubbed. --- code/modules/mob/living/carbon/human/life.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index f48a7be0df3..d34a65fdf62 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -615,7 +615,7 @@ var/const/BLOOD_VOLUME_SURVIVE = 122 Paralyse(3) // 3 gives them one second to wake up and run away a bit! if(SA_pp > SA_sleep_min) // Enough to make us sleep as well sleeping = max(sleeping+2, 10) - else if(SA_pp > 0.01) // There is sleeping gas in their lungs, but only a little, so give them a bit of a warning + else if(SA_pp > 0.15) // There is sleeping gas in their lungs, but only a little, so give them a bit of a warning if(prob(20)) spawn(0) emote(pick("giggle", "laugh")) SA.moles = 0 From e14855be35429748c692694723a3da5a4f8b8448 Mon Sep 17 00:00:00 2001 From: cib Date: Thu, 14 Feb 2013 17:20:04 +0100 Subject: [PATCH 03/10] Updated changelog. --- html/changelog.html | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/html/changelog.html b/html/changelog.html index e907a104ba4..10c719b2a6f 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -59,6 +59,31 @@ should be listed in the changelog upon commit though. Thanks. --> +
+

February 14th 2013

+

CIB updated:

+
    +
  • Medical side-effects(patients are going to come back for secondary treatment)
  • +
  • NT loyalty setting(affects command reports and gives antags hints who might collaborate with them)
  • +
  • Simple animal balance fixes(They're slower now)
  • +
+

CaelAislinn updated:

+
    +
  • Re-added old ion storm laws, re-added grid check event.
  • +
  • Added Rogue Drone and Vermin Infestation random events.
  • +
  • Added/fixed space vines random event.
  • +
  • Updates to the virus events.
  • +
  • Spider infestation and alien infestation events turned off by default.
  • +
  • Soghun, taj and skrell all have unique language text colours.
  • +
  • Moderators will no longer be listed in adminwho, instead use modwho.
  • +
+ +

Gamerofthegame updated:

+
    +
  • Miscellaneous mapfixes.
  • +
+
+

February 13th 2013

Erthilo updated:

From 8b8556a1b10b59fc06c08339fb10c3fbe91c828b Mon Sep 17 00:00:00 2001 From: Chinsky Date: Fri, 15 Feb 2013 02:06:35 +0400 Subject: [PATCH 04/10] Removed requirements for face surgery to cut open head too, real counterintuitive and looks like copypaste error >.> --- code/modules/surgery/face.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/surgery/face.dm b/code/modules/surgery/face.dm index 5c769159997..2e6e0c65d05 100644 --- a/code/modules/surgery/face.dm +++ b/code/modules/surgery/face.dm @@ -11,7 +11,7 @@ var/datum/organ/external/affected = target.get_organ(target_zone) if (!affected) return 0 - return target_zone == "mouth" && affected.open == 2 && !(affected.status & ORGAN_BLEEDING) + return target_zone == "mouth" /datum/surgery_step/generic/cut_face required_tool = /obj/item/weapon/scalpel From eaa81306726b3437c7ac04e7bb6be4c525d08415 Mon Sep 17 00:00:00 2001 From: cib Date: Fri, 15 Feb 2013 14:25:11 +0100 Subject: [PATCH 05/10] Balance fixes to medical side-effects. - Bandage/ointment now causes itch instead of cramps - Reduced amount of messages/effects by side-effects to 1/3 - Side-effects will now disappear after a while if left untreated, but they will cause damage before that. --- code/WorkInProgress/Cib/MedicalSideEffects.dm | 43 +++++++++++++++---- code/game/objects/items/stacks/medical.dm | 2 +- 2 files changed, 35 insertions(+), 10 deletions(-) diff --git a/code/WorkInProgress/Cib/MedicalSideEffects.dm b/code/WorkInProgress/Cib/MedicalSideEffects.dm index d701bbb94f5..ea828276837 100644 --- a/code/WorkInProgress/Cib/MedicalSideEffects.dm +++ b/code/WorkInProgress/Cib/MedicalSideEffects.dm @@ -37,14 +37,14 @@ // Only do anything if the effect is currently strong enough if(strength_percent >= 0.4) for (var/datum/medical_effect/M in side_effects) - if (M.cure(src)) + if (M.cure(src) || M.strength > 60) side_effects -= M del(M) else - if(life_tick % 15 == 0) + if(life_tick % 45 == 0) M.on_life(src, strength_percent*M.strength) // Effect slowly growing stronger - M.strength+=0.05 + M.strength+=0.08 // HEADACHE // ======== @@ -78,10 +78,10 @@ H.custom_pain("You feel a light pain in your head.",0) if(11 to 30) H.custom_pain("You feel a throbbing pain in your head!",1) - if(31 to 99) + if(31 to 50) H.custom_pain("You feel an excrutiating pain in your head!",1) H.adjustBrainLoss(1) - if(99 to INFINITY) + if(51 to INFINITY) H.custom_pain("It feels like your head is about to split open!",1) H.adjustBrainLoss(3) var/datum/organ/external/O = H.organs_by_name["head"] @@ -102,10 +102,10 @@ H.custom_pain("You feel a bit light around the stomach.",0) if(11 to 30) H.custom_pain("Your stomach hurts.",0) - if(31 to 99) + if(31 to 50) H.custom_pain("You feel sick.",1) H.adjustToxLoss(1) - if(99 to INFINITY) + if(51 to INFINITY) H.custom_pain("You can't hold it in any longer!",1) H.vomit() @@ -125,11 +125,11 @@ H.custom_pain("The muscles in your body hurt a little.",0) if(11 to 30) H.custom_pain("The muscles in your body cramp up painfully.",0) - if(31 to 99) + if(31 to 50) H.emote("me",1,"flinches as all the muscles in their body cramp up.") H.custom_pain("There's pain all over your body.",1) H.adjustToxLoss(1) - if(99 to INFINITY) + if(51 to INFINITY) H.emote("me",1,"flinches as all the muscles in their body cramp up.") H.custom_pain("It feels as though your muscles are being ripped apart!",1) H.apply_damage(1, used_weapon = "Cramps") @@ -138,4 +138,29 @@ if(H.reagents.has_reagent("inaprovaline")) H << "\red The cramps let up.." return 1 + return 0 + +// ITCH +// ==== +/datum/medical_effect/itch/name = "Itch" +/datum/medical_effect/itch/on_life(mob/living/carbon/human/H, strength) + switch(strength) + if(1 to 10) + H.custom_pain("You feel a slight itch.",0) + if(11 to 30) + H.custom_pain("You want to scratch your itch badly.",0) + if(31 to 50) + H.emote("me",1,"shivers slightly.") + H.custom_pain("This itch makes it really hard to concentrate.",1) + H.adjustToxLoss(1) + if(51 to INFINITY) + H.emote("me",1,"shivers.") + H.custom_pain("The itch starts hurting and oozing blood.",1) + H.apply_damage(1, BURN, used_weapon = "Itch") + H.drip(1) + +/datum/medical_effect/itch/cure(mob/living/carbon/human/H) + if(H.reagents.has_reagent("inaprovaline")) + H << "\red The itching stops.." + return 1 return 0 \ No newline at end of file diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm index b4f738304f1..56a8181f846 100644 --- a/code/game/objects/items/stacks/medical.dm +++ b/code/game/objects/items/stacks/medical.dm @@ -53,7 +53,7 @@ user.visible_message( "\blue [user] salves wounds on [M]'s [affecting.display_name].", \ "\blue You salve wounds on [M]'s [affecting.display_name]." ) - H.add_side_effect("Cramps") + H.add_side_effect("Itch") H.UpdateDamageIcon() else M.heal_organ_damage((src.heal_brute/2), (src.heal_burn/2)) From 6ad09d49c81d5d9ebc7c671c6dab5bc5f99d346c Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Sat, 16 Feb 2013 14:21:00 -0800 Subject: [PATCH 06/10] Fixes for posibrain name generation, research design for protolathe, possible for for double-say for posibrains (cannot test locally). --- code/modules/mob/living/carbon/brain/posibrain.dm | 9 ++++++--- code/modules/mob/living/silicon/say.dm | 6 +++--- code/modules/research/designs.dm | 4 ++-- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/code/modules/mob/living/carbon/brain/posibrain.dm b/code/modules/mob/living/carbon/brain/posibrain.dm index b6894719a10..b972e2f9f80 100644 --- a/code/modules/mob/living/carbon/brain/posibrain.dm +++ b/code/modules/mob/living/carbon/brain/posibrain.dm @@ -54,8 +54,9 @@ src.brainmob = B src.brainmob.mind = candidate.mind - src.brainmob.name = "PBU-[rand(100, 999)]" - src.brainmob.real_name = "PBU-[rand(100, 999)]" + src.brainmob.name = "[pick(list("PBU","HIU","SINA","ARMA","OSI"))]-[rand(100, 999)]" + src.brainmob.real_name = src.brainmob.name + src.name = "positronic brain ([src.brainmob.name])" src.brainmob.loc = src src.brainmob.container = src src.brainmob.robot_talk_understand = 1 @@ -69,7 +70,7 @@ src.brainmob << "You are a positronic brain, brought into existence on [station_name()]." src.brainmob << "As a synthetic intelligence, you answer to all crewmembers, as well as the AI." src.brainmob << "Remember, the purpose of your existence is to serve the crew and the station. Above all else, do no harm." - src.brainmob << "Use say :b to speak to other artificial intelligences." + src.brainmob << "Use say :b to speak to other artificial intelligences." src.brainmob.mind.assigned_role = "Positronic Brain" var/turf/T = get_turf_or_move(src.loc) @@ -106,6 +107,8 @@ if(!src.brainmob.client) msg += "It appears to be in stand-by mode.\n" //afk if(UNCONSCIOUS) msg += "It doesn't seem to be responsive.\n" if(DEAD) msg += "It appears to be completely inactive.\n" + else + msg += "It appears to be completely inactive.\n" msg += "*---------*" usr << msg return diff --git a/code/modules/mob/living/silicon/say.dm b/code/modules/mob/living/silicon/say.dm index d9be362445a..712a7f6e5cd 100644 --- a/code/modules/mob/living/silicon/say.dm +++ b/code/modules/mob/living/silicon/say.dm @@ -106,7 +106,7 @@ var/list/listening = hearers(1, src) listening -= src - listening += src + //listening += src var/list/heard = list() for (var/mob/M in listening) @@ -127,8 +127,8 @@ message = say_quote(message) - rendered = "Robotic Talk, [name] [message_a]" + rendered = "Robotic Talk (4), [name] [message_a]" for (var/mob/M in dead_mob_list) - if(!istype(M,/mob/new_player) && !(istype(M,/mob/living/carbon/brain)))//No meta-evesdropping + if(!istype(M,/mob/new_player) && !istype(M,/mob/living/carbon/brain)) //No meta-evesdropping M.show_message(rendered, 2) \ No newline at end of file diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm index bffa66a303d..0fd82e0b38a 100644 --- a/code/modules/research/designs.dm +++ b/code/modules/research/designs.dm @@ -587,11 +587,11 @@ datum/design/paicard materials = list("$glass" = 500, "$metal" = 500) build_path = "/obj/item/device/paicard" -datum/design/paicard +datum/design/posibrain name = "Positronic Brain" desc = "Allows for the construction of a positronic brain" id = "posibrain" - req_tech = list("engineering" = 4, "materials" = 4, "bluespace" = 2, "programming" = 6) + req_tech = list("engineering" = 4, "materials" = 6, "bluespace" = 2, "programming" = 4) build_type = PROTOLATHE materials = list("$metal" = 2000, "$glass" = 1000, "$silver" = 1000, "$gold" = 500, "$plasma" = 500, "$diamond" = 100) From 4dd7141e321768e17efe4fc884b4b42c8503e1c2 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Sat, 16 Feb 2013 16:19:39 -0800 Subject: [PATCH 07/10] Removing a debug string. --- code/modules/mob/living/silicon/say.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/silicon/say.dm b/code/modules/mob/living/silicon/say.dm index 712a7f6e5cd..1c2adbf7a6e 100644 --- a/code/modules/mob/living/silicon/say.dm +++ b/code/modules/mob/living/silicon/say.dm @@ -127,7 +127,7 @@ message = say_quote(message) - rendered = "Robotic Talk (4), [name] [message_a]" + rendered = "Robotic Talk, [name] [message_a]" for (var/mob/M in dead_mob_list) if(!istype(M,/mob/new_player) && !istype(M,/mob/living/carbon/brain)) //No meta-evesdropping From 5c13beaf59d1137ebff151d852b53c3eee18d98c Mon Sep 17 00:00:00 2001 From: Chinsky Date: Sun, 17 Feb 2013 15:06:22 +0400 Subject: [PATCH 08/10] Fixed issue #2341 --- code/game/verbs/who.dm | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/code/game/verbs/who.dm b/code/game/verbs/who.dm index c7f7a3774f7..a07d07f9624 100644 --- a/code/game/verbs/who.dm +++ b/code/game/verbs/who.dm @@ -47,7 +47,7 @@ set name = "Adminwho" var/msg = "Current Admins:\n" - var/num_mods_online = 0 + var/num_admins_online = 0 if(holder) for(var/client/C in admins) if(C.holder.rank != "Moderator") @@ -66,17 +66,15 @@ if(C.is_afk()) msg += " (AFK)" msg += "\n" - else - num_mods_online++ + num_admins_online++ else for(var/client/C in admins) if(C.holder.rank != "Moderator") if(!C.holder.fakekey) msg += "\t[C] is a [C.holder.rank]\n" - else - num_mods_online++ + num_admins_online++ - msg += "There are [num_mods_online] moderators online\n" + msg += "There are [num_admins_online] administrators online\n" src << msg /client/verb/modwho() @@ -84,7 +82,7 @@ set name = "Modwho" var/msg = "Current Moderators:\n" - var/num_admins_online = 0 + var/num_mods_online = 0 if(holder) for(var/client/C in admins) if(C.holder.rank == "Moderator") @@ -100,14 +98,12 @@ if(C.is_afk()) msg += " (AFK)" msg += "\n" - else - num_admins_online++ + num_mods_online++ else for(var/client/C in admins) if(C.holder.rank == "Moderator") msg += "\t[C] is a [C.holder.rank]\n" - else - num_admins_online++ + num_mods_online++ - msg += "There are [num_admins_online] admins online\n" + msg += "There are [num_mods_online] moderators online\n" src << msg From 948e859d801618b97994a209da2199acd4304407 Mon Sep 17 00:00:00 2001 From: Chinsky Date: Sun, 17 Feb 2013 16:02:56 +0400 Subject: [PATCH 09/10] Fixes #2343 (and #2342), #2356 Readded pre-merge bottle and pill icon choosing system. --- code/modules/reagents/Chemistry-Machinery.dm | 62 +++++++++++++++----- 1 file changed, 47 insertions(+), 15 deletions(-) diff --git a/code/modules/reagents/Chemistry-Machinery.dm b/code/modules/reagents/Chemistry-Machinery.dm index c17d4a86fcb..c54bc49c9db 100644 --- a/code/modules/reagents/Chemistry-Machinery.dm +++ b/code/modules/reagents/Chemistry-Machinery.dm @@ -186,6 +186,9 @@ var/mode = 0 var/condi = 0 var/useramount = 30 // Last used amount + var/bottlesprite = "1" //yes, strings + var/pillsprite = "1" + var/client/has_sprites = list() /obj/machinery/chem_master/New() var/datum/reagents/R = new/datum/reagents(100) @@ -267,7 +270,18 @@ if (href_list["analyze"]) var/dat = "" if(!condi) - dat += "Chemmaster 3000Chemical infos:

Name:
[href_list["name"]]

Description:
[href_list["desc"]]


(Back)" + if(href_list["name"] == "Blood") + var/datum/reagent/blood/G + for(var/datum/reagent/F in R.reagent_list) + if(F.name == href_list["name"]) + G = F + break + var/A = G.name + var/B = G.data["blood_type"] + var/C = G.data["blood_DNA"] + dat += "Chemmaster 3000Chemical infos:

Name:
[A]

Description:
Blood Type: [B]
DNA: [C]


(Back)" + else + dat += "Chemmaster 3000Chemical infos:

Name:
[href_list["name"]]

Description:
[href_list["desc"]]


(Back)" else dat += "Condimaster 3000Condiment infos:

Name:
[href_list["name"]]

Description:
[href_list["desc"]]


(Back)" usr << browse(dat, "window=chem_master;size=575x400") @@ -319,19 +333,13 @@ icon_state = "mixer0" else if (href_list["createpill"]) var/name = reject_bad_text(input(usr,"Name:","Name your pill!",reagents.get_master_reagent_name())) - var/obj/item/weapon/reagent_containers/pill/P - - if(loaded_pill_bottle && loaded_pill_bottle.contents.len < loaded_pill_bottle.storage_slots) - P = new/obj/item/weapon/reagent_containers/pill(loaded_pill_bottle) - else - P = new/obj/item/weapon/reagent_containers/pill(src.loc) - + var/obj/item/weapon/reagent_containers/pill/P = new/obj/item/weapon/reagent_containers/pill(src.loc) if(!name) name = reagents.get_master_reagent_name() P.name = "[name] pill" P.pixel_x = rand(-7, 7) //random position P.pixel_y = rand(-7, 7) + P.icon_state = "pill"+pillsprite reagents.trans_to(P,50) - else if (href_list["createbottle"]) if(!condi) var/name = reject_bad_text(input(usr,"Name:","Name your bottle!",reagents.get_master_reagent_name())) @@ -340,14 +348,31 @@ P.name = "[name] bottle" P.pixel_x = rand(-7, 7) //random position P.pixel_y = rand(-7, 7) + P.icon_state = "bottle"+bottlesprite reagents.trans_to(P,30) - - var/bottle_num = min(max(input("Enter bottle design number","Bottle number"), 0), 20) as num - P.icon_state = "bottle[bottle_num]" - desc = "A small bottle, design number #[bottle_num]." else var/obj/item/weapon/reagent_containers/food/condiment/P = new/obj/item/weapon/reagent_containers/food/condiment(src.loc) reagents.trans_to(P,50) + else if(href_list["change_pill"]) + #define MAX_PILL_SPRITE 20 //max icon state of the pill sprites + var/dat = "" + for(var/i = 1 to MAX_PILL_SPRITE) + dat += "" + dat += "
" + usr << browse(dat, "window=chem_master") + return + else if(href_list["change_bottle"]) + #define MAX_BOTTLE_SPRITE 20 //max icon state of the bottle sprites + var/dat = "" + for(var/i = 1 to MAX_BOTTLE_SPRITE) + dat += "" + dat += "
" + usr << browse(dat, "window=chem_master") + return + else if(href_list["pill_sprite"]) + pillsprite = href_list["pill_sprite"] + else if(href_list["bottle_sprite"]) + bottlesprite = href_list["bottle_sprite"] src.updateUsrDialog() return @@ -362,6 +387,13 @@ if(stat & BROKEN) return user.set_machine(src) + if(!(user.client in has_sprites)) + spawn() + has_sprites += user.client + for(var/i = 1 to MAX_PILL_SPRITE) + usr << browse_rsc(icon('chemical.dmi', "pill" + num2text(i)), "pill[i].png") + for(var/i = 1 to MAX_BOTTLE_SPRITE) + usr << browse_rsc(icon('chemical.dmi', "bottle" + num2text(i)), "bottle[i].png") var/dat = "" if(!beaker) dat = "Please insert beaker.
" @@ -403,8 +435,8 @@ else dat += "Empty
" if(!condi) - dat += "

Create pill (50 units max)
" - dat += "Create bottle (30 units max)" + dat += "

Create pill (50 units max)
" + dat += "Create bottle (30 units max)" else dat += "Create bottle (50 units max)" if(!condi) From 0b8bae86ae82d10f9655da6c97784a1d8d0c2e6a Mon Sep 17 00:00:00 2001 From: Chinsky Date: Sun, 17 Feb 2013 17:35:46 +0400 Subject: [PATCH 10/10] Only bandaging bleeding wounds would cause itching. Bruise packs give out different message during treatment depending on type and severity of wound. --- code/game/objects/items/stacks/medical.dm | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm index 56a8181f846..3c66e61d80a 100644 --- a/code/game/objects/items/stacks/medical.dm +++ b/code/game/objects/items/stacks/medical.dm @@ -42,8 +42,19 @@ user << "\red The wounds on [M]'s [affecting.display_name] have already been bandaged." return 1 else - user.visible_message( "\blue [user] bandages wounds on [M]'s [affecting.display_name].", \ - "\blue You bandage wounds on [M]'s [affecting.display_name]." ) + for (var/datum/wound/W in affecting.wounds) + if (W.internal) + continue + if (W.current_stage <= W.max_bleeding_stage) + user.visible_message( "\blue [user] bandages [W.desc] on [M]'s [affecting.display_name].", \ + "\blue You bandage [W.desc] on [M]'s [affecting.display_name]." ) + H.add_side_effect("Itch") + else if (istype(W,/datum/wound/bruise)) + user.visible_message( "\blue [user] places bruise patch over [W.desc] on [M]'s [affecting.display_name].", \ + "\blue You place bruise patch over [W.desc] on [M]'s [affecting.display_name]." ) + else + user.visible_message( "\blue [user] places bandaid over [W.desc] on [M]'s [affecting.display_name].", \ + "\blue You place bandaid over [W.desc] on [M]'s [affecting.display_name]." ) else if(src.heal_burn) if(!affecting.salve()) @@ -53,7 +64,6 @@ user.visible_message( "\blue [user] salves wounds on [M]'s [affecting.display_name].", \ "\blue You salve wounds on [M]'s [affecting.display_name]." ) - H.add_side_effect("Itch") H.UpdateDamageIcon() else M.heal_organ_damage((src.heal_brute/2), (src.heal_burn/2))