mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-14 04:02:31 +00:00
Porting much of Aryn's stuff
-Sounds -Detective Work -Hallucinations Tweaked server air alarm Tweaked gibs Working on de-derping surgery Ported some BS12 stuff (stunned radio and adminwho) Player's mind datum now holds their antagonist preferences.
This commit is contained in:
@@ -95,6 +95,7 @@
|
|||||||
#define FILE_DIR "code/modules/clothing/uniforms"
|
#define FILE_DIR "code/modules/clothing/uniforms"
|
||||||
#define FILE_DIR "code/modules/critters"
|
#define FILE_DIR "code/modules/critters"
|
||||||
#define FILE_DIR "code/modules/critters/hivebots"
|
#define FILE_DIR "code/modules/critters/hivebots"
|
||||||
|
#define FILE_DIR "code/modules/flufftext"
|
||||||
#define FILE_DIR "code/modules/food"
|
#define FILE_DIR "code/modules/food"
|
||||||
#define FILE_DIR "code/modules/mining"
|
#define FILE_DIR "code/modules/mining"
|
||||||
#define FILE_DIR "code/modules/mob"
|
#define FILE_DIR "code/modules/mob"
|
||||||
@@ -658,7 +659,6 @@
|
|||||||
#include "code\game\objects\items\weapons\cigs_lighters.dm"
|
#include "code\game\objects\items\weapons\cigs_lighters.dm"
|
||||||
#include "code\game\objects\items\weapons\clown_items.dm"
|
#include "code\game\objects\items\weapons\clown_items.dm"
|
||||||
#include "code\game\objects\items\weapons\dna_injector.dm"
|
#include "code\game\objects\items\weapons\dna_injector.dm"
|
||||||
#include "code\game\objects\items\weapons\evidence.dm"
|
|
||||||
#include "code\game\objects\items\weapons\explosives.dm"
|
#include "code\game\objects\items\weapons\explosives.dm"
|
||||||
#include "code\game\objects\items\weapons\flamethrower.dm"
|
#include "code\game\objects\items\weapons\flamethrower.dm"
|
||||||
#include "code\game\objects\items\weapons\grenades.dm"
|
#include "code\game\objects\items\weapons\grenades.dm"
|
||||||
@@ -795,6 +795,8 @@
|
|||||||
#include "code\modules\critters\critter_defenses.dm"
|
#include "code\modules\critters\critter_defenses.dm"
|
||||||
#include "code\modules\critters\critters.dm"
|
#include "code\modules\critters\critters.dm"
|
||||||
#include "code\modules\critters\hivebots\hivebot.dm"
|
#include "code\modules\critters\hivebots\hivebot.dm"
|
||||||
|
#include "code\modules\flufftext\Dreaming.dm"
|
||||||
|
#include "code\modules\flufftext\TextFilters.dm"
|
||||||
#include "code\modules\food\food.dm"
|
#include "code\modules\food\food.dm"
|
||||||
#include "code\modules\food\recipes_microwave.dm"
|
#include "code\modules\food\recipes_microwave.dm"
|
||||||
#include "code\modules\mining\datum_processing_recipe.dm"
|
#include "code\modules\mining\datum_processing_recipe.dm"
|
||||||
@@ -1027,6 +1029,7 @@
|
|||||||
#include "code\WorkInProgress\Ported\ZeroPoint\LaserComputer.dm"
|
#include "code\WorkInProgress\Ported\ZeroPoint\LaserComputer.dm"
|
||||||
#include "code\WorkInProgress\Ported\ZeroPoint\SuperMatter.dm"
|
#include "code\WorkInProgress\Ported\ZeroPoint\SuperMatter.dm"
|
||||||
#include "code\WorkInProgress\SkyMarshal\coatrack.dm"
|
#include "code\WorkInProgress\SkyMarshal\coatrack.dm"
|
||||||
|
#include "code\WorkInProgress\SkyMarshal\evidence.dm"
|
||||||
#include "code\WorkInProgress\SkyMarshal\traitoritems.dm"
|
#include "code\WorkInProgress\SkyMarshal\traitoritems.dm"
|
||||||
#include "code\WorkInProgress\SkyMarshal\wardrobes.dm"
|
#include "code\WorkInProgress\SkyMarshal\wardrobes.dm"
|
||||||
#include "code\WorkInProgress\Tastyfish\Eliza.dm"
|
#include "code\WorkInProgress\Tastyfish\Eliza.dm"
|
||||||
|
|||||||
@@ -33,13 +33,8 @@
|
|||||||
if(istype(O.loc, /obj/item/weapon/storage))
|
if(istype(O.loc, /obj/item/weapon/storage))
|
||||||
user << "This is broke as hell."
|
user << "This is broke as hell."
|
||||||
return
|
return
|
||||||
/* var/obj/item/weapon/storage/U = O.loc
|
var/obj/item/weapon/storage/U = O.loc
|
||||||
w_class = O.w_class
|
U.contents.Remove(O)
|
||||||
for(var/i, i < U.contents.len, i++)
|
|
||||||
if(O in U.contents[i])
|
|
||||||
U.contents[i] = null
|
|
||||||
O.loc = src
|
|
||||||
continue*/
|
|
||||||
user << "You put the [O] inside the [src]."
|
user << "You put the [O] inside the [src]."
|
||||||
icon_state = "evidence"
|
icon_state = "evidence"
|
||||||
src.underlays += O
|
src.underlays += O
|
||||||
@@ -244,10 +244,12 @@ mob/var
|
|||||||
obj/item/clothing/gloves/var
|
obj/item/clothing/gloves/var
|
||||||
transfer_blood = 0
|
transfer_blood = 0
|
||||||
mob/living/carbon/human/bloody_hands_mob
|
mob/living/carbon/human/bloody_hands_mob
|
||||||
/*
|
|
||||||
obj/decal/cleanable/blood/var/track_amt = 3
|
|
||||||
|
|
||||||
|
|
||||||
|
obj/effect/decal/cleanable/blood/var
|
||||||
|
track_amt = 3
|
||||||
|
mob/blood_owner
|
||||||
|
|
||||||
turf/Exited(mob/living/carbon/human/M)
|
turf/Exited(mob/living/carbon/human/M)
|
||||||
if(istype(M,/mob/living))
|
if(istype(M,/mob/living))
|
||||||
if(!istype(src, /turf/space)) // Bloody tracks code starts here
|
if(!istype(src, /turf/space)) // Bloody tracks code starts here
|
||||||
@@ -271,9 +273,9 @@ turf/Entered(mob/living/carbon/human/M)
|
|||||||
M.shoes.track_blood--
|
M.shoes.track_blood--
|
||||||
src.add_bloody_footprints(M.shoes.track_blood_mob,0,M.dir,M.shoes.name)
|
src.add_bloody_footprints(M.shoes.track_blood_mob,0,M.dir,M.shoes.name)
|
||||||
|
|
||||||
for(var/obj/decal/cleanable/blood/B in src)
|
for(var/obj/effect/decal/cleanable/blood/B in src)
|
||||||
if(B.track_amt <= 0) continue
|
if(B.track_amt <= 0) continue
|
||||||
if(B.type != /obj/decal/cleanable/blood/tracks && B.type != /obj/decal/cleanable/blood/drip)
|
if(B.type != /obj/effect/decal/cleanable/blood/tracks)
|
||||||
if(istype(M,/mob/living/carbon/human))
|
if(istype(M,/mob/living/carbon/human))
|
||||||
if(M.shoes)
|
if(M.shoes)
|
||||||
M.shoes.add_blood(B.blood_owner)
|
M.shoes.add_blood(B.blood_owner)
|
||||||
@@ -282,13 +284,13 @@ turf/Entered(mob/living/carbon/human/M)
|
|||||||
else
|
else
|
||||||
M.add_blood(B.blood_owner)
|
M.add_blood(B.blood_owner)
|
||||||
M.track_blood_mob = B.blood_owner
|
M.track_blood_mob = B.blood_owner
|
||||||
M.track_blood = max(M.track_blood,8)
|
M.track_blood = max(M.track_blood,rand(4,8))
|
||||||
B.track_amt--
|
B.track_amt--
|
||||||
break
|
break
|
||||||
. = ..()
|
. = ..()
|
||||||
|
|
||||||
turf/proc/add_bloody_footprints(mob/living/carbon/human/M,leaving,d,info)
|
turf/proc/add_bloody_footprints(mob/living/carbon/human/M,leaving,d,info)
|
||||||
for(var/obj/decal/cleanable/blood/tracks/T in src)
|
for(var/obj/effect/decal/cleanable/blood/tracks/T in src)
|
||||||
if(T.dir == d)
|
if(T.dir == d)
|
||||||
if((leaving && T.icon_state == "steps2") || (!leaving && T.icon_state == "steps1"))
|
if((leaving && T.icon_state == "steps2") || (!leaving && T.icon_state == "steps1"))
|
||||||
T.desc = "These bloody footprints appear to have been made by [info]."
|
T.desc = "These bloody footprints appear to have been made by [info]."
|
||||||
@@ -296,11 +298,12 @@ turf/proc/add_bloody_footprints(mob/living/carbon/human/M,leaving,d,info)
|
|||||||
T.blood_DNA = M.dna.unique_enzymes
|
T.blood_DNA = M.dna.unique_enzymes
|
||||||
T.blood_type = M.b_type
|
T.blood_type = M.b_type
|
||||||
return
|
return
|
||||||
var/obj/decal/cleanable/blood/tracks/this = new(src)
|
var/obj/effect/decal/cleanable/blood/tracks/this = new(src)
|
||||||
|
this.icon = 'footprints.dmi'
|
||||||
if(leaving)
|
if(leaving)
|
||||||
this.icon_state = "steps2"
|
this.icon_state = "blood2"
|
||||||
else
|
else
|
||||||
this.icon_state = "steps1"
|
this.icon_state = "blood1"
|
||||||
this.dir = d
|
this.dir = d
|
||||||
this.desc = "These bloody footprints appear to have been made by [info]."
|
this.desc = "These bloody footprints appear to have been made by [info]."
|
||||||
if(istype(M,/mob/living/carbon/human))
|
if(istype(M,/mob/living/carbon/human))
|
||||||
@@ -333,5 +336,4 @@ proc/blood_incompatible(donor,receiver)
|
|||||||
if("O")
|
if("O")
|
||||||
if(donor_antigen != "O") return 1
|
if(donor_antigen != "O") return 1
|
||||||
//AB is a universal receiver.
|
//AB is a universal receiver.
|
||||||
return 0
|
return 0
|
||||||
*/
|
|
||||||
@@ -164,7 +164,7 @@
|
|||||||
var/logged_in = 0
|
var/logged_in = 0
|
||||||
|
|
||||||
var/underwear = 1//Human
|
var/underwear = 1//Human
|
||||||
var/be_syndicate = 0//This really should be a client variable.
|
var/be_syndicate = 0 //This really should be a client variable. EDIT: Hijacked for my own nefarious purposes! --SkyMarshal
|
||||||
var/be_random_name = 0
|
var/be_random_name = 0
|
||||||
var/const/blindness = 1//Carbon
|
var/const/blindness = 1//Carbon
|
||||||
var/const/deafness = 2//Carbon
|
var/const/deafness = 2//Carbon
|
||||||
|
|||||||
@@ -52,6 +52,7 @@
|
|||||||
blood_DNA = null
|
blood_DNA = null
|
||||||
blood_type = null
|
blood_type = null
|
||||||
var/datum/disease2/disease/virus2 = null
|
var/datum/disease2/disease/virus2 = null
|
||||||
|
var/OriginalMob = null
|
||||||
|
|
||||||
Del()
|
Del()
|
||||||
for(var/datum/disease/D in viruses)
|
for(var/datum/disease/D in viruses)
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
var/struc_enzymes = null
|
var/struc_enzymes = null
|
||||||
var/uni_identity = null
|
var/uni_identity = null
|
||||||
var/original_name = "Unknown"
|
var/original_name = "Unknown"
|
||||||
|
var/b_type
|
||||||
|
|
||||||
/datum/dna/proc/check_integrity()
|
/datum/dna/proc/check_integrity()
|
||||||
//Lazy.
|
//Lazy.
|
||||||
@@ -68,6 +69,7 @@
|
|||||||
|
|
||||||
unique_enzymes = md5(character.real_name)
|
unique_enzymes = md5(character.real_name)
|
||||||
original_name = character.real_name
|
original_name = character.real_name
|
||||||
|
b_type = character.b_type
|
||||||
reg_dna[unique_enzymes] = character.real_name
|
reg_dna[unique_enzymes] = character.real_name
|
||||||
|
|
||||||
/////////////////////////// DNA DATUM
|
/////////////////////////// DNA DATUM
|
||||||
|
|||||||
@@ -79,7 +79,7 @@
|
|||||||
playercount += 1
|
playercount += 1
|
||||||
if (player.client && player.mind && player.mind.special_role && player.stat != 2)
|
if (player.client && player.mind && player.mind.special_role && player.stat != 2)
|
||||||
traitorcount += 1
|
traitorcount += 1
|
||||||
if (player.client && player.mind && !player.mind.special_role && player.stat != 2 && player.be_syndicate && !jobban_isbanned(player, "Syndicate"))
|
if (player.client && player.mind && !player.mind.special_role && player.stat != 2 && (player.be_syndicate & BE_TRAITOR) && !jobban_isbanned(player, "Syndicate"))
|
||||||
possible_traitors += player
|
possible_traitors += player
|
||||||
//message_admins("Live Players: [playercount]")
|
//message_admins("Live Players: [playercount]")
|
||||||
//message_admins("Live Traitors: [traitorcount]")
|
//message_admins("Live Traitors: [traitorcount]")
|
||||||
@@ -162,7 +162,7 @@
|
|||||||
if(emergency_shuttle.departed)
|
if(emergency_shuttle.departed)
|
||||||
return
|
return
|
||||||
//message_admins("Late Join Check")
|
//message_admins("Late Join Check")
|
||||||
if(character.be_syndicate == 1 && !jobban_isbanned(character, "Syndicate"))
|
if((character.be_syndicate & BE_TRAITOR) && !jobban_isbanned(character, "Syndicate"))
|
||||||
//message_admins("Late Joiner has Be Syndicate")
|
//message_admins("Late Joiner has Be Syndicate")
|
||||||
//message_admins("Checking number of players")
|
//message_admins("Checking number of players")
|
||||||
var/playercount = 0
|
var/playercount = 0
|
||||||
|
|||||||
@@ -137,6 +137,10 @@
|
|||||||
|
|
||||||
/datum/game_mode/proc/greet_traitor(var/datum/mind/traitor)
|
/datum/game_mode/proc/greet_traitor(var/datum/mind/traitor)
|
||||||
traitor.current << "<B><font size=3 color=red>You are the traitor.</font></B>"
|
traitor.current << "<B><font size=3 color=red>You are the traitor.</font></B>"
|
||||||
|
traitor.current << "\red <B>REPEAT</B>"
|
||||||
|
traitor.current << "\red <B>You are the traitor.</B>"
|
||||||
|
spawn(rand(600,1800)) //Strumpetplaya - Just another friendly reminder so people don't forget they're the traitor.
|
||||||
|
traitor.current << "\red <B>In case you missed it the first time - YOU ARE THE TRAITOR!</B>"
|
||||||
var/obj_count = 1
|
var/obj_count = 1
|
||||||
for(var/datum/objective/objective in traitor.objectives)
|
for(var/datum/objective/objective in traitor.objectives)
|
||||||
traitor.current << "<B>Objective #[obj_count]</B>: [objective.explanation_text]"
|
traitor.current << "<B>Objective #[obj_count]</B>: [objective.explanation_text]"
|
||||||
@@ -175,6 +179,8 @@
|
|||||||
else
|
else
|
||||||
killer << "Unfortunately, the Syndicate did not provide you with a code response."
|
killer << "Unfortunately, the Syndicate did not provide you with a code response."
|
||||||
killer << "Use the code words in the order provided, during regular conversation, to identify other agents. Proceed with caution, however, as everyone is a potential foe."
|
killer << "Use the code words in the order provided, during regular conversation, to identify other agents. Proceed with caution, however, as everyone is a potential foe."
|
||||||
|
spawn(30)
|
||||||
|
killer << sound('AISyndiHack.ogg',volume=50)
|
||||||
//End code phrase.
|
//End code phrase.
|
||||||
|
|
||||||
|
|
||||||
@@ -318,4 +324,6 @@
|
|||||||
else
|
else
|
||||||
traitor_mob << "Unfortunately, the Syndicate did not provide you with a code response."
|
traitor_mob << "Unfortunately, the Syndicate did not provide you with a code response."
|
||||||
traitor_mob << "Use the code words in the order provided, during regular conversation, to identify other agents. Proceed with caution, however, as everyone is a potential foe."
|
traitor_mob << "Use the code words in the order provided, during regular conversation, to identify other agents. Proceed with caution, however, as everyone is a potential foe."
|
||||||
|
spawn(30)
|
||||||
|
traitor_mob << sound('syndicate intro.ogg',volume=50)
|
||||||
//End code phrase.
|
//End code phrase.
|
||||||
|
|||||||
@@ -89,8 +89,8 @@
|
|||||||
"carbon dioxide" = new/datum/tlv(-1.0, -1.0, 5, 10), // Partial pressure, kpa
|
"carbon dioxide" = new/datum/tlv(-1.0, -1.0, 5, 10), // Partial pressure, kpa
|
||||||
"plasma" = new/datum/tlv(-1.0, -1.0, 0.2, 0.5), // Partial pressure, kpa
|
"plasma" = new/datum/tlv(-1.0, -1.0, 0.2, 0.5), // Partial pressure, kpa
|
||||||
"other" = new/datum/tlv(-1.0, -1.0, 0.5, 1.0), // Partial pressure, kpa
|
"other" = new/datum/tlv(-1.0, -1.0, 0.5, 1.0), // Partial pressure, kpa
|
||||||
"pressure" = new/datum/tlv(ONE_ATMOSPHERE*0.80,ONE_ATMOSPHERE*0.90,ONE_ATMOSPHERE*1.40,ONE_ATMOSPHERE*1.60), /* kpa */
|
"pressure" = new/datum/tlv(ONE_ATMOSPHERE*0.20,ONE_ATMOSPHERE*0.35,ONE_ATMOSPHERE*0.8,ONE_ATMOSPHERE*0.9), /* kpa */
|
||||||
"temperature" = new/datum/tlv(40, 60, 100, 120), // K
|
"temperature" = new/datum/tlv(40, 60, 140, 160), // K
|
||||||
)
|
)
|
||||||
|
|
||||||
//all air alarms in area are connected via magic
|
//all air alarms in area are connected via magic
|
||||||
|
|||||||
@@ -65,8 +65,12 @@ MASS SPECTROMETER
|
|||||||
icon_state = "forensic0"
|
icon_state = "forensic0"
|
||||||
var/amount = 20.0
|
var/amount = 20.0
|
||||||
var/printing = 0.0
|
var/printing = 0.0
|
||||||
|
var/fibers_index = 0
|
||||||
var/list/stored_fibers = null
|
var/list/stored_fibers = null
|
||||||
var/stored_name = null
|
var/list/stored_name = null
|
||||||
|
var/prints_index = 0
|
||||||
|
var/list/stored_prints = null
|
||||||
|
var/list/prints_name = null
|
||||||
w_class = 3.0
|
w_class = 3.0
|
||||||
item_state = "electronic"
|
item_state = "electronic"
|
||||||
flags = FPRINT | TABLEPASS | ONBELT | CONDUCT | USEDELAY
|
flags = FPRINT | TABLEPASS | ONBELT | CONDUCT | USEDELAY
|
||||||
@@ -106,7 +110,7 @@ MASS SPECTROMETER
|
|||||||
/obj/item/device/detective_scanner/attack(mob/living/carbon/human/M as mob, mob/user as mob)
|
/obj/item/device/detective_scanner/attack(mob/living/carbon/human/M as mob, mob/user as mob)
|
||||||
|
|
||||||
if (!ishuman(M))
|
if (!ishuman(M))
|
||||||
user << "\red [M] is not humas and cannot have the fingerprints."
|
user << "\red [M] is not human and cannot have the fingerprints."
|
||||||
return 0
|
return 0
|
||||||
if (( !( istype(M.dna, /datum/dna) ) || M.gloves) )
|
if (( !( istype(M.dna, /datum/dna) ) || M.gloves) )
|
||||||
user << "\blue No fingerprints found on [M]"
|
user << "\blue No fingerprints found on [M]"
|
||||||
@@ -145,26 +149,37 @@ MASS SPECTROMETER
|
|||||||
user << "\blue Blood type: [A.blood_type]\nDNA: [A.blood_DNA]"
|
user << "\blue Blood type: [A.blood_type]\nDNA: [A.blood_DNA]"
|
||||||
else
|
else
|
||||||
user << "\blue No blood found on [A]."
|
user << "\blue No blood found on [A]."
|
||||||
if (!( A.fingerprints ))
|
if (!( A.fingerprints ) && !(A.suit_fibers))
|
||||||
user << "\blue Unable to locate any fingerprints on [A]!"
|
user << "\blue Unable to locate any fingerprints or fibers on [A]!"
|
||||||
return 0
|
return 0
|
||||||
|
if(!( A.fingerprints ))
|
||||||
|
user << "\blue Unable to locate any fingerprints on [A]!"
|
||||||
else
|
else
|
||||||
if ((src.amount < 1 && src.printing))
|
var/list/L = params2list(A.fingerprints)
|
||||||
user << "\blue Fingerprints found. Need more cards to print."
|
stored_prints[prints_index] = L
|
||||||
src.printing = 0
|
prints_name[prints_index] = A.name
|
||||||
src.icon_state = text("forensic[]", src.printing)
|
user << text("\blue Isolated [L.len] fingerprints. Stored in memory.")
|
||||||
if (src.printing)
|
if(!A.suit_fibers)
|
||||||
src.amount--
|
user << "\blue No Fibers/Materials Located."
|
||||||
var/obj/item/weapon/f_card/F = new /obj/item/weapon/f_card( user.loc )
|
else
|
||||||
F.amount = 1
|
user << "\blue Fibers/Materials Data Stored: Scan with Hi-Res Forensic Scanner to retrieve."
|
||||||
F.fingerprints = A.fingerprints
|
stored_fibers[fibers_index] = A.suit_fibers
|
||||||
F.icon_state = "fingerprint1"
|
stored_name[fibers_index] = A.name
|
||||||
user << "\blue Done printing."
|
// else
|
||||||
var/list/L = params2list(A.fingerprints)
|
// if ((src.amount < 1 && src.printing))
|
||||||
user << text("\blue Isolated [L.len] fingerprints.")
|
// user << "\blue Fingerprints found. Need more cards to print."
|
||||||
for(var/i in L)
|
// src.printing = 0
|
||||||
user << text("\blue \t [i]")
|
// src.icon_state = text("forensic[]", src.printing)
|
||||||
//Foreach goto(186)
|
// if (src.printing)
|
||||||
|
// src.amount--
|
||||||
|
// var/obj/item/weapon/f_card/F = new /obj/item/weapon/f_card( user.loc )
|
||||||
|
// F.amount = 1
|
||||||
|
// F.fingerprints = A.fingerprints
|
||||||
|
// F.icon_state = "fingerprint1"
|
||||||
|
// user << "\blue Done printing."
|
||||||
|
// for(var/i in L)
|
||||||
|
// user << text("\blue \t [i]")
|
||||||
|
// //Foreach goto(186)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
//HUMANS
|
//HUMANS
|
||||||
|
|
||||||
/proc/gibs(atom/location, var/list/viruses)
|
/proc/gibs(atom/location, var/list/viruses, var/datum/dna/MobDNA)
|
||||||
new /obj/effect/gibspawner/human(get_turf(location),viruses)
|
new /obj/effect/gibspawner/human(get_turf(location),viruses,MobDNA)
|
||||||
|
|
||||||
/proc/xgibs(atom/location, var/list/viruses)
|
/proc/xgibs(atom/location, var/list/viruses)
|
||||||
new /obj/effect/gibspawner/xeno(get_turf(location),viruses)
|
new /obj/effect/gibspawner/xeno(get_turf(location),viruses)
|
||||||
@@ -16,13 +16,13 @@
|
|||||||
var/list/gibamounts = list()
|
var/list/gibamounts = list()
|
||||||
var/list/gibdirections = list() //of lists
|
var/list/gibdirections = list() //of lists
|
||||||
|
|
||||||
New(location, var/list/viruses)
|
New(location, var/list/viruses, var/datum/dna/MobDNA)
|
||||||
..()
|
..()
|
||||||
|
|
||||||
if(istype(loc,/turf)) //basically if a badmin spawns it
|
if(istype(loc,/turf)) //basically if a badmin spawns it
|
||||||
Gib(loc,viruses)
|
Gib(loc,viruses,MobDNA)
|
||||||
|
|
||||||
proc/Gib(atom/location, var/list/viruses = list())
|
proc/Gib(atom/location, var/list/viruses = list(), var/datum/dna/MobDNA = null)
|
||||||
if(gibtypes.len != gibamounts.len || gibamounts.len != gibdirections.len)
|
if(gibtypes.len != gibamounts.len || gibamounts.len != gibdirections.len)
|
||||||
world << "\red Gib list length mismatch!"
|
world << "\red Gib list length mismatch!"
|
||||||
return
|
return
|
||||||
@@ -50,6 +50,12 @@
|
|||||||
gib.viruses += viruus
|
gib.viruses += viruus
|
||||||
viruus.holder = gib
|
viruus.holder = gib
|
||||||
viruus.spread_type = CONTACT_FEET
|
viruus.spread_type = CONTACT_FEET
|
||||||
|
if(MobDNA)
|
||||||
|
gib.blood_DNA = MobDNA.unique_enzymes
|
||||||
|
if(MobDNA.b_type)
|
||||||
|
gib.blood_type = MobDNA.b_type
|
||||||
|
if(MobDNA.original_name != "Unknown")
|
||||||
|
gib.OriginalMob = MobDNA.original_name
|
||||||
var/list/directions = gibdirections[i]
|
var/list/directions = gibdirections[i]
|
||||||
if(directions.len)
|
if(directions.len)
|
||||||
gib.streak(directions)
|
gib.streak(directions)
|
||||||
|
|||||||
@@ -575,6 +575,8 @@ CIRCULAR SAW
|
|||||||
S.open = 0
|
S.open = 0
|
||||||
if(S.display_name == "chest" && H:embryo_op_stage == 1.0)
|
if(S.display_name == "chest" && H:embryo_op_stage == 1.0)
|
||||||
H:embryo_op_stage = 0.0
|
H:embryo_op_stage = 0.0
|
||||||
|
if(S.display_name == "groin" && H:appendix_op_stage == 1.0)
|
||||||
|
H:appendix_op_stage = 0.0
|
||||||
|
|
||||||
H.updatehealth()
|
H.updatehealth()
|
||||||
H.UpdateDamageIcon()
|
H.UpdateDamageIcon()
|
||||||
@@ -630,13 +632,13 @@ CIRCULAR SAW
|
|||||||
if(user.zone_sel.selecting == "groin")
|
if(user.zone_sel.selecting == "groin")
|
||||||
if(istype(M, /mob/living/carbon/human))
|
if(istype(M, /mob/living/carbon/human))
|
||||||
switch(M:appendix_op_stage)
|
switch(M:appendix_op_stage)
|
||||||
if(0.0)
|
// if(0.0)
|
||||||
if(M != user)
|
// if(M != user)
|
||||||
for(var/mob/O in (viewers(M) - user - M))
|
// for(var/mob/O in (viewers(M) - user - M))
|
||||||
O.show_message("\red [M] is beginning to have \his abdomen cut open with [src] by [user].", 1)
|
// O.show_message("\red [M] is beginning to have \his abdomen cut open with [src] by [user].", 1)
|
||||||
M << "\red [user] begins to cut open your abdomen with [src]!"
|
// M << "\red [user] begins to cut open your abdomen with [src]!"
|
||||||
user << "\red You cut [M]'s abdomen open with [src]!"
|
// user << "\red You cut [M]'s abdomen open with [src]!"
|
||||||
M:appendix_op_stage = 1.0
|
// M:appendix_op_stage = 1.0
|
||||||
if(3.0)
|
if(3.0)
|
||||||
if(M != user)
|
if(M != user)
|
||||||
for(var/mob/O in (viewers(M) - user - M))
|
for(var/mob/O in (viewers(M) - user - M))
|
||||||
@@ -857,6 +859,8 @@ CIRCULAR SAW
|
|||||||
S.bleeding = 1
|
S.bleeding = 1
|
||||||
if(S.display_name == "chest")
|
if(S.display_name == "chest")
|
||||||
H:embryo_op_stage = 1.0
|
H:embryo_op_stage = 1.0
|
||||||
|
if(S.display_name == "groin")
|
||||||
|
H:appendix_op_stage = 1.0
|
||||||
|
|
||||||
H.updatehealth()
|
H.updatehealth()
|
||||||
H.UpdateDamageIcon()
|
H.UpdateDamageIcon()
|
||||||
|
|||||||
@@ -33,7 +33,9 @@
|
|||||||
if(usr.client.holder)
|
if(usr.client.holder)
|
||||||
usr << "[M.key] is a [M.client.holder.rank][M.client.stealth ? " <i>(as [M.client.fakekey])</i>" : ""]"
|
usr << "[M.key] is a [M.client.holder.rank][M.client.stealth ? " <i>(as [M.client.fakekey])</i>" : ""]"
|
||||||
else if(!M.client.stealth && (M.client.holder.level != -3))
|
else if(!M.client.stealth && (M.client.holder.level != -3))
|
||||||
usr << "\t[M.client]"
|
usr << "\t[pick(nobles)] [M.client]"
|
||||||
|
|
||||||
|
var/list/nobles = list("Baron","Bookkeeper","Captain of the Guard","Chief medical dwarf","Count","Dungeon master","Duke","General","Mayor","Outpost liaison","Sheriff","Champion")
|
||||||
|
|
||||||
/client/verb/active_players()
|
/client/verb/active_players()
|
||||||
set category = "OOC"
|
set category = "OOC"
|
||||||
|
|||||||
@@ -1487,12 +1487,7 @@
|
|||||||
return
|
return
|
||||||
if("schoolgirl")
|
if("schoolgirl")
|
||||||
if (src.rank in list("Badmin", "Game Admin", "Game Master"))
|
if (src.rank in list("Badmin", "Game Admin", "Game Master"))
|
||||||
for(var/obj/item/clothing/under/W in world)
|
alert("You cannot perform this action. It is unbelievably stupid.")
|
||||||
W.icon_state = "schoolgirl"
|
|
||||||
W.item_state = "w_suit"
|
|
||||||
W.color = "schoolgirl"
|
|
||||||
message_admins("[key_name_admin(usr)] activated Japanese Animes mode")
|
|
||||||
world << sound('animes.ogg')
|
|
||||||
else
|
else
|
||||||
alert("You cannot perform this action. You must be of a higher administrative rank!")
|
alert("You cannot perform this action. You must be of a higher administrative rank!")
|
||||||
return
|
return
|
||||||
|
|||||||
25
code/modules/flufftext/Dreaming.dm
Normal file
25
code/modules/flufftext/Dreaming.dm
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
mob/living/carbon/proc/dream()
|
||||||
|
dreaming = 1
|
||||||
|
var/list/dreams = list(
|
||||||
|
"an ID card","a bottle","a familiar face","a crewmember","a toolbox","a security officer","the captain",
|
||||||
|
"voices from all around","deep space","a doctor","the engine","a traitor","an ally","darkness",
|
||||||
|
"light","a scientist","a monkey","a catastrophe","a loved one","a gun","warmth","freezing","the sun",
|
||||||
|
"a hat","the Luna","a ruined station","a planet","plasma","air","the medical bay","the bridge","blinking lights",
|
||||||
|
"a blue light","an abandoned laboratory","Nanotrasen","The Syndicate","blood","healing","power","respect",
|
||||||
|
"riches","space","a crash","happiness","pride","a fall","water","flames","ice","melons","flying"
|
||||||
|
)
|
||||||
|
for(var/i = rand(1,4),i > 0, i--)
|
||||||
|
var/dream_image = pick(dreams)
|
||||||
|
dreams -= dream_image
|
||||||
|
src << "\blue <i>... [dream_image] ...</i>"
|
||||||
|
sleep(rand(40,70))
|
||||||
|
if(paralysis <= 0)
|
||||||
|
dreaming = 0
|
||||||
|
return 0
|
||||||
|
dreaming = 0
|
||||||
|
return 1
|
||||||
|
|
||||||
|
mob/living/carbon/proc/handle_dreams()
|
||||||
|
if(prob(5) && !dreaming) dream()
|
||||||
|
|
||||||
|
mob/living/carbon/var/dreaming = 0
|
||||||
175
code/modules/flufftext/Hallucination.dm
Normal file
175
code/modules/flufftext/Hallucination.dm
Normal file
@@ -0,0 +1,175 @@
|
|||||||
|
/*
|
||||||
|
Ideas for the subtle effects of hallucination:
|
||||||
|
|
||||||
|
Light up oxygen/plasma indicators (done)
|
||||||
|
Cause health to look critical/dead, even when standing (done)
|
||||||
|
Characters silently watching you
|
||||||
|
Brief flashes of fire/space/bombs/c4/dangerous shit (done)
|
||||||
|
Items that are rare/traitorous/don't exist appearing in your inventory slots (done)
|
||||||
|
Strange audio (should be rare) (done)
|
||||||
|
Gunshots/explosions/opening doors/less rare audio (done)
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
mob/living/carbon/var
|
||||||
|
image/halimage
|
||||||
|
obj/halitem
|
||||||
|
hal_screwyhud = 0 //1 - critical, 2 - dead, 3 - oxygen indicator, 4 - toxin indicator
|
||||||
|
handling_hal = 0
|
||||||
|
|
||||||
|
mob/living/carbon/proc/handle_hallucinations()
|
||||||
|
if(handling_hal) return
|
||||||
|
handling_hal = 1
|
||||||
|
while(hallucination > 20)
|
||||||
|
sleep(rand(200,500))
|
||||||
|
var/halpick = rand(1,100)
|
||||||
|
switch(halpick)
|
||||||
|
if(0 to 15)
|
||||||
|
//Screwy HUD
|
||||||
|
//src << "Screwy HUD"
|
||||||
|
hal_screwyhud = pick(1,2,3,3,4,4)
|
||||||
|
spawn(rand(100,250))
|
||||||
|
hal_screwyhud = 0
|
||||||
|
if(16 to 25)
|
||||||
|
//Strange items
|
||||||
|
//src << "Traitor Items"
|
||||||
|
halitem = new
|
||||||
|
var/list/slots_free = list("1,1","3,1")
|
||||||
|
if(l_hand) slots_free -= "1,1"
|
||||||
|
if(r_hand) slots_free -= "3,1"
|
||||||
|
if(istype(src,/mob/living/carbon/human))
|
||||||
|
var/mob/living/carbon/human/H = src
|
||||||
|
if(!H.belt) slots_free += "3,0"
|
||||||
|
if(!H.l_store) slots_free += "4,0"
|
||||||
|
if(!H.r_store) slots_free += "5,0"
|
||||||
|
if(slots_free.len)
|
||||||
|
halitem.screen_loc = pick(slots_free)
|
||||||
|
halitem.layer = 50
|
||||||
|
switch(rand(1,6))
|
||||||
|
if(1) //revolver
|
||||||
|
halitem.icon = 'gun.dmi'
|
||||||
|
halitem.icon_state = "revolver"
|
||||||
|
halitem.name = "Revolver"
|
||||||
|
if(2) //c4
|
||||||
|
halitem.icon = 'syndieweapons.dmi'
|
||||||
|
halitem.icon_state = "c4small_0"
|
||||||
|
halitem.name = "Mysterious Package"
|
||||||
|
if(prob(25))
|
||||||
|
halitem.icon_state = "c4small_1"
|
||||||
|
if(3) //sword
|
||||||
|
halitem.icon = 'weapons.dmi'
|
||||||
|
halitem.icon_state = "sword1"
|
||||||
|
halitem.name = "Sword"
|
||||||
|
if(4) //stun baton
|
||||||
|
halitem.icon = 'weapons.dmi'
|
||||||
|
halitem.icon_state = "stunbaton"
|
||||||
|
halitem.name = "Stun Baton"
|
||||||
|
if(5) //emag
|
||||||
|
halitem.icon = 'card.dmi'
|
||||||
|
halitem.icon_state = "emag"
|
||||||
|
halitem.name = "Cryptographic Sequencer"
|
||||||
|
if(6) //flashbang
|
||||||
|
halitem.icon = 'grenade.dmi'
|
||||||
|
halitem.icon_state = "flashbang1"
|
||||||
|
halitem.name = "Flashbang"
|
||||||
|
if(client) client.screen += halitem
|
||||||
|
spawn(rand(100,250))
|
||||||
|
del halitem
|
||||||
|
if(26 to 40)
|
||||||
|
//Flashes of danger
|
||||||
|
//src << "Danger Flash"
|
||||||
|
var/possible_points = list()
|
||||||
|
for(var/turf/simulated/floor/F in view(src,world.view))
|
||||||
|
possible_points += F
|
||||||
|
var/turf/simulated/floor/target = pick(possible_points)
|
||||||
|
|
||||||
|
switch(rand(1,3))
|
||||||
|
if(1)
|
||||||
|
//src << "Space"
|
||||||
|
halimage = image('space.dmi',target,"[rand(1,25)]",TURF_LAYER)
|
||||||
|
if(2)
|
||||||
|
//src << "Fire"
|
||||||
|
halimage = image('fire.dmi',target,"1",TURF_LAYER)
|
||||||
|
if(3)
|
||||||
|
//src << "C4"
|
||||||
|
halimage = image('syndieweapons.dmi',target,"c4small_1",OBJ_LAYER+0.01)
|
||||||
|
|
||||||
|
|
||||||
|
if(client) client.images += halimage
|
||||||
|
spawn(rand(10,50)) //Only seen for a brief moment.
|
||||||
|
if(client) client.images -= halimage
|
||||||
|
halimage = null
|
||||||
|
|
||||||
|
|
||||||
|
if(41 to 65)
|
||||||
|
//Strange audio
|
||||||
|
src << "Strange Audio"
|
||||||
|
switch(rand(1,12))
|
||||||
|
if(1) src << 'airlock.ogg'
|
||||||
|
if(2)
|
||||||
|
if(prob(50))src << 'Explosion1.ogg'
|
||||||
|
else src << 'Explosion2.ogg'
|
||||||
|
if(3) src << 'explosionfar.ogg'
|
||||||
|
if(4) src << 'Glassbr1.ogg'
|
||||||
|
if(5) src << 'Glassbr2.ogg'
|
||||||
|
if(6) src << 'Glassbr3.ogg'
|
||||||
|
if(7) src << 'twobeep.ogg'
|
||||||
|
if(8) src << 'windowdoor.ogg'
|
||||||
|
if(9)
|
||||||
|
//To make it more realistic, I added two gunshots (enough to kill)
|
||||||
|
src << 'Gunshot.ogg'
|
||||||
|
spawn(rand(10,30))
|
||||||
|
src << 'Gunshot.ogg'
|
||||||
|
if(10) src << 'smash.ogg'
|
||||||
|
if(11)
|
||||||
|
//Same as above, but with tasers.
|
||||||
|
src << 'Taser.ogg'
|
||||||
|
spawn(rand(10,30))
|
||||||
|
src << 'Taser.ogg'
|
||||||
|
//Rare audio
|
||||||
|
if(12)
|
||||||
|
switch(rand(1,4))
|
||||||
|
if(1) src << 'ghost.ogg'
|
||||||
|
if(2) src << 'ghost2.ogg'
|
||||||
|
if(3) src << 'Heart Beat.ogg'
|
||||||
|
if(4) src << 'screech.ogg'
|
||||||
|
handling_hal = 0
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*obj/machinery/proc/mockpanel(list/buttons,start_txt,end_txt,list/mid_txts)
|
||||||
|
|
||||||
|
if(!mocktxt)
|
||||||
|
|
||||||
|
mocktxt = ""
|
||||||
|
|
||||||
|
var/possible_txt = list("Launch Escape Pods","Self-Destruct Sequence","\[Swipe ID\]","De-Monkify",\
|
||||||
|
"Reticulate Splines","Plasma","Open Valve","Lockdown","Nerf Airflow","Kill Traitor","Nihilism",\
|
||||||
|
"OBJECTION!","Arrest Stephen Bowman","Engage Anti-Trenna Defenses","Increase Captain IQ","Retrieve Arms",\
|
||||||
|
"Play Charades","Oxygen","Inject BeAcOs","Ninja Lizards","Limit Break","Build Sentry")
|
||||||
|
|
||||||
|
if(mid_txts)
|
||||||
|
while(mid_txts.len)
|
||||||
|
var/mid_txt = pick(mid_txts)
|
||||||
|
mocktxt += mid_txt
|
||||||
|
mid_txts -= mid_txt
|
||||||
|
|
||||||
|
while(buttons.len)
|
||||||
|
|
||||||
|
var/button = pick(buttons)
|
||||||
|
|
||||||
|
var/button_txt = pick(possible_txt)
|
||||||
|
|
||||||
|
mocktxt += "<a href='?src=\ref[src];[button]'>[button_txt]</a><br>"
|
||||||
|
|
||||||
|
buttons -= button
|
||||||
|
possible_txt -= button_txt
|
||||||
|
|
||||||
|
return start_txt + mocktxt + end_txt + "</TT></BODY></HTML>"
|
||||||
|
|
||||||
|
proc/check_panel(mob/M)
|
||||||
|
if (istype(M, /mob/living/carbon/human) || istype(M, /mob/living/silicon/ai))
|
||||||
|
if(M.hallucination < 15)
|
||||||
|
return 1
|
||||||
|
return 0*/
|
||||||
81
code/modules/flufftext/TextFilters.dm
Normal file
81
code/modules/flufftext/TextFilters.dm
Normal file
@@ -0,0 +1,81 @@
|
|||||||
|
proc/Intoxicated(phrase)
|
||||||
|
phrase = html_decode(phrase)
|
||||||
|
var
|
||||||
|
leng=lentext(phrase)
|
||||||
|
counter=lentext(phrase)
|
||||||
|
newphrase="";newletter=""
|
||||||
|
while(counter>=1)
|
||||||
|
newletter=copytext(phrase,(leng-counter)+1,(leng-counter)+2)
|
||||||
|
if(rand(1,3)==3)
|
||||||
|
if(lowertext(newletter)=="o") newletter="u"
|
||||||
|
if(lowertext(newletter)=="s") newletter="ch"
|
||||||
|
if(lowertext(newletter)=="a") newletter="ah"
|
||||||
|
if(lowertext(newletter)=="c") newletter="k"
|
||||||
|
switch(rand(1,7))
|
||||||
|
if(1,3,5,8) newletter="[lowertext(newletter)]"
|
||||||
|
if(2,4,6,15) newletter="[uppertext(newletter)]"
|
||||||
|
if(7) newletter+="'"
|
||||||
|
//if(9,10) newletter="<b>[newletter]</b>"
|
||||||
|
//if(11,12) newletter="<big>[newletter]</big>"
|
||||||
|
//if(13) newletter="<small>[newletter]</small>"
|
||||||
|
newphrase+="[newletter]";counter-=1
|
||||||
|
return newphrase
|
||||||
|
|
||||||
|
proc/NewStutter(phrase,stunned)
|
||||||
|
phrase = html_decode(phrase)
|
||||||
|
|
||||||
|
var/list/split_phrase = dd_text2list(phrase," ") //Split it up into words.
|
||||||
|
|
||||||
|
var/list/unstuttered_words = split_phrase.Copy()
|
||||||
|
var/i = rand(1,3)
|
||||||
|
if(stunned) i = split_phrase.len
|
||||||
|
for(,i > 0,i--) //Pick a few words to stutter on.
|
||||||
|
|
||||||
|
if (!unstuttered_words.len)
|
||||||
|
break
|
||||||
|
var/word = pick(unstuttered_words)
|
||||||
|
unstuttered_words -= word //Remove from unstuttered words so we don't stutter it again.
|
||||||
|
var/index = split_phrase.Find(word) //Find the word in the split phrase so we can replace it.
|
||||||
|
|
||||||
|
//Search for dipthongs (two letters that make one sound.)
|
||||||
|
var/first_sound = copytext(word,1,3)
|
||||||
|
var/first_letter = copytext(word,1,2)
|
||||||
|
if(lowertext(first_sound) in list("ch","th","sh"))
|
||||||
|
first_letter = first_sound
|
||||||
|
|
||||||
|
//Repeat the first letter to create a stutter.
|
||||||
|
var/rnum = rand(1,3)
|
||||||
|
switch(rnum)
|
||||||
|
if(1)
|
||||||
|
word = "[first_letter]-[word]"
|
||||||
|
if(2)
|
||||||
|
word = "[first_letter]-[first_letter]-[word]"
|
||||||
|
if(3)
|
||||||
|
word = "[first_letter]-[word]"
|
||||||
|
|
||||||
|
split_phrase[index] = word
|
||||||
|
|
||||||
|
return sanitize(dd_list2text(split_phrase," "))
|
||||||
|
|
||||||
|
proc/Stagger(mob/M,d) //Technically not a filter, but it relates to drunkenness.
|
||||||
|
step(M, pick(d,turn(d,90),turn(d,-90)))
|
||||||
|
|
||||||
|
proc/Ellipsis(original_msg, chance = 50)
|
||||||
|
if(chance <= 0) return "..."
|
||||||
|
if(chance >= 100) return original_msg
|
||||||
|
|
||||||
|
var/list
|
||||||
|
words = dd_text2list(original_msg," ")
|
||||||
|
new_words = list()
|
||||||
|
|
||||||
|
var/new_msg = ""
|
||||||
|
|
||||||
|
for(var/w in words)
|
||||||
|
if(prob(chance))
|
||||||
|
new_words += "..."
|
||||||
|
else
|
||||||
|
new_words += w
|
||||||
|
|
||||||
|
new_msg = dd_list2text(new_words," ")
|
||||||
|
|
||||||
|
return new_msg
|
||||||
@@ -61,6 +61,7 @@
|
|||||||
/mob/living/carbon/human/dummy
|
/mob/living/carbon/human/dummy
|
||||||
real_name = "Test Dummy"
|
real_name = "Test Dummy"
|
||||||
nodamage = 1
|
nodamage = 1
|
||||||
|
universal_speak = 1
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -253,7 +253,7 @@
|
|||||||
var/datum/gas_mixture/environment = loc.return_air()
|
var/datum/gas_mixture/environment = loc.return_air()
|
||||||
var/datum/air_group/breath
|
var/datum/air_group/breath
|
||||||
// HACK NEED CHANGING LATER
|
// HACK NEED CHANGING LATER
|
||||||
if(health < (config.health_threshold_dead + 50)) //PEOPLE ARE NOT DYING, DAMMIT
|
if(health < config.health_threshold_dead)
|
||||||
losebreath++
|
losebreath++
|
||||||
|
|
||||||
if(losebreath>0 && prob(90)) //Suffocating so do not take a breath
|
if(losebreath>0 && prob(90)) //Suffocating so do not take a breath
|
||||||
@@ -630,7 +630,7 @@
|
|||||||
apply_damage(0.4*discomfort, BURN, "r_arm")
|
apply_damage(0.4*discomfort, BURN, "r_arm")
|
||||||
|
|
||||||
handle_chemicals_in_body()
|
handle_chemicals_in_body()
|
||||||
if(reagents) reagents.metabolize(src)
|
if(reagents && stat != 2) reagents.metabolize(src)
|
||||||
|
|
||||||
if(mutantrace == "plant") //couldn't think of a better place to place it, since it handles nutrition -- Urist
|
if(mutantrace == "plant") //couldn't think of a better place to place it, since it handles nutrition -- Urist
|
||||||
var/light_amount = 0 //how much light there is in the place, affects receiving nutrition and healing
|
var/light_amount = 0 //how much light there is in the place, affects receiving nutrition and healing
|
||||||
@@ -755,6 +755,7 @@
|
|||||||
lying = 1
|
lying = 1
|
||||||
stat = 0
|
stat = 0
|
||||||
if (paralysis > 0)
|
if (paralysis > 0)
|
||||||
|
handle_dreams()
|
||||||
AdjustParalysis(-1)
|
AdjustParalysis(-1)
|
||||||
blinded = 1
|
blinded = 1
|
||||||
lying = 1
|
lying = 1
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/mob/living/carbon/var/traumatic_shock = 0
|
/mob/living/var/traumatic_shock = 0
|
||||||
/mob/living/carbon/var/shock_stage = 0
|
/mob/living/carbon/var/shock_stage = 0
|
||||||
|
|
||||||
// proc to find out in how much pain the mob is at the moment
|
// proc to find out in how much pain the mob is at the moment
|
||||||
|
|||||||
@@ -136,7 +136,7 @@
|
|||||||
if( !message_mode && (disease_symptoms & DISEASE_WHISPER))
|
if( !message_mode && (disease_symptoms & DISEASE_WHISPER))
|
||||||
message_mode = "whisper"
|
message_mode = "whisper"
|
||||||
|
|
||||||
if(src.stunned > 0)
|
if(src.stunned > 0 && (!(traumatic_shock > 61) && prob(50)))
|
||||||
message_mode = "" //Stunned people shouldn't be able to physically turn on their radio/hold down the button to speak into it
|
message_mode = "" //Stunned people shouldn't be able to physically turn on their radio/hold down the button to speak into it
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -793,19 +793,19 @@
|
|||||||
spawn()
|
spawn()
|
||||||
if(key)
|
if(key)
|
||||||
if(istype(src, /mob/living/silicon))
|
if(istype(src, /mob/living/silicon))
|
||||||
robogibs(loc, viruses)
|
robogibs(loc, viruses, name)
|
||||||
else if (istype(src, /mob/living/carbon/alien))
|
else if (istype(src, /mob/living/carbon/alien))
|
||||||
xgibs(loc, viruses)
|
xgibs(loc, viruses, name)
|
||||||
else
|
else
|
||||||
gibs(loc, viruses)
|
gibs(loc, viruses, name, dna)
|
||||||
|
|
||||||
else
|
else
|
||||||
if(istype(src, /mob/living/silicon))
|
if(istype(src, /mob/living/silicon))
|
||||||
robogibs(loc, viruses)
|
robogibs(loc, viruses)
|
||||||
else if(istype(src, /mob/living/carbon/alien))
|
else if(istype(src, /mob/living/carbon/alien))
|
||||||
xgibs(loc, viruses)
|
xgibs(loc, viruses, name)
|
||||||
else
|
else
|
||||||
gibs(loc, viruses)
|
gibs(loc, viruses, name, dna)
|
||||||
sleep(15)
|
sleep(15)
|
||||||
for(var/obj/item/I in src.contents)
|
for(var/obj/item/I in src.contents)
|
||||||
I.loc = get_turf(src)
|
I.loc = get_turf(src)
|
||||||
|
|||||||
@@ -258,7 +258,7 @@
|
|||||||
job_master.EquipRank(character, rank, 1)
|
job_master.EquipRank(character, rank, 1)
|
||||||
EquipCustomItems(character)
|
EquipCustomItems(character)
|
||||||
character.loc = pick(latejoin)
|
character.loc = pick(latejoin)
|
||||||
character.be_syndicate = src.preferences.be_special & BE_TRAITOR
|
character.be_syndicate = src.preferences.be_special
|
||||||
ticker.mode.latespawn(character)
|
ticker.mode.latespawn(character)
|
||||||
AnnounceArrival(character, rank)
|
AnnounceArrival(character, rank)
|
||||||
|
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ SQL_ENABLED 0
|
|||||||
## set to 0 to disable that mode
|
## set to 0 to disable that mode
|
||||||
## Cult mode is in alpha test, enable at your own risk
|
## Cult mode is in alpha test, enable at your own risk
|
||||||
PROBABILITY EXTENDED 0
|
PROBABILITY EXTENDED 0
|
||||||
PROBABILITY TRAITOR 4
|
PROBABILITY TRAITOR 3
|
||||||
PROBABILITY METEOR 0
|
PROBABILITY METEOR 0
|
||||||
PROBABILITY MALFUNCTION 0
|
PROBABILITY MALFUNCTION 0
|
||||||
PROBABILITY BLOB 1
|
PROBABILITY BLOB 1
|
||||||
@@ -54,6 +54,7 @@ PROBABILITY CHANGELING 0
|
|||||||
PROBABILITY CULT 1
|
PROBABILITY CULT 1
|
||||||
PROBABILITY MONKEY 0
|
PROBABILITY MONKEY 0
|
||||||
PROBABILITY TRAITORCHAN 0
|
PROBABILITY TRAITORCHAN 0
|
||||||
|
PROBABILITY EXTEND-A-TRAITORMONGOUS 3
|
||||||
## if amount of traitors scales or not
|
## if amount of traitors scales or not
|
||||||
TRAITOR_SCALING
|
TRAITOR_SCALING
|
||||||
|
|
||||||
|
|||||||
BIN
icons/effects/footprints.dmi
Normal file
BIN
icons/effects/footprints.dmi
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.7 KiB |
BIN
icons/obj/syndieweapons.dmi
Normal file
BIN
icons/obj/syndieweapons.dmi
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 895 B |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
sound/effects/Heart Beat.ogg
Normal file
BIN
sound/effects/Heart Beat.ogg
Normal file
Binary file not shown.
BIN
sound/mecha/LongNanoActivation.ogg
Normal file
BIN
sound/mecha/LongNanoActivation.ogg
Normal file
Binary file not shown.
BIN
sound/mecha/LongSyndiActivation.ogg
Normal file
BIN
sound/mecha/LongSyndiActivation.ogg
Normal file
Binary file not shown.
BIN
sound/mecha/critdestrnano.ogg
Normal file
BIN
sound/mecha/critdestrnano.ogg
Normal file
Binary file not shown.
BIN
sound/mecha/critdestrsyndi.ogg
Normal file
BIN
sound/mecha/critdestrsyndi.ogg
Normal file
Binary file not shown.
BIN
sound/mecha/critnano.ogg
Normal file
BIN
sound/mecha/critnano.ogg
Normal file
Binary file not shown.
BIN
sound/mecha/hydraulic.ogg
Normal file
BIN
sound/mecha/hydraulic.ogg
Normal file
Binary file not shown.
BIN
sound/mecha/imag_enhnano.ogg
Normal file
BIN
sound/mecha/imag_enhnano.ogg
Normal file
Binary file not shown.
BIN
sound/mecha/imag_enhsyndi.ogg
Normal file
BIN
sound/mecha/imag_enhsyndi.ogg
Normal file
Binary file not shown.
BIN
sound/mecha/internaldmgalarm.ogg
Normal file
BIN
sound/mecha/internaldmgalarm.ogg
Normal file
Binary file not shown.
BIN
sound/mecha/lowpower.ogg
Normal file
BIN
sound/mecha/lowpower.ogg
Normal file
Binary file not shown.
BIN
sound/mecha/lowpowernano.ogg
Normal file
BIN
sound/mecha/lowpowernano.ogg
Normal file
Binary file not shown.
BIN
sound/mecha/lowpowersyndi.ogg
Normal file
BIN
sound/mecha/lowpowersyndi.ogg
Normal file
Binary file not shown.
BIN
sound/mecha/mechambience.ogg
Normal file
BIN
sound/mecha/mechambience.ogg
Normal file
Binary file not shown.
BIN
sound/mecha/mechdrill.ogg
Normal file
BIN
sound/mecha/mechdrill.ogg
Normal file
Binary file not shown.
BIN
sound/mecha/nominalnano.ogg
Normal file
BIN
sound/mecha/nominalnano.ogg
Normal file
Binary file not shown.
BIN
sound/mecha/nominalsyndi.ogg
Normal file
BIN
sound/mecha/nominalsyndi.ogg
Normal file
Binary file not shown.
BIN
sound/mecha/powerup.ogg
Normal file
BIN
sound/mecha/powerup.ogg
Normal file
Binary file not shown.
BIN
sound/mecha/weapdestrnano.ogg
Normal file
BIN
sound/mecha/weapdestrnano.ogg
Normal file
Binary file not shown.
BIN
sound/mecha/weapdestrsyndi.ogg
Normal file
BIN
sound/mecha/weapdestrsyndi.ogg
Normal file
Binary file not shown.
BIN
sound/voice/AISyndiHack.ogg
Normal file
BIN
sound/voice/AISyndiHack.ogg
Normal file
Binary file not shown.
BIN
sound/voice/syndicate intro.ogg
Normal file
BIN
sound/voice/syndicate intro.ogg
Normal file
Binary file not shown.
Reference in New Issue
Block a user