From a20481062c2e0e93fffac4a958418dfc5eaf31ec Mon Sep 17 00:00:00 2001 From: Albert Iordache Date: Tue, 7 Feb 2012 16:13:28 +0200 Subject: [PATCH 1/3] Cleaned up parts of the code, no other changes --- code/defines/obj/computer.dm | 21 +- code/defines/obj/weapon.dm | 24 +- code/game/chemistry.dm | 2 +- code/game/gamemodes/blob/blob.dm | 2 +- code/game/gamemodes/game_mode.dm | 2 +- .../gamemodes/revolution/rp-revolution.dm | 6 +- code/game/machinery/computer/computer.dm | 238 ---------------- code/game/machinery/computer/id.dm | 257 ++++++++++++++++++ code/game/machinery/computer/medical.dm | 2 +- code/game/machinery/computer/security.dm | 2 +- code/game/objects/devices/taperecorder.dm | 2 +- code/game/objects/items.dm | 2 +- code/modules/admin/verbs/randomverbs.dm | 2 +- code/unused/computer2/peripherals.dm | 2 +- 14 files changed, 277 insertions(+), 287 deletions(-) create mode 100644 code/game/machinery/computer/id.dm diff --git a/code/defines/obj/computer.dm b/code/defines/obj/computer.dm index 3cf467ec09..a7a588842a 100644 --- a/code/defines/obj/computer.dm +++ b/code/defines/obj/computer.dm @@ -85,28 +85,9 @@ name = "Master Air Control" -/obj/machinery/computer/card - name = "Identification Computer" - desc = "You can use this to change ID's." - icon_state = "id" - circuit = "/obj/item/weapon/circuitboard/card" - var/obj/item/weapon/card/id/scan = null - var/obj/item/weapon/card/id/modify = null - var/authenticated = 0.0 - var/mode = 0.0 - var/printing = null - req_access = list(access_change_ids) - - -/obj/machinery/computer/card/centcom - name = "CentCom Identification Computer" - circuit = "/obj/item/weapon/circuitboard/card/centcom" - req_access = list(access_cent_captain) - - /obj/machinery/computer/dna name = "DNA operations computer" - desc = "A Computer used to advanced DNA stuff." + desc = "A computer used for advanced DNA operations." icon_state = "dna" var/obj/item/weapon/card/data/scan = null var/obj/item/weapon/card/data/modify = null diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm index 40cb84a6d1..324e5705c3 100644 --- a/code/defines/obj/weapon.dm +++ b/code/defines/obj/weapon.dm @@ -437,16 +437,6 @@ var/special = null item_state = "card-id" -/obj/item/weapon/card/data/clown - name = "Coordinates to Clown Planet" - icon_state = "data" - item_state = "card-id" - layer = 3 - level = 2 - desc = "This card contains coordinates to the fabled Clown Planet. Handle with care." - function = "teleporter" - data = "Clown Land" - /obj/item/weapon/card/emag desc = "An identification card. Seems to have some funny chip on it, though." name = "modified identification card" @@ -860,25 +850,25 @@ //layer = 4 /obj/item/weapon/paper/Court - name = "paper- 'Judgement'" + name = "paper - 'Judgement'" info = "For crimes against the station, the offender is sentenced to:
\n
\n" /obj/item/weapon/paper/certificate - name = "paper- 'Certificate'" + name = "paper - 'Certificate'" info = "Due to this person's unique actions in the past, we hereby certify that they are \"Totally Radical\"

