diff --git a/baystation12.dme b/baystation12.dme
index 843c4e921fd..c79f609a984 100644
--- a/baystation12.dme
+++ b/baystation12.dme
@@ -405,6 +405,7 @@
#include "code\game\machinery\telecomms\telecomunications.dm"
#include "code\game\machinery\telecomms\telemonitor.dm"
#include "code\game\machinery\telecomms\traffic_control.dm"
+#include "code\game\magic\Uristrunes.dm"
#include "code\game\mecha\mech_bay.dm"
#include "code\game\mecha\mech_fabricator.dm"
#include "code\game\mecha\mecha.dm"
diff --git a/code/WorkInProgress/Ported/policetape.dm b/code/WorkInProgress/Ported/policetape.dm
index 2c2e41025aa..43a41c5a937 100644
--- a/code/WorkInProgress/Ported/policetape.dm
+++ b/code/WorkInProgress/Ported/policetape.dm
@@ -40,7 +40,7 @@
/obj/item/tape/engineering
name = "engineering tape"
desc = "A length of engineering tape. Better not cross it."
- req_access = list(access_engine,access_atmospherics)
+ req_one_access = list(access_engine,access_atmospherics)
icon_base = "engineering"
/obj/item/taperoll/attack_self(mob/user as mob)
diff --git a/code/WorkInProgress/surgery.dm b/code/WorkInProgress/surgery.dm
index f07cf4b1f05..c262be46f15 100644
--- a/code/WorkInProgress/surgery.dm
+++ b/code/WorkInProgress/surgery.dm
@@ -1258,7 +1258,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
target.custom_pain("The pain in your chest is living hell!",1)
end_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
- var/datum/organ/external/chest/affected = target.get_organ("chest")
+ var/datum/organ/external/chest/affected = target.get_organ(target_zone)
var/find_prob = 0
if (affected.implants.len)
@@ -1295,8 +1295,8 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
if (prob(fail_prob))
var/obj/item/weapon/implant/imp = affected.implants[1]
user.visible_message("\red Something beeps inside [target]'s [affected.display_name]!")
- playsound(imp.loc, 'sound/weapons/armbomb.ogg', 75, 1, -3)
- spawn(15)
+ playsound(imp.loc, 'sound/items/countdown.ogg', 75, 1, -3)
+ spawn(25)
imp.activate()
if (ishuman(user))
user:bloody_hands(target, 0)
diff --git a/code/ZAS/Airflow.dm b/code/ZAS/Airflow.dm
index e2edcaac7a2..88023f7c9a8 100644
--- a/code/ZAS/Airflow.dm
+++ b/code/ZAS/Airflow.dm
@@ -172,7 +172,7 @@ proc/Airflow(zone/A, zone/B)
if(M.last_airflow > world.time - vsc.airflow_delay) continue
if(ismob(M) && abs(n) > vsc.airflow_medium_pressure)
- if(M:nodamage) continue
+ if(M:status_flags & GODMODE) continue
M:airflow_stun()
if(M.check_airflow_movable(abs(n)))
diff --git a/code/datums/organs/organ_external.dm b/code/datums/organs/organ_external.dm
index 71196144c66..4b92cb04e17 100644
--- a/code/datums/organs/organ_external.dm
+++ b/code/datums/organs/organ_external.dm
@@ -617,14 +617,16 @@
disfigure("burn")
proc/disfigure(var/type = "brute")
+ if (disfigured)
+ return
if(type == "brute")
owner.visible_message("\red You hear a sickening cracking sound coming from \the [owner]'s face.", \
"\red Your face becomes unrecognizible mangled mess!", \
- "You hear a sickening crack.")
+ "\red You hear a sickening crack.")
else
owner.visible_message("\red [owner]'s face melts away, turning into mangled mess!", \
"\red Your face melts off!", \
- "You hear a sickening sizzle.")
+ "\red You hear a sickening sizzle.")
disfigured = 1
/datum/organ/external/l_arm
diff --git a/code/defines/obj/toy.dm b/code/defines/obj/toy.dm
index afddd617a46..d9ee6a9d048 100644
--- a/code/defines/obj/toy.dm
+++ b/code/defines/obj/toy.dm
@@ -515,4 +515,12 @@
force = 5
throwforce = 5
w_class = 3
- attack_verb = list("attacked", "slashed", "stabbed", "sliced")
\ No newline at end of file
+ attack_verb = list("attacked", "slashed", "stabbed", "sliced")
+
+/obj/item/weapon/toddler
+ icon_state = "toddler"
+ name = "toddler"
+ desc = "This baby looks almost real. Wait, did it just burp?"
+ force = 5
+ w_class = 4.0
+ slot_flags = SLOT_BACK
diff --git a/code/game/events/EventProcs/spacevines.dm b/code/game/events/EventProcs/spacevines.dm
index f074e2b884d..8dece7e06d9 100644
--- a/code/game/events/EventProcs/spacevines.dm
+++ b/code/game/events/EventProcs/spacevines.dm
@@ -17,6 +17,9 @@
if(master)
master.vines -= src
master.growth_queue -= src
+ for(var/mob/M in src.loc)
+ if(M.buckled == src)
+ M.buckled = null
..()
attackby(obj/item/weapon/W as obj, mob/user as mob)
diff --git a/code/game/gamemodes/cult/cult.dm b/code/game/gamemodes/cult/cult.dm
index f9735403037..98012439623 100644
--- a/code/game/gamemodes/cult/cult.dm
+++ b/code/game/gamemodes/cult/cult.dm
@@ -159,36 +159,11 @@
/datum/game_mode/proc/grant_runeword(mob/living/carbon/human/cult_mob, var/word)
- if(!wordtravel)
+ if(!cultwords["travel"])
runerandom()
if (!word)
word=pick(allwords)
- var/wordexp
- switch(word)
- if("travel")
- wordexp = "[wordtravel] is travel..."
- if("blood")
- wordexp = "[wordblood] is blood..."
- if("join")
- wordexp = "[wordjoin] is join..."
- if("hell")
- wordexp = "[wordhell] is Hell..."
- if("self")
- wordexp = "[wordself] is self..."
- if("see")
- wordexp = "[wordsee] is see..."
- if("tech")
- wordexp = "[wordtech] is technology..."
- if("destroy")
- wordexp = "[worddestr] is destroy..."
- if("other")
- wordexp = "[wordother] is other..."
-// if("hear")
-// wordexp = "[wordhear] is hear..."
-// if("free")
-// wordexp = "[wordfree] is free..."
- if("hide")
- wordexp = "[wordhide] is hide..."
+ var/wordexp = "[cultwords[word]] is [word]..."
cult_mob << "\red You remember one thing from the dark teachings of your master... [wordexp]"
cult_mob.mind.store_memory("You remember that [wordexp]", 0, 0)
diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm
index 4990ed625b7..00e5ff34a17 100644
--- a/code/game/gamemodes/cult/ritual.dm
+++ b/code/game/gamemodes/cult/ritual.dm
@@ -1,18 +1,6 @@
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:32
-
-var/wordtravel = null
-var/wordself = null
-var/wordsee = null
-var/wordhell = null
-var/wordblood = null
-var/wordjoin = null
-var/wordtech = null
-var/worddestr = null
-var/wordother = null
-//var/wordhear = null
-//var/wordfree = null
-var/wordhide = null
+var/cultwords = list()
var/runedec = 0
var/engwords = list("travel", "blood", "join", "hell", "destroy", "technology", "self", "see", "other", "hide")
@@ -20,37 +8,16 @@ var/engwords = list("travel", "blood", "join", "hell", "destroy", "technology",
set category = "Special Verbs"
set name = "Check Rune Words"
set desc = "Check the rune-word meaning"
- if(!wordtravel)
+ if(!cultwords["travel"])
runerandom()
- usr << "[wordtravel] is travel, [wordblood] is blood, [wordjoin] is join, [wordhell] is Hell, [worddestr] is destroy, [wordtech] is technology, [wordself] is self, [wordsee] is see, [wordother] is other, [wordhide] is hide."
-
+ for (var/word in engwords)
+ usr << "[cultwords[word]] is [word]"
/proc/runerandom() //randomizes word meaning
var/list/runewords=list("ire","ego","nahlizet","certum","veri","jatkaa","mgar","balaq", "karazet", "geeri") ///"orkan" and "allaq" removed.
- wordtravel=pick(runewords)
- runewords-=wordtravel
- wordself=pick(runewords)
- runewords-=wordself
- wordsee=pick(runewords)
- runewords-=wordsee
- wordhell=pick(runewords)
- runewords-=wordhell
- wordblood=pick(runewords)
- runewords-=wordblood
- wordjoin=pick(runewords)
- runewords-=wordjoin
- wordtech=pick(runewords)
- runewords-=wordtech
- worddestr=pick(runewords)
- runewords-=worddestr
- wordother=pick(runewords)
- runewords-=wordother
-// wordhear=pick(runewords)
-// runewords-=wordhear
-// wordfree=pick(runewords)
-// runewords-=wordfree
- wordhide=pick(runewords)
- runewords-=wordhide
+ for (var/word in engwords)
+ cultwords[word] = pick(runewords)
+ runewords-=cultwords[word]
/obj/effect/rune
desc = ""
@@ -146,53 +113,53 @@ var/engwords = list("travel", "blood", "join", "hell", "destroy", "technology",
return fizzle()
// if(!src.visibility)
// src.visibility=1
- if(word1 == wordtravel && word2 == wordself)
+ if(word1 == cultwords["travel"] && word2 == cultwords["self"])
return teleport(src.word3)
- if(word1 == wordsee && word2 == wordblood && word3 == wordhell)
+ if(word1 == cultwords["see"] && word2 == cultwords["blood"] && word3 == cultwords["hell"])
return tomesummon()
- if(word1 == wordhell && word2 == worddestr && word3 == wordother)
+ if(word1 == cultwords["hell"] && word2 == cultwords["destroy"] && word3 == cultwords["other"])
return armor()
- if(word1 == wordjoin && word2 == wordblood && word3 == wordself)
+ if(word1 == cultwords["join"] && word2 == cultwords["blood"] && word3 == cultwords["self"])
return convert()
- if(word1 == wordhell && word2 == wordjoin && word3 == wordself)
+ if(word1 == cultwords["hell"] && word2 == cultwords["join"] && word3 == cultwords["self"])
return tearreality()
- if(word1 == worddestr && word2 == wordsee && word3 == wordtech)
+ if(word1 == cultwords["destroy"] && word2 == cultwords["see"] && word3 == cultwords["technology"])
return emp(src.loc,3)
- if(word1 == wordtravel && word2 == wordblood && word3 == wordself)
+ if(word1 == cultwords["travel"] && word2 == cultwords["blood"] && word3 == cultwords["self"])
return drain()
- if(word1 == wordsee && word2 == wordhell && word3 == wordjoin)
+ if(word1 == cultwords["see"] && word2 == cultwords["hell"] && word3 == cultwords["join"])
return seer()
- if(word1 == wordblood && word2 == wordjoin && word3 == wordhell)
+ if(word1 == cultwords["blood"] && word2 == cultwords["join"] && word3 == cultwords["hell"])
return raise()
- if(word1 == wordhide && word2 == wordsee && word3 == wordblood)
+ if(word1 == cultwords["hide"] && word2 == cultwords["see"] && word3 == cultwords["blood"])
return obscure(4)
- if(word1 == wordhell && word2 == wordtravel && word3 == wordself)
+ if(word1 == cultwords["hell"] && word2 == cultwords["travel"] && word3 == cultwords["self"])
return ajourney()
- if(word1 == wordblood && word2 == wordsee && word3 == wordtravel)
+ if(word1 == cultwords["blood"] && word2 == cultwords["see"] && word3 == cultwords["travel"])
return manifest()
- if(word1 == wordhell && word2 == wordtech && word3 == wordjoin)
+ if(word1 == cultwords["hell"] && word2 == cultwords["technology"] && word3 == cultwords["join"])
return talisman()
- if(word1 == wordhell && word2 == wordblood && word3 == wordjoin)
+ if(word1 == cultwords["hell"] && word2 == cultwords["blood"] && word3 == cultwords["join"])
return sacrifice()
- if(word1 == wordblood && word2 == wordsee && word3 == wordhide)
+ if(word1 == cultwords["blood"] && word2 == cultwords["see"] && word3 == cultwords["hide"])
return revealrunes(src)
- if(word1 == worddestr && word2 == wordtravel && word3 == wordself)
+ if(word1 == cultwords["destroy"] && word2 == cultwords["travel"] && word3 == cultwords["self"])
return wall()
- if(word1 == wordtravel && word2 == wordtech && word3 == wordother)
+ if(word1 == cultwords["travel"] && word2 == cultwords["technology"] && word3 == cultwords["other"])
return freedom()
- if(word1 == wordjoin && word2 == wordother && word3 == wordself)
+ if(word1 == cultwords["join"] && word2 == cultwords["other"] && word3 == cultwords["self"])
return cultsummon()
- if(word1 == wordhide && word2 == wordother && word3 == wordsee)
+ if(word1 == cultwords["hide"] && word2 == cultwords["other"] && word3 == cultwords["see"])
return deafen()
- if(word1 == worddestr && word2 == wordsee && word3 == wordother)
+ if(word1 == cultwords["destroy"] && word2 == cultwords["see"] && word3 == cultwords["other"])
return blind()
- if(word1 == worddestr && word2 == wordsee && word3 == wordblood)
+ if(word1 == cultwords["destroy"] && word2 == cultwords["see"] && word3 == cultwords["blood"])
return bloodboil()
- if(word1 == wordself && word2 == wordother && word3 == wordtech)
+ if(word1 == cultwords["self"] && word2 == cultwords["other"] && word3 == cultwords["technology"])
return communicate()
- if(word1 == wordtravel && word2 == wordother)
+ if(word1 == cultwords["travel"] && word2 == cultwords["other"])
return itemport(src.word3)
- if(word1 == wordjoin && word2 == wordhide && word3 == wordtech)
+ if(word1 == cultwords["join"] && word2 == cultwords["hide"] && word3 == cultwords["technology"])
return runestun()
else
return fizzle()
@@ -209,94 +176,7 @@ var/engwords = list("travel", "blood", "join", "hell", "destroy", "technology",
return
check_icon()
- if(word1 == wordtravel && word2 == wordself)
- icon_state = "2"
- src.icon += rgb(0, 0 , 255)
- return
- if(word1 == wordjoin && word2 == wordblood && word3 == wordself)
- icon_state = "3"
- return
- if(word1 == wordhell && word2 == wordjoin && word3 == wordself)
- icon_state = "4"
- return
- if(word1 == wordsee && word2 == wordblood && word3 == wordhell)
- icon_state = "5"
- src.icon += rgb(0, 0 , 255)
- return
- if(word1 == worddestr && word2 == wordsee && word3 == wordtech)
- icon_state = "5"
- return
- if(word1 == wordtravel && word2 == wordblood && word3 == wordself)
- icon_state = "2"
- return
- if(word1 == wordsee && word2 == wordhell && word3 == wordjoin)
- icon_state = "4"
- src.icon += rgb(0, 0 , 255)
- return
- if(word1 == wordblood && word2 == wordjoin && word3 == wordhell)
- icon_state = "1"
- return
- if(word1 == wordhide && word2 == wordsee && word3 == wordblood)
- icon_state = "1"
- src.icon += rgb(0, 0 , 255)
- return
- if(word1 == wordhell && word2 == wordtravel && word3 == wordself)
- icon_state = "6"
- src.icon += rgb(0, 0 , 255)
- return
- if(word1 == wordblood && word2 == wordsee && word3 == wordtravel)
- icon_state = "6"
- return
- if(word1 == wordhell && word2 == wordtech && word3 == wordjoin)
- icon_state = "3"
- src.icon += rgb(0, 0 , 255)
- return
- if(word1 == wordhell && word2 == wordblood && word3 == wordjoin)
- icon_state = "[rand(1,6)]"
- src.icon += rgb(255, 255, 255)
- return
- if(word1 == wordblood && word2 == wordsee && word3 == wordhide)
- icon_state = "4"
- src.icon += rgb(255, 255, 255)
- return
- if(word1 == worddestr && word2 == wordtravel && word3 == wordself)
- icon_state = "1"
- src.icon += rgb(255, 0, 0)
- return
- if(word1 == wordtravel && word2 == wordtech && word3 == wordother)
- icon_state = "4"
- src.icon += rgb(255, 0, 255)
- return
- if(word1 == wordjoin && word2 == wordother && word3 == wordself)
- icon_state = "2"
- src.icon += rgb(0, 255, 0)
- return
- if(word1 == wordhide && word2 == wordother && word3 == wordsee)
- icon_state = "4"
- src.icon += rgb(0, 255, 0)
- return
- if(word1 == worddestr && word2 == wordsee && word3 == wordother)
- icon_state = "4"
- src.icon += rgb(0, 0, 255)
- return
- if(word1 == worddestr && word2 == wordsee && word3 == wordblood)
- icon_state = "4"
- src.icon += rgb(255, 0, 0)
- return
- if(word1 == wordself && word2 == wordother && word3 == wordtech)
- icon_state = "3"
- src.icon += rgb(200, 0, 0)
- return
- if(word1 == wordtravel && word2 == wordother)
- icon_state = "1"
- src.icon += rgb(200, 0, 0)
- if(word1 == wordjoin && word2 == wordhide && word3 == wordtech)
- icon_state = "2"
- src.icon += rgb(100, 0, 100)
- return
- icon_state="[rand(1,6)]" //random shape and color for dummy runes
- src.icon -= rgb(255,255,255)
- src.icon += rgb(rand(1,255),rand(1,255),rand(1,255))
+ icon = get_uristrune_cult(word1, word2, word3)
/obj/item/weapon/tome
name = "arcane tome"
@@ -487,7 +367,7 @@ var/engwords = list("travel", "blood", "join", "hell", "destroy", "technology",
if(!usr.canmove || usr.stat || usr.restrained())
return
- if(!wordtravel)
+ if(!cultwords["travel"])
runerandom()
if(iscultist(user))
var/C = 0
@@ -608,7 +488,7 @@ var/engwords = list("travel", "blood", "join", "hell", "destroy", "technology",
attack_self(mob/user as mob)
if(src.cultistsonly && !iscultist(usr))
return
- if(!wordtravel)
+ if(!cultwords["travel"])
runerandom()
if(user)
var/r
@@ -627,8 +507,8 @@ var/engwords = list("travel", "blood", "join", "hell", "destroy", "technology",
var/beacon
if(usr)
beacon = input("Select the last rune", "Rune Scribing") in words
- R.word1=wordtravel
- R.word2=wordself
+ R.word1=cultwords["travel"]
+ R.word2=cultwords["self"]
R.word3=beacon
R.loc = user.loc
R.check_icon()
@@ -637,141 +517,141 @@ var/engwords = list("travel", "blood", "join", "hell", "destroy", "technology",
var/beacon
if(usr)
beacon = input("Select the last rune", "Rune Scribing") in words
- R.word1=wordtravel
- R.word2=wordother
+ R.word1=cultwords["travel"]
+ R.word2=cultwords["other"]
R.word3=beacon
R.loc = user.loc
R.check_icon()
if("tome")
- R.word1=wordsee
- R.word2=wordblood
- R.word3=wordhell
+ R.word1=cultwords["see"]
+ R.word2=cultwords["blood"]
+ R.word3=cultwords["hell"]
R.loc = user.loc
R.check_icon()
if("armor")
- R.word1=wordhell
- R.word2=worddestr
- R.word3=wordother
+ R.word1=cultwords["hell"]
+ R.word2=cultwords["destroy"]
+ R.word3=cultwords["other"]
R.loc = user.loc
R.check_icon()
if("convert")
- R.word1=wordjoin
- R.word2=wordblood
- R.word3=wordself
+ R.word1=cultwords["join"]
+ R.word2=cultwords["blood"]
+ R.word3=cultwords["self"]
R.loc = user.loc
R.check_icon()
if("tear in reality")
- R.word1=wordhell
- R.word2=wordjoin
- R.word3=wordself
+ R.word1=cultwords["hell"]
+ R.word2=cultwords["join"]
+ R.word3=cultwords["self"]
R.loc = user.loc
R.check_icon()
if("emp")
- R.word1=worddestr
- R.word2=wordsee
- R.word3=wordtech
+ R.word1=cultwords["destroy"]
+ R.word2=cultwords["see"]
+ R.word3=cultwords["technology"]
R.loc = user.loc
R.check_icon()
if("drain")
- R.word1=wordtravel
- R.word2=wordblood
- R.word3=wordself
+ R.word1=cultwords["travel"]
+ R.word2=cultwords["blood"]
+ R.word3=cultwords["self"]
R.loc = user.loc
R.check_icon()
if("seer")
- R.word1=wordsee
- R.word2=wordhell
- R.word3=wordjoin
+ R.word1=cultwords["see"]
+ R.word2=cultwords["hell"]
+ R.word3=cultwords["join"]
R.loc = user.loc
R.check_icon()
if("raise")
- R.word1=wordblood
- R.word2=wordjoin
- R.word3=wordhell
+ R.word1=cultwords["blood"]
+ R.word2=cultwords["join"]
+ R.word3=cultwords["hell"]
R.loc = user.loc
R.check_icon()
if("obscure")
- R.word1=wordhide
- R.word2=wordsee
- R.word3=wordblood
+ R.word1=cultwords["hide"]
+ R.word2=cultwords["see"]
+ R.word3=cultwords["blood"]
R.loc = user.loc
R.check_icon()
if("astral journey")
- R.word1=wordhell
- R.word2=wordtravel
- R.word3=wordself
+ R.word1=cultwords["hell"]
+ R.word2=cultwords["travel"]
+ R.word3=cultwords["self"]
R.loc = user.loc
R.check_icon()
if("manifest")
- R.word1=wordblood
- R.word2=wordsee
- R.word3=wordtravel
+ R.word1=cultwords["blood"]
+ R.word2=cultwords["see"]
+ R.word3=cultwords["travel"]
R.loc = user.loc
R.check_icon()
if("imbue talisman")
- R.word1=wordhell
- R.word2=wordtech
- R.word3=wordjoin
+ R.word1=cultwords["hell"]
+ R.word2=cultwords["technology"]
+ R.word3=cultwords["join"]
R.loc = user.loc
R.check_icon()
if("sacrifice")
- R.word1=wordhell
- R.word2=wordblood
- R.word3=wordjoin
+ R.word1=cultwords["hell"]
+ R.word2=cultwords["blood"]
+ R.word3=cultwords["join"]
R.loc = user.loc
R.check_icon()
if("reveal")
- R.word1=wordblood
- R.word2=wordsee
- R.word3=wordhide
+ R.word1=cultwords["blood"]
+ R.word2=cultwords["see"]
+ R.word3=cultwords["hide"]
R.loc = user.loc
R.check_icon()
if("wall")
- R.word1=worddestr
- R.word2=wordtravel
- R.word3=wordself
+ R.word1=cultwords["destroy"]
+ R.word2=cultwords["travel"]
+ R.word3=cultwords["self"]
R.loc = user.loc
R.check_icon()
if("freedom")
- R.word1=wordtravel
- R.word2=wordtech
- R.word3=wordother
+ R.word1=cultwords["travel"]
+ R.word2=cultwords["technology"]
+ R.word3=cultwords["other"]
R.loc = user.loc
R.check_icon()
if("cultsummon")
- R.word1=wordjoin
- R.word2=wordother
- R.word3=wordself
+ R.word1=cultwords["join"]
+ R.word2=cultwords["other"]
+ R.word3=cultwords["self"]
R.loc = user.loc
R.check_icon()
if("deafen")
- R.word1=wordhide
- R.word2=wordother
- R.word3=wordsee
+ R.word1=cultwords["hide"]
+ R.word2=cultwords["other"]
+ R.word3=cultwords["see"]
R.loc = user.loc
R.check_icon()
if("blind")
- R.word1=worddestr
- R.word2=wordsee
- R.word3=wordother
+ R.word1=cultwords["destroy"]
+ R.word2=cultwords["see"]
+ R.word3=cultwords["other"]
R.loc = user.loc
R.check_icon()
if("bloodboil")
- R.word1=worddestr
- R.word2=wordsee
- R.word3=wordblood
+ R.word1=cultwords["destroy"]
+ R.word2=cultwords["see"]
+ R.word3=cultwords["blood"]
R.loc = user.loc
R.check_icon()
if("communicate")
- R.word1=wordself
- R.word2=wordother
- R.word3=wordtech
+ R.word1=cultwords["self"]
+ R.word2=cultwords["other"]
+ R.word3=cultwords["technology"]
R.loc = user.loc
R.check_icon()
if("stun")
- R.word1=wordjoin
- R.word2=wordhide
- R.word3=wordtech
+ R.word1=cultwords["join"]
+ R.word2=cultwords["hide"]
+ R.word3=cultwords["technology"]
R.loc = user.loc
R.check_icon()
diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm
index b4eefa6380c..c387edf840a 100644
--- a/code/game/gamemodes/cult/runes.dm
+++ b/code/game/gamemodes/cult/runes.dm
@@ -12,7 +12,7 @@ var/list/sacrificed = list()
for(var/obj/effect/rune/R in world)
if(R == src)
continue
- if(R.word1 == wordtravel && R.word2 == wordself && R.word3 == key && R.z != 2)
+ if(R.word1 == cultwords["travel"] && R.word2 == cultwords["self"] && R.word3 == key && R.z != 2)
index++
allrunesloc.len = index
allrunesloc[index] = R.loc
@@ -50,7 +50,7 @@ var/list/sacrificed = list()
for(var/obj/effect/rune/R in world)
if(R == src)
continue
- if(R.word1 == wordtravel && R.word2 == wordother && R.word3 == key)
+ if(R.word1 == cultwords["travel"] && R.word2 == cultwords["other"] && R.word3 == key)
IP = R
runecount++
if(runecount >= 2)
@@ -159,7 +159,7 @@ var/list/sacrificed = list()
drain()
var/drain = 0
for(var/obj/effect/rune/R in world)
- if(R.word1==wordtravel && R.word2==wordblood && R.word3==wordself)
+ if(R.word1==cultwords["travel"] && R.word2==cultwords["blood"] && R.word3==cultwords["self"])
for(var/mob/living/carbon/D in R.loc)
if(D.stat!=2)
var/bdrain = rand(1,25)
@@ -237,7 +237,7 @@ var/list/sacrificed = list()
is_sacrifice_target = 0
find_sacrifice:
for(var/obj/effect/rune/R in world)
- if(R.word1==wordblood && R.word2==wordjoin && R.word3==wordhell)
+ if(R.word1==cultwords["blood"] && R.word2==cultwords["join"] && R.word3==cultwords["hell"])
for(var/mob/living/carbon/human/N in R.loc)
if(ticker.mode.name == "cult" && N.mind && N.mind == ticker.mode:sacrifice_target)
is_sacrifice_target = 1
@@ -431,53 +431,53 @@ var/list/sacrificed = list()
for(var/obj/effect/rune/R in orange(1,src))
if(R==src)
continue
- if(R.word1==wordtravel && R.word2==wordself) //teleport
+ if(R.word1==cultwords["travel"] && R.word2==cultwords["self"]) //teleport
T = new(src.loc)
T.imbue = "[R.word3]"
T.info = "[R.word3]"
imbued_from = R
break
- if(R.word1==wordsee && R.word2==wordblood && R.word3==wordhell) //tome
+ if(R.word1==cultwords["see"] && R.word2==cultwords["blood"] && R.word3==cultwords["hell"]) //tome
T = new(src.loc)
T.imbue = "newtome"
imbued_from = R
break
- if(R.word1==worddestr && R.word2==wordsee && R.word3==wordtech) //emp
+ if(R.word1==cultwords["destroy"] && R.word2==cultwords["see"] && R.word3==cultwords["technology"]) //emp
T = new(src.loc)
T.imbue = "emp"
imbued_from = R
break
- if(R.word1==wordblood && R.word2==wordsee && R.word3==worddestr) //conceal
+ if(R.word1==cultwords["blood"] && R.word2==cultwords["see"] && R.word3==cultwords["destroy"]) //conceal
T = new(src.loc)
T.imbue = "conceal"
imbued_from = R
break
- if(R.word1==wordhell && R.word2==worddestr && R.word3==wordother) //armor
+ if(R.word1==cultwords["hell"] && R.word2==cultwords["destroy"] && R.word3==cultwords["other"]) //armor
T = new(src.loc)
T.imbue = "armor"
imbued_from = R
break
- if(R.word1==wordblood && R.word2==wordsee && R.word3==wordhide) //reveal
+ if(R.word1==cultwords["blood"] && R.word2==cultwords["see"] && R.word3==cultwords["hide"]) //reveal
T = new(src.loc)
T.imbue = "revealrunes"
imbued_from = R
break
- if(R.word1==wordhide && R.word2==wordother && R.word3==wordsee) //deafen
+ if(R.word1==cultwords["hide"] && R.word2==cultwords["other"] && R.word3==cultwords["see"]) //deafen
T = new(src.loc)
T.imbue = "deafen"
imbued_from = R
break
- if(R.word1==worddestr && R.word2==wordsee && R.word3==wordother) //blind
+ if(R.word1==cultwords["destroy"] && R.word2==cultwords["see"] && R.word3==cultwords["other"]) //blind
T = new(src.loc)
T.imbue = "blind"
imbued_from = R
break
- if(R.word1==wordself && R.word2==wordother && R.word3==wordtech) //communicat
+ if(R.word1==cultwords["self"] && R.word2==cultwords["other"] && R.word3==cultwords["technology"]) //communicat
T = new(src.loc)
T.imbue = "communicate"
imbued_from = R
break
- if(R.word1==wordjoin && R.word2==wordhide && R.word3==wordtech) //communicat
+ if(R.word1==cultwords["join"] && R.word2==cultwords["hide"] && R.word3==cultwords["technology"]) //communicat
T = new(src.loc)
T.imbue = "runestun"
imbued_from = R
diff --git a/code/game/jobs/job_controller.dm b/code/game/jobs/job_controller.dm
index 29f2420b508..841935b6c28 100644
--- a/code/game/jobs/job_controller.dm
+++ b/code/game/jobs/job_controller.dm
@@ -60,6 +60,12 @@ var/global/datum/controller/occupations/job_master
Debug("AR has failed, Player: [player], Rank: [rank]")
return 0
+ proc/FreeRole(var/rank) //making additional slot on the fly
+ var/datum/job/job = GetJob(rank)
+ if(job && job.current_positions >= job.total_positions)
+ job.total_positions++
+ return 1
+ return 0
proc/FindOccupationCandidates(datum/job/job, level, flag)
Debug("Running FOC, Job: [job], Level: [level], Flag: [flag]")
diff --git a/code/game/machinery/computer/prisoner.dm b/code/game/machinery/computer/prisoner.dm
index b5265e89d67..c4251f71452 100644
--- a/code/game/machinery/computer/prisoner.dm
+++ b/code/game/machinery/computer/prisoner.dm
@@ -52,6 +52,8 @@
if(M.z == 1 && !istype(M.loc, /turf/space))
var/turf/mob_loc = get_turf_loc(M)
loc_display = mob_loc.loc
+ if(T.malfunction)
+ loc_display = pick(teleportlocs)
dat += "ID: [T.id] | Location: [loc_display]
"
dat += "(Message Holder) |
"
dat += "********************************
"
diff --git a/code/game/magic/Uristrunes.dm b/code/game/magic/Uristrunes.dm
index 51f32872530..6234c76454b 100644
--- a/code/game/magic/Uristrunes.dm
+++ b/code/game/magic/Uristrunes.dm
@@ -23,29 +23,29 @@ var/list/word_to_uristrune_table = null
/proc/get_uristrune_cult(word1, word2, word3)
var/animated
- if((word1 == wordtravel && word2 == wordself) \
- || (word1 == wordjoin && word2 == wordblood && word3 == wordself) \
- || (word1 == wordhell && word2 == wordjoin && word3 == wordself) \
- || (word1 == wordsee && word2 == wordblood && word3 == wordhell) \
- || (word1 == worddestr && word2 == wordsee && word3 == wordtech) \
- || (word1 == wordtravel && word2 == wordblood && word3 == wordself) \
- || (word1 == wordsee && word2 == wordhell && word3 == wordjoin) \
- || (word1 == wordblood && word2 == wordjoin && word3 == wordhell) \
- || (word1 == wordhide && word2 == wordsee && word3 == wordblood) \
- || (word1 == wordhell && word2 == wordtravel && word3 == wordself) \
- || (word1 == wordblood && word2 == wordsee && word3 == wordtravel) \
- || (word1 == wordhell && word2 == wordtech && word3 == wordjoin) \
- || (word1 == wordhell && word2 == wordblood && word3 == wordjoin) \
- || (word1 == wordblood && word2 == wordsee && word3 == wordhide) \
- || (word1 == worddestr && word2 == wordtravel && word3 == wordself) \
- || (word1 == wordtravel && word2 == wordtech && word3 == wordother) \
- || (word1 == wordjoin && word2 == wordother && word3 == wordself) \
- || (word1 == wordhide && word2 == wordother && word3 == wordsee) \
- || (word1 == worddestr && word2 == wordsee && word3 == wordother) \
- || (word1 == worddestr && word2 == wordsee && word3 == wordblood) \
- || (word1 == wordself && word2 == wordother && word3 == wordtech) \
- || (word1 == wordtravel && word2 == wordother) \
- || (word1 == wordjoin && word2 == wordhide && word3 == wordtech) )
+ if((word1 == cultwords["travel"] && word2 == cultwords["self"]) \
+ || (word1 == cultwords["join"] && word2 == cultwords["blood"] && word3 == cultwords["self"]) \
+ || (word1 == cultwords["hell"] && word2 == cultwords["join"] && word3 == cultwords["self"]) \
+ || (word1 == cultwords["see"] && word2 == cultwords["blood"] && word3 == cultwords["hell"]) \
+ || (word1 == cultwords["destroy"] && word2 == cultwords["see"] && word3 == cultwords["technology"]) \
+ || (word1 == cultwords["travel"] && word2 == cultwords["blood"] && word3 == cultwords["self"]) \
+ || (word1 == cultwords["see"] && word2 == cultwords["hell"] && word3 == cultwords["join"]) \
+ || (word1 == cultwords["blood"] && word2 == cultwords["join"] && word3 == cultwords["hell"]) \
+ || (word1 == cultwords["hide"] && word2 == cultwords["see"] && word3 == cultwords["blood"]) \
+ || (word1 == cultwords["hell"] && word2 == cultwords["travel"] && word3 == cultwords["self"]) \
+ || (word1 == cultwords["blood"] && word2 == cultwords["see"] && word3 == cultwords["travel"]) \
+ || (word1 == cultwords["hell"] && word2 == cultwords["technology"] && word3 == cultwords["join"]) \
+ || (word1 == cultwords["hell"] && word2 == cultwords["blood"] && word3 == cultwords["join"]) \
+ || (word1 == cultwords["blood"] && word2 == cultwords["see"] && word3 == cultwords["hide"]) \
+ || (word1 == cultwords["destroy"] && word2 == cultwords["travel"] && word3 == cultwords["self"]) \
+ || (word1 == cultwords["travel"] && word2 == cultwords["technology"] && word3 == cultwords["other"]) \
+ || (word1 == cultwords["join"] && word2 == cultwords["other"] && word3 == cultwords["self"]) \
+ || (word1 == cultwords["hide"] && word2 == cultwords["other"] && word3 == cultwords["see"]) \
+ || (word1 == cultwords["destroy"] && word2 == cultwords["see"] && word3 == cultwords["other"]) \
+ || (word1 == cultwords["destroy"] && word2 == cultwords["see"] && word3 == cultwords["blood"]) \
+ || (word1 == cultwords["self"] && word2 == cultwords["other"] && word3 == cultwords["technology"]) \
+ || (word1 == cultwords["travel"] && word2 == cultwords["other"]) \
+ || (word1 == cultwords["join"] && word2 == cultwords["hide"] && word3 == cultwords["technology"]) )
animated = 1
else
animated = 0
diff --git a/code/game/objects/items/weapons/implants/implant.dm b/code/game/objects/items/weapons/implants/implant.dm
index 3817e58b112..deddad910b2 100644
--- a/code/game/objects/items/weapons/implants/implant.dm
+++ b/code/game/objects/items/weapons/implants/implant.dm
@@ -1,3 +1,5 @@
+#define MALFUNCTION_TEMPORARY 1
+#define MALFUNCTION_PERMANENT 2
/obj/item/weapon/implant
name = "implant"
icon = 'device.dmi'
@@ -7,6 +9,7 @@
var/datum/organ/external/part = null
color = "b"
var/allow_reagents = 0
+ var/malfunction = 0
proc/trigger(emote, source as mob)
return
@@ -29,6 +32,23 @@
proc/islegal()
return 0
+ proc/meltdown() //breaks it down, making implant unrecongizible
+ imp_in << "\red You feel something melting inside [part ? "your [part.display_name]" : "you"]!"
+ if (part)
+ part.take_damage(burn = 15, used_weapon = "Electronics meltdown")
+ else
+ var/mob/living/M = imp_in
+ M.apply_damage(15,BURN)
+ name = "melted implant"
+ desc = "Charred circuit in melted plastic case. Wonder what that used to be..."
+ icon_state = "implant_melted"
+ malfunction = MALFUNCTION_PERMANENT
+
+ Del()
+ if(part)
+ part.implants.Remove(src)
+ ..()
+
/obj/item/weapon/implant/tracking
name = "tracking"
desc = "Track with this."
@@ -52,12 +72,27 @@ circuitry. As a result neurotoxins can cause massive damage.