mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-29 15:08:02 +01:00
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:
@@ -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
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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++)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
/*
|
||||
|
||||
|
||||
@@ -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
File diff suppressed because it is too large
Load Diff
+1
-1
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user