Conflicts:
	code/game/gamemodes/intercept_report.dm
	code/game/gamemodes/traitor/traitor.dm
	code/global.dm
	code/modules/mob/inventory.dm
	code/modules/mob/living/living.dm
	html/changelogs/.all_changelog.yml
This commit is contained in:
Zuhayr
2015-09-07 11:31:19 +09:30
35 changed files with 130 additions and 289 deletions
-1
View File
@@ -278,7 +278,6 @@
#include "code\game\gamemodes\game_mode.dm"
#include "code\game\gamemodes\game_mode_latespawn.dm"
#include "code\game\gamemodes\gameticker.dm"
#include "code\game\gamemodes\intercept_report.dm"
#include "code\game\gamemodes\objective.dm"
#include "code\game\gamemodes\setupgame.dm"
#include "code\game\gamemodes\blob\blob.dm"
+1
View File
@@ -8,6 +8,7 @@ var/datum/antagonist/xenos/borer/borers
bantype = "Borer"
welcome_text = "Use your Infest power to crawl into the ear of a host and fuse with their brain. You can only take control temporarily, and at risk of hurting your host, so be clever and careful; your host is encouraged to help you however they can. Talk to your fellow borers with :x."
antag_indicator = "brainworm"
antaghud_indicator = "hudborer"
faction_role_text = "Borer Thrall"
faction_descriptor = "Unity"
+1
View File
@@ -9,6 +9,7 @@ var/datum/antagonist/xenos/xenomorphs
bantype = "Xenomorph"
flags = ANTAG_OVERRIDE_MOB | ANTAG_RANDSPAWN | ANTAG_OVERRIDE_JOB | ANTAG_VOTABLE
welcome_text = "Hiss! You are a larval alien. Hide and bide your time until you are ready to evolve."
antaghud_indicator = "hudalien"
hard_cap = 5
hard_cap_round = 8
+6
View File
@@ -19,6 +19,7 @@
var/role_text_plural = "Traitors" // As above but plural.
// Visual references.
var/antaghud_indicator = "hudsyndicate" // Used by the ghost antagHUD.
var/antag_indicator // icon_state for icons/mob/mob.dm visual indicator.
var/faction_indicator // See antag_indicator, but for factionalized people only.
var/faction_invisible // Can members of the faction identify other antagonists?
@@ -76,6 +77,11 @@
role_text_plural = role_text
if(config.protect_roles_from_antagonist)
restricted_jobs |= protected_jobs
if(antaghud_indicator)
if(!hud_icon_reference)
hud_icon_reference = list()
if(role_text) hud_icon_reference[role_text] = antaghud_indicator
if(faction_role_text) hud_icon_reference[faction_role_text] = antaghud_indicator
/datum/antagonist/proc/tick()
return 1
+1 -1
View File
@@ -69,7 +69,7 @@
var/uplink_true = 0
var/purchases = ""
for(var/obj/item/device/uplink/H in world_uplinks)
if(H && H.owner && H.owner == ply)
if(H && H.uplink_owner && H.uplink_owner == ply)
TC_uses += H.used_TC
uplink_true = 1
var/list/refined_log = new()
+12 -4
View File
@@ -74,10 +74,18 @@
qdel(I)
/datum/antagonist/proc/update_current_antag_max()
var/main_type
cur_max = hard_cap
if(ticker && ticker.mode)
if(ticker.mode.antag_tags && (id in ticker.mode.antag_tags))
main_type = 1
cur_max = (main_type ? hard_cap_round : hard_cap)
cur_max = hard_cap_round
if(ticker.mode.antag_scaling_coeff)
cur_max = Clamp((ticker.mode.num_players()/ticker.mode.antag_scaling_coeff), 1, cur_max)
var/count = 0
for(var/mob/living/M in player_list)
if(M.client)
count++
// Minimum: initial_spawn_target
// Maximum: hard_cap or hard_cap_round
cur_max = max(initial_spawn_target,min(round(count/ticker.mode.antag_scaling_coeff),cur_max))
@@ -9,6 +9,7 @@ var/datum/antagonist/deathsquad/deathsquad
landmark_id = "Commando"
flags = ANTAG_OVERRIDE_JOB | ANTAG_OVERRIDE_MOB | ANTAG_HAS_NUKE | ANTAG_HAS_LEADER
default_access = list(access_cent_general, access_cent_specops, access_cent_living, access_cent_storage)
antaghud_indicator = "huddeathsquad"
hard_cap = 4
hard_cap_round = 8
+1
View File
@@ -12,6 +12,7 @@ var/datum/antagonist/ert/ert
id_type = /obj/item/weapon/card/id/centcom/ERT
flags = ANTAG_OVERRIDE_JOB | ANTAG_SET_APPEARANCE | ANTAG_HAS_LEADER | ANTAG_CHOOSE_NAME
antaghud_indicator = "hudloyalist"
hard_cap = 5
hard_cap_round = 7
+8 -8
View File
@@ -12,6 +12,7 @@ var/datum/antagonist/mercenary/mercs
welcome_text = "To speak on the strike team's private channel use :t."
flags = ANTAG_OVERRIDE_JOB | ANTAG_CLEAR_EQUIPMENT | ANTAG_CHOOSE_NAME | ANTAG_HAS_NUKE | ANTAG_SET_APPEARANCE | ANTAG_HAS_LEADER
id_type = /obj/item/weapon/card/id/syndicate
antaghud_indicator = "hudoperative"
hard_cap = 4
hard_cap_round = 8
@@ -42,16 +43,15 @@ var/datum/antagonist/mercenary/mercs
if(player.backbag == 4) player.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(player), slot_back)
player.equip_to_slot_or_del(new /obj/item/weapon/storage/box/engineer(player.back), slot_in_backpack)
player.equip_to_slot_or_del(new /obj/item/weapon/reagent_containers/pill/cyanide(player), slot_in_backpack)
if (player.mind == leader)
var/obj/item/device/radio/uplink/U = new(player.loc)
U.hidden_uplink.uplink_owner = player.mind
U.hidden_uplink.uses = 40
player.put_in_hands(U)
player.update_icons()
create_id("Mercenary", player)
create_radio(SYND_FREQ, player)
return 1
/datum/antagonist/mercenary/create_nuke()
..()
// Create the radio.
var/obj/effect/landmark/uplinkdevice = locate("landmark*Syndicate-Uplink")
if(uplinkdevice)
var/obj/item/device/radio/uplink/U = new(uplinkdevice.loc)
U.hidden_uplink.uses = 40
+1
View File
@@ -9,6 +9,7 @@ var/datum/antagonist/ninja/ninjas
landmark_id = "ninjastart"
welcome_text = "<span class='info'>You are an elite mercenary assassin of the Spider Clan. You have a variety of abilities at your disposal, thanks to your nano-enhanced cyber armor.</span>"
flags = ANTAG_OVERRIDE_JOB | ANTAG_CLEAR_EQUIPMENT | ANTAG_CHOOSE_NAME | ANTAG_RANDSPAWN | ANTAG_VOTABLE | ANTAG_SET_APPEARANCE
antaghud_indicator = "hudninja"
initial_spawn_req = 1
initial_spawn_target = 1
+1
View File
@@ -10,6 +10,7 @@ var/datum/antagonist/raider/raiders
landmark_id = "voxstart"
welcome_text = "Use :H to talk on your encrypted channel."
flags = ANTAG_OVERRIDE_JOB | ANTAG_CLEAR_EQUIPMENT | ANTAG_CHOOSE_NAME | ANTAG_VOTABLE | ANTAG_SET_APPEARANCE | ANTAG_HAS_LEADER
antaghud_indicator = "hudmutineer"
hard_cap = 6
hard_cap_round = 10
+1
View File
@@ -9,6 +9,7 @@ var/datum/antagonist/wizard/wizards
landmark_id = "wizard"
welcome_text = "You will find a list of available spells in your spell book. Choose your magic arsenal carefully.<br>In your pockets you will find a teleport scroll. Use it as needed."
flags = ANTAG_OVERRIDE_JOB | ANTAG_CLEAR_EQUIPMENT | ANTAG_CHOOSE_NAME | ANTAG_VOTABLE | ANTAG_SET_APPEARANCE
antaghud_indicator = "hudwizard"
hard_cap = 1
hard_cap_round = 3
@@ -9,6 +9,7 @@
protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain")
welcome_text = "Use say \"#g message\" to communicate with your fellow changelings. Remember: you get all of their absorbed DNA if you absorb them."
flags = ANTAG_SUSPICIOUS | ANTAG_RANDSPAWN | ANTAG_VOTABLE
antaghud_indicator = "hudchangeling"
/datum/antagonist/changeling/get_special_objective_text(var/datum/mind/player)
return "<br><b>Changeling ID:</b> [player.changeling.changelingID].<br><b>Genomes Absorbed:</b> [player.changeling.absorbedcount]"
+1
View File
@@ -26,6 +26,7 @@ var/datum/antagonist/cultist/cult
hard_cap_round = 6
initial_spawn_req = 4
initial_spawn_target = 6
antaghud_indicator = "hudcultist"
var/allow_narsie = 1
var/datum/mind/sacrifice_target
+1
View File
@@ -13,6 +13,7 @@ var/datum/antagonist/loyalists/loyalists
loss_text = "The heads of staff did not stop the revolution!"
victory_feedback_tag = "win - rev heads killed"
loss_feedback_tag = "loss - heads killed"
antaghud_indicator = "hudloyalist"
flags = 0
hard_cap = 2
@@ -14,6 +14,7 @@ var/datum/antagonist/revolutionary/revs
victory_feedback_tag = "win - heads killed"
loss_feedback_tag = "loss - rev heads killed"
flags = ANTAG_SUSPICIOUS | ANTAG_VOTABLE
antaghud_indicator = "hudrevolutionary"
hard_cap = 2
hard_cap_round = 4
+1 -1
View File
@@ -15,7 +15,7 @@ var/datum/antagonist/rogue_ai/malf
hard_cap_round = 1
initial_spawn_req = 1
initial_spawn_target = 1
antaghud_indicator = "hudmalai"
/datum/antagonist/rogue_ai/New()
..()
+27 -16
View File
@@ -106,6 +106,8 @@ var/global/list/additional_antag_types = list()
return
var/datum/antagonist/antag = all_antag_types[choice]
if(antag)
if(!islist(ticker.mode.antag_templates))
ticker.mode.antag_templates = list()
ticker.mode.antag_templates |= antag
message_admins("Admin [key_name_admin(usr)] added [antag.role_text] template to game mode.")
@@ -429,26 +431,35 @@ var/global/list/additional_antag_types = list()
if(!antag_template)
return candidates
// Assemble a list of active players without jobbans.
for(var/mob/new_player/player in player_list)
if( player.client && player.ready )
players += player
// If this is being called post-roundstart then it doesn't care about ready status.
if(ticker && ticker.current_state == GAME_STATE_PLAYING)
for(var/mob/player in player_list)
if(!player.client)
continue
if(!role || (player.client.prefs.be_special & role))
log_debug("[player.key] had [antag_id] enabled, so we are drafting them.")
candidates |= player.mind
else
// Assemble a list of active players without jobbans.
for(var/mob/new_player/player in player_list)
if( player.client && player.ready )
players += player
// Get a list of all the people who want to be the antagonist for this round
for(var/mob/new_player/player in players)
if(!role || (player.client.prefs.be_special & role))
log_debug("[player.key] had [antag_id] enabled, so we are drafting them.")
candidates += player.mind
players -= player
// If we don't have enough antags, draft people who voted for the round.
if(candidates.len < required_enemies)
// Get a list of all the people who want to be the antagonist for this round
for(var/mob/new_player/player in players)
if(player.ckey in round_voters)
log_debug("[player.key] voted for this round, so we are drafting them.")
if(!role || (player.client.prefs.be_special & role))
log_debug("[player.key] had [antag_id] enabled, so we are drafting them.")
candidates += player.mind
players -= player
break
// If we don't have enough antags, draft people who voted for the round.
if(candidates.len < required_enemies)
for(var/mob/new_player/player in players)
if(player.ckey in round_voters)
log_debug("[player.key] voted for this round, so we are drafting them.")
candidates += player.mind
players -= player
break
return candidates // Returns: The number of people who had the antagonist role set to yes, regardless of recomended_enemies, if that number is greater than required_enemies
// required_enemies if the number of people with that role set to yes is less than recomended_enemies,
+6 -1
View File
@@ -1,6 +1,7 @@
/datum/game_mode/var/next_spawn = 0
/datum/game_mode/var/min_autotraitor_delay = 4200 // Approx 7 minutes.
/datum/game_mode/var/max_autotraitor_delay = 12000 // Approx 20 minutes.
/datum/game_mode/var/process_count = 0
/datum/game_mode/proc/get_usable_templates(var/list/supplied_templates)
var/list/usable_templates = list()
@@ -13,7 +14,11 @@
///process()
///Called by the gameticker
/datum/game_mode/proc/process()
try_latespawn()
// Slow this down a bit so latejoiners have a chance of being antags.
process_count++
if(process_count >= 10)
process_count = 0
try_latespawn()
/datum/game_mode/proc/latespawn(var/mob/living/carbon/human/character)
if(!character.mind)
-187
View File
@@ -1,187 +0,0 @@
/datum/intercept_text
var/text
/*
var/prob_correct_person_lower = 20
var/prob_correct_person_higher = 80
var/prob_correct_job_lower = 20
var/prob_correct_job_higher = 80
var/prob_correct_prints_lower = 20
var/prob_correct_print_higher = 80
var/prob_correct_objective_lower = 20
var/prob_correct_objective_higher = 80
*/
var/list/org_names_1 = list(
"Blighted",
"Defiled",
"Unholy",
"Murderous",
"Ugly",
"French",
"Blue",
"Farmer"
)
var/list/org_names_2 = list(
"Reapers",
"Swarm",
"Rogues",
"Menace",
"Jeff Worshippers",
"Drunks",
"Strikers",
"Creed"
)
var/list/anomalies = list(
"Huge electrical storm",
"Photon emitter",
"Meson generator",
"Blue swirly thing"
)
var/list/SWF_names = list(
"Grand Wizard",
"His Most Unholy Master",
"The Most Angry",
"Bighands",
"Tall Hat",
"Deadly Sandals"
)
var/list/changeling_names = list(
"Odo",
"The Thing",
"Booga",
"The Goatee of Wrath",
"Tam Lin",
"Species 3157",
"Small Prick"
)
// TODO: Update to new antagonist system.
/datum/intercept_text/proc/build(var/mode_type, datum/mind/correct_person)
switch(mode_type)
if("revolution")
src.text = ""
src.build_rev(correct_person)
return src.text
if("cult")
src.text = ""
src.build_cult(correct_person)
return src.text
if("wizard")
src.text = ""
src.build_wizard(correct_person)
return src.text
if("nuke")
src.text = ""
src.build_nuke(correct_person)
return src.text
if("traitor")
src.text = ""
src.build_traitor(correct_person)
return src.text
if("malf")
src.text = ""
src.build_malf(correct_person)
return src.text
if("changeling","traitorchan")
src.text = ""
src.build_changeling(correct_person)
return src.text
else
return null
/datum/intercept_text/proc/get_suspect()
var/list/dudes = list()
for(var/mob/living/carbon/human/man in player_list) if(man.client && man.client.prefs.nanotrasen_relation == COMPANY_OPPOSED)
dudes += man
for(var/i = 0, i < max(player_list.len/10,2), i++)
dudes += pick(player_list)
return pick(dudes)
/datum/intercept_text/proc/build_traitor(datum/mind/correct_person)
var/name_1 = pick(src.org_names_1)
var/name_2 = pick(src.org_names_2)
var/mob/living/carbon/human/H = get_suspect()
if(!H) return
var/fingerprints = num2text(md5(H.dna.uni_identity))
var/traitor_name = H.real_name
var/prob_right_dude = rand(1, 100)
src.text += "<BR><BR>The <B>[name_1] [name_2]</B> implied an undercover operative was acting on their behalf on the station currently."
src.text += "It would be in your best interests to suspect everybody, as these undercover operatives could have implants which trigger them to have their memories removed until they are needed. He, or she, could even be a high ranking officer."
src.text += "After some investigation, we "
if(prob(50))
src.text += "are [prob_right_dude]% sure that [traitor_name] may have been involved, and should be closely observed."
src.text += "<BR>Note: This group are known to be untrustworthy, so do not act on this information without proper discourse."
else
src.text += "discovered the following set of fingerprints ([fingerprints]) on sensitive materials, and their owner should be closely observed."
src.text += "However, these could also belong to a current Cent. Com employee, so do not act on this without reason."
/datum/intercept_text/proc/build_cult(datum/mind/correct_person)
var/name_1 = pick(src.org_names_1)
var/name_2 = pick(src.org_names_2)
var/prob_right_dude = rand(1, 100)
var/mob/living/carbon/human/H = get_suspect()
if(!H) return
var/traitor_job = H.mind.assigned_role
src.text += "<BR><BR>It has been brought to our attention that the [name_1] [name_2] have stumbled upon some dark secrets. They apparently want to spread the dangerous knowledge onto as many stations as they can."
src.text += "Watch out for the following: praying to an unfamilar god, preaching the word of \[REDACTED\], sacrifices, magical dark power, living constructs of evil and a portal to the dimension of the underworld."
src.text += "Based on our intelligence, we are [prob_right_dude]% sure that if true, someone doing the job of [traitor_job] on your station may have been converted "
src.text += "and instilled with the idea of the flimsiness of the real world, seeking to destroy it. "
src.text += "<BR>However, if this information is acted on without substantial evidence, those responsible will face severe repercussions."
/datum/intercept_text/proc/build_rev(datum/mind/correct_person)
var/name_1 = pick(src.org_names_1)
var/name_2 = pick(src.org_names_2)
var/prob_right_dude = rand(1, 100)
var/mob/living/carbon/human/H = get_suspect()
if(!H) return
var/traitor_job = H.mind.assigned_role
src.text += "<BR><BR>It has been brought to our attention that the [name_1] [name_2] are attempting to stir unrest on one of our stations in your sector."
src.text += "Watch out for suspicious activity among the crew and make sure that all heads of staff report in periodically."
src.text += "Based on our intelligence, we are [prob_right_dude]% sure that if true, someone doing the job of [traitor_job] on your station may have been brainwashed "
src.text += "at a recent conference, and their department should be closely monitored for signs of mutiny. "
src.text += "<BR>However, if this information is acted on without substantial evidence, those responsible will face severe repercussions."
/datum/intercept_text/proc/build_wizard(datum/mind/correct_person)
var/SWF_desc = pick(SWF_names)
src.text += "<BR><BR>The evil Space Wizards Federation have recently broke their most feared wizard, known only as \"[SWF_desc]\" out of space jail. "
src.text += "He is on the run, last spotted in a system near your present location. If anybody suspicious is located aboard, please "
src.text += "approach with EXTREME caution. Cent. Com also recommends that it would be wise to not inform the crew of this, due to their fearful nature."
src.text += "Known attributes include: Brown sandals, a large blue hat, a voluptous white beard, and an inclination to cast spells."
/datum/intercept_text/proc/build_nuke(datum/mind/correct_person)
src.text += "<BR><BR>Cent. Com recently recieved a report of a plot to destroy one of our stations in your area. We believe the Nuclear Authentication Disc "
src.text += "that is standard issue aboard your vessel may be a target. We recommend removal of this object, and it's storage in a safe "
src.text += "environment. As this may cause panic among the crew, all efforts should be made to keep this information a secret from all but "
src.text += "the most trusted crew-members."
/datum/intercept_text/proc/build_malf(datum/mind/correct_person)
var/a_name = pick(src.anomalies)
src.text += "<BR><BR>A [a_name] was recently picked up by a nearby stations sensors in your sector. If it came into contact with your ship or "
src.text += "electrical equipment, it may have had hazardarous and unpredictable effect. Closely observe any non carbon based life forms "
src.text += "for signs of unusual behaviour, but keep this information discreet at all times due to this possibly dangerous scenario."
/datum/intercept_text/proc/build_changeling(datum/mind/correct_person)
var/cname = pick(src.changeling_names)
var/orgname1 = pick(src.org_names_1)
var/orgname2 = pick(src.org_names_2)
src.text += "<BR><BR>We have received a report that a dangerous alien lifeform known only as \"[cname]\" may have infiltrated your crew. "
src.text += "These lifeforms are assosciated with the [orgname1] [orgname2] and may be attempting to acquire sensitive materials on their behalf. "
src.text += "Please take care not to alarm the crew, as [cname] may take advantage of a panic situation. Remember, they can be anybody, suspect everybody!"
+1 -1
View File
@@ -15,7 +15,7 @@
required_enemies = 1
end_on_antag_death = 1
antag_tags = list(MODE_TRAITOR)
antag_scaling_coeff = 10
antag_scaling_coeff = 8
/datum/game_mode/traitor/auto
name = "autotraitor"
+3
View File
@@ -911,6 +911,9 @@ About the new airlock wires panel:
health -= crush_damage
healthcheck()
/obj/effect/energy_field/airlock_crush(var/crush_damage)
Stress(crush_damage)
/obj/structure/closet/airlock_crush(var/crush_damage)
..()
damage(crush_damage)
+10 -6
View File
@@ -28,6 +28,7 @@
var/message2 = "" // message line 2
var/index1 // display index for scrolling messages or 0 if non-scrolling
var/index2
var/picture = null
var/frequency = 1435 // radio frequency
@@ -72,13 +73,13 @@
// set what is displayed
/obj/machinery/status_display/proc/update()
remove_display()
if(friendc && !ignore_friendc)
set_picture("ai_friend")
return 1
switch(mode)
if(STATUS_DISPLAY_BLANK) //blank
remove_display()
return 1
if(STATUS_DISPLAY_TRANSFER_SHUTTLE_TIME) //emergency shuttle timer
if(emergency_shuttle.waiting_to_leave())
@@ -96,8 +97,6 @@
if(length(message2) > CHARS_PER_LINE)
message2 = "Error"
update_display(message1, message2)
else
remove_display()
return 1
if(STATUS_DISPLAY_MESSAGE) //custom messages
var/line1
@@ -122,6 +121,9 @@
index2 -= message2_len
update_display(line1, line2)
return 1
if(STATUS_DISPLAY_ALERT)
set_picture(picture_state)
return 1
if(STATUS_DISPLAY_TIME)
message1 = "TIME"
message2 = worldtime2text()
@@ -150,9 +152,11 @@
index2 = 0
/obj/machinery/status_display/proc/set_picture(state)
picture_state = state
remove_display()
overlays += image('icons/obj/status_display.dmi', icon_state=picture_state)
if(!picture || picture_state != state)
picture_state = state
picture = image('icons/obj/status_display.dmi', icon_state=picture_state)
overlays |= picture
/obj/machinery/status_display/proc/update_display(line1, line2)
var/new_text = {"<div style="font-size:[FONT_SIZE];color:[FONT_COLOR];font:'[FONT_STYLE]';text-align:center;" valign="top">[line1]<br>[line2]</div>"}
@@ -207,7 +211,7 @@
if("time")
mode = STATUS_DISPLAY_TIME
update()
#undef CHARS_PER_LINE
#undef FOND_SIZE
+11 -7
View File
@@ -7,10 +7,16 @@ A list of items and costs is stored under the datum of every game mode, alongsid
*/
/obj/item/device/uplink
var/welcome = "Illegal Uplink Console" // Welcoming menu message
var/uses = DEFAULT_TELECRYSTAL_AMOUNT // Numbers of crystals
var/list/purchase_log
var/datum/mind/owner = null
var/welcome // Welcoming menu message
var/uses // Numbers of crystals
var/list/ItemsCategory // List of categories with lists of items
var/list/ItemsReference // List of references with an associated item
var/list/nanoui_items // List of items for NanoUI use
var/nanoui_menu = 0 // The current menu we are in
var/list/nanoui_data = new // Additional data for NanoUI use
var/list/purchase_log = new
var/datum/mind/uplink_owner = null
var/used_TC = 0
/obj/item/device/uplink/nano_host()
@@ -18,7 +24,7 @@ A list of items and costs is stored under the datum of every game mode, alongsid
/obj/item/device/uplink/New(var/location, var/datum/mind/owner)
..()
src.owner = owner
src.uplink_owner = owner
purchase_log = list()
world_uplinks += src
@@ -42,10 +48,8 @@ A list of items and costs is stored under the datum of every game mode, alongsid
name = "hidden uplink"
desc = "There is something wrong if you're examining this."
var/active = 0
var/nanoui_menu = 0 // The current menu we are in
var/datum/uplink_category/category = 0 // The current category we are in
var/exploit_id // Id of the current exploit record we are viewing
var/list/nanoui_data // Data for NanoUI use
// The hidden uplink MUST be inside an obj/item's contents.
@@ -76,12 +76,12 @@ var/datum/uplink/uplink = new()
return 1
// With no owner, there's no need to check antag status.
if(!U.owner)
if(!U.uplink_owner)
return 0
for(var/antag_role in antag_roles)
var/datum/antagonist/antag = all_antag_types[antag_role]
if(antag.is_antagonist(U.owner))
if(antag.is_antagonist(U.uplink_owner))
return 1
return 0
+1
View File
@@ -12,6 +12,7 @@ var/global/list/processing_power_items = list()
var/global/list/active_diseases = list()
var/global/list/med_hud_users = list() // List of all entities using a medical HUD.
var/global/list/sec_hud_users = list() // List of all entities using a security HUD.
var/global/list/hud_icon_reference = list()
var/global/list/global_mutations = list() // List of hidden mutation things.
+2 -1
View File
@@ -657,7 +657,8 @@ proc/admin_notice(var/message, var/rights)
if(message)
if(!check_rights(R_SERVER,0))
message = sanitize(message, 500, extra = 0)
world << "\blue <b>[usr.client.holder.fakekey ? "Administrator" : usr.key] Announces:</b>\n \t [message]"
message = replacetext(message, "\n", "<br>") // required since we're putting it in a <p> tag
world << "<span class=notice><b>[usr.client.holder.fakekey ? "Administrator" : usr.key] Announces:</b><p style='text-indent: 50px'>[message]</p></span>"
log_admin("Announce: [key_name(usr)] : [message]")
feedback_add_details("admin_verb","A") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
+1 -1
View File
@@ -101,7 +101,7 @@
if(seed.get_trait(TRAIT_REQUIRES_NUTRIENTS))
if(seed.get_trait(TRAIT_NUTRIENT_CONSUMPTION) < 0.05)
dat += "<td>Low</td>"
else if(seed.get_trait(TRAIT_REQUIRES_NUTRIENTS) > 0.2)
else if(seed.get_trait(TRAIT_NUTRIENT_CONSUMPTION) > 0.2)
dat += "<td>High</td>"
else
dat += "<td>Norm</td>"
+1 -1
View File
@@ -123,7 +123,7 @@ Works together with spawning an observer, noted above.
if(antagHUD)
var/list/target_list = list()
for(var/mob/living/target in oview(src, 14))
if(target.mind&&(target.mind.special_role||issilicon(target)) )
if(target.mind && target.mind.special_role)
target_list += target
if(target_list.len)
assess_targets(target_list, src)
+9 -5
View File
@@ -219,16 +219,20 @@ var/list/slot_equipment_priority = list( \
/mob/proc/canUnEquip(obj/item/I)
if(!I) //If there's nothing to drop, the drop is automatically successful.
return 1
var/slot = get_inventory_slot(I)
if(slot && !I.mob_can_unequip(src, slot))
return 0
drop_from_inventory(I)
return 1
/mob/proc/get_inventory_slot(obj/item/I)
var/slot
for(var/s in slot_back to slot_tie) //kind of worries me
if(get_equipped_item(s) == I)
slot = s
break
if(slot && !I.mob_can_unequip(src, slot))
return 0
return 1
return slot
//This differs from remove_from_mob() in that it checks if the item can be unequipped first.
/mob/proc/unEquip(obj/item/I, force = 0) //Force overrides NODROP for things like wizarditis and admin undress.
+5 -29
View File
@@ -1678,35 +1678,11 @@
if (BITTEST(hud_updateflag, SPECIALROLE_HUD))
var/image/holder = hud_list[SPECIALROLE_HUD]
holder.icon_state = "hudblank"
if(mind)
// TODO: Update to new antagonist system.
switch(mind.special_role)
if("traitor","Mercenary")
holder.icon_state = "hudsyndicate"
if("Revolutionary")
holder.icon_state = "hudrevolutionary"
if("Head Revolutionary")
holder.icon_state = "hudheadrevolutionary"
if("Cultist")
holder.icon_state = "hudcultist"
if("Changeling")
holder.icon_state = "hudchangeling"
if("Wizard","Fake Wizard")
holder.icon_state = "hudwizard"
if("Death Commando")
holder.icon_state = "huddeathsquad"
if("Ninja")
holder.icon_state = "hudninja"
if("head_loyalist")
holder.icon_state = "hudloyalist"
if("loyalist")
holder.icon_state = "hudloyalist"
if("head_mutineer")
holder.icon_state = "hudmutineer"
if("mutineer")
holder.icon_state = "hudmutineer"
if(mind && mind.special_role)
if(hud_icon_reference[mind.special_role])
holder.icon_state = hud_icon_reference[mind.special_role]
else
holder.icon_state = "hudsyndicate"
hud_list[SPECIALROLE_HUD] = holder
hud_updateflag = 0
+5 -17
View File
@@ -655,27 +655,15 @@ default behaviour is:
set category = "IC"
resting = !resting
src << "<span class='notice'>You are now [resting ? "resting" : "getting up"].</span>"
src << "<span class='notice'>You are now [resting ? "resting" : "getting up"]</span>"
/mob/living/proc/is_allowed_vent_crawl_item(var/obj/item/carried_item)
if(istype(carried_item, /obj/item/weapon/implant))
return 1
if(istype(carried_item, /obj/item/clothing/mask/facehugger))
return 1
return 0
/mob/living/carbon/is_allowed_vent_crawl_item(var/obj/item/carried_item)
if(carried_item in internal_organs)
return 1
return ..()
/mob/living/carbon/human/is_allowed_vent_crawl_item(var/obj/item/carried_item)
if(carried_item in organs)
return 1
return ..()
return isnull(get_inventory_slot(carried_item))
/mob/living/simple_animal/spiderbot/is_allowed_vent_crawl_item(var/obj/item/carried_item)
return carried_item != held_item
if(carried_item == held_item)
return 0
return ..()
/mob/living/proc/handle_ventcrawl(var/obj/machinery/atmospherics/unary/vent_pump/vent_found = null, var/ignore_items = 0) // -- TLE -- Merged by Carn
if(stat)
@@ -379,6 +379,9 @@
src.client.perspective = EYE_PERSPECTIVE
src.client.eye = card
//stop resting
resting = 0
// If we are being held, handle removing our holder from their inv.
var/obj/item/weapon/holder/H = loc
if(istype(H))
+4
View File
@@ -108,6 +108,10 @@
<li class="rscadd">Added ballistic supply drop pods.</li>
<li class="rscadd">Added diona gestalt random map template.</li>
<li class="tweak">Swapped the singularity beacon out for a hacked supply beacon.</li>
<h3 class="author">Zuhayr updated:</h3>
<ul class="changes bgimages16">
<li class="bugfix">Auto-traitor should now be fixed.</li>
<li class="bugfix">The Secret game mode should now be fixed.</li>
</ul>
<h2 class="date">24 August 2015</h2>
BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB