Gang Mode

This commit is contained in:
ikarrus
2014-08-30 23:17:14 -06:00
parent 9a7142e705
commit 4c801434a8
29 changed files with 758 additions and 60 deletions
+1
View File
@@ -27,3 +27,4 @@
#define BE_BLOB 512
#define BE_NINJA 1024
#define BE_MONKEY 2048
#define BE_GANG 4096
+2 -1
View File
@@ -45,5 +45,6 @@ var/list/be_special_flags = list(
"Cultist" = BE_CULTIST,
"Blob" = BE_BLOB,
"Ninja" = BE_NINJA,
"Monkey" = BE_MONKEY
"Monkey" = BE_MONKEY,
"Gang" = BE_GANG
)
+135 -2
View File
@@ -161,6 +161,10 @@ datum/mind
remove_objectives()
remove_antag_equip()
proc/remove_gang()
ticker.mode.remove_gangster(src,0,1)
remove_objectives()
proc/remove_malf()
if(src in ticker.mode.malf_ai)
ticker.mode.malf_ai -= src
@@ -196,6 +200,7 @@ datum/mind
remove_cultist()
remove_rev()
remove_malf()
remove_gang()
proc/show_memory(mob/recipient, window=1)
if(!recipient)
@@ -224,6 +229,7 @@ datum/mind
var/list/sections = list(
"revolution",
"gang",
"cult",
"wizard",
"changeling",
@@ -243,7 +249,7 @@ datum/mind
if (assigned_role in command_positions)
text += "<b>HEAD</b>|loyal|employee|headrev|rev"
else if (src in ticker.mode.head_revolutionaries)
text = "head|loyal|<a href='?src=\ref[src];revolution=clear'>employee</a>|<b>HEADREV</b>|<a href='?src=\ref[src];revolution=rev'>rev</a>"
text += "head|loyal|<a href='?src=\ref[src];revolution=clear'>employee</a>|<b>HEADREV</b>|<a href='?src=\ref[src];revolution=rev'>rev</a>"
text += "<br>Flash: <a href='?src=\ref[src];revolution=flash'>give</a>"
var/list/L = current.get_contents()
@@ -267,6 +273,55 @@ datum/mind
text += "head|loyal|<b>EMPLOYEE</b>|<a href='?src=\ref[src];revolution=headrev'>headrev</a>|<a href='?src=\ref[src];revolution=rev'>rev</a>"
sections["revolution"] = text
/** GANG ***/
text = "gang"
if (ticker.mode.config_tag=="gang")
text = uppertext(text)
text = "<i><b>[text]</b></i>: "
if (src in ticker.mode.A_bosses)
text += "loyal|<a href='?src=\ref[src];gang=clear'>none</a>|<B>(A)</B> <a href='?src=\ref[src];gang=agang'>gangster</a> <b>BOSS</b>|(B) <a href='?src=\ref[src];gang=bgang'>gangster</a> <a href='?src=\ref[src];gang=bboss'>boss</a>"
text += "<br>Flash & Recaller: <a href='?src=\ref[src];gang=equip'>give</a>"
var/list/L = current.get_contents()
var/obj/item/device/flash/flash = locate() in L
if (flash)
if(!flash.broken)
text += "|<a href='?src=\ref[src];gang=takeequip'>take equipment</a>."
else
text += "|<a href='?src=\ref[src];gang=takeequip'>take equipment</a>|<a href='?src=\ref[src];gang=repairflash'>repair flash</a>."
else
text += "."
if (objectives.len==0)
text += "<br>Objectives are empty! <a href='?src=\ref[src];gang=autoobjective'>Set to kill all rival gang leaders</a>."
else if (src in ticker.mode.B_bosses)
text += "loyal|<a href='?src=\ref[src];gang=clear'>none</a>|(A) <a href='?src=\ref[src];gang=agang'>gangster</a> <a href='?src=\ref[src];gang=aboss'>boss</a>|<B>(B)</B> <a href='?src=\ref[src];gang=bgang'>gangster</a> <b>BOSS</b>"
text += "<br>Flash & Recaller: <a href='?src=\ref[src];gang=equip'>give</a>"
var/list/L = current.get_contents()
var/obj/item/device/flash/flash = locate() in L
if (flash)
if(!flash.broken)
text += "<br><a href='?src=\ref[src];gang=takeequip'>take equipment</a>."
else
text += "<br><a href='?src=\ref[src];gang=takeequip'>take equipment</a>|<a href='?src=\ref[src];gang=repairflash'>repair flash</a>."
else
text += "."
if (objectives.len==0)
text += "<br>Objectives are empty! <a href='?src=\ref[src];gang=autoobjective'>Set to kill all rival gang leaders</a>."
else if (src in ticker.mode.A_gangsters)
text += "loyal|<a href='?src=\ref[src];gang=clear'>none</a>|<B>(A) GANGSTER</B> <a href='?src=\ref[src];gang=aboss'>boss</a>|(B) <a href='?src=\ref[src];gang=bgang'>gangster</a> <a href='?src=\ref[src];gang=bboss'>boss</a>"
else if (src in ticker.mode.B_gangsters)
text += "loyal|<a href='?src=\ref[src];gang=clear'>none</a>|(A) <a href='?src=\ref[src];gang=agang'>gangster</a> <a href='?src=\ref[src];gang=aboss'>boss</a>|<B>(B) GANGSTER</B> <a href='?src=\ref[src];gang=bboss'>boss</a>"
else if(isloyal(current))
text += "<B>LOYAL</B>|none|(A) <a href='?src=\ref[src];gang=agang'>gangster</a> <a href='?src=\ref[src];gang=aboss'>boss</a>|(B) <a href='?src=\ref[src];gang=bgang'>gangster</a> <a href='?src=\ref[src];gang=bboss'>boss</a>"
else
text += "loyal|<B>NONE</B>|(A) <a href='?src=\ref[src];gang=agang'>gangster</a> <a href='?src=\ref[src];gang=aboss'>boss</a>|(B) <a href='?src=\ref[src];gang=bgang'>gangster</a> <a href='?src=\ref[src];gang=bboss'>boss</a>"
sections["gang"] = text
/** CULT ***/
text = "cult"
if (ticker.mode.config_tag=="cult")
@@ -448,7 +503,7 @@ datum/mind
out += "<a href='?src=\ref[src];obj_announce=1'>Announce objectives</a><br><br>"
usr << browse(out, "window=edit_memory[src]")
usr << browse(out, "window=edit_memory[src];size=400x500")
Topic(href, href_list)
if(!check_rights(R_ADMIN)) return
@@ -684,6 +739,84 @@ datum/mind
if (fail)
usr << "\red Reequipping revolutionary goes wrong!"
else if (href_list["gang"])
switch(href_list["gang"])
if("clear")
remove_gang()
message_admins("[key_name_admin(usr)] has de-gang'ed [current].")
log_admin("[key_name(usr)] has de-gang'ed [current].")
if("agang")
if(src in ticker.mode.A_gangsters)
return
ticker.mode.remove_gangster(src, 0, 2)
ticker.mode.add_gangster(src,"A",0)
message_admins("[key_name_admin(usr)] has added [current] to the [ticker.mode.A_name] Gang (A).")
log_admin("[key_name(usr)] has added [current] to the [ticker.mode.A_name] Gang (A).")
if("aboss")
if(src in ticker.mode.A_bosses)
return
ticker.mode.remove_gangster(src, 0, 2)
ticker.mode.A_bosses += src
src.special_role = "[ticker.mode.A_name] Gang (A) Boss"
ticker.mode.update_gang_icons_added(src, "A")
current << "<FONT size=3 color=red><B>You are a [ticker.mode.A_name] Gang Boss!</B></FONT>"
message_admins("[key_name_admin(usr)] has added [current] to the [ticker.mode.A_name] Gang (A) leadership.")
log_admin("[key_name(usr)] has added [current] to the [ticker.mode.A_name] Gang (A) leadership.")
if("bgang")
if(src in ticker.mode.B_gangsters)
return
ticker.mode.remove_gangster(src, 0, 2)
ticker.mode.add_gangster(src,"B",0)
message_admins("[key_name_admin(usr)] has added [current] to the [ticker.mode.B_name] Gang (B).")
log_admin("[key_name(usr)] has added [current] to the [ticker.mode.B_name] Gang (B).")
if("bboss")
if(src in ticker.mode.B_bosses)
return
ticker.mode.remove_gangster(src, 0, 2)
ticker.mode.B_bosses += src
src.special_role = "[ticker.mode.B_name] Gang (B) Boss"
ticker.mode.update_gang_icons_added(src, "B")
current << "<FONT size=3 color=red><B>You are a [ticker.mode.B_name] Gang Boss!</B></FONT>"
message_admins("[key_name_admin(usr)] has added [current] to the [ticker.mode.B_name] Gang (B) leadership.")
log_admin("[key_name(usr)] has added [current] to the [ticker.mode.B_name] Gang (B) leadership.")
if("autoobjective")
ticker.mode.forge_gang_objectives(src)
ticker.mode.greet_gang(src,0)
usr << "<span class='info>The objectives for gang war have been generated and shown to [key]</span>"
if("equip")
switch(ticker.mode.equip_gang(current))
if(2)
usr << "<span class='warning'>Unable to equip flash!</span>"
if(1)
usr << "<span class='warning'>Unable to equip recaller!</span>"
if(0)
usr << "<span class='warning'>Unable to equip both flash and recaller!</span>"
if("takeequip")
var/list/L = current.get_contents()
var/obj/item/device/flash/flash = locate() in L
if (!flash)
usr << "\red Deleting flash failed!"
qdel(flash)
var/obj/item/device/recaller/recaller = locate() in L
if (!recaller)
usr << "\red Deleting recaller failed!"
qdel(recaller)
if("repairflash")
var/list/L = current.get_contents()
var/obj/item/device/flash/flash = locate() in L
if (!flash)
usr << "\red Repairing flash failed!"
else
flash.broken = 0
else if (href_list["cult"])
switch(href_list["cult"])
if("clear")
+1
View File
@@ -225,6 +225,7 @@
if(BE_OPERATIVE) roletext="operative"
if(BE_WIZARD) roletext="wizard"
if(BE_REV) roletext="revolutionary"
if(BE_GANG) roletext="gangster"
if(BE_CULTIST) roletext="cultist"
if(BE_MONKEY) roletext="monkey"
+447
View File
@@ -0,0 +1,447 @@
//gang.dm
//Gang War Game Mode
/datum/game_mode
var/list/datum/mind/A_bosses = list() //gang A bosses
var/list/datum/mind/A_gangsters = list() //gang A Members
var/list/datum/mind/B_bosses = list() //gang B bosses
var/list/datum/mind/B_gangsters = list() //gang B Members
var/A_name = "Waffle"
var/B_name = "Donk"
/datum/game_mode/gang
name = "gang war"
config_tag = "gang"
antag_flag = BE_GANG
restricted_jobs = list("Security Officer", "Warden", "Detective", "AI", "Cyborg","Captain", "Head of Personnel", "Head of Security", "Chief Engineer", "Research Director", "Chief Medical Officer")
required_players = 20
required_enemies = 2
recommended_enemies = 4
var/finished = 0
var/checkwin_counter = 0
///////////////////////////
//Announces the game type//
///////////////////////////
/datum/game_mode/gang/announce()
world << "<B>The current game mode is - Gang War!</B>"
world << "<B>A violent turf war has erupted on the station!<BR>\nGangsters - Take over the station by killing the rival gang's bosses! Recruit gangsters by flashing them! <BR>\nSecurity - Protect the Crew! Identify and stop the mob bosses!</B>"
///////////////////////////////////////////////////////////////////////////////
//Gets the round setup, cancelling if there's not enough players at the start//
///////////////////////////////////////////////////////////////////////////////
/datum/game_mode/gang/pre_setup()
var/gang_name_pool = list("Clandestine", "Prima", "Blue", "Zero-G", "Max", "Blasto", "Waffle", "North", "Omni", "Newton", "Cyber", "Donk", "Gene", "Gib")
A_name = pick(gang_name_pool)
gang_name_pool -= A_name
B_name = pick(gang_name_pool)
if(config.protect_roles_from_antagonist)
restricted_jobs += protected_jobs
for(var/datum/mind/player in antag_candidates)
for(var/job in restricted_jobs)//Removing heads and such from the list
if(player.assigned_role == job)
antag_candidates -= player
if(antag_candidates.len > 2)
assign_bosses()
if(antag_candidates.len > 20)
assign_bosses()
if(!A_bosses.len || !B_bosses.len)
return 0
return 1
/datum/game_mode/gang/post_setup()
spawn(rand(10,100))
for(var/datum/mind/boss_mind in A_bosses)
update_gang_icons_added(boss_mind, "A")
forge_gang_objectives(boss_mind, "A")
greet_gang(boss_mind)
equip_gang(boss_mind.current)
for(var/datum/mind/boss_mind in B_bosses)
update_gang_icons_added(boss_mind, "B")
forge_gang_objectives(boss_mind, "B")
greet_gang(boss_mind)
equip_gang(boss_mind.current)
modePlayer += A_bosses
modePlayer += B_bosses
..()
/datum/game_mode/gang/process()
checkwin_counter++
if(checkwin_counter >= 5)
if(!finished)
ticker.mode.check_win()
checkwin_counter = 0
return 0
/datum/game_mode/gang/proc/assign_bosses()
var/datum/mind/boss = pick(antag_candidates)
A_bosses += boss
antag_candidates -= boss
boss.special_role = "[A_name] Gang (A) Boss"
log_game("[boss.key] (ckey) has been selected as a boss for the [A_name] Gang (A)")
boss = pick(antag_candidates)
B_bosses += boss
antag_candidates -= boss
boss.special_role = "[B_name] Gang (B) Boss"
log_game("[boss.key] (ckey) has been selected as a boss for the [B_name] Gang (B)")
/datum/game_mode/proc/forge_gang_objectives(var/datum/mind/boss_mind)
var/datum/objective/rival_obj = new
rival_obj.owner = boss_mind
rival_obj.explanation_text = "Assassinate or exile the [(boss_mind in A_bosses) ? B_name : A_name] Gang's bosses."
boss_mind.objectives += rival_obj
/datum/game_mode/proc/greet_gang(var/datum/mind/boss_mind, var/you_are=1)
var/obj_count = 1
if (you_are)
boss_mind.current << "<FONT size=3 color=red><B>You are a [(boss_mind in A_bosses) ? A_name : B_name] Gang Boss!</B></FONT>"
for(var/datum/objective/objective in boss_mind.objectives)
boss_mind.current << "<B>Objective #[obj_count]</B>: [objective.explanation_text]"
obj_count++
///////////////////////////////////////////////////////////////////////////
//This equips the bosses with their gear, and makes the clown not clumsy//
///////////////////////////////////////////////////////////////////////////
/datum/game_mode/proc/equip_gang(mob/living/carbon/human/mob)
if(!istype(mob))
return
if (mob.mind)
if (mob.mind.assigned_role == "Clown")
mob << "Your training has allowed you to overcome your clownish nature, allowing you to wield weapons without harming yourself."
mob.mutations.Remove(CLUMSY)
var/obj/item/device/flash/T = new(mob)
var/obj/item/device/recaller/recaller = new(mob)
var/list/slots = list (
"backpack" = slot_in_backpack,
"left pocket" = slot_l_store,
"right pocket" = slot_r_store,
"left hand" = slot_l_hand,
"right hand" = slot_r_hand,
)
. = 0
var/where = mob.equip_in_one_of_slots(T, slots)
if (!where)
mob << "Your Syndicate benefactors were unfortunately unable to get you a flash."
else
mob << "The flash in your [where] will help you to persuade the crew to work for you. Keep in mind that your underlings can only identify their bosses, but not each other."
. += 1
var/where2 = mob.equip_in_one_of_slots(recaller, slots)
if (!where2)
mob << "Your Syndicate benefactors were unfortunately unable to get you a Recaller."
else
mob << "The Recaller in your [where2] will allow you to prevent the station from prematurely evacuating. Use it to recall the emergency shuttle from anywhere on the station."
. += 2
mob.update_icons()
return .
/////////////////////////////////////////////
//Checks if the either gang have won or not//
/////////////////////////////////////////////
/datum/game_mode/gang/check_win()
var/A_victory = check_gang_victory(B_bosses) //Check if B bosses are dead or exiled
var/B_victory = check_gang_victory(A_bosses) //Check if A bosses are dead or exiled
if(A_victory && B_victory)
finished = "Draw" //Both teams fail. Allow for draws in case they're all incapacitated at the same time.
else if(A_victory)
finished = "A" //Gang A wins
else if(B_victory)
finished = "B" //Gang B wins
///////////////////////////////
//Checks if the round is over//
///////////////////////////////
/datum/game_mode/gang/check_finished()
if(finished)
return finished
return 0
///////////////////////////////////////////
//Deals with converting players to a gang//
///////////////////////////////////////////
/datum/game_mode/proc/add_gangster(datum/mind/gangster_mind, var/gang, var/check = 1)
if(check && isloyal(gangster_mind.current)) //Check to see if the potential gangster is implanted
return 0
if((gangster_mind in A_bosses) || (gangster_mind in A_gangsters) || (gangster_mind in B_bosses) || (gangster_mind in B_gangsters))
return 0
if(gang == "A")
A_gangsters += gangster_mind
else
B_gangsters += gangster_mind
gangster_mind.current << "<FONT size=3 color=red><B>You are now a member of the [gang=="A" ? A_name : B_name] Gang!</B></FONT>"
gangster_mind.current << "<font color='red'>Help your bosses take over the station by defeating their rivals. You can identify your bosses by the brown \"B\" icons, but only they know who is in your gang! Work with your boss to avoid attacking your own gang.</font>"
gangster_mind.current.attack_log += "\[[time_stamp()]\] <font color='red'>Has been converted to the [gang=="A" ? "[A_name] Gang (A)" : "[B_name] Gang (B)"]!</font>"
gangster_mind.special_role = "[gang=="A" ? "[A_name] Gang (A)" : "[B_name] Gang (B)"]"
update_gang_icons_added(gangster_mind,gang)
return 1
//////////////////////////////////////////////////////////////
//Deals with players going straight (Not a gangster anymore)//
//////////////////////////////////////////////////////////////
/datum/game_mode/proc/remove_gangster(datum/mind/gangster_mind, var/beingborged, var/silent)
var/gang
if(gangster_mind in A_bosses)
A_bosses -= gangster_mind
gang = "A"
else if(gangster_mind in A_gangsters)
A_gangsters -= gangster_mind
gang = "A"
else if(gangster_mind in B_bosses)
B_bosses -= gangster_mind
gang = "B"
else if(gangster_mind in B_gangsters)
B_gangsters -= gangster_mind
gang = "B"
if(!gang) //not a valid gangster
return
gangster_mind.special_role = null
if(silent < 2)
gangster_mind.current.attack_log += "\[[time_stamp()]\] <font color='red'>Has reformed and defected from the [gang=="A" ? "[A_name] Gang (A)" : "[B_name] Gang (B)"]!</font>"
if(beingborged)
if(!silent)
gangster_mind.current.visible_message("The frame beeps contentedly from the MMI before initalizing it.")
gangster_mind.current << "<FONT size=3 color=red><B>The frame's firmware detects and deletes your criminal behavior! You are no longer a gangster!</B></FONT>"
message_admins("[key_name_admin(gangster_mind.current)] <A HREF='?_src_=holder;adminmoreinfo=\ref[gangster_mind.current]'>?</A> has been borged while being a member of the [gang=="A" ? "[A_name] Gang (A)" : "[B_name] Gang (B)"] Gang.")
else
if(!silent)
gangster_mind.current.visible_message("[gangster_mind.current] looks like they've given up the life of crime!")
gangster_mind.current << "<FONT size=3 color=red><B>You have been reformed! You are no longer a gangster!</B></FONT>"
update_gang_icons_removed(gangster_mind)
/////////////////////////////////////////////////////////////////////////////////////////////////
//Keeps track of players having the correct icons////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////
/datum/game_mode/proc/update_all_gang_icons()
spawn(0)
var/list/all_gangsters = A_bosses + B_bosses + A_gangsters + B_gangsters
//Delete all gang icons
for(var/datum/mind/gang_mind in all_gangsters)
if(gang_mind.current)
if(gang_mind.current.client)
for(var/image/I in gang_mind.current.client.images)
if(I.icon_state == "gangster" || I.icon_state == "gang_boss")
del(I)
update_gang_icons("A")
update_gang_icons("B")
/datum/game_mode/proc/update_gang_icons(var/gang)
var/list/bosses
var/list/gangsters
if(gang == "A")
bosses = A_bosses
gangsters = A_gangsters
else if(gang == "B")
bosses = B_bosses
gangsters = B_gangsters
else
world << "ERROR: Invalid gang in update_gang_icons()"
//Update gang icons for boss' visions
for(var/datum/mind/boss_mind in bosses)
if(boss_mind.current)
if(boss_mind.current.client)
for(var/datum/mind/gangster_mind in gangsters)
if(gangster_mind.current)
var/I = image('icons/mob/mob.dmi', loc = gangster_mind.current, icon_state = "gangster")
boss_mind.current.client.images += I
for(var/datum/mind/boss2_mind in bosses)
if(boss2_mind.current)
var/I = image('icons/mob/mob.dmi', loc = boss2_mind.current, icon_state = "gang_boss")
boss_mind.current.client.images += I
//Update boss and self icons for gangsters' visions
for(var/datum/mind/gangster_mind in gangsters)
if(gangster_mind.current)
if(gangster_mind.current.client)
for(var/datum/mind/boss_mind in bosses)
if(boss_mind.current)
var/I = image('icons/mob/mob.dmi', loc = boss_mind.current, icon_state = "gang_boss")
gangster_mind.current.client.images += I
//Tag themselves to see
var/K
if(gangster_mind in bosses) //If the new gangster is a boss himself
K = image('icons/mob/mob.dmi', loc = gangster_mind.current, icon_state = "gang_boss")
else
K = image('icons/mob/mob.dmi', loc = gangster_mind.current, icon_state = "gangster")
gangster_mind.current.client.images += K
/////////////////////////////////////////////////
//Assigns icons when a new gangster is recruited//
/////////////////////////////////////////////////
/datum/game_mode/proc/update_gang_icons_added(datum/mind/recruit_mind, var/gang)
var/list/bosses
if(gang == "A")
bosses = A_bosses
else if(gang == "B")
bosses = B_bosses
if(!gang)
world << "ERROR: Invalid gang in update_gang_icons_added()"
spawn(0)
for(var/datum/mind/boss_mind in bosses)
//Tagging the new gangster for the bosses to see
if(boss_mind.current)
if(boss_mind.current.client)
var/I
if(recruit_mind in bosses) //If the new gangster is a boss himself
I = image('icons/mob/mob.dmi', loc = recruit_mind.current, icon_state = "gang_boss")
else
I = image('icons/mob/mob.dmi', loc = recruit_mind.current, icon_state = "gangster")
boss_mind.current.client.images += I
//Tagging every boss for the new gangster to see
if(recruit_mind.current)
if(recruit_mind.current.client)
var/image/J = image('icons/mob/mob.dmi', loc = boss_mind.current, icon_state = "gang_boss")
recruit_mind.current.client.images += J
//Tag themselves to see
if(recruit_mind.current)
if(recruit_mind.current.client)
var/K
if(recruit_mind in bosses) //If the new gangster is a boss himself
K = image('icons/mob/mob.dmi', loc = recruit_mind.current, icon_state = "gang_boss")
else
K = image('icons/mob/mob.dmi', loc = recruit_mind.current, icon_state = "gangster")
recruit_mind.current.client.images += K
////////////////////////////////////////
//Keeps track of deconverted gangsters//
////////////////////////////////////////
/datum/game_mode/proc/update_gang_icons_removed(datum/mind/defector_mind)
var/list/all_gangsters = A_bosses + B_bosses + A_gangsters + B_gangsters
spawn(0)
//Remove defector's icon from gangsters' visions
for(var/datum/mind/boss_mind in all_gangsters)
if(boss_mind.current)
if(boss_mind.current.client)
for(var/image/I in boss_mind.current.client.images)
if((I.icon_state == "gangster" || I.icon_state == "gang_boss") && I.loc == defector_mind.current)
del(I)
//Remove gang icons from defector's vision
if(defector_mind.current)
if(defector_mind.current.client)
for(var/image/I in defector_mind.current.client.images)
if(I.icon_state == "gangster" || I.icon_state == "gang_boss")
del(I)
///////////////////////////
//Checks for gang victory//
///////////////////////////
/datum/game_mode/gang/proc/check_gang_victory(var/list/boss_list)
if(!boss_list.len)
return 0
for(var/datum/mind/boss_mind in boss_list)
if(boss_mind.current)
if(boss_mind.current.stat == DEAD || !ishuman(boss_mind.current) || !boss_mind.current.ckey || !boss_mind.current.client)
return 1
var/turf/T = get_turf(boss_mind.current)
if(T && (T.z != 1)) //If they leave the station they count as dead for this
return 1
return 0
return 1
//////////////////////////////////////////////////////////////////////
//Announces the end of the game with all relavent information stated//
//////////////////////////////////////////////////////////////////////
/datum/game_mode/gang/declare_completion()
if(!finished)
world << "<FONT size=3 color=red><B>The station was evacuated before either gang could claim it!</B></FONT>"
if(finished == "Draw")
world << "<FONT size=3 color=red><B>All gang bosses have been killed or exiled!</B></FONT>"
else
world << "<FONT size=3 color=red><B>The [finished=="A" ? A_name : B_name] Gang defeated their rivals!</B></FONT>"
..()
return 1
/datum/game_mode/proc/auto_declare_completion_gang()
var/winner
var/datum/game_mode/gang/game_mode = ticker.mode
if(istype(game_mode))
winner = game_mode.finished
var/num_ganga = 0
var/list/agang = A_gangsters + A_bosses
for(var/datum/mind/agangster in agang)
if(agangster.current)
if(agangster.current in living_mob_list)
num_ganga++
var/num_gangb = 0
var/list/bgang = B_gangsters + B_bosses
for(var/datum/mind/bgangster in bgang)
if(bgangster.current)
if(bgangster.current in living_mob_list)
num_gangb++
if(A_bosses.len || A_gangsters.len)
if(winner == "A" || winner == "B")
world << "<br><font size=3><b>The [A_name] Gang was [winner=="A" ? "<font color=green>victorious!</font>" : "<font color=red>defeated.</font>"]</b></font>"
world << "[TAB][A_name] Gang strength: <B>[round((num_ganga/living_mob_list.len)*100, 0.1)]%</B>"
world << "<br><font size=2><b>The [A_name] Gang bosses were:</b></font>"
gang_membership_report(A_bosses)
world << "<br><font size=2><b>The [A_name] Gangsters were:</b></font>"
gang_membership_report(A_gangsters)
if(B_bosses.len || B_gangsters.len)
if(winner == "A" || winner == "B")
world << "<br><font size=3><b>The [B_name] Gang was [winner=="B" ? "<font color=green>victorious!</font>" : "<font color=red>defeated.</font>"]</b></font>"
world << "[TAB][B_name] Gang strength: <B>[round((num_gangb/living_mob_list.len)*100, 0.1)]%</B>"
world << "<br><font size=2><b>The [B_name] Gang bosses were:</b></font>"
gang_membership_report(B_bosses)
world << "<br><font size=2><b>The [B_name] Gangsters were:</b></font>"
gang_membership_report(B_gangsters)
/datum/game_mode/proc/gang_membership_report(var/list/membership)
var/text = ""
for(var/datum/mind/gang_mind in membership)
text += "<br><b>[gang_mind.key]</b> was <b>[gang_mind.name]</b> ("
if(gang_mind.current)
if(gang_mind.current.stat == DEAD)
text += "died"
else if(gang_mind.current.z != 1)
text += "fled the station"
else
text += "survived"
if(gang_mind.current.real_name != gang_mind.name)
text += " as <b>[gang_mind.current.real_name]</b>"
else
text += "body destroyed"
text += ")"
text += "<br>"
world << text
+8
View File
@@ -61,6 +61,10 @@
src.text = ""
src.build_rev(correct_person)
return src.text
if("gang")
src.text = ""
src.build_gang(correct_person)
return src.text
if("cult")
src.text = ""
src.build_cult(correct_person)
@@ -220,6 +224,10 @@
src.text += "<BR>However, if this information is acted on without substantial evidence, those responsible will face severe repercussions."
*/
/datum/intercept_text/proc/build_gang(datum/mind/correct_person)
src.text += "<BR><BR>Syndicate forces may be supplying opposing criminal organizations within your sector in an attempt at destabilizing our operations."
src.text += "Ensure law and order is maintained on the station and be on the lookout for violent confrontations between station factions."
src.text += "Forced labor on the mining asteroid is recommended for anyone convicted of heading a criminal organization."
/datum/intercept_text/proc/build_wizard(datum/mind/correct_person)
var/SWF_desc = pick(SWF_names)
+1 -1
View File
@@ -90,7 +90,7 @@ datum/objective/mutiny/check_completion()
datum/objective/mutiny/update_explanation_text()
..()
if(target && target.current)
explanation_text = "Assassinate [target.current.real_name], the [!target_role_type ? target.assigned_role : target.special_role]."
explanation_text = "Assassinate or exile [target.current.real_name], the [!target_role_type ? target.assigned_role : target.special_role]."
else
explanation_text = "Free Objective"
+28 -16
View File
@@ -79,10 +79,11 @@
rev_obj.explanation_text = "Assassinate [head_mind.name], the [head_mind.assigned_role]."
rev_mind.objectives += rev_obj
// equip_traitor(rev_mind.current, 1) //changing how revs get assigned their uplink so they can get PDA uplinks. --NEO
// Removing revolutionary uplinks. -Pete
equip_revolutionary(rev_mind.current)
update_rev_icons_added(rev_mind)
spawn(rand(10,100))
// equip_traitor(rev_mind.current, 1) //changing how revs get assigned their uplink so they can get PDA uplinks. --NEO
// Removing revolutionary uplinks. -Pete
equip_revolutionary(rev_mind.current)
update_rev_icons_added(rev_mind)
for(var/datum/mind/rev_mind in head_revolutionaries)
greet_revolutionary(rev_mind)
@@ -107,7 +108,7 @@
var/datum/objective/mutiny/rev_obj = new
rev_obj.owner = rev_mind
rev_obj.target = head_mind
rev_obj.explanation_text = "Assassinate [head_mind.name], the [head_mind.assigned_role]."
rev_obj.explanation_text = "Assassinate or exile [head_mind.name], the [head_mind.assigned_role]."
rev_mind.objectives += rev_obj
/datum/game_mode/proc/greet_revolutionary(var/datum/mind/rev_mind, var/you_are=1)
@@ -200,7 +201,8 @@
rev_mind.current.attack_log += "\[[time_stamp()]\] <font color='red'>Has renounced the revolution!</font>"
if(beingborged)
rev_mind.current << "\red <FONT size = 3><B>The frame's firmware detects and deletes your neural reprogramming! You remember nothing from the moment you were flashed until now.</B></FONT>"
rev_mind.current << "\red <FONT size = 3><B>The frame's firmware detects and deletes your neural reprogramming! You remember nothing but the name of the one who flashed you.</B></FONT>"
message_admins("[key_name_admin(rev_mind.current)] <A HREF='?_src_=holder;adminmoreinfo=\ref[rev_mind.current]'>?</A> has been borged while being a member of the revolution.")
else
rev_mind.current << "\red <FONT size = 3><B>You have been brainwashed! You are no longer a revolutionary! Your memory is hazy from the time you were a rebel...the only thing you remember is the name of the one who brainwashed you...</B></FONT>"
@@ -268,20 +270,36 @@
/datum/game_mode/proc/update_rev_icons_added(datum/mind/rev_mind)
spawn(0)
for(var/datum/mind/head_rev_mind in head_revolutionaries)
//Tagging the new rev for revheads to see
if(head_rev_mind.current)
if(head_rev_mind.current.client)
var/I = image('icons/mob/mob.dmi', loc = rev_mind.current, icon_state = "rev")
var/I
if(rev_mind in head_revolutionaries) //If the new rev is a head rev
I = image('icons/mob/mob.dmi', loc = rev_mind.current, icon_state = "rev_head")
else
I = image('icons/mob/mob.dmi', loc = rev_mind.current, icon_state = "rev")
head_rev_mind.current.client.images += I
//Tagging the revheads for new rev to see
if(rev_mind.current)
if(rev_mind.current.client)
var/image/J = image('icons/mob/mob.dmi', loc = head_rev_mind.current, icon_state = "rev_head")
rev_mind.current.client.images += J
for(var/datum/mind/rev_mind_1 in revolutionaries)
//Tagging the new rev for fellow revs to see
if(rev_mind_1.current)
if(rev_mind_1.current.client)
var/I = image('icons/mob/mob.dmi', loc = rev_mind.current, icon_state = "rev")
var/I
if(rev_mind in head_revolutionaries) //If the new rev is a head rev
I = image('icons/mob/mob.dmi', loc = rev_mind.current, icon_state = "rev_head")
else
I = image('icons/mob/mob.dmi', loc = rev_mind.current, icon_state = "rev")
rev_mind_1.current.client.images += I
//Tagging fellow revs for the new rev to see
if(rev_mind.current)
if(rev_mind.current.client)
var/image/J = image('icons/mob/mob.dmi', loc = rev_mind_1.current, icon_state = "rev")
@@ -340,7 +358,7 @@
/datum/game_mode/revolution/declare_completion()
if(finished == 1)
feedback_set_details("round_end_result","win - heads killed")
world << "\red <FONT size = 3><B> The heads of staff were killed or abandoned the station! The revolutionaries win!</B></FONT>"
world << "\red <FONT size = 3><B> The heads of staff were killed or exiled! The revolutionaries win!</B></FONT>"
else if(finished == 2)
feedback_set_details("round_end_result","loss - rev heads killed")
world << "\red <FONT size = 3><B> The heads of staff managed to stop the revolution!</B></FONT>"
@@ -421,10 +439,4 @@
text += "</font>"
text += "<br>"
world << text
/proc/is_convertable_to_rev(datum/mind/mind)
return istype(mind) && \
istype(mind.current, /mob/living/carbon/human) && \
!(mind.assigned_role in command_positions) && \
!(mind.assigned_role in list("Security Officer", "Detective", "Warden"))
world << text
+9 -11
View File
@@ -174,17 +174,15 @@
// -- Mode/mind specific stuff goes here
switch(ticker.mode.name)
if("revolution")
if((H.mind in ticker.mode:revolutionaries) || (H.mind in ticker.mode:head_revolutionaries))
ticker.mode.update_all_rev_icons() //So the icon actually appears
if("nuclear emergency")
if(H.mind in ticker.mode.syndicates)
ticker.mode.update_all_synd_icons()
if("cult")
if (H.mind in ticker.mode.cult)
ticker.mode.add_cultist(src.occupant.mind)
ticker.mode.update_all_cult_icons() //So the icon actually appears
if((H.mind in ticker.mode.revolutionaries) || (H.mind in ticker.mode.head_revolutionaries))
ticker.mode.update_all_rev_icons() //So the icon actually appears
if((H.mind in ticker.mode.A_bosses) || ((H.mind in ticker.mode.A_gangsters) || (H.mind in ticker.mode.B_bosses)) || (H.mind in ticker.mode.B_gangsters))
ticker.mode.update_all_gang_icons()
if(H.mind in ticker.mode.syndicates)
ticker.mode.update_all_synd_icons()
if (H.mind in ticker.mode.cult)
ticker.mode.add_cultist(src.occupant.mind)
ticker.mode.update_all_cult_icons() //So the icon actually appears
// -- End mode specific stuff
+1
View File
@@ -143,6 +143,7 @@
ticker.mode.remove_cultist(M.brainmob.mind, 1)
ticker.mode.remove_revolutionary(M.brainmob.mind, 1)
ticker.mode.remove_gangster(M.brainmob.mind, 1)
user.drop_item()
M.loc = src
@@ -624,6 +624,7 @@ var/const/CALL_SHUTTLE_REASON_LENGTH = 12
emergency_shuttle.recall(signal_origin)
log_game("[key_name(user)] has recalled the shuttle.")
message_admins("[key_name_admin(user)] has recalled the shuttle.", 1)
return 1
return
/obj/machinery/computer/communications/proc/post_status(var/command, var/data1, var/data2)
+13 -12
View File
@@ -74,21 +74,22 @@
flick("e_flash", M.flash)
if(ishuman(M) && ishuman(user) && M.stat != DEAD)
if(user.mind && user.mind in ticker.mode.head_revolutionaries)
if(user.mind && ((user.mind in ticker.mode.head_revolutionaries) || (user.mind in ticker.mode.A_bosses) || (user.mind in ticker.mode.B_bosses)))
if(M.client)
if(M.stat == CONSCIOUS)
var/revsafe = 0
if(isloyal(M))
revsafe = 1
M.mind_initialize() //give them a mind datum if they don't have one.
// if(M.mind.has_been_rev)
// revsafe = 2
if(!revsafe)
M.mind.has_been_rev = 1
ticker.mode.add_revolutionary(M.mind)
else if(revsafe == 1)
user << "<span class='warning'>Something seems to be blocking the flash!</span>"
else
M.mind.has_been_rev = 1
var/resisted
if(user.mind in ticker.mode.head_revolutionaries)
if(!ticker.mode.add_revolutionary(M.mind))
resisted = 1
if(user.mind in ticker.mode.A_bosses)
if(!ticker.mode.add_gangster(M.mind,"A"))
resisted = 1
if(user.mind in ticker.mode.B_bosses)
if(!ticker.mode.add_gangster(M.mind,"B"))
resisted = 1
if(resisted)
user << "<span class='warning'>This mind seems resistant to the flash!</span>"
else
user << "<span class='warning'>They must be conscious before you can convert them!</span>"
@@ -0,0 +1,42 @@
//Recaller device
//Allows gang leaders to recall the shuttle
/obj/item/device/recaller
name = "suspicious device"
desc = "A strange device of sorts. Hard to really make out what it actually does just by looking."
icon_state = "recaller"
item_state = "walkietalkie"
throwforce = 0
w_class = 1.0
throw_speed = 3
throw_range = 7
flags = CONDUCT
var/recalling = 0
/obj/item/device/recaller/attack_self(mob/user)
if(recalling)
return
if((user.mind in ticker.mode.A_bosses) || (user.mind in ticker.mode.B_bosses))
var/turf/userturf = get_turf(user)
if(userturf.z != 1)
user << "<span class='info'>Error: Device out of range of station communication arrays.</span>"
return
if(emergency_shuttle.location==0)
if (emergency_shuttle.online)
recalling = 1
user << "<span class='info'>Generating shuttle recall order with codes retrieved from last call signal...</span>"
sleep(10)
user << "<span class='info'>Shuttle recall order generated.</span>"
sleep(5)
user << "<span class='info'>Accessing station long-range communication arrays...</span>"
sleep(10)
user << "<span class='info'>Comm arrays accessed.</span>"
sleep(5)
user << "<span class='info'>Broadcasting recall signal...</span>"
sleep(20)
recalling = 0
if(!cancel_call_proc(user))
user << "<span class='info'>No response recieved. Emergency shuttle cannot be recalled at this time.</span>"
return
user << "<span class='info'>Emergency shuttle cannot be recalled at this time.</span>"
+1 -1
View File
@@ -196,7 +196,7 @@
user << "\red Sticking a dead brain into the frame would sort of defeat the purpose."
return
if(M.brainmob.mind in ticker.mode.head_revolutionaries)
if((M.brainmob.mind in ticker.mode.head_revolutionaries) || (M.brainmob.mind in ticker.mode.A_bosses) || (M.brainmob.mind in ticker.mode.B_bosses))
user << "\red The frame's firmware lets out a shrill sound, and flashes 'Abnormal Memory Engram'. It refuses to accept the MMI."
return
+1 -1
View File
@@ -365,7 +365,7 @@ datum/admins/proc/DB_ban_unban_by_id(var/id)
output += "<option value='[j]'>[j]</option>"
for(var/j in nonhuman_positions)
output += "<option value='[j]'>[j]</option>"
for(var/j in list("traitor","changeling","operative","revolutionary","cultist","wizard"))
for(var/j in list("traitor","changeling","operative","revolutionary", "gangster","cultist","wizard"))
output += "<option value='[j]'>[j]</option>"
output += "</select></td></tr></table>"
output += "<b>Reason:<br></b><textarea name='dbbanreason' cols='50'></textarea><br>"
+32
View File
@@ -430,6 +430,38 @@
dat += "<tr><td><i>Head not found!</i></td></tr>"
dat += "</table>"
if(ticker.mode.A_bosses.len || ticker.mode.A_gangsters.len)
dat += "<br><table cellspacing=5><tr><td><B>[ticker.mode.A_name] Gang Members</B></td><td></td></tr>"
for(var/datum/mind/N in ticker.mode.A_bosses)
var/mob/M = N.current
if(!M)
dat += "<tr><td><i>Gang Boss not found!</i></td></tr>"
else
dat += "<tr><td><a href='?_src_=holder;adminplayeropts=\ref[M]'>[M.real_name]</a> <b>(Boss)</b>[M.client ? "" : " <i>(logged out)</i>"][M.stat == 2 ? " <b><font color=red>(DEAD)</font></b>" : ""]</td>"
dat += "<td><A href='?priv_msg=[M.ckey]'>PM</A></td></tr>"
for(var/datum/mind/N in ticker.mode.A_gangsters)
var/mob/M = N.current
if(M)
dat += "<tr><td><a href='?_src_=holder;adminplayeropts=\ref[M]'>[M.real_name]</a>[M.client ? "" : " <i>(logged out)</i>"][M.stat == 2 ? " <b><font color=red>(DEAD)</font></b>" : ""]</td>"
dat += "<td><A href='?priv_msg=[M.ckey]'>PM</A></td></tr>"
dat += "</table>"
if(ticker.mode.B_bosses.len || ticker.mode.B_gangsters.len)
dat += "<br><table cellspacing=5><tr><td><B>[ticker.mode.B_name] Gang Members</B></td><td></td></tr>"
for(var/datum/mind/N in ticker.mode.B_bosses)
var/mob/M = N.current
if(!M)
dat += "<tr><td><i>Gang Boss not found!</i></td></tr>"
else
dat += "<tr><td><a href='?_src_=holder;adminplayeropts=\ref[M]'>[M.real_name]</a> <b>(Boss)</b>[M.client ? "" : " <i>(logged out)</i>"][M.stat == 2 ? " <b><font color=red>(DEAD)</font></b>" : ""]</td>"
dat += "<td><A href='?priv_msg=[M.ckey]'>PM</A></td></tr>"
for(var/datum/mind/N in ticker.mode.B_gangsters)
var/mob/M = N.current
if(M)
dat += "<tr><td><a href='?_src_=holder;adminplayeropts=\ref[M]'>[M.real_name]</a>[M.client ? "" : " <i>(logged out)</i>"][M.stat == 2 ? " <b><font color=red>(DEAD)</font></b>" : ""]</td>"
dat += "<td><A href='?priv_msg=[M.ckey]'>PM</A></td></tr>"
dat += "</table>"
if(ticker.mode.changelings.len > 0)
dat += "<br><table cellspacing=5><tr><td><B>Changelings</B></td><td></td><td></td></tr>"
for(var/datum/mind/changeling in ticker.mode.changelings)
+6
View File
@@ -558,6 +558,12 @@
jobs += "</tr><tr align='center'>" //Breaking it up so it fits nicer on the screen every 5 entries
//Gangster
if(jobban_isbanned(M, "gangster") || isbanned_dept)
jobs += "<td width='20%'><a href='?src=\ref[src];jobban3=gangster;jobban4=\ref[M]'><font color=red>[replacetext("Gangster", " ", "&nbsp")]</font></a></td>"
else
jobs += "<td width='20%'><a href='?src=\ref[src];jobban3=gangster;jobban4=\ref[M]'>[replacetext("Gangster", " ", "&nbsp")]</a></td>"
//Cultist
if(jobban_isbanned(M, "cultist") || isbanned_dept)
jobs += "<td width='20%'><a href='?src=\ref[src];jobban3=cultist;jobban4=\ref[M]'><font color=red>[replacetext("Cultist", " ", "&nbsp")]</font></a></td>"
+2 -1
View File
@@ -16,7 +16,8 @@ var/global/list/special_roles = list( //keep synced with the defines BE_* in set
"pAI candidate" = 1, // 7
"cultist" = IS_MODE_COMPILED("cult"), // 8
"blob" = IS_MODE_COMPILED("blob"), // 9
"monkey" = IS_MODE_COMPILED("monkey") // 10
"monkey" = IS_MODE_COMPILED("monkey"), // 10
"gangster" = IS_MODE_COMPILED("gang") // 11
)
+13 -14
View File
@@ -817,20 +817,19 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob)
mind.transfer_to(podman)
mind.active = oldactive
// -- Mode/mind specific stuff goes here. TODO! Broken :( Should be merged into mob/living/Login
switch(ticker.mode.name)
if("revolution")
if(podman.mind in ticker.mode:revolutionaries)
ticker.mode:add_revolutionary(podman.mind)
ticker.mode:update_all_rev_icons() //So the icon actually appears
if(podman.mind in ticker.mode:head_revolutionaries)
ticker.mode:update_all_rev_icons()
if("nuclear emergency")
if(podman.mind in ticker.mode:syndicates)
ticker.mode:update_all_synd_icons()
if("cult")
if(podman.mind in ticker.mode:cult)
ticker.mode:add_cultist(podman.mind)
ticker.mode:update_all_cult_icons() //So the icon actually appears
if((podman.mind in ticker.mode.A_bosses) || (podman.mind in ticker.mode.A_gangsters) || (podman.mind in ticker.mode.B_bosses) || (podman.mind in ticker.mode.B_gangsters))
ticker.mode.update_all_gang_icons()
if(podman.mind in ticker.mode:revolutionaries)
ticker.mode.add_revolutionary(podman.mind)
ticker.mode.update_all_rev_icons() //So the icon actually appears
if(podman.mind in ticker.mode:head_revolutionaries)
ticker.mode.add_revolutionary(podman.mind)
ticker.mode.update_all_rev_icons()
if(podman.mind in ticker.mode:syndicates)
ticker.mode:update_all_synd_icons()
if(podman.mind in ticker.mode:cult)
ticker.mode:add_cultist(podman.mind)
ticker.mode:update_all_cult_icons() //So the icon actually appears
// -- End mode specific stuff
@@ -183,6 +183,7 @@ emp_act
apply_effect(20, PARALYZE, armor)
if(src != user && I.damtype == BRUTE)
ticker.mode.remove_revolutionary(mind)
ticker.mode.remove_gangster(mind)
if(bloody) //Apply blood
if(wear_mask)
wear_mask.add_blood(src)
@@ -874,6 +874,7 @@
H.apply_effect(20, PARALYZE, armor)
if(H != user && I.damtype == BRUTE)
ticker.mode.remove_revolutionary(H.mind)
ticker.mode.remove_gangster(H.mind)
if(bloody) //Apply blood
if(H.wear_mask)
+5
View File
@@ -12,6 +12,11 @@
if("revolution")
if((mind in ticker.mode.revolutionaries) || (src.mind in ticker.mode:head_revolutionaries))
ticker.mode.update_rev_icons_added(src.mind)
if("gang")
if((mind in ticker.mode.A_bosses) || (mind in ticker.mode.A_gangsters))
ticker.mode.update_rev_icons_added(src.mind,"A")
if((mind in ticker.mode.B_bosses) || (mind in ticker.mode.B_gangsters))
ticker.mode.update_rev_icons_added(src.mind,"B")
if("cult")
if(mind in ticker.mode:cult)
ticker.mode.update_cult_icons_added(src.mind)
+1
View File
@@ -2,4 +2,5 @@
if(mind && ticker && ticker.mode)
ticker.mode.remove_cultist(mind, 0)
ticker.mode.remove_revolutionary(mind, 0)
ticker.mode.remove_gangster(mind, 0)
..()
@@ -4,6 +4,7 @@
regenerate_icons()
show_laws(0)
if(mind) ticker.mode.remove_revolutionary(mind)
if(mind) ticker.mode.remove_gangster(mind)
/mob/living/silicon/robot/update_hotkey_mode()
winset(src, null, "mainwindow.macro=borghotkeymode hotkey_toggle.is-checked=true mapwindow.map.focus=true input.background-color=#F0F0F0")
+3
View File
@@ -395,6 +395,9 @@ proc/is_special_character(mob/M) // returns 1 for special characters and 2 for h
if("revolution")
if((M.mind in ticker.mode.head_revolutionaries) || (M.mind in ticker.mode.revolutionaries))
return 2
if("gang")
if((M.mind in ticker.mode.A_bosses) || (M.mind in ticker.mode.B_bosses) || (M.mind in ticker.mode.A_gangsters) || (M.mind in ticker.mode.B_gangsters))
return 2
if("cult")
if(M.mind in ticker.mode.cult)
return 2
BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 176 KiB

After

Width:  |  Height:  |  Size: 176 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 23 KiB

+2
View File
@@ -276,6 +276,7 @@
#include "code\game\gamemodes\cult\runes.dm"
#include "code\game\gamemodes\cult\talisman.dm"
#include "code\game\gamemodes\extended\extended.dm"
#include "code\game\gamemodes\gang\gang.dm"
#include "code\game\gamemodes\malfunction\Malf_Modules.dm"
#include "code\game\gamemodes\malfunction\malfunction.dm"
#include "code\game\gamemodes\meteor\meteor.dm"
@@ -500,6 +501,7 @@
#include "code\game\objects\items\devices\multitool.dm"
#include "code\game\objects\items\devices\paicard.dm"
#include "code\game\objects\items\devices\powersink.dm"
#include "code\game\objects\items\devices\recaller.dm"
#include "code\game\objects\items\devices\scanners.dm"
#include "code\game\objects\items\devices\taperecorder.dm"
#include "code\game\objects\items\devices\traitordevices.dm"