diff --git a/baystation12.dme b/baystation12.dme
index 92928498243..cf62483361c 100644
--- a/baystation12.dme
+++ b/baystation12.dme
@@ -5,6 +5,83 @@
// END_INTERNALS
// BEGIN_FILE_DIR
#define FILE_DIR .
+#define FILE_DIR "code"
+#define FILE_DIR "code/TriDimension"
+#define FILE_DIR "code/unused"
+#define FILE_DIR "code/unused/goonheist"
+#define FILE_DIR "code/WorkInProgress"
+#define FILE_DIR "code/WorkInProgress/Cael_Aislinn"
+#define FILE_DIR "code/WorkInProgress/Cael_Aislinn/Jungle"
+#define FILE_DIR "code/WorkInProgress/Cael_Aislinn/Rust"
+#define FILE_DIR "code/WorkInProgress/Cael_Aislinn/ShieldGen"
+#define FILE_DIR "code/WorkInProgress/Cael_Aislinn/Supermatter"
+#define FILE_DIR "code/WorkInProgress/IndexLP"
+#define FILE_DIR "code/WorkInProgress/Susan"
+#define FILE_DIR "html"
+#define FILE_DIR "icons"
+#define FILE_DIR "icons/48x48"
+#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/mob/human_races"
+#define FILE_DIR "icons/mob/in-hand"
+#define FILE_DIR "icons/mob/in-hand/left"
+#define FILE_DIR "icons/mob/in-hand/right"
+#define FILE_DIR "icons/mob/otherHuman"
+#define FILE_DIR "icons/mob/species"
+#define FILE_DIR "icons/mob/species/armalis"
+#define FILE_DIR "icons/mob/species/skrell"
+#define FILE_DIR "icons/mob/species/tajaran"
+#define FILE_DIR "icons/mob/species/unathi"
+#define FILE_DIR "icons/mob/species/vox"
+#define FILE_DIR "icons/mob/spirits"
+#define FILE_DIR "icons/NTOS"
+#define FILE_DIR "icons/NTOS/battery_icons"
+#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/pods"
+#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/vehicles"
+#define FILE_DIR "icons/vending_icons"
+#define FILE_DIR "maps"
+#define FILE_DIR "maps/overmap"
+#define FILE_DIR "maps/overmap/bearcat"
+#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/effects/turret"
+#define FILE_DIR "sound/effects/wind"
+#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/music"
+#define FILE_DIR "sound/piano"
+#define FILE_DIR "sound/turntable"
+#define FILE_DIR "sound/violin"
+#define FILE_DIR "sound/voice"
+#define FILE_DIR "sound/voice/complionator"
+#define FILE_DIR "sound/voice/Serithi"
+#define FILE_DIR "sound/vox"
+#define FILE_DIR "sound/vox_fem"
+#define FILE_DIR "sound/weapons"
// END_FILE_DIR
// BEGIN_PREFERENCES
#define DEBUG
@@ -849,10 +926,10 @@
#include "code\modules\customitems\item_defines.dm"
#include "code\modules\customitems\item_spawning.dm"
#include "code\modules\customitems\definitions\base.dm"
-#include "code\modules\detectivework\detective_work.dm"
-#include "code\modules\detectivework\evidence.dm"
-#include "code\modules\detectivework\footprints_and_rag.dm"
-#include "code\modules\detectivework\scanner.dm"
+#include "code\modules\DetectiveWork\detective_work.dm"
+#include "code\modules\DetectiveWork\evidence.dm"
+#include "code\modules\DetectiveWork\footprints_and_rag.dm"
+#include "code\modules\DetectiveWork\scanner.dm"
#include "code\modules\economy\Accounts.dm"
#include "code\modules\economy\Accounts_DB.dm"
#include "code\modules\economy\ATM.dm"
diff --git a/code/controllers/configuration.dm b/code/controllers/configuration.dm
index ce44124439f..7400a695d27 100644
--- a/code/controllers/configuration.dm
+++ b/code/controllers/configuration.dm
@@ -79,7 +79,7 @@
var/wikiurl = "http://baystation12.net/wiki"
var/forumurl = "http://baystation12.net/forums/"
- var/media_base_url = "http://80.244.78.90/media" // http://ss13.nexisonline.net/media
+ var/media_base_url = "http://nanotrasen.se/media" // http://ss13.nexisonline.net/media
//Alert level description
var/alert_desc_green = "All threats to the station have passed. Security may not have weapons visible, privacy laws are once again fully enforced."
diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm
index cb137a898b4..eb8a458c865 100644
--- a/code/game/area/areas.dm
+++ b/code/game/area/areas.dm
@@ -400,12 +400,19 @@
return
if((istype(M,/mob/living/carbon/human/)) && (M.m_intent == "run")).
- M.AdjustStunned(5)
- M.AdjustWeakened(5)
+ //M.AdjustStunned(5)
+ //M.AdjustWeakened(5)
+
+ if(M.stunned <= 5) M.stunned = 5
+ if(M.weakened <= 5) M.weakened = 5
else if (istype(M,/mob/living/carbon/human/))
- M.AdjustStunned(2)
- M.AdjustWeakened(2)
+ //M.AdjustStunned(2)
+ //M.AdjustWeakened(2)
+
+ if(M.stunned <= 2) M.stunned = 2
+ if(M.weakened <= 2) M.weakened = 2
+
M << "Gravity!"
diff --git a/code/game/dna/dna2.dm b/code/game/dna/dna2.dm
index c51f265e78c..d4b1a0d44a6 100644
--- a/code/game/dna/dna2.dm
+++ b/code/game/dna/dna2.dm
@@ -67,6 +67,10 @@ var/global/list/bad_blocks[0]
var/struc_enzymes="" // Encoded SE
var/unique_enzymes="" // MD5 of player name
+ // Original Encoded SE, for use with Ryetalin
+ var/struc_enzymes_original="" // Encoded SE
+ var/list/SE_original[DNA_SE_LENGTH]
+
// Internal dirtiness checks
var/dirtyUI=0
var/dirtySE=0
@@ -89,6 +93,7 @@ var/global/list/bad_blocks[0]
/datum/dna/proc/Clone()
var/datum/dna/new_dna = new()
new_dna.unique_enzymes=unique_enzymes
+ new_dna.struc_enzymes_original=struc_enzymes_original // will make clone's SE the same as the original, do we want this?
new_dna.b_type=b_type
new_dna.mutantrace=mutantrace
new_dna.real_name=real_name
@@ -362,10 +367,16 @@ var/global/list/bad_blocks[0]
// BACK-COMPAT!
// Initial DNA setup. I'm kind of wondering why the hell this doesn't just call the above.
+// ready_dna is (hopefully) only used on mob creation, and sets the struc_enzymes_original and SE_original only once - Bone White
+
/datum/dna/proc/ready_dna(mob/living/carbon/human/character)
+
ResetUIFrom(character)
ResetSE()
+ struc_enzymes_original = struc_enzymes // sets the original struc_enzymes when ready_dna is called
+ SE_original = SE
+
unique_enzymes = md5(character.real_name)
reg_dna[unique_enzymes] = character.real_name
diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm
index ce587104554..16d880402dd 100644
--- a/code/game/gamemodes/cult/runes.dm
+++ b/code/game/gamemodes/cult/runes.dm
@@ -533,7 +533,13 @@ var/list/sacrificed = list()
return 0
// record this
- cult_log("[key_name(usr,0)] says : [input]")
+ //cult_log("[key_name(usr,0)] says : [input]")
+
+
+ var/F = investigate_subject2file("cult")
+ if(!F)
+ return 0
+ F << "[time2text(world.timeofday,"hh:mm")] \ref[usr] ([usr.x],[usr.y],[usr.z]) || [usr] communicates: [input]
"
var/obj/cult_viewpoint/vp = getCultViewpoint(usr)
if (!vp)
diff --git a/code/game/gamemodes/cult/talisman.dm b/code/game/gamemodes/cult/talisman.dm
index a319e83421e..63112829a84 100644
--- a/code/game/gamemodes/cult/talisman.dm
+++ b/code/game/gamemodes/cult/talisman.dm
@@ -86,35 +86,173 @@
if (usr.stat || usr.restrained() || !in_range(src, usr)) return
if (href_list["rune"])
- switch(href_list["rune"])
- if("newtome")
- var/obj/item/weapon/paper/talisman/T = new /obj/item/weapon/paper/talisman(get_turf(usr))
- T.imbue = "newtome"
- if("teleport")
- var/obj/item/weapon/paper/talisman/T = new /obj/item/weapon/paper/talisman(get_turf(usr))
- T.imbue = "[pick("ire", "ego", "nahlizet", "certum", "veri", "jatkaa", "balaq", "mgar", "karazet", "geeri", "orkan", "allaq")]"
- T.info = "[T.imbue]"
- if("emp")
- var/obj/item/weapon/paper/talisman/T = new /obj/item/weapon/paper/talisman(get_turf(usr))
- T.imbue = "emp"
- if("conceal")
- var/obj/item/weapon/paper/talisman/T = new /obj/item/weapon/paper/talisman(get_turf(usr))
- T.imbue = "conceal"
- if("communicate")
- var/obj/item/weapon/paper/talisman/T = new /obj/item/weapon/paper/talisman(get_turf(usr))
- T.imbue = "communicate"
- if("runestun")
- var/obj/item/weapon/paper/talisman/T = new /obj/item/weapon/paper/talisman(get_turf(usr))
- T.imbue = "runestun"
- if("armor")
- var/obj/item/weapon/paper/talisman/T = new /obj/item/weapon/paper/talisman(get_turf(usr))
- T.imbue = "armor"
- if("soulstone")
- new /obj/item/device/soulstone(get_turf(usr))
- if("construct")
- new /obj/structure/constructshell(get_turf(usr))
- src.uses--
- supply()
+ if (istype(usr, /mob/living/carbon/human))
+ var/mob/living/carbon/human/M = usr
+
+ switch(href_list["rune"])
+ if("newtome")
+
+ var/obj/item/weapon/paper/talisman/T = new(M)
+ T.imbue = "newtome"
+
+ 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 = M.equip_in_one_of_slots(T, slots)
+ if (!where)
+ M << "You need a space in your backpack, pocket or hand for the new paper."
+ else
+ M << "The [href_list["rune"]] talisman in your [where]"
+ M.update_icons()
+ src.uses--
+ supply()
+
+
+ if("teleport")
+ var/obj/item/weapon/paper/talisman/T = new(M)
+ T.imbue = "[pick("ire", "ego", "nahlizet", "certum", "veri", "jatkaa", "balaq", "mgar", "karazet", "geeri", "orkan", "allaq")]"
+ T.info = "[T.imbue]"
+
+ 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 = M.equip_in_one_of_slots(T, slots)
+ if (!where)
+ M << "You need a space in your backpack, pocket or hand for the new paper."
+ else
+ M << "The [href_list["rune"]] talisman in your [where]"
+ M.update_icons()
+ src.uses--
+ supply()
+
+ if("emp")
+ var/obj/item/weapon/paper/talisman/T = new(M)
+ T.imbue = "emp"
+
+ 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 = M.equip_in_one_of_slots(T, slots)
+ if (!where)
+ M << "You need a space in your backpack, pocket or hand for the new paper."
+ else
+ M << "The [href_list["rune"]] talisman in your [where]"
+ M.update_icons()
+ src.uses--
+ supply()
+
+ if("conceal")
+ var/obj/item/weapon/paper/talisman/T = new(M)
+ T.imbue = "conceal"
+
+ 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 = M.equip_in_one_of_slots(T, slots)
+ if (!where)
+ M << "You need a space in your backpack, pocket or hand for the new paper."
+ else
+ M << "The [href_list["rune"]] talisman in your [where]"
+ M.update_icons()
+ src.uses--
+ supply()
+
+ if("communicate")
+ var/obj/item/weapon/paper/talisman/T = new(M)
+ T.imbue = "communicate"
+
+ 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 = M.equip_in_one_of_slots(T, slots)
+ if (!where)
+ M << "You need a space in your backpack, pocket or hand for the new paper."
+ else
+ M << "The [href_list["rune"]] talisman in your [where]"
+ M.update_icons()
+ src.uses--
+ supply()
+
+ if("runestun")
+ var/obj/item/weapon/paper/talisman/T = new(M)
+ T.imbue = "runestun"
+
+ 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 = M.equip_in_one_of_slots(T, slots)
+ if (!where)
+ M << "You need a space in your backpack, pocket or hand for the new paper."
+ else
+ M << "The [href_list["rune"]] talisman in your [where]"
+ M.update_icons()
+ src.uses--
+ supply()
+
+ if("armor")
+ var/obj/item/weapon/paper/talisman/T = new(M)
+ T.imbue = "armor"
+
+ 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 = M.equip_in_one_of_slots(T, slots)
+ if (!where)
+ M << "You need a space in your backpack, pocket or hand for the new paper."
+ else
+ M << "The [href_list["rune"]] talisman in your [where]"
+ M.update_icons()
+ src.uses--
+ supply()
+
+ if("soulstone")
+ new /obj/item/device/soulstone(get_turf(usr))
+ src.uses--
+ supply()
+ if("construct")
+ new /obj/structure/constructshell(get_turf(usr))
+ src.uses--
+ supply()
+ else
+ return
+
+
+
return
diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm
index 3f319d0b98a..bf2e96c0f70 100644
--- a/code/game/machinery/cloning.dm
+++ b/code/game/machinery/cloning.dm
@@ -201,6 +201,7 @@
if(H.mind in ticker.mode.syndicates)
ticker.mode.update_all_synd_icons()
if (H.mind in ticker.mode.cult)
+ ticker.mode.add_cult_viewpoint(H)
ticker.mode.add_cultist(src.occupant.mind)
ticker.mode.update_all_cult_icons() //So the icon actually appears
if(("\ref[H.mind]" in ticker.mode.implanter) || (H.mind in ticker.mode.implanted))
diff --git a/code/game/objects/items/weapons/manuals.dm b/code/game/objects/items/weapons/manuals.dm
index f0c4bddd6bf..f42d21298fb 100644
--- a/code/game/objects/items/weapons/manuals.dm
+++ b/code/game/objects/items/weapons/manuals.dm
@@ -676,7 +676,7 @@