----Central Command
This paper has been stamped with the central command rubber stamp.
" stamped = list(/obj/item/weapon/stamp/centcom) overlays = list("paper_stamped_cent") /obj/item/weapon/paper/Toxin - name = "paper- 'Chemical Information'" + name = "paper - 'Chemical Information'" info = "Known Onboard Toxins:
\n\tGrade A Semi-Liquid Plasma:
\n\t\tHighly poisonous. You cannot sustain concentrations above 15 units.
\n\t\tA gas mask fails to filter plasma after 50 units.
\n\t\tWill attempt to diffuse like a gas.
\n\t\tFiltered by scrubbers.
\n\t\tThere is a bottled version which is very different
\n\t\t\tfrom the version found in canisters!
\n
\n\t\tWARNING: Highly Flammable. Keep away from heat sources
\n\t\texcept in a enclosed fire area!
\n\t\tWARNING: It is a crime to use this without authorization.
\nKnown Onboard Anti-Toxin:
\n\tAnti-Toxin Type 01P: Works against Grade A Plasma.
\n\t\tBest if injected directly into bloodstream.
\n\t\tA full injection is in every regular Med-Kit.
\n\t\tSpecial toxin Kits hold around 7.
\n
\nKnown Onboard Chemicals (other):
\n\tRejuvenation T#001:
\n\t\tEven 1 unit injected directly into the bloodstream
\n\t\t\twill cure paralysis and sleep toxins.
\n\t\tIf administered to a dying patient it will prevent
\n\t\t\tfurther damage for about units*3 seconds.
\n\t\t\tit will not cure them or allow them to be cured.
\n\t\tIt can be administeredd to a non-dying patient
\n\t\t\tbut the chemicals disappear just as fast.
\n\tSleep Toxin T#054:
\n\t\t5 units wilkl induce precisely 1 minute of sleep.
\n\t\t\tThe effect are cumulative.
\n\t\tWARNING: It is a crime to use this without authorization" /obj/item/weapon/paper/courtroom - name = "paper- 'A Crash Course in Legal SOP on SS13'" + name = "paper - 'A Crash Course in Legal SOP on SS13'" info = "Roles:
\nThe Detective is basically the investigator and prosecutor.
\nThe Staff Assistant can perform these functions with written authority from the Detective.
\nThe Captain/HoP/Warden is ct as the judicial authority.
\nThe Security Officers are responsible for executing warrants, security during trial, and prisoner transport.
\n
\nInvestigative Phase:
\nAfter the crime has been committed the Detective's job is to gather evidence and try to ascertain not only who did it but what happened. He must take special care to catalogue everything and don't leave anything out. Write out all the evidence on paper. Make sure you take an appropriate number of fingerprints. IF he must ask someone questions he has permission to confront them. If the person refuses he can ask a judicial authority to write a subpoena for questioning. If again he fails to respond then that person is to be jailed as insubordinate and obstructing justice. Said person will be released after he cooperates.
\n
\nONCE the FT has a clear idea as to who the criminal is he is to write an arrest warrant on the piece of paper. IT MUST LIST THE CHARGES. The FT is to then go to the judicial authority and explain a small version of his case. If the case is moderately acceptable the authority should sign it. Security must then execute said warrant.
\n
\nPre-Pre-Trial Phase:
\nNow a legal representative must be presented to the defendant if said defendant requests one. That person and the defendant are then to be given time to meet (in the jail IS ACCEPTABLE). The defendant and his lawyer are then to be given a copy of all the evidence that will be presented at trial (rewriting it all on paper is fine). THIS IS CALLED THE DISCOVERY PACK. With a few exceptions, THIS IS THE ONLY EVIDENCE BOTH SIDES MAY USE AT TRIAL. IF the prosecution will be seeking the death penalty it MUST be stated at this time. ALSO if the defense will be seeking not guilty by mental defect it must state this at this time to allow ample time for examination.
\nNow at this time each side is to compile a list of witnesses. By default, the defendant is on both lists regardless of anything else. Also the defense and prosecution can compile more evidence beforehand BUT in order for it to be used the evidence MUST also be given to the other side.\nThe defense has time to compile motions against some evidence here.
\nPossible Motions:
\n1. Invalidate Evidence- Something with the evidence is wrong and the evidence is to be thrown out. This includes irrelevance or corrupt security.
\n2. Free Movement- Basically the defendant is to be kept uncuffed before and during the trial.
\n3. Subpoena Witness- If the defense presents god reasons for needing a witness but said person fails to cooperate then a subpoena is issued.
\n4. Drop the Charges- Not enough evidence is there for a trial so the charges are to be dropped. The FT CAN RETRY but the judicial authority must carefully reexamine the new evidence.
\n5. Declare Incompetent- Basically the defendant is insane. Once this is granted a medical official is to examine the patient. If he is indeed insane he is to be placed under care of the medical staff until he is deemed competent to stand trial.
\n
\nALL SIDES MOVE TO A COURTROOM
\nPre-Trial Hearings:
\nA judicial authority and the 2 sides are to meet in the trial room. NO ONE ELSE BESIDES A SECURITY DETAIL IS TO BE PRESENT. The defense submits a plea. If the plea is guilty then proceed directly to sentencing phase. Now the sides each present their motions to the judicial authority. He rules on them. Each side can debate each motion. Then the judicial authority gets a list of crew members. He first gets a chance to look at them all and pick out acceptable and available jurors. Those jurors are then called over. Each side can ask a few questions and dismiss jurors they find too biased. HOWEVER before dismissal the judicial authority MUST agree to the reasoning.
\n
\nThe Trial:
\nThe trial has three phases.
\n1. Opening Arguments- Each side can give a short speech. They may not present ANY evidence.
\n2. Witness Calling/Evidence Presentation- The prosecution goes first and is able to call the witnesses on his approved list in any order. He can recall them if necessary. During the questioning the lawyer may use the evidence in the questions to help prove a point. After every witness the other side has a chance to cross-examine. After both sides are done questioning a witness the prosecution can present another or recall one (even the EXACT same one again!). After prosecution is done the defense can call witnesses. After the initial cases are presented both sides are free to call witnesses on either list.
\nFINALLY once both sides are done calling witnesses we move onto the next phase.
\n3. Closing Arguments- Same as opening.
\nThe jury then deliberates IN PRIVATE. THEY MUST ALL AGREE on a verdict. REMEMBER: They mix between some charges being guilty and others not guilty (IE if you supposedly killed someone with a gun and you unfortunately picked up a gun without authorization then you CAN be found not guilty of murder BUT guilty of possession of illegal weaponry.). Once they have agreed they present their verdict. If unable to reach a verdict and feel they will never they call a deadlocked jury and we restart at Pre-Trial phase with an entirely new set of jurors.
\n
\nSentencing Phase:
\nIf the death penalty was sought (you MUST have gone through a trial for death penalty) then skip to the second part.
\nI. Each side can present more evidence/witnesses in any order. There is NO ban on emotional aspects or anything. The prosecution is to submit a suggested penalty. After all the sides are done then the judicial authority is to give a sentence.
\nII. The jury stays and does the same thing as I. Their sole job is to determine if the death penalty is applicable. If NOT then the judge selects a sentence.
\n
\nTADA you're done. Security then executes the sentence and adds the applicable convictions to the person's record.
\n" /obj/item/weapon/paper/hydroponics - name = "paper- 'Greetings from Billy Bob'" + name = "paper - 'Greetings from Billy Bob'" info = "Hey fellow botanist!
\n
\nI didn't trust the station folk so I left
\na couple of weeks ago. But here's some
\ninstructions on how to operate things here.
\nYou can grow plants and each iteration they become
\nstronger, more potent and have better yield, if you
\nknow which ones to pick. Use your botanist's analyzer
\nfor that. You can turn harvested plants into seeds
\nat the seed extractor, and replant them for better stuff!
\nSometimes if the weed level gets high in the tray
\nmutations into different mushroom or weed species have
\nbeen witnessed. On the rare occassion even weeds mutate!
\n
\nEither way, have fun!
\n
\nBest regards,
\nBilly Bob Johnson.
\n
\nPS.
\nHere's a few tips:
\nIn nettles, potency = damage
\nIn amanitas, potency = deadliness + side effect
\nIn Liberty caps, potency = drug power + effect
\nIn chilis, potency = heat
\nNutrients keep mushrooms alive!
\nWater keeps weeds such as nettles alive!
\nAll other plants need both." /obj/item/weapon/paper/flag @@ -887,7 +877,7 @@ anchored = 1.0 /obj/item/weapon/paper/jobs - name = "paper- 'Job Information'" + name = "paper - 'Job Information'" info = "Information on all formal jobs that can be assigned on Space Station 13 can be found on this document.
\nThe data will be in the following form.
\nGenerally lower ranking positions come first in this list.
\n
\nJob Name general access>lab access-engine access-systems access (atmosphere control)
\n\tJob Description
\nJob Duties (in no particular order)
\nTips (where applicable)
\n
\nResearch Assistant 1>1-0-0
\n\tThis is probably the lowest level position. Anyone who enters the space station after the initial job\nassignment will automatically receive this position. Access with this is restricted. Head of Personnel should\nappropriate the correct level of assistance.
\n1. Assist the researchers.
\n2. Clean up the labs.
\n3. Prepare materials.
\n
\nStaff Assistant 2>0-0-0
\n\tThis position assists the security officer in his duties. The staff assisstants should primarily br\npatrolling the ship waiting until they are needed to maintain ship safety.\n(Addendum: Updated/Elevated Security Protocols admit issuing of low level weapons to security personnel)
\n1. Patrol ship/Guard key areas
\n2. Assist security officer
\n3. Perform other security duties.
\n
\nTechnical Assistant 1>0-0-1
\n\tThis is yet another low level position. The technical assistant helps the engineer and the statian\ntechnician with the upkeep and maintenance of the station. This job is very important because it usually\ngets to be a heavy workload on station technician and these helpers will alleviate that.
\n1. Assist Station technician and Engineers.
\n2. Perform general maintenance of station.
\n3. Prepare materials.
\n
\nMedical Assistant 1>1-0-0
\n\tThis is the fourth position yet it is slightly less common. This position doesn't have much power\noutside of the med bay. Consider this position like a nurse who helps to upkeep medical records and the\nmaterials (filling syringes and checking vitals)
\n1. Assist the medical personnel.
\n2. Update medical files.
\n3. Prepare materials for medical operations.
\n
\nResearch Technician 2>3-0-0
\n\tThis job is primarily a step up from research assistant. These people generally do not get their own lab\nbut are more hands on in the experimentation process. At this level they are permitted to work as consultants to\nthe others formally.
\n1. Inform superiors of research.
\n2. Perform research alongside of official researchers.
\n
\nDetective 3>2-0-0
\n\tThis job is in most cases slightly boring at best. Their sole duty is to\nperform investigations of crine scenes and analysis of the crime scene. This\nalleviates SOME of the burden from the security officer. This person's duty\nis to draw conclusions as to what happened and testify in court. Said person\nalso should stroe the evidence ly.
\n1. Perform crime-scene investigations/draw conclusions.
\n2. Store and catalogue evidence properly.
\n3. Testify to superiors/inquieries on findings.
\n
\nStation Technician 2>0-2-3
\n\tPeople assigned to this position must work to make sure all the systems aboard Space Station 13 are operable.\nThey should primarily work in the computer lab and repairing faulty equipment. They should work with the\natmospheric technician.
\n1. Maintain SS13 systems.
\n2. Repair equipment.
\n
\nAtmospheric Technician 3>0-0-4
\n\tThese people should primarily work in the atmospheric control center and lab. They have the very important\njob of maintaining the delicate atmosphere on SS13.
\n1. Maintain atmosphere on SS13
\n2. Research atmospheres on the space station. (safely please!)
\n
\nEngineer 2>1-3-0
\n\tPeople working as this should generally have detailed knowledge as to how the propulsion systems on SS13\nwork. They are one of the few classes that have unrestricted access to the engine area.
\n1. Upkeep the engine.
\n2. Prevent fires in the engine.
\n3. Maintain a safe orbit.
\n
\nMedical Researcher 2>5-0-0
\n\tThis position may need a little clarification. Their duty is to make sure that all experiments are safe and\nto conduct experiments that may help to improve the station. They will be generally idle until a new laboratory\nis constructed.
\n1. Make sure the station is kept safe.
\n2. Research medical properties of materials studied of Space Station 13.
\n
\nScientist 2>5-0-0
\n\tThese people study the properties, particularly the toxic properties, of materials handled on SS13.\nTechnically they can also be called Plasma Technicians as plasma is the material they routinly handle.
\n1. Research plasma
\n2. Make sure all plasma is properly handled.
\n
\nMedical Doctor (Officer) 2>0-0-0
\n\tPeople working this job should primarily stay in the medical area. They should make sure everyone goes to\nthe medical bay for treatment and examination. Also they should make sure that medical supplies are kept in\norder.
\n1. Heal wounded people.
\n2. Perform examinations of all personnel.
\n3. Moniter usage of medical equipment.
\n
\nSecurity Officer 3>0-0-0
\n\tThese people should attempt to keep the peace inside the station and make sure the station is kept safe. One\nside duty is to assist in repairing the station. They also work like general maintenance personnel. They are not\ngiven a weapon and must use their own resources.
\n(Addendum: Updated/Elevated Security Protocols admit issuing of weapons to security personnel)
\n1. Maintain order.
\n2. Assist others.
\n3. Repair structural problems.
\n
\nHead of Security 4>5-2-2
\n\tPeople assigned as Head of Security should issue orders to the security staff. They should\nalso carefully moderate the usage of all security equipment. All security matters should be reported to this person.
\n1. Oversee security.
\n2. Assign patrol duties.
\n3. Protect the station and staff.
\n
\nHead of Personnel 4>4-2-2
\n\tPeople assigned as head of personnel will find themselves moderating all actions done by personnel. \nAlso they have the ability to assign jobs and access levels.
\n1. Assign duties.
\n2. Moderate personnel.
\n3. Moderate research.
\n
\nCaptain 5>5-5-5 (unrestricted station wide access)
\n\tThis is the highest position youi can aquire on Space Station 13. They are allowed anywhere inside the\nspace station and therefore should protect their ID card. They also have the ability to assign positions\nand access levels. They should not abuse their power.
\n1. Assign all positions on SS13
\n2. Inspect the station for any problems.
\n3. Perform administrative duties.
\n" /obj/item/weapon/paper/photograph @@ -897,7 +887,7 @@ item_state = "paper" /obj/item/weapon/paper/sop - name = "paper- 'Standard Operating Procedure'" + name = "paper - 'Standard Operating Procedure'" info = "Alert Levels:
\nBlue- Emergency
\n\t1. Caused by fire
\n\t2. Caused by manual interaction
\n\tAction:
\n\t\tClose all fire doors. These can only be opened by reseting the alarm
\nRed- Ejection/Self Destruct
\n\t1. Caused by module operating computer.
\n\tAction:
\n\t\tAfter the specified time the module will eject completely.
\n
\nEngine Maintenance Instructions:
\n\tShut off ignition systems:
\n\tActivate internal power
\n\tActivate orbital balance matrix
\n\tRemove volatile liquids from area
\n\tWear a fire suit
\n
\n\tAfter
\n\t\tDecontaminate
\n\t\tVisit medical examiner
\n
\nToxin Laboratory Procedure:
\n\tWear a gas mask regardless
\n\tGet an oxygen tank.
\n\tActivate internal atmosphere
\n
\n\tAfter
\n\t\tDecontaminate
\n\t\tVisit medical examiner
\n
\nDisaster Procedure:
\n\tFire:
\n\t\tActivate sector fire alarm.
\n\t\tMove to a safe area.
\n\t\tGet a fire suit
\n\t\tAfter:
\n\t\t\tAssess Damage
\n\t\t\tRepair damages
\n\t\t\tIf needed, Evacuate
\n\tMeteor Shower:
\n\t\tActivate fire alarm
\n\t\tMove to the back of ship
\n\t\tAfter
\n\t\t\tRepair damage
\n\t\t\tIf needed, Evacuate
\n\tAccidental Reentry:
\n\t\tActivate fire alrms in front of ship.
\n\t\tMove volatile matter to a fire proof area!
\n\t\tGet a fire suit.
\n\t\tStay secure until an emergency ship arrives.
\n
\n\t\tIf ship does not arrive-
\n\t\t\tEvacuate to a nearby safe area!" /obj/item/weapon/paper_bin diff --git a/code/game/chemistry.dm b/code/game/chemistry.dm index cc8b8291d0..c399fc8fc0 100644 --- a/code/game/chemistry.dm +++ b/code/game/chemistry.dm @@ -194,7 +194,7 @@ new /obj/item/weapon/reagent_containers/glass/beaker( src ) /obj/item/weapon/paper/alchemy/ - name = "paper- 'Chemistry Information'" + name = "paper - 'Chemistry Information'" /obj/item/weapon/storage/trashcan name = "disposal unit" diff --git a/code/game/gamemodes/blob/blob.dm b/code/game/gamemodes/blob/blob.dm index 99ac2237e7..c8dc8e2fbf 100644 --- a/code/game/gamemodes/blob/blob.dm +++ b/code/game/gamemodes/blob/blob.dm @@ -182,7 +182,7 @@ comm.messagetext.Add(intercepttext) if(!(comm.stat & (BROKEN | NOPOWER)) && comm.prints_intercept) var/obj/item/weapon/paper/intercept = new /obj/item/weapon/paper( comm.loc ) - intercept.name = "paper- [interceptname]" + intercept.name = "paper - [interceptname]" intercept.info = intercepttext diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm index b2860af20c..30c047a079 100644 --- a/code/game/gamemodes/game_mode.dm +++ b/code/game/gamemodes/game_mode.dm @@ -152,7 +152,7 @@ Whitespace:Seperator;"} for (var/obj/machinery/computer/communications/comm in world) if (!(comm.stat & (BROKEN | NOPOWER)) && comm.prints_intercept) var/obj/item/weapon/paper/intercept = new /obj/item/weapon/paper( comm.loc ) - intercept.name = "paper- 'Cent. Com. Status Summary'" + intercept.name = "paper - 'Cent. Com. Status Summary'" intercept.info = intercepttext comm.messagetitle.Add("Cent. Com. Status Summary") diff --git a/code/game/gamemodes/revolution/rp-revolution.dm b/code/game/gamemodes/revolution/rp-revolution.dm index c63637a9c8..3ceacb0c2e 100644 --- a/code/game/gamemodes/revolution/rp-revolution.dm +++ b/code/game/gamemodes/revolution/rp-revolution.dm @@ -47,7 +47,7 @@ for (var/obj/machinery/computer/communications/comm in world) if (!(comm.stat & (BROKEN | NOPOWER)) && comm.prints_intercept) var/obj/item/weapon/paper/intercept = new /obj/item/weapon/paper( comm.loc ) - intercept.name = "paper- 'Cent. Com. Status Summary'" + intercept.name = "paper - 'Cent. Com. Status Summary'" intercept.info = intercepttext comm.messagetitle.Add("Cent. Com. Status Summary") @@ -118,7 +118,7 @@ for (var/obj/machinery/computer/communications/comm in world) if (!(comm.stat & (BROKEN | NOPOWER)) && comm.prints_intercept) var/obj/item/weapon/paper/intercept = new /obj/item/weapon/paper( comm.loc ) - intercept.name = "paper- 'Cent. Com. Status Summary'" + intercept.name = "paper - 'Cent. Com. Status Summary'" intercept.info = intercepttext comm.messagetitle.Add("Cent. Com. Status Summary") @@ -136,7 +136,7 @@ for (var/obj/machinery/computer/communications/comm in world) if (!(comm.stat & (BROKEN | NOPOWER)) && comm.prints_intercept) var/obj/item/weapon/paper/intercept = new /obj/item/weapon/paper( comm.loc ) - intercept.name = "paper- 'Cent. Com. Status Summary'" + intercept.name = "paper - 'Cent. Com. Status Summary'" intercept.info = intercepttext comm.messagetitle.Add("Cent. Com. Status Summary") diff --git a/code/game/machinery/computer/computer.dm b/code/game/machinery/computer/computer.dm index 91e6b8b9b7..397de4f9b2 100644 --- a/code/game/machinery/computer/computer.dm +++ b/code/game/machinery/computer/computer.dm @@ -133,244 +133,6 @@ Pod/Blast Doors computer user.reset_view(current) return 1 -/obj/machinery/computer/card/attackby(O as obj, user as mob) - if(istype(O, /obj/item/weapon/card/id)) - var/obj/item/weapon/card/id/idcard = O - if(access_change_ids in idcard.access) - if(!scan) - usr.drop_item() - idcard.loc = src - scan = idcard - else if(!modify) - usr.drop_item() - idcard.loc = src - modify = idcard - else - if(!modify) - usr.drop_item() - idcard.loc = src - modify = idcard - else - ..() - -/obj/machinery/computer/card/attack_ai(var/mob/user as mob) - return attack_hand(user) - -/obj/machinery/computer/card/attack_paw(var/mob/user as mob) - return attack_hand(user) - -/obj/machinery/computer/card/attack_hand(var/mob/user as mob) - if(..()) - return - - user.machine = src - var/dat - if (!( ticker )) - return - if (mode) // accessing crew manifest - var/crew = "" - for(var/datum/data/record/t in data_core.general) - crew += "[t.fields["name"]] - [t.fields["rank"]]
" - dat = "Crew Manifest:
Please use security record computer to modify entries.
[crew]Print

