Fixed up Deeaych's round-start cyborgs, they no longer spawn on the title screen

As a side effect of fixing this, since digging into the related code to make it not the case would be a chore and a half, round-start cyborgs are capable of being traitors, receiving the same objective/law set as an AI would. Much like a traitor AI, they can use a robotics terminal to hack themselves to unlock the emag module, at the cost of RED ANTENNA ROUGE BORG.

It has been suggested that they get additional perks, such as immunity to robotics terminal detonation/lockdown, but I am wary of adding such things right off the bat. We shall see.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@1204 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
n3ophyt3@gmail.com
2011-03-18 21:06:38 +00:00
parent 74b90c6e84
commit f5350a0119
10 changed files with 5751 additions and 5723 deletions
+2 -2
View File
@@ -104,7 +104,7 @@
traitor_job = correct_mob:assigned_role
else
var/list/job_tmp = get_all_jobs()
job_tmp.Remove("Captain", "Chaplain", "AI", "Security Officer", "Detective", "Head Of Security", "Head of Personnel", "Chief Engineer", "Research Director", "Chief Medical Officer")
job_tmp.Remove("Captain", "Chaplain", "AI", "Cyborg", "Security Officer", "Detective", "Head Of Security", "Head of Personnel", "Chief Engineer", "Research Director", "Chief Medical Officer")
traitor_job = pick(job_tmp)
if(prob(prob_right_dude) && ticker.mode == "cult")
traitor_name = correct_mob:current
@@ -139,7 +139,7 @@
traitor_job = correct_mob:assigned_role
else
var/list/job_tmp = get_all_jobs()
job_tmp.Remove("Captain", "AI", "Security Officer", "Detective", "Head Of Security", "Head of Personnel", "Chief Engineer", "Research Director", "Warden", "Chief Medical Officer")
job_tmp.Remove("Captain", "AI", "Cyborg", "Security Officer", "Detective", "Head Of Security", "Head of Personnel", "Chief Engineer", "Research Director", "Warden", "Chief Medical Officer")
traitor_job = pick(job_tmp)
if(prob(prob_right_dude) && ticker.mode == "revolution")
traitor_name = correct_mob:current
+10 -8
View File
@@ -95,8 +95,6 @@
survive_objective.owner = traitor
traitor.objectives += survive_objective
add_law_zero(traitor.current)
else
switch(rand(1,100))
if(1 to 50)
@@ -121,14 +119,18 @@
traitor.objectives += hijack_objective
equip_traitor(traitor.current)
traitor.current << "<B>You are the traitor.</B>"
spawn(rand(10,100))
traitor.current << "<B>You are the traitor.</B>"
var/obj_count = 1
for(var/datum/objective/objective in traitor.objectives)
traitor.current << "<B>Objective #[obj_count]</B>: [objective.explanation_text]"
obj_count++
var/obj_count = 1
for(var/datum/objective/objective in traitor.objectives)
traitor.current << "<B>Objective #[obj_count]</B>: [objective.explanation_text]"
obj_count++
if (istype(traitor.current, /mob/living/silicon))
add_law_zero(traitor.current)
else
equip_traitor(traitor.current)
spawn (rand(waittime_l, waittime_h))
send_intercept()
+8 -1
View File
@@ -596,7 +596,7 @@
src.equip_if_possible(new /obj/item/device/flashlight/pen(src), slot_r_store)
if ("Cyborg")
Robotize()
// Robotize()
else
src << "RUH ROH! Your job is [rank] and the game just can't handle it! Please report this bug to an administrator."
@@ -624,6 +624,8 @@
S = locate("start*[rank]") // use old stype
if (istype(S, /obj/landmark/start) && istype(S.loc, /turf))
src.loc = S.loc
// if(S.name == "Cyborg")
// src.Robotize()
else
var/list/L = list()
for(var/area/arrival/start/S in world)
@@ -642,6 +644,9 @@
if(clear)
NL += T
src.loc = pick(NL)
if(src.mind.assigned_role == "Cyborg")
src << "YOU ARE GETTING BORGED NOW"
src.Robotize()
/*
spawn(10)
@@ -659,6 +664,8 @@
/mob/living/carbon/human/proc/spawnId(rank)
var/obj/item/weapon/card/id/C = null
switch(rank)
if("Cyborg")
return
if("Captain")
C = new /obj/item/weapon/card/id/gold(src)
else
+1 -1
View File
@@ -91,7 +91,7 @@
dat += " Slaved to [R.connected_ai.name] |"
else
dat += " Independent from AI |"
if (istype(user, /mob/living/silicon/ai))
if (istype(user, /mob/living/silicon))
if(user.mind.special_role && !R.emagged)
dat += "<A href='?src=\ref[src];magbot=\ref[R]'>(<font color=blue><i>Hack</i></font>)</A> "
dat += "<A href='?src=\ref[src];stopbot=\ref[R]'>(<font color=green><i>[R.canmove ? "Lockdown" : "Release"]</i></font>)</A> "
@@ -18,13 +18,17 @@
else
src.lawsync()
src << "<b>Laws synced with AI, be sure to note any changes.</b>"
if (mind.special_role == "traitor")
src << "<b>Remember, your AI does NOT share or know about your law 0."
else
src << "<b>No AI selected to sync laws with, disabling lawsync protocol.</b>"
src.lawupdate = 0
who << "<b>Obey these laws:</b>"
laws.show_laws(who)
if (connected_ai)
if (mind.special_role == "traitor" && connected_ai)
who << "<b>Remember, [connected_ai.name] is technically your master, but your objective comes first.</b>"
else if (connected_ai)
who << "<b>Remember, [connected_ai.name] is your master, other AIs can be ignored.</b>"
else if (emagged)
who << "<b>Remember, AIs are not syndicate operatives, so you are not required to listen to them.</b>"
@@ -64,8 +68,9 @@
if (length(temp) > 0)
src.laws.ion[index] = temp
temp = master.zeroth
src.laws.zeroth = temp
if (!checktraitor(src))
temp = master.zeroth
src.laws.zeroth = temp
src.laws.inherent.len = master.inherent.len
for (var/index = 1, index <= master.inherent.len, index++)
+6 -3
View File
@@ -260,8 +260,8 @@ mob/new_player
//for(var/datum/data/record/t in data_core.general)
// if((t.fields["name"] == character.real_name) && (t.fields["rank"] == "Unassigned"))
// t.fields["rank"] = rank
ManifestLateSpawn(character)
if(character.mind.assigned_role != "Cyborg")
ManifestLateSpawn(character)
if(ticker)
if (ticker.current_state == GAME_STATE_PLAYING)
var/list/mob/living/silicon/ai/ailist = list()
@@ -270,10 +270,13 @@ mob/new_player
ailist += A
if (ailist.len)
var/mob/living/silicon/ai/announcer = pick(ailist)
announcer.say("[character.real_name] has signed up as [rank].")
if(character.mind.assigned_role != "Cyborg")
announcer.say("[character.real_name] has signed up as [rank].")
var/starting_loc = pick(latejoin)
character.loc = starting_loc
if(character.mind.assigned_role == "Cyborg")
character.Robotize()
del(src)
else
+4 -3
View File
@@ -839,9 +839,10 @@ datum/preferences
character.update_body()
spawn(10)
character.client.midis = midis
character.client.ooccolor = ooccolor
character.client.be_alien = be_alien
if(character)
character.client.midis = midis
character.client.ooccolor = ooccolor
character.client.be_alien = be_alien
/*
+12 -3
View File
@@ -188,7 +188,7 @@
// cyborgs produced by Robotize get an automatic power cell
O.cell = new(O)
O.cell.maxcharge = 7500
O.cell.charge = 1500
O.cell.charge = 7500
O.gender = src.gender
@@ -196,8 +196,17 @@
O.name = "Cyborg"
O.real_name = "Cyborg"
O.lastKnownIP = src.client.address
if (src.client)
src.client.mob = O
if (src.mind)
src.mind.transfer_to(O)
if (src.mind.assigned_role == "Cyborg")
src.mind.original = O
else //welp
src.mind = new /datum/mind( )
src.mind.key = src.key
src.mind.current = O
src.mind.original = O
src.mind.transfer_to(O)
ticker.minds += O.mind
O.loc = src.loc
O << "<B>You are playing a Robot. A Robot can interact with most electronic objects in its view point.</B>"
O << "<B>You must follow the laws that the AI has. You are the AI's assistant to the station basically.</B>"
+5699 -5698
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -765,5 +765,5 @@
#include "code\WorkInProgress\recycling\scrap.dm"
#include "code\WorkInProgress\recycling\sortingmachinery.dm"
#include "interface\skin.dmf"
#include "maps\tgstation.2.0.5.dmm"
#include "maps\tgstation.2.0.4.dmm"
// END_INCLUDE