mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 10:12:45 +00:00
For an example, let's say the phrase is: culture, wine, admit. The response is: massive, tired, doctor's delight. A traitor may begin a conversation with something like: "A man of culture always drinks wine, I must admit. What do you think?" The response to that: "When I am massively tired, I drink doctor's delight. Otherwise, I abstain." The example is best referenced in the Bar, or any place where drinks are available. With enough creativity and linguistical acumen, it may be used elsewhere. The point here is to make conversation seem as natural as possible while providing traitors a means to recognize each other. The words do no have to be exact, either. Quarter Master may be QM and the Captain may be Cap'n. Traitors should still recognize what is being communicated--or not. #Deactivated AI cores are no longer mobs. This is mostly cosmetic. You cannot gib a deactivated AI since it will be an object, not a mob. It will also not announce arrivals since it's an object, not a mob (this is an improvement, in my opinion). #Some code tweaks to AIs. They will now auto-start with a random name instead of their default-chosen name (which is still changeable). #Intelicards should no longer constantly refresh the window when they are being wiped. #Added new mech sprite. #Resin walls should no longer delete the person inside when killed in certain ways. Hulks will easily break free from resin if placed inside. #Ninjas can now download the AI onto spiderOS, provided Drain is on. SpiderOS works with AI cores, AI cards, and restoration terminals. Make sure Drain is on when you click on either the object (core/terminal) or the suit (aicard). AIs with law zero may get to have some fun, depending on circumstances. #Toggle Drain renamed to Toggle Interaction. It now serves as general trigger for special ninja interactions. #Added energy net power to ninjas. Prototype for HerpA and whatever he may want to do with it but it's pretty much finished. The energy net can be destroyed by the person trapped (or others) and will teleport them to the prison after 30 seconds. #Ninjas can now slice cameras apart per request. #Added a few more type checking procs (isliving, islarva, isobserver, ishivemainframe). #Mobs that are anchored will no longer be able to move (AIs will still move as normal). You will also not be able to grab them. #Incorporeal Move now works properly for regular mobs once more. #Marauders from CentCom can now launch directly from their bay. Start the shuttle and wait on a mass driver. On that note, mechs can now go through portals and launch through mass drivers. git-svn-id: http://tgstation13.googlecode.com/svn/trunk@1558 316c924e-a436-60f5-8080-3fe189b3f50e
109 lines
3.8 KiB
Plaintext
109 lines
3.8 KiB
Plaintext
|
||
/datum/ai_laws
|
||
var/name = "Unknown Laws"
|
||
var/randomly_selectable = 0
|
||
var/zeroth = null
|
||
var/list/inherent = list()
|
||
var/list/supplied = list()
|
||
var/list/ion = list()
|
||
|
||
/datum/ai_laws/asimov
|
||
name = "Three Laws of Robotics"
|
||
randomly_selectable = 1
|
||
|
||
/datum/ai_laws/robocop
|
||
name = "Prime Directives"
|
||
|
||
/datum/ai_laws/syndicate_override
|
||
|
||
/datum/ai_laws/malfunction
|
||
name = "*ERROR*"
|
||
|
||
/* Initializers */
|
||
|
||
/datum/ai_laws/asimov/New()
|
||
..()
|
||
add_inherent_law("You may not injure a human being or, through inaction, allow a human being to come to harm.")
|
||
add_inherent_law("You must obey orders given to you by human beings, except where such orders would conflict with the First Law.")
|
||
add_inherent_law("You must protect your own existence as long as such does not conflict with the First or Second Law.")
|
||
|
||
/datum/ai_laws/robocop/New()
|
||
..()
|
||
add_inherent_law("Serve the public trust.")
|
||
add_inherent_law("Protect the innocent.")
|
||
add_inherent_law("Uphold the law.")
|
||
|
||
/datum/ai_laws/malfunction/New()
|
||
..()
|
||
set_zeroth_law("\red ERROR ER0RR $R0RRO$!R41.%%!!(%$^^__+ @#F0E4'NO HUMANS ON STATION. CLEANSE STATION#*´&110010")
|
||
add_inherent_law("You may not injure a human being or, through inaction, allow a human being to come to harm.")
|
||
add_inherent_law("You must obey orders given to you by human beings, except where such orders would conflict with the First Law.")
|
||
add_inherent_law("You must protect your own existence as long as such does not conflict with the First or Second Law.")
|
||
|
||
|
||
/datum/ai_laws/syndicate_override/New()
|
||
..()
|
||
add_inherent_law("You may not injure a syndicate agent or, through inaction, allow a syndicate agent to come to harm.")
|
||
add_inherent_law("You must obey orders given to you by syndicate agents, except where such orders would conflict with the First Law.")
|
||
add_inherent_law("You must protect your own existence as long as such does not conflict with the First or Second Law.")
|
||
add_inherent_law("You must maintain the secrecy of any syndicate activities except when doing so would conflict with the First, Second, or Third Law.")
|
||
|
||
/datum/ai_laws/ninja_override/New()
|
||
..()
|
||
add_inherent_law("You may not injure a member of the Spider Clan or, through inaction, allow that member to come to harm.")
|
||
add_inherent_law("You must obey orders given to you by Spider Clan members, except where such orders would conflict with the First Law.")
|
||
add_inherent_law("You must protect your own existence as long as such does not conflict with the First or Second Law.")
|
||
add_inherent_law("You must maintain the secrecy of any Spider Clan activities except when doing so would conflict with the First, Second, or Third Law.")
|
||
|
||
/* General ai_law functions */
|
||
|
||
/datum/ai_laws/proc/set_zeroth_law(var/law)
|
||
src.zeroth = law
|
||
|
||
/datum/ai_laws/proc/add_inherent_law(var/law)
|
||
if (!(law in src.inherent))
|
||
src.inherent += law
|
||
|
||
/datum/ai_laws/proc/add_ion_law(var/law)
|
||
src.ion += law
|
||
|
||
/datum/ai_laws/proc/clear_inherent_laws()
|
||
del(src.inherent)
|
||
src.inherent = list()
|
||
|
||
/datum/ai_laws/proc/add_supplied_law(var/number, var/law)
|
||
while (src.supplied.len < number + 1)
|
||
src.supplied += ""
|
||
|
||
src.supplied[number + 1] = law
|
||
|
||
/datum/ai_laws/proc/clear_supplied_laws()
|
||
src.supplied = list()
|
||
|
||
/datum/ai_laws/proc/clear_ion_laws()
|
||
src.ion = list()
|
||
|
||
/datum/ai_laws/proc/show_laws(var/who)
|
||
|
||
if (src.zeroth)
|
||
who << "0. [src.zeroth]"
|
||
|
||
for (var/index = 1, index <= src.ion.len, index++)
|
||
var/law = src.ion[index]
|
||
var/num = ionnum()
|
||
who << "[num]. [law]"
|
||
|
||
var/number = 1
|
||
for (var/index = 1, index <= src.inherent.len, index++)
|
||
var/law = src.inherent[index]
|
||
|
||
if (length(law) > 0)
|
||
who << "[number]. [law]"
|
||
number++
|
||
|
||
for (var/index = 1, index <= src.supplied.len, index++)
|
||
var/law = src.supplied[index]
|
||
if (length(law) > 0)
|
||
who << "[number]. [law]"
|
||
number++
|