Access ID modification console.
" - else - var/header = "
Identification Card Modifier
" - - var/target_name - var/target_owner - var/target_rank - if(modify) - target_name = modify.name - else - target_name = "--------" - if(modify && modify.registered) - target_owner = modify.registered - else - target_owner = "--------" - if(modify && modify.assignment) - target_rank = modify.assignment - else - target_rank = "Unassigned" - - var/scan_name - if(scan) - scan_name = scan.name - else - scan_name = "--------" - - if(!authenticated) - header += "
Please insert the cards into the slots
" - header += "Target: [target_name]
" - header += "Confirm Identity: [scan_name]
" - else - header += "

" - header += "Remove [target_name] || " - header += "Remove [scan_name]
" - header += "Access Crew Manifest || " - header += "Log Out
" - - header += "
" - - var/jobs_all = "" - var/list/alljobs = (istype(src,/obj/machinery/computer/card/centcom)? get_all_centcom_jobs() : get_all_jobs()) + "Custom" - for(var/job in alljobs) - jobs_all += "[dd_replacetext(job, " ", " ")] " //make sure there isn't a line break in the middle of a job - - - var/body - if (authenticated && modify) - var/carddesc = {""} - carddesc += "
" - carddesc += "" - carddesc += "" - carddesc += "Registered: " - carddesc += "" - carddesc += "
" - carddesc += "Assignment: " - - var/jobs = "[target_rank]" //CHECK THIS - - var/accesses = "" - if(istype(src,/obj/machinery/computer/card/centcom)) - accesses += "
Central Command:
" - for(var/A in get_all_centcom_access()) - if(A in modify.access) - accesses += "[dd_replacetext(get_centcom_access_desc(A), " ", " ")] " - else - accesses += "[dd_replacetext(get_centcom_access_desc(A), " ", " ")] " - else - accesses += "
Access
" - accesses += "" - accesses += "" - for(var/i = 1; i <= 7; i++) - accesses += "" - accesses += "" - for(var/i = 1; i <= 7; i++) - accesses += "" - accesses += "
[get_region_accesses_name(i)]:
" - for(var/A in get_region_accesses(i)) - if(A in modify.access) - accesses += "[dd_replacetext(get_access_desc(A), " ", " ")] " - else - accesses += "[dd_replacetext(get_access_desc(A), " ", " ")] " - accesses += "
" - accesses += "
" - body = "[carddesc]
[jobs]

[accesses]" //CHECK THIS - else - body = "{Log in}

" - body += "Access Crew Manifest" - dat = "[header][body]

