Merge pull request #2162 from comma/master
EMP x Implants OTP... and lots of other things.
@@ -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"
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)))
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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()
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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]")
|
||||
|
||||
@@ -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>"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
*/
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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>
|
||||
|
||||
|
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 39 KiB |
|
Before Width: | Height: | Size: 256 KiB After Width: | Height: | Size: 257 KiB |
|
Before Width: | Height: | Size: 203 KiB After Width: | Height: | Size: 204 KiB |
|
Before Width: | Height: | Size: 61 KiB After Width: | Height: | Size: 62 KiB |
|
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 38 KiB |
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 72 KiB After Width: | Height: | Size: 82 KiB |
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 17 KiB |