Merge pull request #2162 from comma/master

EMP x Implants OTP... and lots of other things.
This commit is contained in:
Jim "Apples"
2013-01-13 04:29:50 -08:00
36 changed files with 385 additions and 361 deletions

View File

@@ -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"

View File

@@ -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)

View File

@@ -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)

View File

@@ -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)))

View File

@@ -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 <b>Your face becomes unrecognizible mangled mess!</b>", \
"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 <b>Your face melts off!</b>", \
"You hear a sickening sizzle.")
"\red You hear a sickening sizzle.")
disfigured = 1
/datum/organ/external/l_arm

View File

@@ -515,4 +515,12 @@
force = 5
throwforce = 5
w_class = 3
attack_verb = list("attacked", "slashed", "stabbed", "sliced")
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

View File

@@ -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)

View File

@@ -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("<B>You remember that</B> [wordexp]", 0, 0)

View File

@@ -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()

View File

@@ -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

View File

@@ -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]")

View File

@@ -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]<BR>"
dat += "<A href='?src=\ref[src];warn=\ref[T]'>(<font color=red><i>Message Holder</i></font>)</A> |<BR>"
dat += "********************************<BR>"

View File

@@ -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

View File

@@ -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.<HR>
Implant Specifics:<BR>"}
return dat
emp_act(severity)
if (malfunction) //no, dawg, you can't malfunction while you are malfunctioning
return
malfunction = MALFUNCTION_TEMPORARY
var/delay = 20
switch(severity)
if(1)
if(prob(60))
meltdown()
if(2)
delay = rand(5*60*10,15*60*10) //from 5 to 15 minutes of free time
spawn(delay)
malfunction--
/obj/item/weapon/implant/dexplosive
name = "explosive"
desc = "And boom goes the weasel."
icon_state = "implant_evil"
get_data()
var/dat = {"
@@ -87,12 +122,13 @@ Implant Specifics:<BR>"}
islegal()
return 0
//BS12 Explosive
/obj/item/weapon/implant/explosive
name = "explosive implant"
desc = "A military grade micro bio-explosive. Highly dangerous."
var/phrase = "supercalifragilisticexpialidocious"
icon_state = "implant_evil"
get_data()
var/dat = {"
@@ -119,6 +155,8 @@ Implant Specifics:<BR>"}
del(src)
activate()
if (malfunction == MALFUNCTION_PERMANENT)
return
if(istype(imp_in, /mob/))
var/mob/T = imp_in
T.gib()
@@ -135,6 +173,37 @@ Implant Specifics:<BR>"}
usr << "The implanted explosive implant in [source] can be activated by saying something containing the phrase ''[src.phrase]'', <B>say [src.phrase]</B> to attempt to activate."
return 1
emp_act(severity)
if (malfunction)
return
malfunction = MALFUNCTION_TEMPORARY
switch (severity)
if (2.0) //Weak EMP will make implant tear limbs off.
if (prob(50))
if (ishuman(imp_in) && part)
imp_in.visible_message("\red Something beeps inside [imp_in][part ? "'s [part.display_name]" : ""]!")
playsound(loc, 'sound/items/countdown.ogg', 75, 1, -3)
spawn(25)
if (ishuman(imp_in) && part)
//No tearing off these parts since it's pretty much killing
//and you can't replace groins
if (istype(part,/datum/organ/external/chest) || \
istype(part,/datum/organ/external/groin) || \
istype(part,/datum/organ/external/head))
part.createwound(BRUISE, 60) //mangle them instead
else
part.droplimb(1)
explosion(get_turf(imp_in), -1, -1, 2, 3, 3)
del(src)
if (1.0) //strong EMP will melt implant either making it go off, or disarming it
if (prob(50))
activate() //50% chance of bye bye
else
meltdown() //50% chance of implant disarming
spawn (20)
malfunction--
islegal()
return 0
@@ -186,7 +255,21 @@ the implant may become unstable and either pre-maturely inject the subject or si
del(src)
return
emp_act(severity)
if (malfunction)
return
malfunction = MALFUNCTION_TEMPORARY
switch(severity)
if(1)
if(prob(60))
activate(20)
if(2)
if(prob(30))
activate(5)
spawn(20)
malfunction--
/obj/item/weapon/implant/loyalty
name = "loyalty"
@@ -285,21 +368,43 @@ the implant may become unstable and either pre-maturely inject the subject or si
activate(var/cause)
var/mob/M = imp_in
var/area/t = get_area(M)
if(cause == "death")
var/obj/item/device/radio/headset/a = new /obj/item/device/radio/headset(null)
if(istype(t, /area/syndicate_station) || istype(t, /area/syndicate_mothership) || istype(t, /area/shuttle/syndicate_elite) )
//give the syndies a bit of stealth
a.autosay("[mobname] has died in Space!", "[mobname]'s Death Alarm")
switch (cause)
if("death")
var/obj/item/device/radio/headset/a = new /obj/item/device/radio/headset(null)
if(istype(t, /area/syndicate_station) || istype(t, /area/syndicate_mothership) || istype(t, /area/shuttle/syndicate_elite) )
//give the syndies a bit of stealth
a.autosay("[mobname] has died in Space!", "[mobname]'s Death Alarm")
else
a.autosay("[mobname] has died in [t.name]!", "[mobname]'s Death Alarm")
del(a)
processing_objects.Remove(src)
if ("emp")
var/obj/item/device/radio/headset/a = new /obj/item/device/radio/headset(null)
var/name = prob(50) ? t.name : pick(teleportlocs)
a.autosay("[mobname] has died in [name]!", "[mobname]'s Death Alarm")
del(a)
else
a.autosay("[mobname] has died in [t.name]!", "[mobname]'s Death Alarm")
del(a)
processing_objects.Remove(src)
else
var/obj/item/device/radio/headset/a = new /obj/item/device/radio/headset(null)
a.autosay("[mobname] has died-zzzzt in-in-in...", "[mobname]'s Death Alarm")
del(a)
var/obj/item/device/radio/headset/a = new /obj/item/device/radio/headset(null)
a.autosay("[mobname] has died-zzzzt in-in-in...", "[mobname]'s Death Alarm")
del(a)
processing_objects.Remove(src)
emp_act(severity) //for some reason alarms stop going off in case they are emp'd, even without this
if (malfunction) //so I'm just going to add a meltdown chance here
return
malfunction = MALFUNCTION_TEMPORARY
activate("emp") //let's shout that this dude is dead
if(severity == 1)
if(prob(40)) //small chance of obvious meltdown
meltdown()
else if (prob(60)) //but more likely it will just quietly die
malfunction = MALFUNCTION_PERMANENT
processing_objects.Remove(src)
spawn(20)
malfunction--
implanted(mob/source as mob)
mobname = source.real_name
processing_objects.Add(src)
@@ -308,6 +413,7 @@ the implant may become unstable and either pre-maturely inject the subject or si
/obj/item/weapon/implant/compressed
name = "compressed matter implant"
desc = "Based on compressed matter technology, can store a single item."
icon_state = "implant_evil"
var/activation_emote = "sigh"
var/obj/item/scanned = null
@@ -335,7 +441,6 @@ the implant may become unstable and either pre-maturely inject the subject or si
activate()
var/turf/t = get_turf(src)
src.scanned.loc = t
if (part) part.implants -= src
del src
implanted(mob/source as mob)

View File

@@ -123,7 +123,10 @@
"/obj/item/clothing/glasses/hud/security",
"/obj/item/device/flashlight",
"/obj/item/device/pda",
"/obj/item/device/radio/headset"
"/obj/item/device/radio/headset",
"/obj/item/weapon/melee/baton",
"/obj/item/taperoll/police",
"/obj/item/weapon/gun/energy/taser"
)
/obj/item/weapon/storage/belt/soulstone

View File

@@ -113,7 +113,7 @@
new /obj/item/weapon/storage/backpack/security(src)
else
new /obj/item/weapon/storage/backpack/satchel_sec(src)
new /obj/item/clothing/suit/armor/vest(src)
new /obj/item/clothing/suit/armor/vest/security(src)
new /obj/item/clothing/under/rank/warden(src)
new /obj/item/clothing/suit/armor/vest/warden(src)
new /obj/item/clothing/head/helmet/warden(src)
@@ -146,7 +146,7 @@
new /obj/item/weapon/storage/backpack/security(src)
else
new /obj/item/weapon/storage/backpack/satchel_sec(src)
new /obj/item/clothing/suit/armor/vest(src)
new /obj/item/clothing/suit/armor/vest/security(src)
new /obj/item/clothing/head/helmet(src)
// new /obj/item/weapon/cartridge/security(src)
new /obj/item/device/radio/headset/headset_sec(src)

View File

@@ -23,6 +23,9 @@
new /obj/item/clothing/under/rank/security(src)
new /obj/item/clothing/under/rank/security(src)
new /obj/item/clothing/under/rank/security(src)
new /obj/item/clothing/under/rank/security2(src)
new /obj/item/clothing/under/rank/security2(src)
new /obj/item/clothing/under/rank/security2(src)
new /obj/item/clothing/shoes/jackboots(src)
new /obj/item/clothing/shoes/jackboots(src)
new /obj/item/clothing/shoes/jackboots(src)

View File

@@ -15,6 +15,7 @@
desc = "Used to keep bodies in untill someone fetches them."
icon = 'icons/obj/stationobjs.dmi'
icon_state = "morgue1"
dir = EAST
density = 1
var/obj/structure/m_tray/connected = null
anchored = 1.0
@@ -70,15 +71,16 @@
else
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
src.connected = new /obj/structure/m_tray( src.loc )
step(src.connected, EAST)
step(src.connected, src.dir)
src.connected.layer = OBJ_LAYER
var/turf/T = get_step(src, EAST)
var/turf/T = get_step(src, src.dir)
if (T.contents.Find(src.connected))
src.connected.connected = src
src.icon_state = "morgue0"
for(var/atom/movable/A as mob|obj in src)
A.loc = src.connected.loc
src.connected.icon_state = "morguet"
src.connected.dir = src.dir
else
//src.connected = null
del(src.connected)

View File

@@ -1,24 +1,12 @@
//admin verb groups - They can overlap if you so wish. Only one of each verb will exist in the verbs list regardless
var/list/admin_verbs_default = list(
/datum/admins/proc/show_player_panel, /*shows an interface for individual players, with various links (links require additional flags*/
/client/proc/game_panel, /*game panel, allows to change game-mode etc*/
/datum/admins/proc/toggleooc, /*toggles ooc on/off for everyone*/
/datum/admins/proc/toggleoocdead, /*toggles ooc on/off for everyone who is dead*/
/client/proc/toggleadminhelpsound, /*toggles whether we hear a sound when adminhelps/PMs are used*/
/client/proc/deadmin_self, /*destroys our own admin datum so we can play as a regular player*/
/client/proc/cmd_admin_say, /*admin-only ooc chat*/
/client/proc/hide_verbs, /*hides all our adminverbs*/
/client/proc/hide_most_verbs, /*hides all our hideable adminverbs*/
/client/proc/debug_variables, /*allows us to -see- the variables of any instance in the game. +VAREDIT needed to modify*/
/client/proc/check_ai_laws, /*shows AI and borg laws*/
/client/proc/check_antagonists, /*shows all antags*/
/client/proc/admin_memo, /*admin memo system. show/delete/write. +SERVER needed to delete admin memos of others*/
/client/proc/deadchat, /*toggles deadchat on/off*/
/client/proc/dsay, /*talk in deadchat using our ckey/fakekey*/
/client/proc/toggleprayers, /*toggles prayers on/off*/
/client/proc/toggle_hear_radio, /*toggles whether we hear the radio*/
/client/proc/investigate_show, /*various admintools for investigation. Such as a singulo grief-log*/
/client/proc/secrets
)
var/list/admin_verbs_admin = list(
/client/proc/player_panel, /*shows an interface for all players, with links to various panels (old style)*/
@@ -54,8 +42,22 @@ var/list/admin_verbs_admin = list(
/client/proc/cmd_admin_direct_narrate, /*send text directly to a player with no padding. Useful for narratives and fluff-text*/
/client/proc/cmd_admin_world_narrate, /*sends text to all players with no padding*/
/client/proc/cmd_admin_create_centcom_report,
/client/proc/check_words /*displays cult-words*/
)
/client/proc/check_words, /*displays cult-words*/
/client/proc/check_ai_laws, /*shows AI and borg laws*/
/client/proc/admin_memo, /*admin memo system. show/delete/write. +SERVER needed to delete admin memos of others*/
/client/proc/deadchat, /*toggles deadchat on/off*/
/client/proc/dsay, /*talk in deadchat using our ckey/fakekey*/
/client/proc/toggleprayers, /*toggles prayers on/off*/
// /client/proc/toggle_hear_deadcast, /*toggles whether we hear deadchat*/
/client/proc/toggle_hear_radio, /*toggles whether we hear the radio*/
/client/proc/investigate_show, /*various admintools for investigation. Such as a singulo grief-log*/
/client/proc/secrets,
/datum/admins/proc/toggleooc, /*toggles ooc on/off for everyone*/
/datum/admins/proc/toggleoocdead, /*toggles ooc on/off for everyone who is dead*/
/client/proc/game_panel, /*game panel, allows to change game-mode etc*/
/client/proc/cmd_admin_say, /*admin-only ooc chat*/
/client/proc/free_slot /*frees slot for chosen job*/
)
var/list/admin_verbs_ban = list(
/client/proc/unban_panel,
/client/proc/jobbans,
@@ -207,20 +209,14 @@ var/list/admin_verbs_hideable = list(
/proc/release
)
var/list/admin_verbs_mod = list(
/client/proc/check_antagonists, /*shows all antags*/
/client/proc/cmd_admin_pm_context, /*right-click adminPM interface*/
/client/proc/cmd_admin_pm_panel, /*admin-pm list*/
/client/proc/debug_variables, /*allows us to -see- the variables of any instance in the game.*/
/client/proc/playernotes,
/client/proc/admin_ghost, /*allows us to ghost/reenter body at will*/
/client/proc/toggleadminhelpsound, /*toggles whether we hear a sound when adminhelps/PMs are used*/
/client/proc/hide_verbs, /*hides all our adminverbs*/
/client/proc/hide_verbs,
/client/proc/mod_panel,
/client/proc/cmd_mod_say,
/datum/admins/proc/show_player_info
//client/proc/Report,
//client/proc/display_admin_reports
)
/client/proc/add_admin_verbs()
if(holder)
@@ -237,7 +233,7 @@ var/list/admin_verbs_mod = list(
if(holder.rights & R_REJUVINATE) verbs += admin_verbs_rejuv
if(holder.rights & R_SOUNDS) verbs += admin_verbs_sounds
if(holder.rights & R_SPAWN) verbs += admin_verbs_spawn
if(holder.rights & R_MOD) verbs -= admin_verbs_default; verbs += admin_verbs_mod
if(holder.rights & R_MOD) verbs += admin_verbs_mod
/client/proc/remove_admin_verbs()
verbs.Remove(
@@ -727,3 +723,19 @@ var/list/admin_verbs_mod = list(
if(holder)
holder.PlayerNotes()
return
/client/proc/free_slot()
set name = "Free Job Slot"
set category = "Admin"
if(holder)
var/list/jobs = list()
for (var/datum/job/J in job_master.occupations)
if (J.current_positions >= J.total_positions && J.total_positions != -1)
jobs += J.title
if (!jobs.len)
usr << "There are no fully staffed jobs."
return
var/job = input("Please select job slot to free", "Free job slot") as null|anything in jobs
if (job)
job_master.FreeRole(job)
return

View File

@@ -302,7 +302,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
set category = "Fun"
set name = "Make Cultist"
set desc = "Makes target a cultist"
if(!wordtravel)
if(!cultwords["travel"])
runerandom()
if(M)
if(M.mind in ticker.mode.cult)
@@ -316,21 +316,21 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
var/glimpse=pick("1","2","3","4","5","6","7","8")
switch(glimpse)
if("1")
M << "\red You remembered one thing from the glimpse... [wordtravel] is travel..."
M << "\red You remembered one thing from the glimpse... [cultwords["travel"]] is travel..."
if("2")
M << "\red You remembered one thing from the glimpse... [wordblood] is blood..."
M << "\red You remembered one thing from the glimpse... [cultwords["blood"]] is blood..."
if("3")
M << "\red You remembered one thing from the glimpse... [wordjoin] is join..."
M << "\red You remembered one thing from the glimpse... [cultwords["join"]] is join..."
if("4")
M << "\red You remembered one thing from the glimpse... [wordhell] is Hell..."
M << "\red You remembered one thing from the glimpse... [cultwords["hell"]] is Hell..."
if("5")
M << "\red You remembered one thing from the glimpse... [worddestr] is destroy..."
M << "\red You remembered one thing from the glimpse... [cultwords["destroy"]] is destroy..."
if("6")
M << "\red You remembered one thing from the glimpse... [wordtech] is technology..."
M << "\red You remembered one thing from the glimpse... [cultwords["technology"]] is technology..."
if("7")
M << "\red You remembered one thing from the glimpse... [wordself] is self..."
M << "\red You remembered one thing from the glimpse... [cultwords["self"]] is self..."
if("8")
M << "\red You remembered one thing from the glimpse... [wordsee] is see..."
M << "\red You remembered one thing from the glimpse... [cultwords["see"]] is see..."
if(M.mind)
M.mind.special_role = "Cultist"

View File

@@ -19,6 +19,11 @@
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
armor = list(melee = 50, bullet = 15, laser = 50, energy = 10, bomb = 25, bio = 0, rad = 0)
/obj/item/clothing/suit/armor/vest/security
name = "security armor"
desc = "An armored vest that protects against some damage. This one has NanoTrasen corporate badge."
icon_state = "armorsec"
item_state = "armor"
/obj/item/clothing/suit/armor/vest/warden
name = "Warden's jacket"

View File

@@ -26,6 +26,15 @@
armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
flags = FPRINT | TABLEPASS
/obj/item/clothing/under/rank/security2
name = "security officer's uniform"
desc = "It's made of a slightly sturdier material, to allow for robust protection."
icon_state = "redshirt2"
item_state = "r_suit"
color = "redshirt2"
armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
flags = FPRINT | TABLEPASS
/*
* Detective
*/

View File

@@ -142,7 +142,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
return
if(mind.current.ajourn && mind.current.stat != DEAD) //check if the corpse is astral-journeying (it's client ghosted using a cultist rune).
var/obj/effect/rune/R = locate() in mind.current.loc //whilst corpse is alive, we can only reenter the body if it's on the rune
if(!(R && R.word1 == wordhell && R.word2 == wordtravel && R.word3 == wordself)) //astral journeying rune
if(!(R && R.word1 == cultwords["hell"] && R.word2 == cultwords["travel"] && R.word3 == cultwords["self"])) //astral journeying rune
usr << "<span class='warning'>The astral cord that ties your body and your spirit has been severed. You are likely to wander the realm beyond until your body is finally dead and thus reunited with you.</span>"
return
mind.current.ajourn=0

View File

@@ -97,18 +97,13 @@
for(var/obj/effect/decal/cleanable/blood/drip/G in T)
nums += G
iconL.Remove(G.icon_state)
if(nums.len >= 3)
var/obj/effect/decal/cleanable/blood/drip/D = pick(nums)
D.blood_DNA[dna.unique_enzymes] = dna.b_type
return
var/obj/effect/decal/cleanable/blood/drip/this = new(T)
this.icon_state = pick(iconL)
this.blood_DNA = list()
this.blood_DNA[dna.unique_enzymes] = dna.b_type
// replace many drips with something larger
if(nums.len > 3)
if (nums.len < 5)
var/obj/effect/decal/cleanable/blood/drip/this = new(T)
this.icon_state = pick(iconL)
this.blood_DNA = list()
this.blood_DNA[dna.unique_enzymes] = dna.b_type
else
for(var/obj/effect/decal/cleanable/blood/drip/G in nums)
del G
T.add_blood(src)

View File

@@ -1359,7 +1359,7 @@ var/const/BLOOD_VOLUME_SURVIVE = 122
if(seer)
var/obj/effect/rune/R = locate() in loc
if(R && R.word1 == wordsee && R.word2 == wordhell && R.word3 == wordjoin)
if(R && R.word1 == cultwords["see"] && R.word2 == cultwords["hell"] && R.word3 == cultwords["join"])
see_invisible = SEE_INVISIBLE_OBSERVER
else
see_invisible = SEE_INVISIBLE_LIVING

View File

@@ -28,8 +28,8 @@
# +EVERYTHING (or +HOST or +ALL) = Simply gives you everything without having to type every flag
Admin Observer
Moderator +ADMIN
Admin Candidate +@
Moderator +MOD
Admin Candidate +ADMIN
Trial Admin +@ +SPAWN +REJUV +VAREDIT +BAN
Badmin +@ +POSSESS +BUILDMODE +SERVER +FUN
Game Admin +@ +STEALTH +SOUNDS +DEBUG

View File

@@ -58,6 +58,19 @@ Stuff which is in development and not yet visible to players or just code relate
should be listed in the changelog upon commit though. Thanks. -->
<!-- To take advantage of the pretty new format (well it was new when I wrote this anyway), open the "add-to-changelog.html" file in any browser and add the stuff and then generate the html code and paste it here -->
<div class="commit sansserif">
<h2 class="date">13/01/2013</h2>
<h3 class="author">Chinsky updated:</h3>
<ul class="changes bgimages16">
<li class="tweak">If you get enough (6) blood drips on one tile, it'll turn into a blood puddle. Should make bleeding out more visible.</li>
<li class="tweak">Security belt now able to hold taser, baton and tape roll.</li>
<li class="tweak">Added alternative security uniform to Security wardrobes.</li>
<li class="rscadd">Ported Urist cult runes. Down with the crayon drawings! Example: http://dl.dropbox.com/u/26846767/images/SS13/255_symbols.PNG</li>
<li class="bugfix">Engineering tape now require engineer OR atmos access instead of both.</li>
<li class="rscadd">Implants now will react to EMP, possibly in !!FUN!! ways</li>
</ul>
</div>
<div class="commit sansserif">
<h2 class="date">January 7th</h2>
<h3 class="author">Cael_Aislinn updated:</h3>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 256 KiB

After

Width:  |  Height:  |  Size: 257 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 203 KiB

After

Width:  |  Height:  |  Size: 204 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 61 KiB

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 72 KiB

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 17 KiB

BIN
sound/items/countdown.ogg Normal file

Binary file not shown.