" - user << browse(dat, "window=id_com;size=900x520") - onclose(user, "id_com") - return - -/obj/machinery/computer/card/Topic(href, href_list) - if(..()) - return - usr.machine = src - switch(href_list["choice"]) - if ("modify") - if (modify) - data_core.manifest_modify(modify.registered, modify.assignment) - modify.name = text("[modify.registered]'s ID Card ([modify.assignment])") - if(ishuman(usr)) - modify.loc = usr.loc - if(!usr.get_active_hand()) - usr.put_in_hand(modify) - modify = null - else - modify.loc = loc - modify = null - else - var/obj/item/I = usr.equipped() - if (istype(I, /obj/item/weapon/card/id)) - usr.drop_item() - I.loc = src - modify = I - authenticated = 0 - - if ("scan") - if (scan) - if(ishuman(usr)) - scan.loc = usr.loc - if(!usr.get_active_hand()) - usr.put_in_hand(scan) - scan = null - else - scan.loc = src.loc - scan = null - else - var/obj/item/I = usr.equipped() - if (istype(I, /obj/item/weapon/card/id)) - usr.drop_item() - I.loc = src - scan = I - authenticated = 0 - if ("auth") - if ((!( authenticated ) && (scan || (istype(usr, /mob/living/silicon))) && (modify || mode))) - if (check_access(scan)) - authenticated = 1 - else if ((!( authenticated ) && (istype(usr, /mob/living/silicon))) && (!modify)) - usr << "You can't modify an ID without an ID inserted to modify. Once one is in the modify slot on the computer, you can log in." - if ("logout") - authenticated = 0 - if("access") - if(href_list["allowed"]) - if(authenticated) - var/access_type = text2num(href_list["access_target"]) - var/access_allowed = text2num(href_list["allowed"]) - if(access_type in (istype(src,/obj/machinery/computer/card/centcom)?get_all_centcom_access() : get_all_accesses())) - modify.access -= access_type - if(access_allowed == 1) - modify.access += access_type - if ("assign") - if (authenticated) - var/t1 = href_list["assign_target"] - if(t1 == "Custom") - t1 = input("Enter a custom job assignment.","Assignment") - else - modify.access = ( istype(src,/obj/machinery/computer/card/centcom) ? get_centcom_access(t1) : get_access(t1) ) - if (modify) - modify.assignment = t1 - if ("reg") - if (authenticated) - var/t2 = modify - //var/t1 = input(usr, "What name?", "ID computer", null) as text - if ((authenticated && modify == t2 && (in_range(src, usr) || (istype(usr, /mob/living/silicon))) && istype(loc, /turf))) - modify.registered = href_list["reg"] - if ("mode") - mode = text2num(href_list["mode_target"]) - if ("print") - if (!( printing )) - printing = 1 - sleep(50) - var/obj/item/weapon/paper/P = new /obj/item/weapon/paper( loc ) - var/t1 = "Crew Manifest:
" - for(var/datum/data/record/t in data_core.general) - t1 += "[t.fields["name"]] - [t.fields["rank"]]
" - P.info = t1 - P.name = "paper- 'Crew Manifest'" - printing = null - if (modify) - modify.name = text("[modify.registered]'s ID Card ([modify.assignment])") - updateUsrDialog() - return /obj/datacore/proc/manifest(var/nosleep = 0) spawn() diff --git a/code/game/machinery/computer/id.dm b/code/game/machinery/computer/id.dm new file mode 100644 index 0000000000..04b8af4123 --- /dev/null +++ b/code/game/machinery/computer/id.dm @@ -0,0 +1,257 @@ +/obj/machinery/computer/card + name = "Identification Computer" + desc = "A computer used to modify ID cards." + icon_state = "id" + circuit = "/obj/item/weapon/circuitboard/card" + var/obj/item/weapon/card/id/scan = null + var/obj/item/weapon/card/id/modify = null + var/authenticated = 0.0 + var/mode = 0.0 + var/printing = null + req_access = list(access_change_ids) + + +/obj/machinery/computer/card/centcom + name = "CentCom Identification Computer" + circuit = "/obj/item/weapon/circuitboard/card/centcom" + req_access = list(access_cent_captain) + + +/obj/machinery/computer/card/attackby(O as obj, user as mob) + if(istype(O, /obj/item/weapon/card/id)) + var/obj/item/weapon/card/id/idcard = O + if(access_change_ids in idcard.access) + if(!scan) + usr.drop_item() + idcard.loc = src + scan = idcard + else if(!modify) + usr.drop_item() + idcard.loc = src + modify = idcard + else + if(!modify) + usr.drop_item() + idcard.loc = src + modify = idcard + else + ..() + +/obj/machinery/computer/card/attack_ai(var/mob/user as mob) + return attack_hand(user) + +/obj/machinery/computer/card/attack_paw(var/mob/user as mob) + return attack_hand(user) + +/obj/machinery/computer/card/attack_hand(var/mob/user as mob) + if(..()) + return + + user.machine = src + var/dat + if (!( ticker )) + return + if (mode) // accessing crew manifest + var/crew = "" + for(var/datum/data/record/t in data_core.general) + crew += "[t.fields["name"]] - [t.fields["rank"]]
" + dat = "Crew Manifest:
Please use the security record computer to modify entries.
[crew]Print

Access ID modification console.
" + else + var/header = "
Identification Card Modifier
" + + var/target_name + var/target_owner + var/target_rank + if(modify) + target_name = modify.name + else + target_name = "--------" + if(modify && modify.registered) + target_owner = modify.registered + else + target_owner = "--------" + if(modify && modify.assignment) + target_rank = modify.assignment + else + target_rank = "Unassigned" + + var/scan_name + if(scan) + scan_name = scan.name + else + scan_name = "--------" + + if(!authenticated) + header += "
Please insert the cards into the slots
" + header += "Target: [target_name]
" + header += "Confirm Identity: [scan_name]
" + else + header += "

" + header += "Remove [target_name] || " + header += "Remove [scan_name]
" + header += "Access Crew Manifest || " + header += "Log Out
" + + header += "
" + + var/jobs_all = "" + var/list/alljobs = (istype(src,/obj/machinery/computer/card/centcom)? get_all_centcom_jobs() : get_all_jobs()) + "Custom" + for(var/job in alljobs) + jobs_all += "[dd_replacetext(job, " ", " ")] " //make sure there isn't a line break in the middle of a job + + + var/body + if (authenticated && modify) + var/carddesc = {""} + carddesc += "
" + carddesc += "" + carddesc += "" + carddesc += "Registered: " + carddesc += "" + carddesc += "
" + carddesc += "Assignment: " + + var/jobs = "[target_rank]" //CHECK THIS + + var/accesses = "" + if(istype(src,/obj/machinery/computer/card/centcom)) + accesses += "
Central Command:
" + for(var/A in get_all_centcom_access()) + if(A in modify.access) + accesses += "[dd_replacetext(get_centcom_access_desc(A), " ", " ")] " + else + accesses += "[dd_replacetext(get_centcom_access_desc(A), " ", " ")] " + else + accesses += "
Access
" + accesses += "" + accesses += "" + for(var/i = 1; i <= 7; i++) + accesses += "" + accesses += "" + for(var/i = 1; i <= 7; i++) + accesses += "" + accesses += "
[get_region_accesses_name(i)]:
" + for(var/A in get_region_accesses(i)) + if(A in modify.access) + accesses += "[dd_replacetext(get_access_desc(A), " ", " ")] " + else + accesses += "[dd_replacetext(get_access_desc(A), " ", " ")] " + accesses += "
" + accesses += "
" + body = "[carddesc]
[jobs]

[accesses]" //CHECK THIS + else + body = "{Log in}

" + body += "Access Crew Manifest" + dat = "[header][body]

