diff --git a/baystation12.dme b/baystation12.dme
index 389d9cff8f4..43610980ad7 100644
--- a/baystation12.dme
+++ b/baystation12.dme
@@ -6,229 +6,13 @@
// BEGIN_FILE_DIR
#define FILE_DIR .
#define FILE_DIR "code"
-#define FILE_DIR "code/__HELPERS"
-#define FILE_DIR "code/ATMOSPHERICS"
-#define FILE_DIR "code/ATMOSPHERICS/components"
-#define FILE_DIR "code/ATMOSPHERICS/components/binary_devices"
-#define FILE_DIR "code/ATMOSPHERICS/components/trinary_devices"
-#define FILE_DIR "code/ATMOSPHERICS/components/unary"
-#define FILE_DIR "code/controllers"
-#define FILE_DIR "code/datums"
-#define FILE_DIR "code/datums/diseases"
-#define FILE_DIR "code/datums/diseases/advance"
-#define FILE_DIR "code/datums/diseases/advance/symptoms"
-#define FILE_DIR "code/datums/helper_datums"
-#define FILE_DIR "code/datums/organs"
-#define FILE_DIR "code/datums/spells"
-#define FILE_DIR "code/defines"
-#define FILE_DIR "code/defines/obj"
-#define FILE_DIR "code/defines/procs"
-#define FILE_DIR "code/FEA"
-#define FILE_DIR "code/game"
-#define FILE_DIR "code/game/area"
-#define FILE_DIR "code/game/gamemodes"
-#define FILE_DIR "code/game/gamemodes/autotraitor"
-#define FILE_DIR "code/game/gamemodes/blob"
-#define FILE_DIR "code/game/gamemodes/blob/blobs"
-#define FILE_DIR "code/game/gamemodes/changeling"
-#define FILE_DIR "code/game/gamemodes/cult"
-#define FILE_DIR "code/game/gamemodes/epidemic"
-#define FILE_DIR "code/game/gamemodes/events"
-#define FILE_DIR "code/game/gamemodes/events/holidays"
-#define FILE_DIR "code/game/gamemodes/extended"
-#define FILE_DIR "code/game/gamemodes/malfunction"
-#define FILE_DIR "code/game/gamemodes/meme"
-#define FILE_DIR "code/game/gamemodes/meteor"
-#define FILE_DIR "code/game/gamemodes/nuclear"
-#define FILE_DIR "code/game/gamemodes/revolution"
-#define FILE_DIR "code/game/gamemodes/sandbox"
-#define FILE_DIR "code/game/gamemodes/traitor"
-#define FILE_DIR "code/game/gamemodes/wizard"
-#define FILE_DIR "code/game/jobs"
-#define FILE_DIR "code/game/jobs/job"
-#define FILE_DIR "code/game/machinery"
-#define FILE_DIR "code/game/machinery/atmoalter"
-#define FILE_DIR "code/game/machinery/bots"
-#define FILE_DIR "code/game/machinery/camera"
-#define FILE_DIR "code/game/machinery/computer"
-#define FILE_DIR "code/game/machinery/doors"
-#define FILE_DIR "code/game/machinery/embedded_controller"
-#define FILE_DIR "code/game/machinery/kitchen"
-#define FILE_DIR "code/game/machinery/pipe"
-#define FILE_DIR "code/game/machinery/telecomms"
-#define FILE_DIR "code/game/magic"
-#define FILE_DIR "code/game/mecha"
-#define FILE_DIR "code/game/mecha/combat"
-#define FILE_DIR "code/game/mecha/equipment"
-#define FILE_DIR "code/game/mecha/equipment/tools"
-#define FILE_DIR "code/game/mecha/equipment/weapons"
-#define FILE_DIR "code/game/mecha/medical"
-#define FILE_DIR "code/game/mecha/working"
-#define FILE_DIR "code/game/objects"
-#define FILE_DIR "code/game/objects/closets"
-#define FILE_DIR "code/game/objects/closets/secure"
-#define FILE_DIR "code/game/objects/effects"
-#define FILE_DIR "code/game/objects/effects/decals"
-#define FILE_DIR "code/game/objects/effects/decals/Cleanable"
-#define FILE_DIR "code/game/objects/effects/spawners"
-#define FILE_DIR "code/game/objects/items"
-#define FILE_DIR "code/game/objects/items/devices"
-#define FILE_DIR "code/game/objects/items/devices/PDA"
-#define FILE_DIR "code/game/objects/items/devices/radio"
-#define FILE_DIR "code/game/objects/items/robot"
-#define FILE_DIR "code/game/objects/items/stacks"
-#define FILE_DIR "code/game/objects/items/stacks/sheets"
-#define FILE_DIR "code/game/objects/items/stacks/tiles"
-#define FILE_DIR "code/game/objects/items/weapons"
-#define FILE_DIR "code/game/objects/items/weapons/grenades"
-#define FILE_DIR "code/game/objects/items/weapons/implants"
-#define FILE_DIR "code/game/objects/items/weapons/melee"
-#define FILE_DIR "code/game/objects/items/weapons/storage"
-#define FILE_DIR "code/game/objects/items/weapons/tanks"
-#define FILE_DIR "code/game/objects/storage"
-#define FILE_DIR "code/game/objects/structures"
-#define FILE_DIR "code/game/objects/structures/crates_lockers"
-#define FILE_DIR "code/game/objects/structures/crates_lockers/closets"
-#define FILE_DIR "code/game/objects/structures/crates_lockers/closets/secure"
-#define FILE_DIR "code/game/objects/structures/stool_bed_chair_nest"
-#define FILE_DIR "code/game/structure"
-#define FILE_DIR "code/game/turfs"
-#define FILE_DIR "code/game/turfs/simulated"
-#define FILE_DIR "code/game/turfs/space"
-#define FILE_DIR "code/game/turfs/unsimulated"
-#define FILE_DIR "code/game/vehicles"
-#define FILE_DIR "code/game/verbs"
-#define FILE_DIR "code/js"
-#define FILE_DIR "code/modules"
-#define FILE_DIR "code/modules/admin"
-#define FILE_DIR "code/modules/admin/DB ban"
-#define FILE_DIR "code/modules/admin/permissionverbs"
-#define FILE_DIR "code/modules/admin/verbs"
-#define FILE_DIR "code/modules/assembly"
-#define FILE_DIR "code/modules/awaymissions"
-#define FILE_DIR "code/modules/awaymissions/maploader"
-#define FILE_DIR "code/modules/client"
-#define FILE_DIR "code/modules/clothing"
-#define FILE_DIR "code/modules/clothing/glasses"
-#define FILE_DIR "code/modules/clothing/gloves"
-#define FILE_DIR "code/modules/clothing/head"
-#define FILE_DIR "code/modules/clothing/masks"
-#define FILE_DIR "code/modules/clothing/shoes"
-#define FILE_DIR "code/modules/clothing/spacesuits"
-#define FILE_DIR "code/modules/clothing/suits"
-#define FILE_DIR "code/modules/clothing/under"
-#define FILE_DIR "code/modules/clothing/under/jobs"
-#define FILE_DIR "code/modules/customitems"
-#define FILE_DIR "code/modules/destilery"
-#define FILE_DIR "code/modules/DetectiveWork"
-#define FILE_DIR "code/modules/events"
-#define FILE_DIR "code/modules/flufftext"
-#define FILE_DIR "code/modules/food"
-#define FILE_DIR "code/modules/genetics"
-#define FILE_DIR "code/modules/icon generation"
-#define FILE_DIR "code/modules/library"
-#define FILE_DIR "code/modules/liquid"
-#define FILE_DIR "code/modules/maps"
-#define FILE_DIR "code/modules/mining"
-#define FILE_DIR "code/modules/mob"
-#define FILE_DIR "code/modules/mob/dead"
-#define FILE_DIR "code/modules/mob/dead/observer"
-#define FILE_DIR "code/modules/mob/living"
-#define FILE_DIR "code/modules/mob/living/blob"
-#define FILE_DIR "code/modules/mob/living/carbon"
-#define FILE_DIR "code/modules/mob/living/carbon/alien"
-#define FILE_DIR "code/modules/mob/living/carbon/alien/humanoid"
-#define FILE_DIR "code/modules/mob/living/carbon/alien/humanoid/caste"
-#define FILE_DIR "code/modules/mob/living/carbon/alien/larva"
-#define FILE_DIR "code/modules/mob/living/carbon/alien/special"
-#define FILE_DIR "code/modules/mob/living/carbon/brain"
-#define FILE_DIR "code/modules/mob/living/carbon/human"
-#define FILE_DIR "code/modules/mob/living/carbon/metroid"
-#define FILE_DIR "code/modules/mob/living/carbon/monkey"
-#define FILE_DIR "code/modules/mob/living/silicon"
-#define FILE_DIR "code/modules/mob/living/silicon/ai"
-#define FILE_DIR "code/modules/mob/living/silicon/ai/freelook"
-#define FILE_DIR "code/modules/mob/living/silicon/decoy"
-#define FILE_DIR "code/modules/mob/living/silicon/pai"
-#define FILE_DIR "code/modules/mob/living/silicon/robot"
-#define FILE_DIR "code/modules/mob/living/simple_animal"
-#define FILE_DIR "code/modules/mob/living/simple_animal/friendly"
-#define FILE_DIR "code/modules/mob/living/simple_animal/hostile"
-#define FILE_DIR "code/modules/mob/living/simple_animal/hostile/retaliate"
-#define FILE_DIR "code/modules/mob/new_player"
-#define FILE_DIR "code/modules/paperwork"
-#define FILE_DIR "code/modules/power"
-#define FILE_DIR "code/modules/power/antimatter"
-#define FILE_DIR "code/modules/power/singularity"
-#define FILE_DIR "code/modules/power/singularity/particle_accelerator"
-#define FILE_DIR "code/modules/projectiles"
-#define FILE_DIR "code/modules/projectiles/ammunition"
-#define FILE_DIR "code/modules/projectiles/guns"
-#define FILE_DIR "code/modules/projectiles/guns/energy"
-#define FILE_DIR "code/modules/projectiles/guns/projectile"
-#define FILE_DIR "code/modules/projectiles/projectile"
-#define FILE_DIR "code/modules/reagents"
-#define FILE_DIR "code/modules/reagents/reagent_containers"
-#define FILE_DIR "code/modules/reagents/reagent_containers/food"
-#define FILE_DIR "code/modules/reagents/reagent_containers/food/drinks"
-#define FILE_DIR "code/modules/reagents/reagent_containers/food/drinks/bottle"
-#define FILE_DIR "code/modules/reagents/reagent_containers/food/snacks"
-#define FILE_DIR "code/modules/reagents/reagent_containers/glass"
-#define FILE_DIR "code/modules/reagents/reagent_containers/glass/bottle"
-#define FILE_DIR "code/modules/recycling"
-#define FILE_DIR "code/modules/research"
-#define FILE_DIR "code/modules/research/xenoarchaeology"
-#define FILE_DIR "code/modules/scripting"
-#define FILE_DIR "code/modules/scripting/AST"
-#define FILE_DIR "code/modules/scripting/AST/Operators"
-#define FILE_DIR "code/modules/scripting/Implementations"
-#define FILE_DIR "code/modules/scripting/Interpreter"
-#define FILE_DIR "code/modules/scripting/Parser"
-#define FILE_DIR "code/modules/scripting/Scanner"
-#define FILE_DIR "code/modules/security levels"
-#define FILE_DIR "code/modules/surgery"
#define FILE_DIR "code/TriDimension"
-#define FILE_DIR "code/unused"
-#define FILE_DIR "code/unused/beast"
-#define FILE_DIR "code/unused/computer2"
-#define FILE_DIR "code/unused/disease2"
-#define FILE_DIR "code/unused/gamemodes"
-#define FILE_DIR "code/unused/hivebot"
-#define FILE_DIR "code/unused/mining"
-#define FILE_DIR "code/unused/optics"
-#define FILE_DIR "code/unused/pda2"
-#define FILE_DIR "code/unused/powerarmor"
-#define FILE_DIR "code/unused/spacecraft"
#define FILE_DIR "code/WorkInProgress"
-#define FILE_DIR "code/WorkInProgress/AI_Visibility"
-#define FILE_DIR "code/WorkInProgress/animusstation"
-#define FILE_DIR "code/WorkInProgress/Apples"
#define FILE_DIR "code/WorkInProgress/Cael_Aislinn"
-#define FILE_DIR "code/WorkInProgress/Cael_Aislinn/Economy"
#define FILE_DIR "code/WorkInProgress/Cael_Aislinn/Jungle"
#define FILE_DIR "code/WorkInProgress/Cael_Aislinn/Rust"
#define FILE_DIR "code/WorkInProgress/Cael_Aislinn/Supermatter"
-#define FILE_DIR "code/WorkInProgress/carn"
-#define FILE_DIR "code/WorkInProgress/Chinsky"
-#define FILE_DIR "code/WorkInProgress/Cib"
-#define FILE_DIR "code/WorkInProgress/Cib/amorph"
-#define FILE_DIR "code/WorkInProgress/Mini"
-#define FILE_DIR "code/WorkInProgress/Mloc"
-#define FILE_DIR "code/WorkInProgress/organs"
-#define FILE_DIR "code/WorkInProgress/Ported"
-#define FILE_DIR "code/WorkInProgress/Ported/Abi79"
-#define FILE_DIR "code/WorkInProgress/Ported/Bureaucracy"
-#define FILE_DIR "code/WorkInProgress/Ported/Spawners"
-#define FILE_DIR "code/WorkInProgress/Sigyn"
-#define FILE_DIR "code/WorkInProgress/Sigyn/Department Sec"
-#define FILE_DIR "code/WorkInProgress/Sigyn/Softcurity"
-#define FILE_DIR "code/WorkInProgress/SkyMarshal"
#define FILE_DIR "code/WorkInProgress/Susan"
-#define FILE_DIR "code/WorkInProgress/Tastyfish"
-#define FILE_DIR "code/WorkInProgress/virus2"
-#define FILE_DIR "code/WorkInProgress/virus2/Disease2"
-#define FILE_DIR "code/WorkInProgress/Wrongnumber"
-#define FILE_DIR "code/ZAS"
#define FILE_DIR "html"
#define FILE_DIR "icons"
#define FILE_DIR "icons/48x48"
@@ -250,9 +34,6 @@
#define FILE_DIR "icons/Testing"
#define FILE_DIR "icons/turf"
#define FILE_DIR "icons/vending_icons"
-#define FILE_DIR "interface"
-#define FILE_DIR "maps"
-#define FILE_DIR "maps/RandomZLevels"
#define FILE_DIR "sound"
#define FILE_DIR "sound/AI"
#define FILE_DIR "sound/ambience"
@@ -268,8 +49,6 @@
#define FILE_DIR "sound/violin"
#define FILE_DIR "sound/voice"
#define FILE_DIR "sound/weapons"
-#define FILE_DIR "tools"
-#define FILE_DIR "tools/Redirector"
// END_FILE_DIR
// BEGIN_PREFERENCES
#define DEBUG
diff --git a/code/WorkInProgress/Cael_Aislinn/Rust/core_monitor.dm b/code/WorkInProgress/Cael_Aislinn/Rust/core_monitor.dm
index b7a464a6754..4ced2ffb2bb 100644
--- a/code/WorkInProgress/Cael_Aislinn/Rust/core_monitor.dm
+++ b/code/WorkInProgress/Cael_Aislinn/Rust/core_monitor.dm
@@ -1,8 +1,9 @@
-/obj/machinery/computer/rust/radiation_monitor
- name = "Core Radiation Monitor"
+/obj/machinery/computer/rust_radiation_monitor
+ name = "Radiation Monitor"
+ icon_state = "power"
-/obj/machinery/computer/rust/energy_monitor
+/obj/machinery/computer/rust_energy_monitor
name = "Core Primary Monitor"
icon_state = "power"
var/obj/machinery/rust/core/core_generator = null
diff --git a/code/WorkInProgress/Cael_Aislinn/Rust/fuel_control.dm b/code/WorkInProgress/Cael_Aislinn/Rust/fuel_control.dm
index f4a7f700fa4..b766ab1e0b4 100644
--- a/code/WorkInProgress/Cael_Aislinn/Rust/fuel_control.dm
+++ b/code/WorkInProgress/Cael_Aislinn/Rust/fuel_control.dm
@@ -1,5 +1,5 @@
-/obj/machinery/computer/rust/fuel_control
+/obj/machinery/computer/rust_fuel_control
name = "Fuel Injection Control"
icon_state = "power"
var/list/fuel_injectors
diff --git a/code/WorkInProgress/Cael_Aislinn/Rust/gyrotron.dm b/code/WorkInProgress/Cael_Aislinn/Rust/gyrotron.dm
index 3926d840330..83d43833775 100644
--- a/code/WorkInProgress/Cael_Aislinn/Rust/gyrotron.dm
+++ b/code/WorkInProgress/Cael_Aislinn/Rust/gyrotron.dm
@@ -41,7 +41,7 @@
new_val = min(new_val,0.01)
new_val = max(new_val,0.001)
mega_energy = new_val
- for(var/obj/machinery/computer/rust/gyrotron_controller/comp in range(25))
+ for(var/obj/machinery/computer/rust_gyrotron_controller/comp in range(25))
comp.updateDialog()
return
if( href_list["modifyrate"] )
@@ -52,7 +52,7 @@
new_val = min(new_val,1)
new_val = max(new_val,10)
rate = new_val
- for(var/obj/machinery/computer/rust/gyrotron_controller/comp in range(25))
+ for(var/obj/machinery/computer/rust_gyrotron_controller/comp in range(25))
comp.updateDialog()
return
if( href_list["modifyfreq"] )
@@ -63,29 +63,29 @@
new_val = min(new_val,1)
new_val = max(new_val,50000)
frequency = new_val
- for(var/obj/machinery/computer/rust/gyrotron_controller/comp in range(25))
+ for(var/obj/machinery/computer/rust_gyrotron_controller/comp in range(25))
comp.updateDialog()
return
if( href_list["activate"] )
emitting = 1
spawn(rate)
Emit()
- for(var/obj/machinery/computer/rust/gyrotron_controller/comp in range(25))
+ for(var/obj/machinery/computer/rust_gyrotron_controller/comp in range(25))
comp.updateDialog()
return
if( href_list["deactivate"] )
emitting = 0
- for(var/obj/machinery/computer/rust/gyrotron_controller/comp in range(25))
+ for(var/obj/machinery/computer/rust_gyrotron_controller/comp in range(25))
comp.updateDialog()
return
if( href_list["enableremote"] )
remoteenabled = 1
- for(var/obj/machinery/computer/rust/gyrotron_controller/comp in range(25))
+ for(var/obj/machinery/computer/rust_gyrotron_controller/comp in range(25))
comp.updateDialog()
return
if( href_list["disableremote"] )
remoteenabled = 0
- for(var/obj/machinery/computer/rust/gyrotron_controller/comp in range(25))
+ for(var/obj/machinery/computer/rust_gyrotron_controller/comp in range(25))
comp.updateDialog()
return
/*
diff --git a/code/WorkInProgress/Cael_Aislinn/Rust/gyrotron_controller.dm b/code/WorkInProgress/Cael_Aislinn/Rust/gyrotron_controller.dm
index 2c9b6f37d88..e2b13bc2c32 100644
--- a/code/WorkInProgress/Cael_Aislinn/Rust/gyrotron_controller.dm
+++ b/code/WorkInProgress/Cael_Aislinn/Rust/gyrotron_controller.dm
@@ -1,5 +1,5 @@
-/obj/machinery/computer/rust/gyrotron_controller
+/obj/machinery/computer/rust_gyrotron_controller
name = "Gyrotron Remote Controller"
icon_state = "power"
var/updating = 1
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..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("Cramps")
H.UpdateDamageIcon()
else
M.heal_organ_damage((src.heal_brute/2), (src.heal_burn/2))
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/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm
index 11646e64d8f..3dbe68a53fe 100644
--- a/code/modules/mob/living/carbon/human/life.dm
+++ b/code/modules/mob/living/carbon/human/life.dm
@@ -617,7 +617,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
diff --git a/code/modules/mob/living/silicon/say.dm b/code/modules/mob/living/silicon/say.dm
index d9be362445a..1c2adbf7a6e 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)
@@ -130,5 +130,5 @@
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
+ 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/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)
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)
+
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)
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
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: