Add card skin descriptions, let agent ID's change photo, re-add photos and job blacklist update

This commit is contained in:
Markolie
2015-08-10 16:00:58 +02:00
parent 63bff3e31d
commit 99c7bbed55
3 changed files with 116 additions and 72 deletions
+26 -67
View File
@@ -21,23 +21,23 @@ var/time_last_changed_position = 0
var/change_position_cooldown = 60
//Jobs you cannot open new positions for
var/list/blacklisted = list(
"AI",
"Cyborg",
"Captain",
"Head of Personnel",
"Head of Security",
"Chief Engineer",
"Research Director",
"Chief Medical Officer",
"Magistrate",
"Blueshield",
"Nanotrasen Representative",
"Security Pod Pilot",
"Brig Physician",
"Mechanic",
"Barber",
"Civilian",
"Chaplain"
/datum/job/ai,
/datum/job/cyborg,
/datum/job/captain,
/datum/job/hop,
/datum/job/hos,
/datum/job/chief_engineer,
/datum/job/rd,
/datum/job/cmo,
/datum/job/judge,
/datum/job/blueshield,
/datum/job/nanotrasenrep,
/datum/job/pilot,
/datum/job/brigdoc,
/datum/job/mechanic,
/datum/job/barber,
/datum/job/chaplain,
/datum/job/civilian
)
//The scaling factor of max total positions in relation to the total amount of people on board the station in %
@@ -47,39 +47,6 @@ var/time_last_changed_position = 0
//Assoc array: "JobName" = (int)<Opened Positions>
var/list/opened_positions = list();
var/list/card_skins = list(
"data",
"id",
"gold",
"silver",
"security",
"medical",
"research",
"engineering",
"HoS",
"CMO",
"RD",
"CE",
"clown",
"mime",
"prisoner"
)
var/list/centcom_card_skins = list(
"centcom",
"centcom_old",
"ERT_leader",
"ERT_empty",
"ERT_security",
"ERT_engineering",
"ERT_medical",
"ERT_janitorial",
"deathsquad",
"commander",
"syndie",
"TDred",
"TDgreen"
)
/obj/machinery/computer/card/proc/is_centcom()
return istype(src, /obj/machinery/computer/card/centcom)
@@ -102,7 +69,7 @@ var/time_last_changed_position = 0
/obj/machinery/computer/card/proc/format_job_slots()
var/list/formatted = list()
for(var/datum/job/job in job_master.occupations)
if(job.title in blacklisted)
if(job_blacklisted(job))
continue
formatted.Add(list(list(
"title" = job.title,
@@ -117,7 +84,7 @@ var/time_last_changed_position = 0
var/list/formatted = list()
for(var/skin in card_skins)
formatted.Add(list(list(
"display_name" = replacetext(skin, " ", "&nbsp;"),
"display_name" = get_skin_desc(skin),
"skin" = skin)))
return formatted
@@ -162,14 +129,13 @@ var/time_last_changed_position = 0
attack_hand(user)
//Check if you can't open a new position for a certain job
/obj/machinery/computer/card/proc/job_blacklisted(jobtitle)
return (jobtitle in blacklisted)
/obj/machinery/computer/card/proc/job_blacklisted(datum/job/job)
return (job.type in blacklisted)
//Logic check for Topic() if you can open the job
/obj/machinery/computer/card/proc/can_open_job(datum/job/job)
if(job)
if(!job_blacklisted(job.title))
if(!job_blacklisted(job))
if((job.total_positions <= player_list.len * (max_relative_positions / 100)))
var/delta = (world.time / 10) - time_last_changed_position
if((change_position_cooldown < delta) || (opened_positions[job.title] < 0))
@@ -181,7 +147,7 @@ var/time_last_changed_position = 0
//Logic check for Topic() if you can close the job
/obj/machinery/computer/card/proc/can_close_job(datum/job/job)
if(job)
if(!job_blacklisted(job.title))
if(!job_blacklisted(job))
if(job.total_positions > job.current_positions)
var/delta = (world.time / 10) - time_last_changed_position
if((change_position_cooldown < delta) || (opened_positions[job.title] > 0))
@@ -229,7 +195,7 @@ var/time_last_changed_position = 0
data["civilian_jobs"] = format_jobs(civilian_positions)
data["special_jobs"] = format_jobs(whitelisted_positions)
data["centcom_jobs"] = format_jobs(get_all_centcom_jobs())
data["card_skins"] = format_card_skins(card_skins)
data["card_skins"] = format_card_skins(get_station_card_skins())
data["job_slots"] = format_job_slots()
@@ -251,14 +217,7 @@ var/time_last_changed_position = 0
"allowed" = (access in modify.access) ? 1 : 0)))
data["all_centcom_access"] = all_centcom_access
var/list/all_centcom_skins = list()
for(var/skin in centcom_card_skins)
all_centcom_skins.Add(list(list(
"display_name" = replacetext(skin, " ", "&nbsp;"),
"skin" = skin)))
data["all_centcom_skins"] = all_centcom_skins
data["all_centcom_skins"] = format_card_skins(get_centcom_card_skins())
else if (modify)
var/list/regions = list()
@@ -336,7 +295,7 @@ var/time_last_changed_position = 0
if("skin")
var/skin = href_list["skin_target"]
if(is_authenticated() && modify && ((skin in card_skins) || ((skin in centcom_card_skins) && is_centcom())))
if(is_authenticated() && modify && ((skin in get_station_card_skins()) || ((skin in get_centcom_card_skins()) && is_centcom())))
modify.icon_state = href_list["skin_target"]
if ("assign")
+88 -3
View File
@@ -123,10 +123,16 @@
usr << "<span class='warning'>It is too far away.</span>"
/obj/item/weapon/card/id/proc/show(mob/user as mob)
if(!front)
front = new(photo, dir = SOUTH)
if(!side)
side = new(photo, dir = WEST)
user << browse_rsc(front, "front.png")
user << browse_rsc(side, "side.png")
var/datum/browser/popup = new(user, "idcard", name, 600, 400)
popup.set_content(dat)
popup.set_title_image(usr.browse_rsc_icon(src.icon, src.icon_state))
popup.open()
return
/obj/item/weapon/card/id/attack_self(mob/user as mob)
@@ -158,7 +164,8 @@
dat += text("Fingerprint: []</A><BR>\n", fingerprint_hash)
dat += text("Blood Type: []<BR>\n", blood_type)
dat += text("DNA Hash: []<BR><BR>\n", dna_hash)
dat += "</td></tr></table>"
dat +="<td align = center valign = top>Photo:<br><img src=front.png height=80 width=80 border=4> \
<img src=side.png height=80 width=80 border=4></td></tr></table>"
/obj/item/weapon/card/id/GetAccess()
return access
@@ -217,6 +224,30 @@
usr << "<span class='notice'>The card's microscanners activate as you pass it over \the [I], copying its access.</span>"
src.access |= I.access //Don't copy access if user isn't an antag -- to prevent metagaming
/obj/item/weapon/card/id/syndicate/proc/fake_id_photo(var/mob/living/carbon/human/H, var/side=0)//get_id_photo wouldn't work correctly
if(!istype(H))
return
var/storedDir = H.dir //don't want to lose track of this
var/icon/faked
if(!side)
if(!H.equip_to_slot_if_possible(src, slot_l_store, 0, 1))
H << "<span class='warning'>You need to empty your pockets before taking the ID picture.</span>"
return
if(side)
H.dir = WEST //ensure the icon is actually the proper direction before copying it
faked = getFlatIcon(H)
H.dir = storedDir //reset the user back to their original direction, not even noticable they changed
H.equip_to_slot_if_possible(src, slot_l_hand, 0, 1)
else
H.dir = SOUTH
faked = getFlatIcon(H)
H.dir = storedDir
return faked
/obj/item/weapon/card/id/syndicate/attack_self(mob/user as mob)
if(!src.registered_name)
var t = reject_bad_name(input(user, "What name would you like to use on this card?", "Agent Card name", ishuman(user) ? user.real_name : user.name))
@@ -242,7 +273,7 @@
if("Show")
return ..()
if("Edit")
switch(input(user,"What would you like to edit on \the [src]?") in list("Name","Appearance","Sex","Age","Occupation","Money Account","Blood Type","DNA Hash","Fingerprint Hash","Reset Card"))
switch(input(user,"What would you like to edit on \the [src]?") in list("Name","Photo","Appearance","Sex","Age","Occupation","Money Account","Blood Type","DNA Hash","Fingerprint Hash","Reset Card"))
if("Name")
var/new_name = reject_bad_name(input(user,"What name would you like to put on this card?","Agent Card Name", ishuman(user) ? user.real_name : user.name))
if(!Adjacent(user))
@@ -251,6 +282,16 @@
UpdateName()
user << "<span class='notice'>Name changed to [new_name].</span>"
if("Photo")
if(!Adjacent(user))
return
photo = fake_id_photo(user)
var/icon/photoside = fake_id_photo(user,1)
front = new(photo)
side = new(photoside)
if(photo && photoside)
user << "<span class='notice'>Photo changed.</span>"
if("Appearance")
var/list/appearances = list(
"data",
@@ -598,3 +639,47 @@
decal_desc = "It's a card with a magnetic strip attached to some circuitry."
decal_icon_state = "emag"
override_name = 1
/proc/get_station_card_skins()
return list("data","id","gold","silver","security","medical","research","engineering","HoS","CMO","RD","CE","clown","mime","prisoner")
/proc/get_centcom_card_skins()
return list("centcom","centcom_old","ERT_leader","ERT_empty","ERT_security","ERT_engineering","ERT_medical","ERT_janitorial","deathsquad","commander","syndie","TDred","TDgreen")
/proc/get_all_card_skins()
return get_station_card_skins() + get_centcom_card_skins()
/proc/get_skin_desc(skin)
switch(skin)
if("id")
return "Standard"
if("HoS")
return "Head of Security"
if("CMO")
return "Chief Medical Officer"
if("RD")
return "Research Director"
if("CE")
return "Chief Engineer"
if("centcom_old")
return "Centcom Old"
if("ERT_leader")
return "ERT Leader"
if("ERT_empty")
return "ERT Default"
if("ERT_security")
return "ERT Security"
if("ERT_engineering")
return "ERT Engineering"
if("ERT_medical")
return "ERT Medical"
if("ERT_janitorial")
return "ERT Janitorial"
if("syndie")
return "Syndicate"
if("TDred")
return "Thunderdome Red"
if("TDgreen")
return "Thunderdome Green"
else
return capitalize(skin)
+2 -2
View File
@@ -39,8 +39,8 @@
{{for data.job_slots}}
<div class='item'>
<span class="average" style="font-weight: bold;">{{:value.title}}: {{:value.current_positions}}/{{:value.total_positions}}</span>
{{:helper.link('', 'minus', {'choice' : 'make_job_unavailable', 'job' : value.title}, value.can_close == 1 && data.authenticated ? null : 'disabled')}}
{{:helper.link('', 'plus', {'choice' : 'make_job_available', 'job' : value.title}, value.can_open == 1 && data.authenticated ? null : 'disabled')}}
{{:helper.link('-', null, {'choice' : 'make_job_unavailable', 'job' : value.title}, value.can_close == 1 && data.authenticated ? null : 'disabled')}}
{{:helper.link('+', null, {'choice' : 'make_job_available', 'job' : value.title}, value.can_open == 1 && data.authenticated ? null : 'disabled')}}
</div>
{{/for}}
</div>