" + user << browse(dat, "window=id_com;size=900x520") + onclose(user, "id_com") + return + +/obj/machinery/computer/card/Topic(href, href_list) + if(..()) + return + usr.machine = src + switch(href_list["choice"]) + if ("modify") + if (modify) + data_core.manifest_modify(modify.registered, modify.assignment) + modify.name = text("[modify.registered]'s ID Card ([modify.assignment])") + if(ishuman(usr)) + modify.loc = usr.loc + if(!usr.get_active_hand()) + usr.put_in_hand(modify) + modify = null + else + modify.loc = loc + modify = null + else + var/obj/item/I = usr.equipped() + if (istype(I, /obj/item/weapon/card/id)) + usr.drop_item() + I.loc = src + modify = I + authenticated = 0 + + if ("scan") + if (scan) + if(ishuman(usr)) + scan.loc = usr.loc + if(!usr.get_active_hand()) + usr.put_in_hand(scan) + scan = null + else + scan.loc = src.loc + scan = null + else + var/obj/item/I = usr.equipped() + if (istype(I, /obj/item/weapon/card/id)) + usr.drop_item() + I.loc = src + scan = I + authenticated = 0 + if ("auth") + if ((!( authenticated ) && (scan || (istype(usr, /mob/living/silicon))) && (modify || mode))) + if (check_access(scan)) + authenticated = 1 + else if ((!( authenticated ) && (istype(usr, /mob/living/silicon))) && (!modify)) + usr << "You can't modify an ID without an ID inserted to modify. Once one is in the modify slot on the computer, you can log in." + if ("logout") + authenticated = 0 + if("access") + if(href_list["allowed"]) + if(authenticated) + var/access_type = text2num(href_list["access_target"]) + var/access_allowed = text2num(href_list["allowed"]) + if(access_type in (istype(src,/obj/machinery/computer/card/centcom)?get_all_centcom_access() : get_all_accesses())) + modify.access -= access_type + if(access_allowed == 1) + modify.access += access_type + if ("assign") + if (authenticated) + var/t1 = href_list["assign_target"] + if(t1 == "Custom") + t1 = input("Enter a custom job assignment.","Assignment") + else + modify.access = ( istype(src,/obj/machinery/computer/card/centcom) ? get_centcom_access(t1) : get_access(t1) ) + if (modify) + modify.assignment = t1 + if ("reg") + if (authenticated) + var/t2 = modify + //var/t1 = input(usr, "What name?", "ID computer", null) as text + if ((authenticated && modify == t2 && (in_range(src, usr) || (istype(usr, /mob/living/silicon))) && istype(loc, /turf))) + modify.registered = href_list["reg"] + if ("mode") + mode = text2num(href_list["mode_target"]) + if ("print") + if (!( printing )) + printing = 1 + sleep(50) + var/obj/item/weapon/paper/P = new /obj/item/weapon/paper( loc ) + var/t1 = "Crew Manifest:
" + for(var/datum/data/record/t in data_core.general) + t1 += "[t.fields["name"]] - [t.fields["rank"]]
" + P.info = t1 + P.name = "paper - 'Crew Manifest'" + printing = null + if (modify) + modify.name = text("[modify.registered]'s ID Card ([modify.assignment])") + updateUsrDialog() + return \ No newline at end of file diff --git a/code/game/machinery/computer/medical.dm b/code/game/machinery/computer/medical.dm index f507d34baf..1de06d1091 100644 --- a/code/game/machinery/computer/medical.dm +++ b/code/game/machinery/computer/medical.dm @@ -435,7 +435,7 @@ else P.info += "Medical Record Lost!
" P.info += "" - P.name = "paper- 'Medical Record'" + P.name = "paper - 'Medical Record'" src.printing = null if (href_list["search_dna"]) diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm index 241e6556b2..9f7643b738 100644 --- a/code/game/machinery/computer/security.dm +++ b/code/game/machinery/computer/security.dm @@ -304,7 +304,7 @@ What a mess.*/ else P.info += "Security Record Lost!
" P.info += "" - P.name = "paper- 'Security Record'" + P.name = "paper - 'Security Record'" printing = null //RECORD DELETE if ("Delete All Records") diff --git a/code/game/objects/devices/taperecorder.dm b/code/game/objects/devices/taperecorder.dm index da6e8946db..0d6f32e97e 100644 --- a/code/game/objects/devices/taperecorder.dm +++ b/code/game/objects/devices/taperecorder.dm @@ -206,7 +206,7 @@ for(var/i=1,src.storedinfo.len >= i,i++) t1 += "[src.storedinfo[i]]
" P.info = t1 - P.name = "paper- 'Transcript'" + P.name = "paper - 'Transcript'" P.overlays += "paper_words" diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 96cdcdd362..81e8d63dad 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -233,7 +233,7 @@ dat += text(" [] - []
", M.name, M.get_assignment()) var/obj/item/weapon/paper/P = new /obj/item/weapon/paper( src.loc ) P.info = dat - P.name = "paper- 'Crew Manifest'" + P.name = "paper - 'Crew Manifest'" //SN src = null del(src) return diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index 693c343fed..1c8d2d9139 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -536,7 +536,7 @@ Traitors and the like can also be revived with the previous role mostly intact. for (var/obj/machinery/computer/communications/C in machines) if(! (C.stat & (BROKEN|NOPOWER) ) ) var/obj/item/weapon/paper/P = new /obj/item/weapon/paper( C.loc ) - P.name = "paper- '[command_name()] Update.'" + P.name = "paper - '[command_name()] Update.'" P.info = input C.messagetitle.Add("[command_name()] Update") C.messagetext.Add(P.info) diff --git a/code/unused/computer2/peripherals.dm b/code/unused/computer2/peripherals.dm index fbbec51a1b..b5d2310d5f 100644 --- a/code/unused/computer2/peripherals.dm +++ b/code/unused/computer2/peripherals.dm @@ -110,7 +110,7 @@ var/obj/item/weapon/paper/P = new /obj/item/weapon/paper( src.host.loc ) P.info = print_data if(print_title) - P.name = "paper- '[print_title]'" + P.name = "paper - '[print_title]'" src.printing = 0 return From 7df0181e60ee70971f86d47c810d4c970a61f186 Mon Sep 17 00:00:00 2001 From: Albert Iordache Date: Tue, 7 Feb 2012 16:53:03 +0200 Subject: [PATCH 2/3] Code cleanup: renamed the ID card's variable "registered" to "registered_name" for better clarity --- baystation12.dme | 3 +- code/defines/obj/weapon.dm | 48 +++++++++---------- code/defines/procs/helpers.dm | 4 +- code/game/jobs/job_controller.dm | 8 ++-- code/game/machinery/bots/ed209bot.dm | 2 +- code/game/machinery/bots/secbot.dm | 2 +- code/game/machinery/computer/id.dm | 12 ++--- code/game/machinery/computer/medical.dm | 2 +- code/game/machinery/computer/security.dm | 2 +- .../machinery/doors/airlock_electronics.dm | 2 +- code/game/machinery/portable_turret.dm | 2 +- code/game/machinery/requests_console.dm | 2 +- code/game/objects/closets/secure/personal.dm | 10 ++-- code/game/objects/devices/PDA/PDA.dm | 14 +++--- code/game/objects/items/weapons/cards_ids.dm | 4 +- code/game/response_team.dm | 2 +- code/game/supplyshuttle.dm | 4 +- code/modules/admin/verbs/debug.dm | 16 +++---- code/modules/admin/verbs/onlyone.dm | 2 +- code/modules/admin/verbs/striketeam.dm | 2 +- .../admin/verbs/striketeam_syndicate.dm | 2 +- code/modules/clothing/glasses/hud.dm | 2 +- .../mob/living/carbon/human/examine.dm | 2 +- code/modules/mob/living/carbon/human/human.dm | 14 +++--- code/modules/mob/living/silicon/pai/hud.dm | 2 +- 25 files changed, 83 insertions(+), 82 deletions(-) diff --git a/baystation12.dme b/baystation12.dme index 3d325141d4..e179fa09ad 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -518,9 +518,10 @@ #include "code\game\machinery\computer\crew.dm" #include "code\game\machinery\computer\explosive.dm" #include "code\game\machinery\computer\hologram.dm" +#include "code\game\machinery\computer\id.dm" #include "code\game\machinery\computer\lockdown.dm" #include "code\game\machinery\computer\medical.dm" -#include "code\game\machinery\computer\Operating.dm" +#include "code\game\machinery\computer\operating.dm" #include "code\game\machinery\computer\power.dm" #include "code\game\machinery\computer\robot.dm" #include "code\game\machinery\computer\security.dm" diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm index 324e5705c3..91512755fc 100644 --- a/code/defines/obj/weapon.dm +++ b/code/defines/obj/weapon.dm @@ -430,7 +430,7 @@ /obj/item/weapon/card/data name = "data disk" - desc = "A disk of data." + desc = "A disk with data." icon_state = "data" var/function = "storage" var/data = "null" @@ -450,7 +450,7 @@ icon_state = "id" item_state = "card-id" var/access = list() - var/registered = null + var/registered_name = null // The name registered on the card var/assignment = null var/obj/item/weapon/photo/PHOTO = null var/over_jumpsuit = 1 // If set to 0, it won't display on top of the mob's jumpsuit @@ -458,10 +458,30 @@ /obj/item/weapon/card/id/gold name = "identification card" - desc = "A golden card which shows power and might." + desc = "A golden identification card." icon_state = "gold" item_state = "gold_id" +/obj/item/weapon/card/id/captains_spare + name = "Captain's spare ID" + icon_state = "gold" + item_state = "gold_id" + registered_name = "Captain" + assignment = "Captain" + New() + access = get_access("Captain") + ..() + +/obj/item/weapon/card/id/centcom + name = "CentCom ID" + desc = "An ID straight from Cent. Com." + icon_state = "centcom" + registered_name = "Central Command" + assignment = "General" + New() + access = get_all_centcom_access() + ..() + /obj/item/weapon/card/id/syndicate name = "agent card" desc = "Shhhhh." @@ -471,30 +491,10 @@ /obj/item/weapon/card/id/syndicate_command name = "Syndicate ID card" desc = "An ID straight from the Syndicate." - registered = "Syndicate" + registered_name = "Syndicate" assignment = "Syndicate Overlord" access = list(access_syndicate) -/obj/item/weapon/card/id/captains_spare - name = "Captain's spare ID" - desc = "The spare ID of the High Lord himself." - icon_state = "gold" - item_state = "gold_id" - registered = "Captain" - assignment = "Captain" - New() - access = get_access("Captain") - ..() - -/obj/item/weapon/card/id/centcom - name = "CentCom ID" - desc = "An ID straight from Cent. Com." - icon_state = "centcom" - registered = "Central Command" - assignment = "General" - New() - access = get_all_centcom_access() - ..() /obj/item/weapon/cleaner desc = "Space Cleaner!" diff --git a/code/defines/procs/helpers.dm b/code/defines/procs/helpers.dm index b85669488e..6ee01b884f 100644 --- a/code/defines/procs/helpers.dm +++ b/code/defines/procs/helpers.dm @@ -685,7 +685,7 @@ Turf and target are seperate in case you want to teleport some distance from a t M.real_name = newname M.name = newname -/proc/clname(var/mob/M as mob) //--All praise goes to NEO|Phyte, all blame goes to DH, and it was Cindi-Kate's idea +/*/proc/clname(var/mob/M as mob) //--All praise goes to NEO|Phyte, all blame goes to DH, and it was Cindi-Kate's idea var/randomname = pick(clown_names) var/newname = input(M,"You are the clown. Would you like to change your name to something else?", "Name change",randomname) var/oldname = M.real_name @@ -725,7 +725,7 @@ Turf and target are seperate in case you want to teleport some distance from a t if(id.registered == oldname) id.registered = newname id.name = "[id.registered]'s ID Card ([id.assignment])" - break + break*/ /proc/ionnum() return "[pick("!","@","#","$","%","^","&","*")][pick(pick("!","@","#","$","%","^","&","*"))][pick(pick("!","@","#","$","%","^","&","*"))][pick(pick("!","@","#","$","%","^","&","*"))]" diff --git a/code/game/jobs/job_controller.dm b/code/game/jobs/job_controller.dm index 162ce911d7..0ffb81b43e 100644 --- a/code/game/jobs/job_controller.dm +++ b/code/game/jobs/job_controller.dm @@ -250,9 +250,9 @@ var/global/datum/controller/occupations/job_master else C = new /obj/item/weapon/card/id(H) if(C) - C.registered = H.real_name + C.registered_name = H.real_name C.assignment = rank - C.name = "[C.registered]'s ID Card ([C.assignment])" + C.name = "[C.registered_name]'s ID Card ([C.assignment])" C.access = get_access(C.assignment) H.equip_if_possible(C, H.slot_wear_id) if(!H.equip_if_possible(new /obj/item/weapon/pen(H), H.slot_r_store)) @@ -264,9 +264,9 @@ var/global/datum/controller/occupations/job_master pda.ownjob = H.wear_id.assignment pda.name = "PDA-[H.real_name] ([pda.ownjob])" - if(rank == "Clown") + /*if(rank == "Clown") spawn(1) - clname(H) + clname(H)*/ return 1 diff --git a/code/game/machinery/bots/ed209bot.dm b/code/game/machinery/bots/ed209bot.dm index 709730ed5d..8f2872dba9 100644 --- a/code/game/machinery/bots/ed209bot.dm +++ b/code/game/machinery/bots/ed209bot.dm @@ -640,7 +640,7 @@ Auto Patrol: []"}, var/obj/item/device/pda/pda = perp:wear_id id = pda.id if (id) - perpname = id.registered + perpname = id.registered_name else var/obj/item/device/pda/pda = perp:wear_id perpname = pda.owner diff --git a/code/game/machinery/bots/secbot.dm b/code/game/machinery/bots/secbot.dm index 406fa150b4..61338d7377 100644 --- a/code/game/machinery/bots/secbot.dm +++ b/code/game/machinery/bots/secbot.dm @@ -616,7 +616,7 @@ Auto Patrol: []"}, var/obj/item/device/pda/pda = perp:wear_id id = pda.id if(id) - perpname = id.registered + perpname = id.registered_name else var/obj/item/device/pda/pda = perp:wear_id perpname = pda.owner diff --git a/code/game/machinery/computer/id.dm b/code/game/machinery/computer/id.dm index 04b8af4123..05cc6749c9 100644 --- a/code/game/machinery/computer/id.dm +++ b/code/game/machinery/computer/id.dm @@ -66,8 +66,8 @@ target_name = modify.name else target_name = "--------" - if(modify && modify.registered) - target_owner = modify.registered + if(modify && modify.registered_name) + target_owner = modify.registered_name else target_owner = "--------" if(modify && modify.assignment) @@ -171,8 +171,8 @@ switch(href_list["choice"]) if ("modify") if (modify) - data_core.manifest_modify(modify.registered, modify.assignment) - modify.name = text("[modify.registered]'s ID Card ([modify.assignment])") + data_core.manifest_modify(modify.registered_name, modify.assignment) + modify.name = text("[modify.registered_name]'s ID Card ([modify.assignment])") if(ishuman(usr)) modify.loc = usr.loc if(!usr.get_active_hand()) @@ -237,7 +237,7 @@ var/t2 = modify //var/t1 = input(usr, "What name?", "ID computer", null) as text if ((authenticated && modify == t2 && (in_range(src, usr) || (istype(usr, /mob/living/silicon))) && istype(loc, /turf))) - modify.registered = href_list["reg"] + modify.registered_name = href_list["reg"] if ("mode") mode = text2num(href_list["mode_target"]) if ("print") @@ -252,6 +252,6 @@ P.name = "paper - 'Crew Manifest'" printing = null if (modify) - modify.name = text("[modify.registered]'s ID Card ([modify.assignment])") + modify.name = text("[modify.registered_name]'s ID Card ([modify.assignment])") updateUsrDialog() return \ No newline at end of file diff --git a/code/game/machinery/computer/medical.dm b/code/game/machinery/computer/medical.dm index 1de06d1091..d490f45f4b 100644 --- a/code/game/machinery/computer/medical.dm +++ b/code/game/machinery/computer/medical.dm @@ -155,7 +155,7 @@ src.active1 = null src.active2 = null if (src.check_access(src.scan)) - src.authenticated = src.scan.registered + src.authenticated = src.scan.registered_name src.rank = src.scan.assignment src.screen = 1 if (src.authenticated) diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm index 9f7643b738..f92aeae669 100644 --- a/code/game/machinery/computer/security.dm +++ b/code/game/machinery/computer/security.dm @@ -221,7 +221,7 @@ What a mess.*/ active1 = null active2 = null if(check_access(scan)) - authenticated = scan.registered + authenticated = scan.registered_name rank = scan.assignment screen = 1 //RECORD FUNCTIONS diff --git a/code/game/machinery/doors/airlock_electronics.dm b/code/game/machinery/doors/airlock_electronics.dm index 08ce5b2a9c..50bd35d0c9 100644 --- a/code/game/machinery/doors/airlock_electronics.dm +++ b/code/game/machinery/doors/airlock_electronics.dm @@ -73,7 +73,7 @@ I = pda.id if (I && src.check_access(I)) src.locked = 0 - src.last_configurator = I:registered + src.last_configurator = I:registered_name if (locked) return diff --git a/code/game/machinery/portable_turret.dm b/code/game/machinery/portable_turret.dm index 7949cbae65..12b8856cbe 100644 --- a/code/game/machinery/portable_turret.dm +++ b/code/game/machinery/portable_turret.dm @@ -427,7 +427,7 @@ Neutralize All Unidentified Life Signs: []
"}, var/obj/item/device/pda/pda = perp:wear_id id = pda.id if (id) - perpname = id.registered + perpname = id.registered_name else var/obj/item/device/pda/pda = perp:wear_id perpname = pda.owner diff --git a/code/game/machinery/requests_console.dm b/code/game/machinery/requests_console.dm index 0fe117fb05..ea8c3f2ff3 100644 --- a/code/game/machinery/requests_console.dm +++ b/code/game/machinery/requests_console.dm @@ -308,7 +308,7 @@ var/list/obj/machinery/requests_console/allConsoles = list() if (istype(O, /obj/item/weapon/card/id)) if(src.screen == 9) var/obj/item/weapon/card/id/T = O - src.msgVerified = text("Verified by [T.registered] ([T.assignment])") + src.msgVerified = text("Verified by [T.registered_name] ([T.assignment])") src.updateUsrDialog() if(src.screen == 10) var/obj/item/weapon/card/id/ID = O diff --git a/code/game/objects/closets/secure/personal.dm b/code/game/objects/closets/secure/personal.dm index c3d09c48bc..031626c44e 100644 --- a/code/game/objects/closets/secure/personal.dm +++ b/code/game/objects/closets/secure/personal.dm @@ -27,17 +27,17 @@ user << "\red It appears to be broken." return var/obj/item/weapon/card/id/I = W - if(!I || !I.registered) return - if(src.allowed(user) || !src.registered || (istype(I) && (src.registered == I.registered))) + if(!I || !I.registered_name) return + if(src.allowed(user) || !src.registered || (istype(I) && (src.registered == I.registered_name))) //they can open all lockers, or nobody owns this, or they own this locker src.locked = !( src.locked ) if(src.locked) src.icon_state = src.icon_locked else src.icon_state = src.icon_closed if(!src.registered) - src.registered = I.registered - src.desc = "Owned by [I.registered]." - src.name = "Personal Closet - [I.registered]" + src.registered = I.registered_name + src.desc = "Owned by [I.registered_name]." + src.name = "Personal Closet - [I.registered_name]" else user << "\red Access Denied" else if( (istype(W, /obj/item/weapon/card/emag)||istype(W, /obj/item/weapon/melee/energy/blade)) && !src.broken) diff --git a/code/game/objects/devices/PDA/PDA.dm b/code/game/objects/devices/PDA/PDA.dm index 19c2ffd581..03015c01ca 100644 --- a/code/game/objects/devices/PDA/PDA.dm +++ b/code/game/objects/devices/PDA/PDA.dm @@ -168,7 +168,7 @@ if (0) dat += "

PERSONAL DATA ASSISTANT v.1.2

" dat += "Owner: [owner], [ownjob]
" - dat += text("ID: []
", src, (id ? "[id.registered], [id.assignment]" : "----------")) + dat += text("ID: []
", src, (id ? "[id.registered_name], [id.assignment]" : "----------")) dat += "Station Time: [round(world.time / 36000)+12]:[(world.time / 600 % 60) < 10 ? add_zero(world.time / 600 % 60, 1) : world.time / 600 % 60]"//:[world.time / 100 % 6][world.time / 100 % 10]" dat += "

" @@ -656,7 +656,7 @@ id = I else var/obj/item/weapon/card/I = user.equipped() - if (istype(I, /obj/item/weapon/card/id) && I:registered) + if (istype(I, /obj/item/weapon/card/id) && I:registered_name) if(id)//Get id and replace it. user.drop_item() I.loc = src @@ -679,9 +679,9 @@ if (C:radio) C:radio.hostpda = src - else if (istype(C, /obj/item/weapon/card/id) && C:registered) + else if (istype(C, /obj/item/weapon/card/id) && C:registered_name) if(!owner) - owner = C:registered + owner = C:registered_name ownjob = C:assignment name = "PDA-[owner] ([ownjob])" user << "\blue Card scanned." @@ -694,11 +694,11 @@ if(input=="Insert") id_check(user, 2) else - if(!(owner == C:registered)) + if(!(owner == C:registered_name)) user << "\blue Name on card does not match registered name. Please try again." - else if((owner == C:registered) && (ownjob == C:assignment)) + else if((owner == C:registered_name) && (ownjob == C:assignment)) user << "\blue Rank is up to date." - else if((owner == C:registered) && (ownjob != C:assignment)) + else if((owner == C:registered_name) && (ownjob != C:assignment)) ownjob = C:assignment name = "PDA-[owner] ([ownjob])" user << "\blue Rank updated." diff --git a/code/game/objects/items/weapons/cards_ids.dm b/code/game/objects/items/weapons/cards_ids.dm index 14566b53fb..56068843af 100644 --- a/code/game/objects/items/weapons/cards_ids.dm +++ b/code/game/objects/items/weapons/cards_ids.dm @@ -45,9 +45,9 @@ FINGERPRINT CARD return /obj/item/weapon/card/id/syndicate/attack_self(mob/user as mob) - src.registered = input(user, "What name would you like to put on this card?", "Agent card name", ishuman(user) ? user.real_name : user.name) + src.registered_name = input(user, "What name would you like to put on this card?", "Agent card name", ishuman(user) ? user.real_name : user.name) src.assignment = input(user, "What occupation would you like to put on this card?\nNote: This will not grant any access levels other than Maintenance.", "Agent card job assignment", "Assistant") - src.name = "[src.registered]'s ID Card ([src.assignment])" + src.name = "[src.registered_name]'s ID Card ([src.assignment])" user << "\blue You successfully forge the ID card." /obj/item/weapon/card/id/attackby(obj/item/weapon/W as obj, mob/user as mob) diff --git a/code/game/response_team.dm b/code/game/response_team.dm index 47460b894f..f9238d5f67 100644 --- a/code/game/response_team.dm +++ b/code/game/response_team.dm @@ -241,7 +241,7 @@ proc/trigger_armed_response_team() W.access = get_access("Head of Personnel") W.assignment = "Emergency Response Team" W.access += list(access_cent_general, access_cent_specops, access_cent_living, access_cent_storage)//Let's add their alloted CentCom access. - W.registered = real_name + W.registered_name = real_name equip_if_possible(W, slot_wear_id) return 1 \ No newline at end of file diff --git a/code/game/supplyshuttle.dm b/code/game/supplyshuttle.dm index e3d27b1256..d4bae07087 100644 --- a/code/game/supplyshuttle.dm +++ b/code/game/supplyshuttle.dm @@ -317,8 +317,8 @@ var/list/supply_groups = new() reqform.info += "

[station_name] Supply Requisition Form


" if (istype(usr:wear_id, /obj/item/weapon/card/id)) - if(usr:wear_id.registered) - idname = usr:wear_id.registered + if(usr:wear_id.registered_name) + idname = usr:wear_id.registered_name if(usr:wear_id.assignment) idrank = usr:wear_id.assignment if (istype(usr:wear_id, /obj/item/device/pda)) diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index 2c3aa31f76..8e7b58020b 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -448,9 +448,9 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that log_admin("[key_name(src)] has granted [M.key] full access.") id.icon_state = "gold" id:access = get_all_accesses()+get_all_centcom_access()+get_all_syndicate_access() - id.registered = H.real_name + id.registered_name = H.real_name id.assignment = "Captain" - id.name = "[id.registered]'s ID Card ([id.assignment])" + id.name = "[id.registered_name]'s ID Card ([id.assignment])" H.equip_if_possible(id, H.slot_wear_id) H.update_clothing() else @@ -610,7 +610,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that W.name = "[M.real_name]'s ID Card" W.access = get_all_accesses() W.assignment = "Tunnel Clown!" - W.registered = M.real_name + W.registered_name = M.real_name M.equip_if_possible(W, M.slot_wear_id) var/obj/item/weapon/fireaxe/fire_axe = new(M) @@ -669,7 +669,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that W.name = "[M.real_name]'s ID Card" W.access = get_all_accesses() W.assignment = "Reaper" - W.registered = M.real_name + W.registered_name = M.real_name M.equip_if_possible(W, M.slot_wear_id) if("death commando")//Was looking to add this for a while. @@ -707,7 +707,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that W.access = get_all_accesses() W.access += list("VIP Guest","Custodian","Thunderdome Overseer","Intel Officer","Medical Officer","Death Commando","Research Officer") W.assignment = "CentCom Review Official" - W.registered = M.real_name + W.registered_name = M.real_name W.over_jumpsuit = 0 M.equip_if_possible(W, M.slot_wear_id) @@ -732,7 +732,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that W.access = get_all_accesses() W.access += get_all_centcom_access() W.assignment = "CentCom Commanding Officer" - W.registered = M.real_name + W.registered_name = M.real_name W.over_jumpsuit = 0 M.equip_if_possible(W, M.slot_wear_id) @@ -755,7 +755,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that W.access = get_all_accesses() W.access += get_all_centcom_access() W.assignment = "Special Operations Officer" - W.registered = M.real_name + W.registered_name = M.real_name M.equip_if_possible(W, M.slot_wear_id) if("blue wizard") @@ -809,7 +809,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that W.access = get_all_accesses() W.access += get_all_centcom_access() W.assignment = "Admiral" - W.registered = M.real_name + W.registered_name = M.real_name M.equip_if_possible(W, M.slot_wear_id) M.update_clothing() diff --git a/code/modules/admin/verbs/onlyone.dm b/code/modules/admin/verbs/onlyone.dm index 6849c5d7bf..90c43b6c4e 100644 --- a/code/modules/admin/verbs/onlyone.dm +++ b/code/modules/admin/verbs/onlyone.dm @@ -48,7 +48,7 @@ W.access = get_all_accesses() W.access += get_all_centcom_access() W.assignment = "Highlander" - W.registered = H.real_name + W.registered_name = H.real_name H.equip_if_possible(W, H.slot_wear_id) message_admins("\blue [key_name_admin(usr)] used THERE CAN BE ONLY ONE!", 1) diff --git a/code/modules/admin/verbs/striketeam.dm b/code/modules/admin/verbs/striketeam.dm index 2a89b07d9e..405fc5bb81 100644 --- a/code/modules/admin/verbs/striketeam.dm +++ b/code/modules/admin/verbs/striketeam.dm @@ -183,7 +183,7 @@ var/global/sent_strike_team = 0 W.access = get_all_accesses()//They get full station access. W.access += list(access_cent_general, access_cent_specops, access_cent_living, access_cent_storage)//Let's add their alloted CentCom access. W.assignment = "Death Commando" - W.registered = real_name + W.registered_name = real_name equip_if_possible(W, slot_wear_id) resistances += "alien_embryo" diff --git a/code/modules/admin/verbs/striketeam_syndicate.dm b/code/modules/admin/verbs/striketeam_syndicate.dm index 1fc2a4bbde..eccd7ea42a 100644 --- a/code/modules/admin/verbs/striketeam_syndicate.dm +++ b/code/modules/admin/verbs/striketeam_syndicate.dm @@ -186,7 +186,7 @@ var/global/sent_syndicate_strike_team = 0 W.access = get_all_accesses()//They get full station access because obviously the syndicate has HAAAX, and can make special IDs for their most elite members. W.access += list(access_cent_general, access_cent_specops, access_cent_living, access_cent_storage, access_syndicate)//Let's add their forged CentCom access and syndicate access. W.assignment = "Syndicate Commando" - W.registered = real_name + W.registered_name = real_name equip_if_possible(W, slot_wear_id) resistances += "alien_embryo" diff --git a/code/modules/clothing/glasses/hud.dm b/code/modules/clothing/glasses/hud.dm index 0126dce7d9..c0ff7c13c5 100644 --- a/code/modules/clothing/glasses/hud.dm +++ b/code/modules/clothing/glasses/hud.dm @@ -82,7 +82,7 @@ C.images += image(tempHud,perp,"hud[ckey(perp:wear_id:GetJobName())]") var/perpname = "wot" if(istype(perp.wear_id,/obj/item/weapon/card/id)) - perpname = perp.wear_id:registered + perpname = perp.wear_id:registered_name else if(istype(perp.wear_id,/obj/item/device/pda)) var/obj/item/device/pda/tempPda = perp.wear_id perpname = tempPda.owner diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index ea52c8b1ca..cd1dda3af2 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -86,7 +86,7 @@ var/obj/item/device/pda/pda = src:wear_id id = pda.owner else - id = src.wear_id.registered + id = src.wear_id.registered_name if (src.wear_id.PHOTO) photo = 1 if (id != src.real_name && in_range(src, usr) && prob(10)) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 003e72341d..868af0cb68 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -1067,8 +1067,8 @@ if (wear_id) if (istype(wear_id, /obj/item/weapon/card/id)) var/obj/item/weapon/card/id/id = wear_id - if (id.registered) - name = id.registered + if (id.registered_name) + name = id.registered_name else name = "Unknown" else if (istype(wear_id, /obj/item/device/pda)) @@ -1083,8 +1083,8 @@ if (wear_id) if (istype(wear_id, /obj/item/weapon/card/id)) var/obj/item/weapon/card/id/id = wear_id - if (id.registered != real_name) - name = "[real_name] (as [id.registered])" + if (id.registered_name != real_name) + name = "[real_name] (as [id.registered_name])" else if (istype(wear_id, /obj/item/device/pda)) @@ -2209,11 +2209,11 @@ It can still be worn/put on as normal. var/obj/item/weapon/card/id/id = wear_id if (istype(pda)) if (pda.id) - . = pda.id.registered + . = pda.id.registered_name else . = pda.owner else if (istype(id)) - . = id.registered + . = id.registered_name else return if_no_id return @@ -2226,7 +2226,7 @@ It can still be worn/put on as normal. if (istype(pda)) . = pda.owner else if (istype(id)) - . = id.registered + . = id.registered_name else return if_no_id return diff --git a/code/modules/mob/living/silicon/pai/hud.dm b/code/modules/mob/living/silicon/pai/hud.dm index 4f664e0b4a..974c041116 100644 --- a/code/modules/mob/living/silicon/pai/hud.dm +++ b/code/modules/mob/living/silicon/pai/hud.dm @@ -13,7 +13,7 @@ client.images += image(tempHud,perp,"hud[ckey(perp:wear_id:GetJobName())]") var/perpname = "wot" if(istype(perp.wear_id,/obj/item/weapon/card/id)) - perpname = perp.wear_id:registered + perpname = perp.wear_id:registered_name else if(istype(perp.wear_id,/obj/item/device/pda)) var/obj/item/device/pda/tempPda = perp.wear_id perpname = tempPda.owner From e96e8bc19d87d01d0ac6ea9732563d5a60571328 Mon Sep 17 00:00:00 2001 From: Albert Iordache Date: Wed, 8 Feb 2012 08:08:44 +0200 Subject: [PATCH 3/3] Moved the definitions of id cards from weapon.dm to weapons/cards_ids.dm --- code/defines/obj/weapon.dm | 75 ------------------ code/game/objects/items/weapons/cards_ids.dm | 81 ++++++++++++++++++-- 2 files changed, 75 insertions(+), 81 deletions(-) diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm index 91512755fc..b8a3690adb 100644 --- a/code/defines/obj/weapon.dm +++ b/code/defines/obj/weapon.dm @@ -420,81 +420,6 @@ w_class = 2.0 origin_tech = "magnets=1" -/obj/item/weapon/card - name = "card" - desc = "Does card things." - icon = 'card.dmi' - w_class = 1.0 - - var/list/files = list( ) - -/obj/item/weapon/card/data - name = "data disk" - desc = "A disk with data." - icon_state = "data" - var/function = "storage" - var/data = "null" - var/special = null - item_state = "card-id" - -/obj/item/weapon/card/emag - desc = "An identification card. Seems to have some funny chip on it, though." - name = "modified identification card" - icon_state = "emag" - item_state = "card-id" - origin_tech = "magnets=2;syndicate=2" - -/obj/item/weapon/card/id - name = "identification card" - desc = "An identification card." - icon_state = "id" - item_state = "card-id" - var/access = list() - var/registered_name = null // The name registered on the card - var/assignment = null - var/obj/item/weapon/photo/PHOTO = null - var/over_jumpsuit = 1 // If set to 0, it won't display on top of the mob's jumpsuit - var/dorm = 0 // determines if this ID has claimed a dorm already - -/obj/item/weapon/card/id/gold - name = "identification card" - desc = "A golden identification card." - icon_state = "gold" - item_state = "gold_id" - -/obj/item/weapon/card/id/captains_spare - name = "Captain's spare ID" - icon_state = "gold" - item_state = "gold_id" - registered_name = "Captain" - assignment = "Captain" - New() - access = get_access("Captain") - ..() - -/obj/item/weapon/card/id/centcom - name = "CentCom ID" - desc = "An ID straight from Cent. Com." - icon_state = "centcom" - registered_name = "Central Command" - assignment = "General" - New() - access = get_all_centcom_access() - ..() - -/obj/item/weapon/card/id/syndicate - name = "agent card" - desc = "Shhhhh." - access = list(access_maint_tunnels) - origin_tech = "syndicate=3" - -/obj/item/weapon/card/id/syndicate_command - name = "Syndicate ID card" - desc = "An ID straight from the Syndicate." - registered_name = "Syndicate" - assignment = "Syndicate Overlord" - access = list(access_syndicate) - /obj/item/weapon/cleaner desc = "Space Cleaner!" diff --git a/code/game/objects/items/weapons/cards_ids.dm b/code/game/objects/items/weapons/cards_ids.dm index 56068843af..4faaf64868 100644 --- a/code/game/objects/items/weapons/cards_ids.dm +++ b/code/game/objects/items/weapons/cards_ids.dm @@ -4,13 +4,33 @@ DATA CARD ID CARD FINGERPRINT CARD HOLDER FINGERPRINT CARD - */ +/obj/item/weapon/card + name = "card" + desc = "Does card things." + icon = 'card.dmi' + w_class = 1.0 + var/list/files = list( ) + +/obj/item/weapon/card/emag + desc = "An identification card. Seems to have some funny chip on it, though." + name = "modified identification card" + icon_state = "emag" + item_state = "card-id" + origin_tech = "magnets=2;syndicate=2" // DATA CARDS +/obj/item/weapon/card/data + name = "data disk" + desc = "A disk with data." + icon_state = "data" + var/function = "storage" + var/data = "null" + var/special = null + item_state = "card-id" /obj/item/weapon/card/data/verb/label(t as text) set name = "Label Disk" @@ -25,9 +45,58 @@ FINGERPRINT CARD return - - // ID CARDS +/obj/item/weapon/card/id + name = "identification card" + desc = "An identification card." + icon_state = "id" + item_state = "card-id" + var/access = list() + var/registered_name = null // The name registered on the card + var/assignment = null + var/obj/item/weapon/photo/PHOTO = null + var/over_jumpsuit = 1 // If set to 0, it won't display on top of the mob's jumpsuit + var/dorm = 0 // determines if this ID has claimed a dorm already + +/obj/item/weapon/card/id/gold + name = "identification card" + desc = "A golden identification card." + icon_state = "gold" + item_state = "gold_id" + +/obj/item/weapon/card/id/captains_spare + name = "Captain's spare ID" + icon_state = "gold" + item_state = "gold_id" + registered_name = "Captain" + assignment = "Captain" + New() + access = get_access("Captain") + ..() + +/obj/item/weapon/card/id/centcom + name = "CentCom ID" + desc = "An ID straight from Cent. Com." + icon_state = "centcom" + registered_name = "Central Command" + assignment = "General" + New() + access = get_all_centcom_access() + ..() + +/obj/item/weapon/card/id/syndicate + name = "agent card" + desc = "Shhhhh." + access = list(access_maint_tunnels) + origin_tech = "syndicate=3" + +/obj/item/weapon/card/id/syndicate_command + name = "Syndicate ID card" + desc = "An ID straight from the Syndicate." + registered_name = "Syndicate" + assignment = "Syndicate Overlord" + access = list(access_syndicate) + /obj/item/weapon/card/id/attack_self(mob/user as mob) for(var/mob/O in viewers(user, null)) @@ -59,9 +128,9 @@ FINGERPRINT CARD W.loc = src //src.orient2hud(usr) add_fingerprint(usr) - usr << "\blue You add the photo to the ID" + usr << "\blue You add the photo to the ID." else - usr << "\blue There is already a photo on this ID" + usr << "\blue There is already a photo on this ID." //PHOTO.loc = locate(0,0,0) @@ -75,7 +144,7 @@ FINGERPRINT CARD PHOTO.layer = 3 PHOTO = null else - usr << "\blue There is no photo to remove" + usr << "\blue There is no photo to remove." // FINGERPRINT HOLDER