Merge branch 'master' of github.com:Baystation12/Baystation12

This commit is contained in:
SkyMarshal
2012-02-09 16:29:31 -07:00
40 changed files with 9452 additions and 8590 deletions

View File

@@ -144,7 +144,10 @@
#define FILE_DIR "code/unused/spacecraft"
#define FILE_DIR "code/WorkInProgress"
#define FILE_DIR "code/WorkInProgress/Cael_Aislinn"
#define FILE_DIR "code/WorkInProgress/Cael_Aislinn/Jumper"
#define FILE_DIR "code/WorkInProgress/Cael_Aislinn/Rust"
#define FILE_DIR "code/WorkInProgress/Cael_Aislinn/Tajara"
#define FILE_DIR "code/WorkInProgress/Cael_Aislinn/tajara_sprites"
#define FILE_DIR "code/WorkInProgress/mapload"
#define FILE_DIR "code/WorkInProgress/Mini"
#define FILE_DIR "code/WorkInProgress/organs"
@@ -176,6 +179,7 @@
#define FILE_DIR "icons/vending_icons"
#define FILE_DIR "interface"
#define FILE_DIR "maps"
#define FILE_DIR "maps/backup"
#define FILE_DIR "sound"
#define FILE_DIR "sound/ambience"
#define FILE_DIR "sound/announcer"
@@ -611,6 +615,7 @@
#include "code\game\objects\alien\resin.dm"
#include "code\game\objects\alien\weeds.dm"
#include "code\game\objects\closets\bombsuit.dm"
#include "code\game\objects\closets\detective.dm"
#include "code\game\objects\closets\emergency.dm"
#include "code\game\objects\closets\firecloset.dm"
#include "code\game\objects\closets\gimmick.dm"
@@ -624,10 +629,12 @@
#include "code\game\objects\closets\thunderdome.dm"
#include "code\game\objects\closets\walllocker.dm"
#include "code\game\objects\closets\wardrobe.dm"
#include "code\game\objects\closets\secure\bar.dm"
#include "code\game\objects\closets\secure\cargo.dm"
#include "code\game\objects\closets\secure\civilian.dm"
#include "code\game\objects\closets\secure\engineering.dm"
#include "code\game\objects\closets\secure\medical.dm"
#include "code\game\objects\closets\secure\personal.dm"
#include "code\game\objects\closets\secure\research.dm"
#include "code\game\objects\closets\secure\scientist.dm"
#include "code\game\objects\closets\secure\secure_closets.dm"
#include "code\game\objects\closets\secure\security.dm"

View File

@@ -14,7 +14,7 @@
return "gibbers, \"[text]\"";
if(is_speaking_taj)
return "mewls, \"[text]\""//pick("yowls, \"[text]\"", "growls, \"[text]\"","mewls, \"[text]\"", "mrowls, \"[text]\"", "meows, \"[text]\"", "purrs, \"[text]\"");
return "mrowls, \"[text]\""//pick("yowls, \"[text]\"", "growls, \"[text]\"","mewls, \"[text]\"", "mrowls, \"[text]\"", "meows, \"[text]\"", "purrs, \"[text]\"");
if (ending == "?")
return "asks, \"[text]\"";
@@ -25,7 +25,7 @@
//convert message to an indecipherable series of sounds for anyone who isnt tajaran
/mob/living/carbon/human/tajaran/proc/tajspeak(var/message)
return stars(message)
//return stars(message)
var/te = html_decode(message)
var/t = ""
var/n = length(message)
@@ -215,10 +215,10 @@
switch (message_mode)
if ("headset")
if (src:l_ear && istype(src:l_ear,/obj/item/device/radio))
src:l_ear.talk_into(src, message, 0, "[is_speaking_taj ? "tajaran" : "universal"]")
src:l_ear.talk_into(src, message, 0, "[is_speaking_taj ? "tajaran" : "english"]")
used_radios += src:l_ear
else if (src:r_ear)
src:r_ear.talk_into(src, message, 0, "[is_speaking_taj ? "tajaran" : "universal"]")
src:r_ear.talk_into(src, message, 0, "[is_speaking_taj ? "tajaran" : "english"]")
used_radios += src:r_ear
message_range = 1
@@ -227,10 +227,10 @@
if ("secure headset")
if (src:l_ear && istype(src:l_ear,/obj/item/device/radio))
src:l_ear.talk_into(src, message, 1, "[is_speaking_taj ? "tajaran" : "universal"]")
src:l_ear.talk_into(src, message, 1, "[is_speaking_taj ? "tajaran" : "english"]")
used_radios += src:l_ear
else if (src:r_ear)
src:r_ear.talk_into(src, message, 1, "[is_speaking_taj ? "tajaran" : "universal"]")
src:r_ear.talk_into(src, message, 1, "[is_speaking_taj ? "tajaran" : "english"]")
used_radios += src:r_ear
message_range = 1
@@ -238,7 +238,7 @@
if ("right ear")
if (src:r_ear)
src:r_ear.talk_into(src, message, 0, "[is_speaking_taj ? "tajaran" : "universal"]")
src:r_ear.talk_into(src, message, 0, "[is_speaking_taj ? "tajaran" : "english"]")
used_radios += src:r_ear
message_range = 1
@@ -246,7 +246,7 @@
if ("left ear")
if (src:l_ear)
src:l_ear.talk_into(src, message, 0, "[is_speaking_taj ? "tajaran" : "universal"]")
src:l_ear.talk_into(src, message, 0, "[is_speaking_taj ? "tajaran" : "english"]")
used_radios += src:l_ear
message_range = 1
@@ -254,7 +254,7 @@
if ("intercom")
for (var/obj/item/device/radio/intercom/I in view(1, null))
I.talk_into(src, message, 0, "[is_speaking_taj ? "tajaran" : "universal"]")
I.talk_into(src, message, 0, "[is_speaking_taj ? "tajaran" : "english"]")
used_radios += I
message_range = 1
@@ -377,8 +377,8 @@
var/list/heard_b = list() // didn't understand us
for (var/mob/M in listening)
//if speaking in tajaran, only let other tajs hear
if ( (M.say_understands(src) && !is_speaking_taj) || istype(M,/mob/living/carbon/human/tajaran) )
//if speaking in tajaran, only let other tajs understand
if ( M.say_understands(src) && (M.taj_talk_understand || !is_speaking_taj) )
heard_a += M
else
heard_b += M
@@ -388,7 +388,7 @@
var/rendered = null
if (length(heard_a))
var/message_a = say_quote(message,0)
var/message_a = say_quote(message,is_speaking_taj)
if (italics)
message_a = "<i>[message_a]</i>"
if (!istype(src, /mob/living/carbon/human))
@@ -462,13 +462,8 @@
*/
if (length(heard_b))
var/message_b
if (voice_message)
message_b = voice_message
else
message_b = tajspeak(message)
message_b = say_quote(message_b,1)
var/message_b = tajspeak(message)
message_b = say_quote(message_b,1)
if (italics)
message_b = "<i>[message_b]</i>"

View File

@@ -5,7 +5,6 @@
icon = 'tajaran.dmi'
var/list/tajspeak_letters
//
universal_speak = 1
taj_talk_understand = 1
voice_message = "mrowls"
@@ -38,13 +37,8 @@
debug_lefthand = organs["l_hand"]
var/g = "m"
if (gender == MALE)
g = "m"
else if (gender == FEMALE)
if (gender == FEMALE)
g = "f"
else
gender = MALE
g = "m"
spawn (1)
if(!stand_icon)
@@ -57,6 +51,429 @@
..()
/mob/living/carbon/human/tajaran/update_clothing()
..()
if (monkeyizing)
return
overlays = null
// lol
var/fat = ""
/*if (mutations & FAT)
fat = "fat"*/
if (mutations & HULK)
overlays += image("icon" = 'genetics.dmi', "icon_state" = "hulk[fat][!lying ? "_s" : "_l"]")
if (mutations & COLD_RESISTANCE)
overlays += image("icon" = 'genetics.dmi', "icon_state" = "fire[fat][!lying ? "_s" : "_l"]")
if (mutations & TK)
overlays += image("icon" = 'genetics.dmi', "icon_state" = "telekinesishead[fat][!lying ? "_s" : "_l"]")
if (mutations & LASER)
overlays += image("icon" = 'genetics.dmi', "icon_state" = "lasereyes[!lying ? "_s" : "_l"]")
if (mutantrace)
switch(mutantrace)
if("lizard","golem","metroid")
overlays += image("icon" = 'genetics.dmi', "icon_state" = "[mutantrace][fat][!lying ? "_s" : "_l"]")
if(face_standing)
del(face_standing)
if(face_lying)
del(face_lying)
if(stand_icon)
del(stand_icon)
if(lying_icon)
del(lying_icon)
if("plant")
if(stat != 2) //if not dead, that is
overlays += image("icon" = 'genetics.dmi', "icon_state" = "[mutantrace][fat]_[gender][!lying ? "_s" : "_l"]")
else
overlays += image("icon" = 'genetics.dmi', "icon_state" = "[mutantrace]_d")
if(face_standing)
del(face_standing)
if(face_lying)
del(face_lying)
if(stand_icon)
del(stand_icon)
if(lying_icon)
del(lying_icon)
else
if(!face_standing || !face_lying)
update_face()
if(!stand_icon || !lying_icon)
update_body()
if(buckled)
if(istype(buckled, /obj/structure/stool/bed))
lying = 1
else
lying = 0
// Automatically drop anything in store / id / belt if you're not wearing a uniform.
if (!w_uniform)
for (var/obj/item/thing in list(r_store, l_store, wear_id, belt))
if (thing)
u_equip(thing)
if (client)
client.screen -= thing
if (thing)
thing.loc = loc
thing.dropped(src)
thing.layer = initial(thing.layer)
//if (zone_sel)
// zone_sel.overlays = null
// zone_sel.overlays += body_standing
// zone_sel.overlays += image("icon" = 'zone_sel.dmi', "icon_state" = text("[]", zone_sel.selecting))
if (lying)
icon = lying_icon
overlays += body_lying
if (face_lying)
overlays += face_lying
else
icon = stand_icon
overlays += body_standing
if (face_standing)
overlays += face_standing
// Uniform
if(w_uniform)
/*if (mutations & FAT && !(w_uniform.flags & ONESIZEFITSALL))
src << "\red You burst out of the [w_uniform.name]!"
var/obj/item/clothing/c = w_uniform
u_equip(c)
if(client)
client.screen -= c
if(c)
c:loc = loc
c:dropped(src)
c:layer = initial(c:layer)*/
if(w_uniform)//I should really not need these
w_uniform.screen_loc = ui_iclothing
if(istype(w_uniform, /obj/item/clothing/under))
var/t1 = w_uniform.color
if (!t1)
t1 = icon_state
/*if (mutations & FAT)
overlays += image("icon" = 'uniform_fat.dmi', "icon_state" = "[t1][!lying ? "_s" : "_l"]", "layer" = MOB_LAYER)
else*/
overlays += image("icon" = 'uniform.dmi', "icon_state" = text("[][]",t1, (!(lying) ? "_s" : "_l")), "layer" = MOB_LAYER)
if (w_uniform.blood_DNA.len)
var/icon/stain_icon = icon('blood.dmi', "uniformblood[!lying ? "" : "2"]")
overlays += image("icon" = stain_icon, "layer" = MOB_LAYER)
if (wear_id)
if(wear_id.over_jumpsuit)
overlays += image("icon" = 'mob.dmi', "icon_state" = "id[!lying ? null : "2"]", "layer" = MOB_LAYER)
if (client)
client.screen -= hud_used.intents
client.screen -= hud_used.mov_int
//Screenlocs for these slots are handled by the huds other_update()
//because theyre located on the 'other' inventory bar.
// Gloves
var/datum/organ/external/lo = organs["l_hand"]
var/datum/organ/external/ro = organs["r_hand"]
if (!lo.destroyed || !ro.destroyed)
if (gloves)
var/t1 = gloves.item_state
if (!t1)
t1 = gloves.icon_state
var/icon/gloves_icon = new /icon("icon" = 'hands.dmi', "icon_state" = text("[][]", t1, (!( lying ) ? null : "2")))
if(lo.destroyed)
gloves_icon.Blend(new /icon('limb_mask.dmi', "right_[lying?"l":"s"]"), ICON_MULTIPLY)
else if(ro.destroyed)
gloves_icon.Blend(new /icon('limb_mask.dmi', "left_[lying?"l":"s"]"), ICON_MULTIPLY)
overlays += image(gloves_icon, "layer" = MOB_LAYER)
if (gloves.blood_DNA.len)
var/icon/stain_icon = icon('blood.dmi', "bloodyhands[!lying ? "" : "2"]")
if(lo.destroyed)
stain_icon.Blend(new /icon('limb_mask.dmi', "right_[lying?"l":"s"]"), ICON_MULTIPLY)
else if(ro.destroyed)
stain_icon.Blend(new /icon('limb_mask.dmi', "left_[lying?"l":"s"]"), ICON_MULTIPLY)
overlays += image("icon" = stain_icon, "layer" = MOB_LAYER)
else if (blood_DNA.len)
var/icon/stain_icon = icon('blood.dmi', "bloodyhands[!lying ? "" : "2"]")
if(lo.destroyed)
stain_icon.Blend(new /icon('limb_mask.dmi', "right_[lying?"l":"s"]"), ICON_MULTIPLY)
else if(ro.destroyed)
stain_icon.Blend(new /icon('limb_mask.dmi', "left_[lying?"l":"s"]"), ICON_MULTIPLY)
overlays += image("icon" = stain_icon, "layer" = MOB_LAYER)
// Glasses
if (glasses)
var/t1 = glasses.icon_state
overlays += image("icon" = 'eyes.dmi', "icon_state" = text("[][]", t1, (!( lying ) ? null : "2")), "layer" = MOB_LAYER)
// Ears
if (l_ear)
var/t1 = l_ear.icon_state
overlays += image("icon" = 'ears.dmi', "icon_state" = text("[][]", t1, (!( lying ) ? null : "2")), "layer" = MOB_LAYER)
if (r_ear)
var/t1 = r_ear.icon_state
overlays += image("icon" = 'ears.dmi', "icon_state" = text("[][]", t1, (!( lying ) ? null : "2")), "layer" = MOB_LAYER)
// Shoes
lo = organs["l_foot"]
ro = organs["r_foot"]
if ((!lo.destroyed || !ro.destroyed) && shoes)
var/t1 = shoes.icon_state
var/icon/shoes_icon = new /icon("icon" = 'feet.dmi', "icon_state" = text("[][]", t1, (!( lying ) ? null : "2")))
if(lo.destroyed && !lying)
shoes_icon.Blend(new /icon('limb_mask.dmi', "right[lying?"_l":""]"), ICON_MULTIPLY)
else if(ro.destroyed && !lying)
shoes_icon.Blend(new /icon('limb_mask.dmi', "left[lying?"_l":""]"), ICON_MULTIPLY)
overlays += image(shoes_icon, "layer" = MOB_LAYER)
if (shoes.blood_DNA.len)
var/icon/stain_icon = icon('blood.dmi', "shoesblood[!lying ? "" : "2"]")
if(lo.destroyed)
stain_icon.Blend(new /icon('limb_mask.dmi', "right_[lying?"l":"s"]"), ICON_MULTIPLY)
else if(ro.destroyed)
stain_icon.Blend(new /icon('limb_mask.dmi', "left_[lying?"l":"s"]"), ICON_MULTIPLY)
overlays += image("icon" = stain_icon, "layer" = MOB_LAYER) // Radio
/* if (w_radio)
overlays += image("icon" = 'ears.dmi', "icon_state" = "headset[!lying ? "" : "2"]", "layer" = MOB_LAYER) */
if (s_store)
var/t1 = s_store.item_state
if (!t1)
t1 = s_store.icon_state
if(!istype(wear_suit, /obj/item/clothing/suit/storage/armoredundersuit))
overlays += image("icon" = 'belt_mirror.dmi', "icon_state" = text("[][]", t1, (!( lying ) ? null : "2")), "layer" = MOB_LAYER)
s_store.screen_loc = ui_sstore1
if (h_store)
h_store.screen_loc = ui_hstore1
if(client) hud_used.other_update() //Update the screenloc of the items on the 'other' inventory bar
//to hide / show them.
if (client)
if (i_select)
if (intent)
client.screen += hud_used.intents
var/list/L = dd_text2list(intent, ",")
L[1] += ":-11"
i_select.screen_loc = dd_list2text(L,",") //ICONS4, FUCKING SHIT
else
i_select.screen_loc = null
if (m_select)
if (m_int)
client.screen += hud_used.mov_int
var/list/L = dd_text2list(m_int, ",")
L[1] += ":-11"
m_select.screen_loc = dd_list2text(L,",") //ICONS4, FUCKING SHIT
else
m_select.screen_loc = null
var/tail_shown = 1
if (wear_suit)
/*if (mutations & FAT && !(wear_suit.flags & ONESIZEFITSALL))
src << "\red You burst out of the [wear_suit.name]!"
var/obj/item/clothing/c = wear_suit
u_equip(c)
if(client)
client.screen -= c
if(c)
c:loc = loc
c:dropped(src)
c:layer = initial(c:layer)*/
if (istype(wear_suit, /obj/item/clothing/suit))
var/t1 = wear_suit.icon_state
overlays += image("icon" = 'suit.dmi', "icon_state" = text("[][]", t1, (!( lying ) ? null : "2")), "layer" = MOB_LAYER)
if (wear_suit)
if (wear_suit.blood_DNA.len)
var/icon/stain_icon = null
if (istype(wear_suit, /obj/item/clothing/suit/armor/vest || /obj/item/clothing/suit/storage/wcoat))
stain_icon = icon('blood.dmi', "armorblood[!lying ? "" : "2"]")
else if (istype(wear_suit, /obj/item/clothing/suit/storage/det_suit || /obj/item/clothing/suit/storage/labcoat))
stain_icon = icon('blood.dmi', "coatblood[!lying ? "" : "2"]")
else
stain_icon = icon('blood.dmi', "suitblood[!lying ? "" : "2"]")
overlays += image("icon" = stain_icon, "layer" = MOB_LAYER)
wear_suit.screen_loc = ui_oclothing
if (istype(wear_suit, /obj/item/clothing/suit/straight_jacket))
if (handcuffed)
handcuffed.loc = loc
handcuffed.layer = initial(handcuffed.layer)
handcuffed = null
if ((l_hand || r_hand))
var/h = hand
hand = 1
drop_item()
hand = 0
drop_item()
hand = h
//if wearing some suits, hide the tail
if ( istype(wear_suit, /obj/item/clothing/suit/bio_suit) || istype(wear_suit, /obj/item/clothing/suit/bomb_suit) || istype(wear_suit, /obj/item/clothing/suit/space) )
tail_shown = 0
if(tail_shown)
overlays += image("icon" = icon('tajaran.dmi', "tail_[gender==FEMALE ? "f" : "m"]_[lying ? "l" : "s"]"), "layer" = MOB_LAYER)
if (lying)
if (face_lying)
overlays += face_lying
else
if (face_standing)
overlays += face_standing
if (wear_mask)
if (istype(wear_mask, /obj/item/clothing/mask))
var/t1 = wear_mask.icon_state
overlays += image("icon" = 'mask.dmi', "icon_state" = text("[][]", t1, (!( lying ) ? null : "2")), "layer" = MOB_LAYER)
if (!istype(wear_mask, /obj/item/clothing/mask/cigarette))
if (wear_mask.blood_DNA.len)
var/icon/stain_icon = icon('blood.dmi', "maskblood[!lying ? "" : "2"]")
overlays += image("icon" = stain_icon, "layer" = MOB_LAYER)
wear_mask.screen_loc = ui_mask
// Head
if (head)
var/t1 = head.icon_state
var/icon/head_icon = icon('head.dmi', text("[][]", t1, (!( lying ) ? null : "2")))
if(istype(head,/obj/item/clothing/head/kitty))
head_icon = (( lying ) ? head:mob2 : head:mob)
overlays += image("icon" = head_icon, "layer" = MOB_LAYER)
if(gimmick_hat)
overlays += image("icon" = icon('gimmick_head.dmi', "[gimmick_hat][!lying ? "" : "2"]"), "layer" = MOB_LAYER)
if (head.blood_DNA.len)
var/icon/stain_icon = icon('blood.dmi', "helmetblood[!lying ? "" : "2"]")
overlays += image("icon" = stain_icon, "layer" = MOB_LAYER)
head.screen_loc = ui_head
else
//if not wearing anything on the head, show the ears
overlays += image("icon" = icon('tajaran.dmi', "ears_[gender==FEMALE ? "f" : "m"]_[lying ? "l" : "s"]"), "layer" = MOB_LAYER)
// Belt
if (belt)
var/t1 = belt.item_state
if (!t1)
t1 = belt.icon_state
overlays += image("icon" = 'belt.dmi', "icon_state" = text("[][]", t1, (!( lying ) ? null : "2")), "layer" = MOB_LAYER)
belt.screen_loc = ui_belt
if ((wear_mask && !(wear_mask.see_face)) || (head && !(head.see_face))) // can't see the face
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)
name = id.registered_name
else
name = "Unknown"
else if (istype(wear_id, /obj/item/device/pda))
var/obj/item/device/pda/pda = wear_id
if (pda.owner)
name = pda.owner
else
name = "Unknown"
else
name = "Unknown"
else
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 != real_name)
name = "[real_name] (as [id.registered_name])"
else if (istype(wear_id, /obj/item/device/pda))
var/obj/item/device/pda/pda = wear_id
if (pda.owner)
if (pda.owner != real_name)
name = "[real_name] (as [pda.owner])"
else
name = real_name
if (wear_id)
wear_id.screen_loc = ui_id
if (l_store)
l_store.screen_loc = ui_storage1
if (r_store)
r_store.screen_loc = ui_storage2
if (back)
var/t1 = back.icon_state
overlays += image("icon" = 'back.dmi', "icon_state" = text("[][]", t1, (!( lying ) ? null : "2")), "layer" = MOB_LAYER)
back.screen_loc = ui_back
if (handcuffed)
pulling = null
if (!lying)
overlays += image("icon" = 'mob.dmi', "icon_state" = "handcuff1", "layer" = MOB_LAYER)
else
overlays += image("icon" = 'mob.dmi', "icon_state" = "handcuff2", "layer" = MOB_LAYER)
if (client)
client.screen -= contents
client.screen += contents
if (r_hand)
overlays += image("icon" = 'items_righthand.dmi', "icon_state" = r_hand.item_state ? r_hand.item_state : r_hand.icon_state, "layer" = MOB_LAYER+1)
r_hand.screen_loc = ui_rhand
if (l_hand)
overlays += image("icon" = 'items_lefthand.dmi', "icon_state" = l_hand.item_state ? l_hand.item_state : l_hand.icon_state, "layer" = MOB_LAYER+1)
l_hand.screen_loc = ui_lhand
var/shielded = 0
for (var/obj/item/weapon/cloaking_device/S in src)
if (S.active)
shielded = 2
break
if(istype(wear_suit, /obj/item/clothing/suit/space/space_ninja)&&wear_suit:s_active)
shielded = 3
switch(shielded)
if(1)
overlays += image("icon" = 'effects.dmi', "icon_state" = "shield", "layer" = MOB_LAYER+1)
if(2)
invisibility = 2
//New stealth. Hopefully doesn't lag too much. /N
if(istype(loc, /turf))//If they are standing on a turf.
AddCamoOverlay(loc)//Overlay camo.
if(3)
if(istype(loc, /turf))
//Ninjas may flick into view once in a while if they are stealthed.
if(prob(90))
NinjaStealthActive(loc)
else
NinjaStealthMalf()
else
invisibility = 0
if(client && client.admin_invis)
invisibility = 100
else if (shielded == 2)
invisibility = 2
else
invisibility = 0
/*
for (var/mob/M in viewers(1, src))//For the love of god DO NOT REFRESH EVERY SECOND - Mport
if ((M.client && M.machine == src))
spawn (0)
show_inv(M)
return
*/
last_b_state = stat
/mob/living/carbon/human/tajaran/update_body()
if(stand_icon)
del(stand_icon)
@@ -130,6 +547,7 @@
stand_icon.Blend(new /icon('tajaran.dmi', "underwear[underwear]_[g]_s"), ICON_OVERLAY)
lying_icon.Blend(new /icon('tajaran.dmi', "underwear[underwear]_[g]_l"), ICON_OVERLAY)
/mob/living/carbon/human/tajaran/update_face()
if(organs)
var/datum/organ/external/head = organs["head"]

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

View File

@@ -84,7 +84,7 @@
var/list/heard_b = list() // didn't understand us
for (var/mob/M in listening)
if (M.say_understands(src))
if ( M.say_understands(src) && (M.taj_talk_understand || !is_speaking_taj) )
heard_a += M
else
heard_b += M
@@ -93,9 +93,9 @@
for (var/mob/M in watching)
if ( (M.say_understands(src) && !is_speaking_taj) || istype(M,/mob/living/carbon/human/tajaran) )
rendered = "<span class='game say'><span class='name'>[src.name]</span> whispers something.</span>"
rendered = "<span class='game say'><span class='name'>[src.name]</span> [is_speaking_taj ? "quietly mrowls" : "whispers"] something.</span>"
else
rendered = "<span class='game say'><span class='name'>[src.voice_name]</span> whispers something.</span>"
rendered = "<span class='game say'><span class='name'>[src.voice_name]</span> [is_speaking_taj ? "quietly mrowls" : "whispers"] something.</span>"
M.show_message(rendered, 2)
if (length(heard_a))
@@ -105,14 +105,14 @@
message_a = "<i>[message_a]</i>"
//This appears copied from carbon/living say.dm so the istype check for mob is probably not needed. Appending for src is also not needed as the game will check that automatically.
if (!istype(src, /mob/living/carbon/human))
rendered = "<span class='game say'><span class='name'>[name]</span> whispers, <span class='message'>\"[message_a]\"</span></span>"
rendered = "<span class='game say'><span class='name'>[name]</span> [is_speaking_taj ? "mrowls quietly" : "whispers"], <span class='message'>\"[message_a]\"</span></span>"
else if (istype(wear_mask, /obj/item/clothing/mask/gas/voice))
if (wear_mask:vchange)
rendered = "<span class='game say'><span class='name'>[wear_mask:voice]</span> whispers, <span class='message'>\"[message_a]\"</span></span>"
rendered = "<span class='game say'><span class='name'>[wear_mask:voice]</span> [is_speaking_taj ? "mrowls quietly" : "whispers"], <span class='message'>\"[message_a]\"</span></span>"
else
rendered = "<span class='game say'><span class='name'>[name]</span> whispers, <span class='message'>\"[message_a]\"</span></span>"
rendered = "<span class='game say'><span class='name'>[name]</span> [is_speaking_taj ? "mrowls quietly" : "whispers"], <span class='message'>\"[message_a]\"</span></span>"
else
rendered = "<span class='game say'><span class='name'>[real_name]</span>[alt_name] whispers, <span class='message'>\"[message_a]\"</span></span>"
rendered = "<span class='game say'><span class='name'>[real_name]</span>[alt_name] [is_speaking_taj ? "mrowls quietly" : "whispers"], <span class='message'>\"[message_a]\"</span></span>"
for (var/mob/M in heard_a)
M.show_message(rendered, 2)
@@ -120,49 +120,45 @@
if (length(heard_b))
var/message_b
if (src.voice_message)
message_b = src.voice_message
else
message_b = stars(message)
message_b = tajspeak(message)
if (italics)
message_b = "<i>[message_b]</i>"
rendered = "<span class='game say'><span class='name'>[src.voice_name]</span> whispers, <span class='message'>\"[message_b]\"</span></span>"
rendered = "<span class='game say'><span class='name'>[src.voice_name]</span> mrows quietly, <span class='message'>\"[message_b]\"</span></span>"
for (var/mob/M in heard_b)
M.show_message(rendered, 2)
for (var/mob/M in eavesdropping)
if (M.say_understands(src))
var/message_c
message_c = stars(message)
var/message_c = tajspeak(message)
if (!istype(src, /mob/living/carbon/human))
rendered = "<span class='game say'><span class='name'>[name]</span> whispers, <span class='message'>\"[message_c]\"</span></span>"
rendered = "<span class='game say'><span class='name'>[name]</span> mrowls quietly, <span class='message'>\"[message_c]\"</span></span>"
else if(istype(wear_mask, /obj/item/clothing/mask/gas/voice))
if(wear_mask:vchange)
rendered = "<span class='game say'><span class='name'>[wear_mask:voice]</span> whispers, <span class='message'>\"[message_c]\"</span></span>"
rendered = "<span class='game say'><span class='name'>[wear_mask:voice]</span> mrowls quietly, <span class='message'>\"[message_c]\"</span></span>"
else
rendered = "<span class='game say'><span class='name'>[name]</span> whispers, <span class='message'>\"[message_c]\"</span></span>"
rendered = "<span class='game say'><span class='name'>[name]</span> mrowls quietly, <span class='message'>\"[message_c]\"</span></span>"
else
rendered = "<span class='game say'><span class='name'>[real_name]</span>[alt_name] whispers, <span class='message'>\"[message_c]\"</span></span>"
rendered = "<span class='game say'><span class='name'>[real_name]</span>[alt_name] mrowls quietly, <span class='message'>\"[message_c]\"</span></span>"
M.show_message(rendered, 2)
else
rendered = "<span class='game say'><span class='name'>[src.voice_name]</span> whispers something.</span>"
rendered = "<span class='game say'><span class='name'>[src.voice_name]</span> quietly mrowls something.</span>"
M.show_message(rendered, 2)
if (italics)
message = "<i>[message]</i>"
if (!istype(src, /mob/living/carbon/human))
rendered = "<span class='game say'><span class='name'>[name]</span> whispers, <span class='message'>\"[message]\"</span></span>"
rendered = "<span class='game say'><span class='name'>[name]</span> [is_speaking_taj ? "mrowls quietly" : "whispers"], <span class='message'>\"[message]\"</span></span>"
else if (istype(src.wear_mask, /obj/item/clothing/mask/gas/voice))
if(wear_mask:vchange)
rendered = "<span class='game say'><span class='name'>[wear_mask:voice]</span> whispers, <span class='message'>\"[message]\"</span></span>"
rendered = "<span class='game say'><span class='name'>[wear_mask:voice]</span> [is_speaking_taj ? "mrowls quietly" : "whispers"], <span class='message'>\"[message]\"</span></span>"
else
rendered = "<span class='game say'><span class='name'>[name]</span> whispers, <span class='message'>\"[message]\"</span></span>"
rendered = "<span class='game say'><span class='name'>[name]</span> [is_speaking_taj ? "mrowls quietly" : "whispers"], <span class='message'>\"[message]\"</span></span>"
else
rendered = "<span class='game say'><span class='name'>[real_name]</span>[alt_name] whispers, <span class='message'>\"[message]\"</span></span>"
rendered = "<span class='game say'><span class='name'>[real_name]</span>[alt_name] [is_speaking_taj ? "mrowls quietly" : "whispers"], <span class='message'>\"[message]\"</span></span>"
for (var/mob/M in world)
if (istype(M, /mob/new_player))

View File

@@ -6,9 +6,9 @@
speak_chance = 1
turns_per_move = 15
meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat
response_help = "pets "
response_disarm = "gently pushes aside "
response_harm = "kicks "
response_help = "pets"
response_disarm = "gently pushes aside"
response_harm = "kicks"
var/max_nutrition = 100 // different animals get hungry faster, basically number of 5-second steps from full to starving (60 == 5 minutes)
var/nutrition_step // cycle step in nutrition system
var/obj/movement_target // eating-ing target
@@ -17,6 +17,9 @@
if(!nutrition)
nutrition = max_nutrition * 0.33 // at 1/3 nutrition
reagents = new()
reagents.my_atom = src
Life()
..()
@@ -38,12 +41,14 @@
if(nutrition >= max_nutrition)
return
if((movement_target) && !(isturf(movement_target.loc) || ishuman(movement_target.loc) ))
if((movement_target) && !(isturf(movement_target.loc)))
movement_target = null
stop_automated_movement = 0
a_intent = "help"
turns_per_move = initial(turns_per_move)
if( !movement_target || !(movement_target.loc in oview(src, 3)) )
movement_target = null
stop_automated_movement = 0
a_intent = "help"
turns_per_move = initial(turns_per_move)
for(var/obj/item/weapon/reagent_containers/food/snacks/S in oview(src,3))
if(isturf(S.loc) || ishuman(S.loc))
movement_target = S

View File

@@ -9,6 +9,8 @@ datum/mind
var/assigned_role
var/special_role
var/role_alt_title
var/datum/job/assigned_job
var/list/datum/objective/objectives = list()
@@ -287,6 +289,7 @@ datum/mind
var/new_role = input("Select new role", "Assigned role", assigned_role) as null|anything in get_all_jobs()
if (!new_role) return
assigned_role = new_role
role_alt_title = null
else if (href_list["memory_edit"])
var/new_memo = input("Write new memory", "Memory", memory) as null|message
@@ -345,7 +348,7 @@ datum/mind
new_objective.owner = src
new_objective:target = new_target:mind
//Will display as special role if the target is set as MODE. Ninjas/commandos/nuke ops.
new_objective.explanation_text = "[objective_type] [new_target:real_name], the [new_target:mind:assigned_role=="MODE" ? (new_target:mind:special_role) : (new_target:mind:assigned_role)]."
new_objective.explanation_text = "[objective_type] [new_target:real_name], the [new_target:mind:assigned_role=="MODE" ? (new_target:mind:special_role) : (new_target:mind:role_alt_title ? new_target:mind:role_alt_title : new_target:mind:assigned_role)]."
if ("hijack")
new_objective = new /datum/objective/hijack

View File

@@ -15,6 +15,10 @@
var/lasttry = 0
layer = 2.8
/obj/structure/closet/detective
name = "Detective's Closet"
desc = "Holds the detective's clothes while his coat rack is being repaired."
/obj/structure/closet/acloset
name = "Strange closet"
desc = "It looks weird!"
@@ -280,7 +284,11 @@
/obj/structure/closet/jcloset
name = "Custodial Closet"
desc = "A bulky (yet mobile) closet. Comes with janitor's clothes and gear."
desc = "A bulky (yet mobile) closet. Contains the janitor's gear."
/obj/structure/closet/jcloset2
name = "Cleaner's Closet"
desc = "A bulky (yet mobile) closet. Contains various items for cleaning."
/obj/structure/closet/lawcloset
name = "Legal Closet"
@@ -536,10 +544,28 @@
/obj/structure/closet/wardrobe/red
name = "Red Wardrobe"
desc = "Contains red jumpsuits."
desc = "Contains red security jumpsuits."
icon_state = "red"
icon_closed = "red"
/obj/structure/closet/wardrobe/warden
name = "Warden's Wardrobe"
desc = "Contains the warden's security uniform."
icon_state = "red"
icon_closed = "red"
/obj/structure/closet/wardrobe/hos
name = "Head of Security's Wardrobe"
desc = "Contains the Head of Security's uniform."
icon_state = "red"
icon_closed = "red"
/obj/structure/closet/wardrobe/hop
name = "Head of Personnel's Wardrobe"
desc = "Contains the Head of Personnel's uniform."
icon_state = "blue"
icon_closed = "blue"
/obj/structure/closet/wardrobe/white
name = "White Wardrobe"
desc = "Contains white jumpsuits."
@@ -564,11 +590,47 @@
icon_state = "white"
icon_closed = "white"
/obj/structure/closet/wardrobe/chemistry_white
name = "Chemistry Wardrobe"
desc = "Contains chemistry jumpsuits."
icon_state = "white"
icon_closed = "white"
/obj/structure/closet/wardrobe/nurse
name = "Nurse's Wardrobe"
desc = "Contains nurse uniforms."
icon_state = "white"
icon_closed = "white"
/obj/structure/closet/wardrobe/cmo
name = "Chief Medical Officer's Wardrobe"
desc = "Contains the Chief Medical Officer's clothing."
icon_state = "white"
icon_closed = "white"
/obj/structure/closet/wardrobe/rd
name = "Research Director's Wardrobe"
desc = "Contains the Research Director's clothing."
icon_state = "white"
icon_closed = "white"
/obj/structure/closet/wardrobe/scientist
name = "Scientist's Wardrobe"
desc = "Contains the scientist's clothing."
icon_state = "white"
icon_closed = "white"
/obj/structure/closet/wardrobe/virology_white
name = "Virology Wardrobe"
desc = "Contains virologist jumpsuits."
icon_state = "white"
icon_closed = "white"
/obj/structure/closet/wardrobe/yellow
name = "Yellow Wardrobe"
desc = "Contains yellow jumpsuits."
icon_state = "wardrobe-y"
icon_closed = "wardrobe-y"
icon_state = "yellow"
icon_closed = "yellow"
/obj/structure/closet/wardrobe/engineering_yellow
name = "Engineering Wardrobe"
@@ -630,12 +692,6 @@
icon_state = "yellow"
icon_closed = "yellow"
/obj/structure/closet/wardrobe/virology_white
name = "Virology Wardrobe"
desc = "Contains virologist jumpsuits."
icon_state = "white"
icon_closed = "white"
/obj/structure/closet/secure_closet

View File

@@ -6,7 +6,7 @@
*/
var/list/DisallowedEvents = list(/datum/event/spaceninja, /datum/event/prisonbreak, /datum/event/immovablerod, /datum/event/gravitationalanomaly, /datum/event/alieninfestation)
var/list/DisallowedEvents = list(/datum/event/spaceninja, /datum/event/prisonbreak, /datum/event/immovablerod, /datum/event/gravitationalanomaly, /datum/event/alieninfestation, /datum/event/meteorstorm)
var/list/EventTypes = typesof(/datum/event) - /datum/event - DisallowedEvents
var/list/OneTimeEvents = list(/datum/event/spacecarp, /datum/event/miniblob)
var/datum/event/ActiveEvent = null

View File

@@ -108,7 +108,7 @@
explanation = "Our knowledge must live on. Make sure at least [acolytes_needed] acolytes escape on the shuttle to spread their work on an another station."
if("sacrifice")
if(sacrifice_target && sacrifice_target.current)
explanation = "Sacrifice [sacrifice_target.current.real_name], the [sacrifice_target.assigned_role]. You will need the sacrifice rune (Hell blood join) and three acolytes to do so."
explanation = "Sacrifice [sacrifice_target.current.real_name], the [sacrifice_target.role_alt_title ? sacrifice_target.role_alt_title : sacrifice_target.assigned_role]. You will need the sacrifice rune (Hell blood join) and three acolytes to do so."
else
explanation = "Free objective."
if("eldergod")
@@ -307,9 +307,9 @@
explanation = "Free objective"
else
if(sacrificed.Find(sacrifice_target))
explanation = "Sacrifice [sacrifice_target.current.real_name], the [sacrifice_target.assigned_role]. \green <b>Success!</b>"
explanation = "Sacrifice [sacrifice_target.current.real_name], the [sacrifice_target.role_alt_title ? sacrifice_target.role_alt_title : sacrifice_target.assigned_role]. \green <b>Success!</b>"
else if(sacrifice_target && sacrifice_target.current)
explanation = "Sacrifice [sacrifice_target.current.real_name], the [sacrifice_target.assigned_role]. \red Failed."
explanation = "Sacrifice [sacrifice_target.current.real_name], the [sacrifice_target.role_alt_title ? sacrifice_target.role_alt_title : sacrifice_target.assigned_role]. \red Failed."
else
explanation = "Sacrifice Unknown, the Unknown whos body was likely gibbed. \red Failed."
if("eldergod")

View File

@@ -33,7 +33,7 @@ datum/objective/decapitate
find_target()
..()
if(target && target.current)
explanation_text = "[target.current.real_name], the [target.assigned_role], has defied us for the last time. Make an example of him, and bring us his severed head."
explanation_text = "[target.current.real_name], the [target.role_alt_title ? target.role_alt_title : target.assigned_role], has defied us for the last time. Make an example of him, and bring us his severed head."
else
explanation_text = "Free Objective"
return target
@@ -42,7 +42,7 @@ datum/objective/decapitate
find_target_by_role(role, role_type=0)
..(role, role_type)
if(target && target.current)
explanation_text = "[target.current.real_name], the [!role_type ? target.assigned_role : target.special_role], has defied us for the last time. Make an example of him, and bring us his severed head."
explanation_text = "[target.current.real_name], the [target.role_alt_title ? target.role_alt_title : (!role_type ? target.assigned_role : target.special_role)], has defied us for the last time. Make an example of him, and bring us his severed head."
else
explanation_text = "Free Objective"
return target
@@ -66,7 +66,7 @@ datum/objective/assassinate
find_target()
..()
if(target && target.current)
explanation_text = "Assassinate [target.current.real_name], the [target.assigned_role]."
explanation_text = "Assassinate [target.current.real_name], the [target.role_alt_title ? target.role_alt_title : target.assigned_role]."
else
explanation_text = "Free Objective"
return target
@@ -75,7 +75,7 @@ datum/objective/assassinate
find_target_by_role(role, role_type=0)
..(role, role_type)
if(target && target.current)
explanation_text = "Assassinate [target.current.real_name], the [!role_type ? target.assigned_role : target.special_role]."
explanation_text = "Assassinate [target.current.real_name], the [target.role_alt_title ? target.role_alt_title : (!role_type ? target.assigned_role : target.special_role)]."
else
explanation_text = "Free Objective"
return target
@@ -96,7 +96,7 @@ datum/objective/mutiny
find_target()
..()
if(target && target.current)
explanation_text = "Assassinate [target.current.real_name], the [target.assigned_role]."
explanation_text = "Assassinate [target.current.real_name], the [target.role_alt_title ? target.role_alt_title : target.assigned_role]."
else
explanation_text = "Free Objective"
return target
@@ -105,7 +105,7 @@ datum/objective/mutiny
find_target_by_role(role, role_type=0)
..(role, role_type)
if(target && target.current)
explanation_text = "Assassinate [target.current.real_name], the [!role_type ? target.assigned_role : target.special_role]."
explanation_text = "Assassinate [target.current.real_name], the [target.role_alt_title ? target.role_alt_title : (!role_type ? target.assigned_role : target.special_role)]."
else
explanation_text = "Free Objective"
return target
@@ -138,7 +138,7 @@ datum/objective/debrain//I want braaaainssss
find_target_by_role(role, role_type=0)
..(role, role_type)
if(target && target.current)
explanation_text = "Steal the brain of [target.current.real_name] the [!role_type ? target.assigned_role : target.special_role]."
explanation_text = "Steal the brain of [target.current.real_name] the [target.role_alt_title ? target.role_alt_title : (!role_type ? target.assigned_role : target.special_role)]."
else
explanation_text = "Free Objective"
return target
@@ -162,7 +162,7 @@ datum/objective/protect//The opposite of killing a dude.
find_target()
..()
if(target && target.current)
explanation_text = "Protect [target.current.real_name], the [target.assigned_role]."
explanation_text = "Protect [target.current.real_name], the [target.role_alt_title ? target.role_alt_title : target.assigned_role]."
else
explanation_text = "Free Objective"
return target
@@ -171,7 +171,7 @@ datum/objective/protect//The opposite of killing a dude.
find_target_by_role(role, role_type=0)
..(role, role_type)
if(target && target.current)
explanation_text = "Protect [target.current.real_name], the [!role_type ? target.assigned_role : target.special_role]."
explanation_text = "Protect [target.current.real_name], the [target.role_alt_title ? target.role_alt_title : (!role_type ? target.assigned_role : target.special_role)]."
else
explanation_text = "Free Objective"
return target

View File

@@ -72,7 +72,7 @@
var/datum/objective/assassinate/rev_obj = new
rev_obj.owner = rev_mind
rev_obj.target = head_mind
rev_obj.explanation_text = "Assassinate [head_mind.current.real_name], the [head_mind.assigned_role]."
rev_obj.explanation_text = "Assassinate [head_mind.current.real_name], the [head_mind.role_alt_title ? head_mind.role_alt_title : head_mind.assigned_role]."
rev_mind.objectives += rev_obj
equip_traitor(rev_mind.current, 1) //changing how revs get assigned their uplink so they can get PDA uplinks. --NEO
@@ -102,7 +102,7 @@
var/datum/objective/mutiny/rev_obj = new
rev_obj.owner = rev_mind
rev_obj.target = head_mind
rev_obj.explanation_text = "Assassinate [head_mind.current.real_name], the [head_mind.assigned_role]."
rev_obj.explanation_text = "Assassinate [head_mind.current.real_name], the [head_mind.role_alt_title ? head_mind.role_alt_title : head_mind.assigned_role]."
rev_mind.objectives += rev_obj
/datum/game_mode/proc/greet_revolutionary(var/datum/mind/rev_mind, var/you_are=1)

View File

@@ -7,6 +7,7 @@
total_positions = 1
spawn_positions = 1
supervisors = "the head of personnel"
alt_titles = list("Counselor")
equip(var/mob/living/carbon/human/H)
@@ -19,7 +20,7 @@
H.equip_if_possible(new /obj/item/clothing/shoes/black(H), H.slot_shoes)
spawn(0)
var/religion_name = "Christianity"
var/new_religion = input(H, "You are the Chaplain. Would you like to change your religion? Default is Christianity, in SPACE.", "Name change", religion_name)
var/new_religion = input(H, "You are the Chaplain / Councelor. For game mechanics purposes, you need to choose a religion either way. Would you like to change your religion? Default is Christianity, in SPACE.", "Name change", religion_name)
if ((length(new_religion) == 0) || (new_religion == "Christianity"))
new_religion = religion_name

View File

@@ -22,5 +22,8 @@
//Supervisors, who this person answers to directly
var/supervisors = ""
//List of alternate titles, if any
var/list/alt_titles
/datum/job/proc/equip(var/mob/living/carbon/human/H)
return 1

View File

@@ -30,6 +30,7 @@
total_positions = 5
spawn_positions = 3
supervisors = "the chief medical officer"
alt_titles = list("Virologist", "Surgeon")
equip(var/mob/living/carbon/human/H)
@@ -68,7 +69,7 @@
return 1
/*
/datum/job/virologist
title = "Virologist"
flag = VIROLOGIST
@@ -90,5 +91,5 @@
H.equip_if_possible(new /obj/item/clothing/suit/storage/labcoat/virologist(H), H.slot_wear_suit)
H.equip_if_possible(new /obj/item/device/flashlight/pen(H), H.slot_s_store)
return 1
*/

View File

@@ -28,6 +28,7 @@
total_positions = 5
spawn_positions = 3
supervisors = "the research director"
alt_titles = list("Plasma Researcher", "Xenobiologist")
equip(var/mob/living/carbon/human/H)

View File

@@ -68,6 +68,7 @@
total_positions = 1
spawn_positions = 1
supervisors = "the head of security"
alt_titles = list("Forensic Technician")
equip(var/mob/living/carbon/human/H)

View File

@@ -44,6 +44,10 @@ var/global/datum/controller/occupations/job_master
return null
proc/GetAltTitle(mob/new_player/player, rank)
return player.preferences.GetAltTitle(GetJob(rank))
proc/AssignRole(var/mob/new_player/player, var/rank, var/latejoin = 0)
Debug("Running AR, Player: [player], Rank: [rank], LJ: [latejoin]")
if((player) && (player.mind) && (rank))
@@ -56,6 +60,7 @@ var/global/datum/controller/occupations/job_master
if((job.current_positions < position_limit) || position_limit == -1)
Debug("Player: [player] is now Rank: [rank], JCP:[job.current_positions], JPL:[position_limit]")
player.mind.assigned_role = rank
player.mind.role_alt_title = GetAltTitle(player, rank)
unassigned -= player
job.current_positions++
return 1
@@ -83,6 +88,7 @@ var/global/datum/controller/occupations/job_master
for(var/mob/new_player/player in world)
if((player) && (player.mind))
player.mind.assigned_role = null
player.mind.role_alt_title = null
player.mind.special_role = null
SetupOccupations()
unassigned = list()
@@ -207,12 +213,16 @@ var/global/datum/controller/occupations/job_master
else
H << "Your job is [rank] and the game just can't handle it! Please report this bug to an administrator."
spawnId(H,rank)
if(H.mind.assigned_role == rank && H.mind.role_alt_title)
spawnId(H, rank, H.mind.role_alt_title)
else
spawnId(H, rank)
H << "<B>You are the [rank].</B>"
H << "<b>As the [rank] you answer directly to [job.supervisors]. Special circumstances may change this.</b>"
H.job = rank
if(H.mind)
if(H.mind && H.mind.assigned_role != rank)
H.mind.assigned_role = rank
H.mind.role_alt_title = null
if(!joined_late && rank != "Tourist")
var/obj/S = null
@@ -239,8 +249,9 @@ var/global/datum/controller/occupations/job_master
return 1
proc/spawnId(var/mob/living/carbon/human/H, rank)
proc/spawnId(var/mob/living/carbon/human/H, rank, title)
if(!H) return 0
if(!title) title = rank
var/obj/item/weapon/card/id/C = null
switch(rank)
if("Cyborg")
@@ -251,9 +262,9 @@ var/global/datum/controller/occupations/job_master
C = new /obj/item/weapon/card/id(H)
if(C)
C.registered_name = H.real_name
C.assignment = rank
C.assignment = title
C.name = "[C.registered_name]'s ID Card ([C.assignment])"
C.access = get_access(C.assignment)
C.access = get_access(rank)
H.equip_if_possible(C, H.slot_wear_id)
if(!H.equip_if_possible(new /obj/item/weapon/pen(H), H.slot_r_store))
H.equip_if_possible(new /obj/item/weapon/pen(H), H.slot_ears)

View File

@@ -22,7 +22,6 @@ var/const
CMO =(1<<3)
DOCTOR =(1<<4)
GENETICIST =(1<<5)
VIROLOGIST =(1<<6)
CIVILIAN =(1<<2)
@@ -74,8 +73,7 @@ var/list/engineering_positions = list(
var/list/medical_positions = list(
"Chief Medical Officer",
"Medical Doctor",
"Geneticist",
"Virologist"
"Geneticist"
)

View File

@@ -217,7 +217,8 @@
D["Cancel"] = "Cancel"
for (var/obj/machinery/camera/C in L)
if ( C.network in src.networks )
D[text("[][]", C.c_tag, (C.status ? null : " (Deactivated)"))] = C
D[text("[]: [][]", C.network, C.c_tag, (C.status ? null : " (Deactivated)"))] = C
D = camera_network_sort(D)
var/t = input(user, "Which camera should you change to?") as null|anything in D

View File

@@ -189,7 +189,7 @@ Pod/Blast Doors computer
L.fields["sex"] = H.gender
L.fields["age"] = H.age
L.fields["id"] = md5("[H.real_name][H.mind.assigned_role]")
L.fields["rank"] = H.mind.assigned_role
L.fields["rank"] = H.mind.role_alt_title ? H.mind.role_alt_title : H.mind.assigned_role
L.fields["b_type"] = H.dna.b_type
L.fields["b_dna"] = H.dna.unique_enzymes
L.fields["enzymes"] = H.dna.struc_enzymes
@@ -266,7 +266,7 @@ Pod/Blast Doors computer
L.fields["sex"] = H.gender
L.fields["age"] = H.age
L.fields["id"] = md5("[H.real_name][H.mind.assigned_role]")
L.fields["rank"] = H.mind.assigned_role
L.fields["rank"] = H.mind.role_alt_title ? H.mind.role_alt_title : H.mind.assigned_role
L.fields["b_type"] = H.dna.b_type
L.fields["b_dna"] = H.dna.unique_enzymes
L.fields["enzymes"] = H.dna.struc_enzymes

View File

@@ -5,13 +5,18 @@
desc = "A sink used for washing one's hands and face."
anchored = 1
var/busy = 0 //Something's being washed at the moment
var/mode = 0 //0 == fill, 1 == pour
New()
..()
verbs += /obj/machinery/sink/proc/mode_pour
attack_hand(mob/M as mob)
if(busy)
M << "\red Someone's already washing something here."
return
usr << "\blue You start washing up."
M << "\blue You start washing up."
busy = 1
if(do_after(M,40))
@@ -43,6 +48,25 @@
V.show_message(text("\blue [M] washes up using \the [src]."))
busy = 0
proc/mode_pour()
set name = "Mode -> Pour"
set category = "Object"
set src in oview(1)
mode = 1
verbs -= /obj/machinery/sink/proc/mode_pour
verbs += /obj/machinery/sink/proc/mode_fill
usr << "You will now pour reagents down \the [src]."
proc/mode_fill()
set name = "Mode -> Fill"
set category = "Object"
set src in oview(1)
mode = 0
verbs -= /obj/machinery/sink/proc/mode_fill
verbs += /obj/machinery/sink/proc/mode_pour
usr << "You will now fill your container from the faucet."
attackby(var/obj/item/O as obj, var/mob/user as mob)
if(busy)
@@ -50,15 +74,26 @@
return
if (istype(O, /obj/item/weapon/reagent_containers/glass) || istype(O,/obj/item/weapon/reagent_containers/food/drinks))
if(O.reagents.total_volume < O.reagents.maximum_volume)
O:reagents.add_reagent("water", 10)
user.visible_message( \
"\blue [user] fills the [O] using the [src].", \
"\blue You fill the [O] using the [src].")
if(!mode)
// fill
if(O.reagents.total_volume < O.reagents.maximum_volume)
O:reagents.add_reagent("water", 10)
user.visible_message( \
"\blue [user] fills the [O] using the [src].", \
"\blue You fill the [O] using the [src].")
else
user.visible_message( \
"\blue [user] spills water out of the overflowing [O] into the [src].", \
"\blue You spill water out of the overflowing [O] into the [src].")
else
user.visible_message( \
"\blue [user] spills water out of the overflowing [O] into the [src].", \
"\blue You spill water out of the overflowing [O] into the [src].")
// pour
if(O.reagents.total_volume > 0)
O.reagents.clear_reagents()
user.visible_message( \
"\blue [user] pours the contents of \the [O] into \the [src].", \
"\blue You pour the contents of \the [O] into \the [src].")
else
user << "\The [O] is empty."
return
else if (istype(O, /obj/item/weapon/melee/baton))
var/obj/item/weapon/melee/baton/B = O

View File

@@ -1,9 +1,6 @@
/obj/structure/closet/jcloset/New()
..()
sleep(2)
new /obj/item/wardrobe/janitor(src)
new /obj/item/wardrobe/janitor(src)
new /obj/item/wardrobe/janitor(src)
new /obj/item/device/flashlight(src)
new /obj/item/clothing/shoes/galoshes(src)
new /obj/item/weapon/caution(src)
@@ -12,4 +9,14 @@
new /obj/item/weapon/caution(src)
new /obj/item/weapon/caution(src)
new /obj/item/weapon/caution(src)
new /obj/item/weapon/trashbag(src)
/obj/structure/closet/jcloset2/New()
..()
sleep(2)
new /obj/item/weapon/chem_grenade/cleaner(src)
new /obj/item/weapon/chem_grenade/cleaner(src)
new /obj/item/weapon/chem_grenade/cleaner(src)
new /obj/item/weapon/cleaner(src)
new /obj/item/weapon/cleaner(src)
new /obj/item/weapon/cleaner(src)
new /obj/item/weapon/trashbag(src)

View File

@@ -1,19 +0,0 @@
/obj/structure/closet/secure_closet/bar
name = "Booze"
req_access = list(access_bar)
New()
..()
sleep(2)
new /obj/item/weapon/reagent_containers/food/drinks/beer( src )
new /obj/item/weapon/reagent_containers/food/drinks/beer( src )
new /obj/item/weapon/reagent_containers/food/drinks/beer( src )
new /obj/item/weapon/reagent_containers/food/drinks/beer( src )
new /obj/item/weapon/reagent_containers/food/drinks/beer( src )
new /obj/item/weapon/reagent_containers/food/drinks/beer( src )
new /obj/item/weapon/reagent_containers/food/drinks/beer( src )
new /obj/item/weapon/reagent_containers/food/drinks/beer( src )
new /obj/item/weapon/reagent_containers/food/drinks/beer( src )
new /obj/item/weapon/reagent_containers/food/drinks/beer( src )
return

View File

@@ -7,9 +7,25 @@
..()
sleep(2)
new /obj/item/wardrobe/chief_engineer(src)
new /obj/item/wardrobe/chief_engineer(src)
new /obj/item/blueprints(src)
new /obj/item/device/hacktool/engineer(src)
//
var/obj/item/weapon/storage/backpack/industrial/BPK = new /obj/item/weapon/storage/backpack/industrial(src)
var/obj/item/weapon/storage/box/B = new(BPK)
new /obj/item/weapon/pen(B)
new /obj/item/device/pda/heads/ce(src)
new /obj/item/device/multitool(src)
new /obj/item/device/flash(src)
new /obj/item/clothing/head/helmet/hardhat/white(src)
new /obj/item/clothing/head/helmet/welding(src)
new /obj/item/weapon/storage/belt/utility/full(src)
new /obj/item/weapon/storage/toolbox/mechanical(src)
new /obj/item/clothing/suit/hazardvest(src)
new /obj/item/clothing/gloves/yellow(src)
new /obj/item/clothing/mask/gas(src)
new /obj/item/clothing/glasses/meson(src)
new /obj/item/device/radio/headset/heads/ce(src)
new /obj/item/clothing/shoes/brown(src)
new /obj/item/clothing/under/rank/chief_engineer(src)
return
@@ -50,20 +66,58 @@
new /obj/item/weapon/weldingtool/largetank(src)
return
/obj/structure/closet/secure_closet/engineering_personal
name = "Engineer's Locker"
req_access = list(access_engine)
New()
..()
sleep(2)
new /obj/item/wardrobe/engineer(src)
new /obj/item/wardrobe/engineer(src)
new /obj/item/wardrobe/engineer(src)
new /obj/item/wardrobe/engineer(src)
new /obj/item/wardrobe/engineer(src)
new /obj/item/wardrobe/engineer(src)
//
var/obj/item/weapon/storage/backpack/industrial/BPK = new /obj/item/weapon/storage/backpack/industrial(src)
var/obj/item/weapon/storage/box/B = new(BPK)
new /obj/item/weapon/pen(B)
new /obj/item/device/pda/engineering(src)
new /obj/item/device/t_scanner(src)
new /obj/item/clothing/suit/hazardvest(src)
new /obj/item/weapon/storage/belt/utility/full(src)
new /obj/item/weapon/storage/toolbox/mechanical(src)
new /obj/item/clothing/mask/gas(src)
new /obj/item/clothing/head/helmet/hardhat(src)
new /obj/item/clothing/glasses/meson(src)
new /obj/item/device/radio/headset/headset_eng(src)
new /obj/item/clothing/shoes/orange(src)
new /obj/item/clothing/under/rank/engineer(src)
return
/obj/structure/closet/secure_closet/atmos_personal
name = "Atmospheric Technician's Locker"
req_access = list(access_atmospherics)
New()
..()
sleep(2)
new /obj/item/wardrobe/atmos(src)
//
var/obj/item/weapon/storage/backpack/BPK = new /obj/item/weapon/storage/backpack(src)
var/obj/item/weapon/storage/box/B = new(BPK)
new /obj/item/weapon/pen(B)
new /obj/item/device/pda/engineering(src)
new /obj/item/weapon/storage/toolbox/mechanical(src)
new /obj/item/device/radio/headset/headset_eng(src)
/obj/structure/closet/secure_closet/roboticist_personal
name = "Roboticist's Locker"
req_access = list(access_robotics)
New()
..()
sleep(2)
new /obj/item/wardrobe/roboticist(src)
var/obj/item/weapon/storage/backpack/BPK = new /obj/item/weapon/storage/backpack(src)
var/obj/item/weapon/storage/box/B = new(BPK)
new /obj/item/weapon/pen(B)
new /obj/item/device/pda/engineering(src)
new /obj/item/weapon/storage/toolbox/mechanical(src)
new /obj/item/device/radio/headset/headset_eng(src)

View File

@@ -1,4 +1,4 @@
/obj/structure/closet/secure_closet/medical1
/obj/structure/closet/secure_closet/medicine
name = "Medicine Closet"
desc = "Filled with medical junk."
icon_state = "medical1"
@@ -26,7 +26,7 @@
/obj/structure/closet/secure_closet/medical2
/obj/structure/closet/secure_closet/anaesthetic
name = "Anesthetic"
desc = "Used to knock people out, either by sleeping gas or brute force."
icon_state = "medical1"
@@ -51,35 +51,90 @@
/obj/structure/closet/secure_closet/medical3
/obj/structure/closet/secure_closet/chemist_personal
name = "Chemist's Locker"
req_access = list(access_chemistry)
New()
..()
sleep(2)
new /obj/item/wardrobe/chemist(src)
new /obj/item/wardrobe/chemist(src)
new /obj/item/wardrobe/chemist(src)
new /obj/item/wardrobe/chemist(src)
//
var/obj/item/weapon/storage/backpack/medic/BPK = new /obj/item/weapon/storage/backpack/medic(src)
var/obj/item/weapon/storage/box/B = new(BPK)
new /obj/item/weapon/pen(B)
new /obj/item/device/radio/headset/headset_medsci(src)
new /obj/item/device/pda/toxins(src)
return
/obj/structure/closet/secure_closet/doctor_personal
name = "Doctor's Locker"
req_access = list(access_medical)
New()
..()
sleep(2)
new /obj/item/wardrobe/doctor(src)
//
var/obj/item/weapon/storage/backpack/medic/BPK = new /obj/item/weapon/storage/backpack/medic(src)
var/obj/item/weapon/storage/box/B = new(BPK)
new /obj/item/weapon/pen(B)
new /obj/item/device/pda/medical(src)
new /obj/item/weapon/storage/firstaid/regular(src)
new /obj/item/device/flashlight/pen(src)
new /obj/item/device/radio/headset/headset_med(src)
/obj/structure/closet/secure_closet/genetics_personal
name = "Geneticist's Locker"
req_access = list(access_medlab)
New()
..()
sleep(2)
new /obj/item/wardrobe/geneticist(src)
//
var/obj/item/weapon/storage/backpack/medic/BPK = new /obj/item/weapon/storage/backpack/medic(src)
var/obj/item/weapon/storage/box/B = new(BPK)
new /obj/item/weapon/pen(B)
new /obj/item/device/pda/medical(src)
new /obj/item/device/flashlight/pen(src)
new /obj/item/device/radio/headset/headset_medsci(src)
/obj/structure/closet/secure_closet/viro_personal
name = "Virologist's Locker"
req_access = list(access_virology)
New()
..()
sleep(2)
new /obj/item/wardrobe/virologist(src)
//
var/obj/item/weapon/storage/backpack/medic/BPK = new /obj/item/weapon/storage/backpack/medic(src)
var/obj/item/weapon/storage/box/B = new(BPK)
new /obj/item/weapon/pen(B)
new /obj/item/device/flashlight/pen(src)
new /obj/item/device/pda/medical(src)
new /obj/item/clothing/mask/surgical(src)
new /obj/item/device/radio/headset/headset_med(src)
/obj/structure/closet/secure_closet/CMO
name = "Chief Medical Officer"
name = "Chief Medical Officer's Locker"
req_access = list(access_cmo)
New()
..()
sleep(2)
new /obj/item/wardrobe/cmo(src)
new /obj/item/wardrobe/cmo(src)
new /obj/item/wardrobe/cmo(src)
//
var/obj/item/weapon/storage/backpack/medic/BPK = new /obj/item/weapon/storage/backpack/medic(src)
var/obj/item/weapon/storage/box/B = new(BPK)
new /obj/item/weapon/pen(B)
new /obj/item/device/pda/heads/cmo(src)
new /obj/item/weapon/storage/firstaid/regular(src)
new /obj/item/device/flashlight/pen(src)
new /obj/item/device/radio/headset/heads/cmo(src)
return
/obj/structure/closet/secure_closet/animal
name = "Animal Control"
req_access = list(access_medical)
@@ -113,4 +168,4 @@
sleep(2)
new /obj/item/weapon/storage/pillbottlebox(src)
new /obj/item/weapon/storage/pillbottlebox(src)
return
return

View File

@@ -6,6 +6,10 @@
spawn(2)
new /obj/item/device/assembly/signaler(src)
new /obj/item/wardrobe/assistant(src)
var/obj/item/weapon/storage/backpack/BPK = new /obj/item/weapon/storage/backpack(src)
var/obj/item/weapon/storage/box/newbox = new(BPK)
new /obj/item/weapon/pen(newbox)
return
/obj/structure/closet/secure_closet/personal/patient/New()

View File

@@ -8,4 +8,12 @@
sleep(2)
new /obj/item/wardrobe/rd(src)
new /obj/item/wardrobe/rd(src)
return
return
//cpy
/*
new /obj/item/wardrobe/scientist(src)
new /obj/item/wardrobe/scientist(src)
new /obj/item/wardrobe/scientist(src)
new /obj/item/wardrobe/scientist(src)
*/

View File

@@ -6,10 +6,18 @@
New()
..()
sleep(2)
new /obj/item/wardrobe/captain(src)
//
new /obj/item/device/pda/captain(src)
new /obj/item/weapon/storage/id_kit(src)
new /obj/item/weapon/reagent_containers/food/drinks/flask(src)
new /obj/item/weapon/gun/energy/gun(src)
new /obj/item/clothing/glasses/sunglasses(src)
new /obj/item/clothing/suit/armor/vest(src)
new /obj/item/clothing/head/helmet/swat(src)
new /obj/item/device/radio/headset/heads/captain(src)
new /obj/item/clothing/suit/armor/captain(src)
new /obj/item/clothing/head/helmet/cap(src)
new /obj/item/wardrobe/captain(src)
new /obj/item/wardrobe/captain(src)
return
@@ -23,7 +31,16 @@
..()
sleep(2)
new /obj/item/wardrobe/hop(src)
new /obj/item/wardrobe/hop(src)
//
var/obj/item/weapon/storage/backpack/BPK = new /obj/item/weapon/storage/backpack(src)
var/obj/item/weapon/storage/box/B = new(BPK)
new /obj/item/weapon/pen(B)
new /obj/item/device/flash(B)
new /obj/item/device/pda/heads/hop(src)
new /obj/item/weapon/storage/id_kit(src)
new /obj/item/weapon/gun/energy/gun(src)
new /obj/item/clothing/glasses/sunglasses(src)
new /obj/item/device/radio/headset/heads/hop(src)
return
@@ -32,52 +49,70 @@
name = "Head Of Security"
req_access = list(access_hos)
New()
..()
sleep(2)
new /obj/item/wardrobe/hos(src)
//
var/obj/item/weapon/storage/backpack/security/BPK = new /obj/item/weapon/storage/backpack/security(src)
var/obj/item/weapon/storage/box/B = new(BPK)
new /obj/item/weapon/pen(B)
new /obj/item/device/flash(B)
new /obj/item/weapon/melee/baton(src)
new /obj/item/weapon/gun/energy/gun(src)
new /obj/item/device/pda/heads/hos(src)
new /obj/item/clothing/glasses/sunglasses/sechud(src)
new /obj/item/weapon/storage/lockbox/loyalty(src)
new /obj/item/weapon/storage/flashbang_kit(src)
new /obj/item/clothing/under/jensen(src)
new /obj/item/clothing/suit/armor/hos/jensen(src)
new /obj/item/clothing/head/helmet/HoS/dermal(src)
new /obj/item/wardrobe/hos(src)
new /obj/item/wardrobe/hos(src)
return
/obj/structure/closet/secure_closet/warden
name = "Warden's Locker"
req_access = list(access_armory)
New()
..()
sleep(2)
new /obj/item/wardrobe/warden(src)
//
var/obj/item/weapon/storage/backpack/security/BPK = new /obj/item/weapon/storage/backpack/security(src)
var/obj/item/weapon/storage/box/B = new(BPK)
new /obj/item/weapon/pen(B)
new /obj/item/device/flash(B)
new /obj/item/weapon/melee/baton(src)
new /obj/item/weapon/gun/energy/taser(src)
new /obj/item/device/pda/security(src)
new /obj/item/clothing/suit/armor/vest(src)
new /obj/item/clothing/glasses/sunglasses/sechud(src)
new /obj/item/device/radio/headset/headset_sec(src)
new /obj/item/weapon/storage/flashbang_kit(src)
new /obj/item/wardrobe/warden(src)
new /obj/item/wardrobe/warden(src)
new /obj/item/wardrobe/warden(src)
new /obj/item/wardrobe/warden(src)
return
/obj/structure/closet/secure_closet/security
name = "Security Locker"
req_access = list(access_security)
New()
..()
sleep(2)
new /obj/item/wardrobe/officer(src)
new /obj/item/wardrobe/officer(src)
new /obj/item/wardrobe/officer(src)
new /obj/item/wardrobe/officer(src)
new /obj/item/wardrobe/officer(src)
new /obj/item/wardrobe/officer(src)
//
var/obj/item/weapon/storage/backpack/security/BPK = new /obj/item/weapon/storage/backpack/security(src)
var/obj/item/weapon/storage/box/B = new(BPK)
new /obj/item/weapon/pen(B)
new /obj/item/device/flash(B)
new /obj/item/weapon/pepperspray(src)
new /obj/item/weapon/melee/baton(src)
new /obj/item/policetaperoll(src)
new /obj/item/weapon/flashbang(src)
new /obj/item/device/pda/security(src)
new /obj/item/clothing/suit/armor/vest(src)
new /obj/item/clothing/suit/storage/gearharness(src)
new /obj/item/clothing/glasses/sunglasses/sechud(src)
new /obj/item/weapon/storage/belt/security(src)
new /obj/item/clothing/head/helmet(src)
new /obj/item/device/radio/headset/headset_sec(src)
return
@@ -96,12 +131,21 @@
New()
..()
sleep(2)
new /obj/item/wardrobe/detective(src)
//
var/obj/item/weapon/storage/backpack/security/BPK = new /obj/item/weapon/storage/backpack/security(src)
var/obj/item/weapon/storage/box/B = new(BPK)
var/obj/item/weapon/clipboard/C = new(B)
new /obj/item/weapon/pen(C)
new /obj/item/device/detective_scanner(src)
new /obj/item/policetaperoll(src)
new /obj/item/weapon/storage/box/evidence(src)
new /obj/item/device/pda/detective(src)
new /obj/item/device/radio/headset/headset_sec(src)
//
new /obj/item/weapon/reagent_containers/food/drinks/dflask(src)
new /obj/item/weapon/zippo(src)
new /obj/item/weapon/zippo(B)
new /obj/item/weapon/pepperspray/small(src)
new /obj/item/wardrobe/detective(src)
new /obj/item/wardrobe/detective(src)
new /obj/item/wardrobe/detective(src)
return

View File

@@ -7,21 +7,50 @@
new /obj/item/clothing/shoes/brown(src)
return
//says red, is actually the security locker
/obj/structure/closet/wardrobe/red/New()
new /obj/item/clothing/under/rank/security(src)
new /obj/item/clothing/under/rank/security(src)
new /obj/item/clothing/under/rank/security(src)
new /obj/item/clothing/under/rank/security(src)
new /obj/item/clothing/shoes/jackboots(src)
new /obj/item/clothing/shoes/jackboots(src)
new /obj/item/clothing/shoes/jackboots(src)
new /obj/item/clothing/shoes/jackboots(src)
new /obj/item/clothing/head/secsoft(src)
new /obj/item/clothing/gloves/red(src)
new /obj/item/clothing/gloves/red(src)
new /obj/item/clothing/gloves/red(src)
new /obj/item/clothing/gloves/red(src)
new /obj/item/clothing/head/secsoft(src)
new /obj/item/clothing/head/secsoft(src)
new /obj/item/clothing/head/secsoft(src)
return
/obj/structure/closet/wardrobe/warden/New()
new /obj/item/clothing/under/rank/warden(src)
new /obj/item/clothing/shoes/jackboots(src)
new /obj/item/clothing/head/helmet/warden(src)
new /obj/item/weapon/storage/belt/security(src)
new /obj/item/clothing/gloves/red(src)
new /obj/item/clothing/suit/storage/gearharness(src)
obj/structure/closet/wardrobe/hos/New()
new /obj/item/clothing/suit/storage/armourrigvest(src)
new /obj/item/clothing/suit/armor/hos(src)
new /obj/item/clothing/head/helmet/HoS(src)
new /obj/item/weapon/storage/belt/security(src)
new /obj/item/clothing/gloves/hos(src)
new /obj/item/clothing/shoes/jackboots(src)
new /obj/item/clothing/under/rank/head_of_security(src)
new /obj/item/clothing/under/jensen(src)
new /obj/item/clothing/suit/armor/hos/jensen(src)
new /obj/item/clothing/head/helmet/HoS/dermal(src)
obj/structure/closet/wardrobe/hop/New()
new /obj/item/clothing/under/rank/head_of_personnel(src)
new /obj/item/clothing/suit/armor/vest(src)
new /obj/item/clothing/shoes/brown(src)
new /obj/item/clothing/gloves/blue(src)
new /obj/item/clothing/head/helmet(src)
/obj/structure/closet/wardrobe/pink/New()
new /obj/item/clothing/under/color/pink(src)
new /obj/item/clothing/under/color/pink(src)
@@ -51,10 +80,6 @@
new /obj/item/clothing/suit/holidaypriest(src)
new /obj/item/clothing/suit/hastur (src)
new /obj/item/clothing/head/hasturhood (src)
new /obj/item/weapon/storage/backpack/cultpack (src)
new /obj/item/weapon/candlepack(src)
new /obj/item/weapon/candlepack(src)
new /obj/item/wardrobe/chaplain(src)
return
/obj/structure/closet/wardrobe/green/New()
@@ -64,7 +89,6 @@
new /obj/item/clothing/shoes/black(src)
new /obj/item/clothing/shoes/black(src)
new /obj/item/clothing/shoes/black(src)
return
/obj/structure/closet/wardrobe/orange/New()
new /obj/item/clothing/under/color/orange(src)
@@ -73,7 +97,6 @@
new /obj/item/clothing/shoes/orange(src)
new /obj/item/clothing/shoes/orange(src)
new /obj/item/clothing/shoes/orange(src)
return
/obj/structure/closet/wardrobe/yellow/New()
new /obj/item/clothing/under/color/yellow(src)
@@ -82,23 +105,28 @@
new /obj/item/clothing/shoes/orange(src)
new /obj/item/clothing/shoes/orange(src)
new /obj/item/clothing/shoes/orange(src)
return
/obj/structure/closet/wardrobe/atmospherics_yellow/New()
new /obj/item/wardrobe/atmos(src)
new /obj/item/wardrobe/atmos(src)
new /obj/item/wardrobe/atmos(src)
new /obj/item/wardrobe/atmos(src)
return
new /obj/item/clothing/under/rank/atmospheric_technician(src)
new /obj/item/clothing/under/rank/atmospheric_technician(src)
new /obj/item/clothing/under/rank/atmospheric_technician(src)
new /obj/item/clothing/shoes/black(src)
new /obj/item/clothing/shoes/black(src)
new /obj/item/clothing/shoes/black(src)
/obj/structure/closet/wardrobe/engineering_yellow/New()
new /obj/item/clothing/under/rank/engineer(src)
new /obj/item/clothing/under/rank/engineer(src)
new /obj/item/clothing/under/rank/engineer(src)
new /obj/item/clothing/head/helmet/hardhat(src)
new /obj/item/clothing/head/helmet/hardhat(src)
new /obj/item/clothing/head/helmet/hardhat(src)
new /obj/item/weapon/storage/belt/utility/full(src)
new /obj/item/weapon/storage/belt/utility/full(src)
new /obj/item/weapon/storage/belt/utility/full(src)
new /obj/item/clothing/shoes/orange(src)
new /obj/item/clothing/shoes/orange(src)
new /obj/item/clothing/shoes/orange(src)
return
/obj/structure/closet/wardrobe/white/New()
new /obj/item/clothing/under/color/white(src)
@@ -107,23 +135,28 @@
new /obj/item/clothing/shoes/white(src)
new /obj/item/clothing/shoes/white(src)
new /obj/item/clothing/shoes/white(src)
return
/obj/structure/closet/wardrobe/toxins_white/New()
new /obj/item/wardrobe/scientist(src)
new /obj/item/wardrobe/scientist(src)
new /obj/item/wardrobe/scientist(src)
new /obj/item/wardrobe/scientist(src)
return
new /obj/item/clothing/under/rank/scientist(src)
new /obj/item/clothing/under/rank/scientist(src)
new /obj/item/clothing/under/rank/scientist(src)
new /obj/item/clothing/suit/storage/labcoat/science(src)
new /obj/item/clothing/suit/storage/labcoat/science(src)
new /obj/item/clothing/suit/storage/labcoat/science(src)
new /obj/item/clothing/shoes/white(src)
new /obj/item/clothing/shoes/white(src)
new /obj/item/clothing/shoes/white(src)
/obj/structure/closet/wardrobe/genetics_white/New()
new /obj/item/weapon/storage/stma_kit(src)
new /obj/item/wardrobe/geneticist(src)
new /obj/item/wardrobe/geneticist(src)
new /obj/item/wardrobe/geneticist(src)
new /obj/item/wardrobe/geneticist(src)
new /obj/item/wardrobe/geneticist(src)
return
new /obj/item/clothing/under/rank/geneticist(src)
new /obj/item/clothing/under/rank/geneticist(src)
new /obj/item/clothing/under/rank/geneticist(src)
new /obj/item/clothing/suit/storage/labcoat/genetics(src)
new /obj/item/clothing/suit/storage/labcoat/genetics(src)
new /obj/item/clothing/suit/storage/labcoat/genetics(src)
new /obj/item/clothing/shoes/white(src)
new /obj/item/clothing/shoes/white(src)
new /obj/item/clothing/shoes/white(src)
/obj/structure/closet/wardrobe/grey/New()
new /obj/item/clothing/under/color/grey(src)
@@ -132,7 +165,6 @@
new /obj/item/clothing/shoes/black(src)
new /obj/item/clothing/shoes/black(src)
new /obj/item/clothing/shoes/black(src)
return
/obj/structure/closet/wardrobe/mixed/New()
new /obj/item/clothing/under/color/white(src)
@@ -144,74 +176,172 @@
new /obj/item/clothing/shoes/black(src)
new /obj/item/clothing/shoes/brown(src)
new /obj/item/clothing/shoes/white(src)
return
/obj/structure/closet/lawcloset/New()
new /obj/item/wardrobe/lawyer(src)
new /obj/item/wardrobe/lawyer(src)
new /obj/item/wardrobe/lawyer(src)
new /obj/item/wardrobe/lawyer(src)
if(prob(50))
new /obj/item/clothing/suit/lawyer/bluejacket(src)
else
new /obj/item/clothing/suit/lawyer/purpjacket(src)
if(prob(50))
new /obj/item/clothing/suit/lawyer/bluejacket(src)
else
new /obj/item/clothing/suit/lawyer/purpjacket(src)
if(prob(50))
new /obj/item/clothing/suit/lawyer/bluejacket(src)
else
new /obj/item/clothing/suit/lawyer/purpjacket(src)
new /obj/item/clothing/shoes/brown(src)
new /obj/item/clothing/shoes/brown(src)
new /obj/item/clothing/shoes/brown(src)
/obj/structure/closet/wardrobe/chemistry_white/New()
new /obj/item/clothing/under/rank/chemist(src)
new /obj/item/clothing/under/rank/chemist(src)
new /obj/item/clothing/under/rank/chemist(src)
new /obj/item/clothing/suit/storage/labcoat/chemist(src)
new /obj/item/clothing/suit/storage/labcoat/chemist(src)
new /obj/item/clothing/suit/storage/labcoat/chemist(src)
new /obj/item/clothing/shoes/white(src)
new /obj/item/clothing/shoes/white(src)
new /obj/item/clothing/shoes/white(src)
/obj/structure/closet/wardrobe/medic_white/New()
new /obj/item/wardrobe/doctor(src)
new /obj/item/wardrobe/doctor(src)
new /obj/item/wardrobe/doctor(src)
new /obj/item/wardrobe/doctor(src)
new /obj/item/wardrobe/doctor(src)
new /obj/item/wardrobe/doctor(src)
return
new /obj/item/clothing/under/rank/medical(src)
new /obj/item/clothing/under/rank/medical(src)
new /obj/item/clothing/under/rank/medical(src)
new /obj/item/clothing/suit/storage/labcoat(src)
new /obj/item/clothing/suit/storage/labcoat(src)
new /obj/item/clothing/suit/storage/labcoat(src)
new /obj/item/weapon/storage/belt/medical(src)
new /obj/item/weapon/storage/belt/medical(src)
new /obj/item/weapon/storage/belt/medical(src)
new /obj/item/clothing/shoes/white(src)
new /obj/item/clothing/shoes/white(src)
new /obj/item/clothing/shoes/white(src)
/obj/structure/closet/wardrobe/nurse/New()
new /obj/item/clothing/under/rank/nursesuit (src)
new /obj/item/clothing/under/rank/nursesuit (src)
new /obj/item/clothing/under/rank/nursesuit (src)
new /obj/item/clothing/head/nursehat (src)
new /obj/item/clothing/head/nursehat (src)
new /obj/item/clothing/head/nursehat (src)
new /obj/item/clothing/shoes/white(src)
new /obj/item/clothing/shoes/white(src)
new /obj/item/clothing/shoes/white(src)
/obj/structure/closet/wardrobe/cmo/New()
new /obj/item/clothing/gloves/latex(src)
new /obj/item/clothing/suit/bio_suit/cmo(src)
new /obj/item/clothing/head/bio_hood/general(src)
new /obj/item/clothing/suit/storage/labcoat/cmo(src)
new /obj/item/clothing/shoes/brown(src)
new /obj/item/clothing/under/rank/chief_medical_officer(src)
/obj/structure/closet/wardrobe/rd/New()
new /obj/item/clothing/under/rank/research_director(src)
new /obj/item/clothing/under/rank/research_director(src)
new /obj/item/clothing/under/rank/research_director(src)
new /obj/item/clothing/suit/bio_suit/scientist(src)
new /obj/item/clothing/head/bio_hood/scientist(src)
new /obj/item/clothing/suit/storage/labcoat(src)
new /obj/item/clothing/suit/storage/labcoat(src)
new /obj/item/clothing/suit/storage/labcoat(src)
new /obj/item/clothing/shoes/white(src)
new /obj/item/clothing/shoes/white(src)
new /obj/item/clothing/shoes/white(src)
new /obj/item/clothing/gloves/latex(src)
new /obj/item/clothing/gloves/latex(src)
new /obj/item/clothing/gloves/latex(src)
/obj/structure/closet/wardrobe/robotics_yellow/New()
new /obj/item/wardrobe/roboticist(src)
new /obj/item/wardrobe/roboticist(src)
new /obj/item/wardrobe/roboticist(src)
new /obj/item/wardrobe/roboticist(src)
return
new /obj/item/clothing/under/rank/roboticist(src)
new /obj/item/clothing/under/rank/roboticist(src)
new /obj/item/clothing/under/rank/roboticist(src)
new /obj/item/clothing/suit/storage/labcoat(src)
new /obj/item/clothing/suit/storage/labcoat(src)
new /obj/item/clothing/suit/storage/labcoat(src)
new /obj/item/clothing/gloves/black(src)
new /obj/item/clothing/gloves/black(src)
new /obj/item/clothing/gloves/black(src)
new /obj/item/clothing/shoes/black(src)
new /obj/item/clothing/shoes/black(src)
new /obj/item/clothing/shoes/black(src)
/obj/structure/closet/wardrobe/bartender_black/New()
new /obj/item/wardrobe/bartender(src)
new /obj/item/wardrobe/bartender(src)
new /obj/item/wardrobe/bartender(src)
new /obj/item/wardrobe/bartender(src)
return
new /obj/item/clothing/under/rank/bartender(src)
new /obj/item/clothing/under/rank/bartender(src)
new /obj/item/clothing/under/rank/bartender(src)
new /obj/item/clothing/suit/armor/vest(src)
new /obj/item/clothing/suit/armor/vest(src)
new /obj/item/clothing/suit/armor/vest(src)
new /obj/item/clothing/shoes/black(src)
new /obj/item/clothing/shoes/black(src)
new /obj/item/clothing/shoes/black(src)
/obj/structure/closet/wardrobe/chef_white/New()
new /obj/item/weapon/storage/lglo_kit(src)
new /obj/item/wardrobe/chef(src)
new /obj/item/wardrobe/chef(src)
new /obj/item/wardrobe/chef(src)
return
new /obj/item/clothing/under/rank/chef(src)
new /obj/item/clothing/under/rank/chef(src)
new /obj/item/clothing/under/rank/chef(src)
new /obj/item/clothing/suit/storage/chef(src)
new /obj/item/clothing/suit/storage/chef(src)
new /obj/item/clothing/suit/storage/chef(src)
new /obj/item/clothing/head/chefhat(src)
new /obj/item/clothing/head/chefhat(src)
new /obj/item/clothing/head/chefhat(src)
new /obj/item/clothing/shoes/black(src)
new /obj/item/clothing/shoes/black(src)
new /obj/item/clothing/shoes/black(src)
/obj/structure/closet/wardrobe/hydro_green/New()
new /obj/item/wardrobe/hydro(src)
new /obj/item/wardrobe/hydro(src)
new /obj/item/wardrobe/hydro(src)
new /obj/item/wardrobe/hydro(src)
return
new /obj/item/clothing/under/rank/hydroponics(src)
new /obj/item/clothing/under/rank/hydroponics(src)
new /obj/item/clothing/under/rank/hydroponics(src)
new /obj/item/clothing/head/helmet/greenbandana(src)
new /obj/item/clothing/head/helmet/greenbandana(src)
new /obj/item/clothing/head/helmet/greenbandana(src)
new /obj/item/clothing/suit/storage/apron(src)
new /obj/item/clothing/suit/storage/apron(src)
new /obj/item/clothing/suit/storage/apron(src)
new /obj/item/clothing/gloves/botanic_leather(src)
new /obj/item/clothing/gloves/botanic_leather(src)
new /obj/item/clothing/gloves/botanic_leather(src)
new /obj/item/clothing/shoes/black(src)
new /obj/item/clothing/shoes/black(src)
new /obj/item/clothing/shoes/black(src)
/obj/structure/closet/wardrobe/librarian_red/New()
new /obj/item/wardrobe/librarian(src)
new /obj/item/wardrobe/librarian(src)
new /obj/item/wardrobe/librarian(src)
return
new /obj/item/clothing/under/suit_jacket/red(src)
new /obj/item/clothing/under/suit_jacket/red(src)
new /obj/item/clothing/under/suit_jacket/red(src)
new /obj/item/clothing/shoes/black(src)
new /obj/item/clothing/shoes/black(src)
new /obj/item/clothing/shoes/black(src)
/obj/structure/closet/wardrobe/cargo_yellow/New()
new /obj/item/wardrobe/cargo_tech(src)
new /obj/item/wardrobe/cargo_tech(src)
new /obj/item/wardrobe/cargo_tech(src)
new /obj/item/wardrobe/cargo_tech(src)
return
new /obj/item/clothing/under/rank/cargo(src)
new /obj/item/clothing/under/rank/cargo(src)
new /obj/item/clothing/under/rank/cargo(src)
new /obj/item/clothing/shoes/black(src)
new /obj/item/clothing/shoes/black(src)
new /obj/item/clothing/shoes/black(src)
/obj/structure/closet/wardrobe/qm_yellow/New()
new /obj/item/wardrobe/qm(src)
new /obj/item/wardrobe/qm(src)
new /obj/item/wardrobe/qm(src)
return
new /obj/item/clothing/under/rank/cargo(src)
new /obj/item/clothing/under/rank/cargo(src)
new /obj/item/clothing/under/rank/cargo(src)
new /obj/item/clothing/shoes/black(src)
new /obj/item/clothing/shoes/black(src)
new /obj/item/clothing/shoes/black(src)
/obj/structure/closet/wardrobe/virology_white/New()
new /obj/item/wardrobe/virologist(src)
new /obj/item/wardrobe/virologist(src)
new /obj/item/wardrobe/virologist(src)
new /obj/item/wardrobe/virologist(src)
return
new /obj/item/clothing/suit/storage/labcoat/virologist(src)
new /obj/item/clothing/suit/storage/labcoat/virologist(src)
new /obj/item/clothing/suit/storage/labcoat/virologist(src)
new /obj/item/clothing/under/rank/medical(src)
new /obj/item/clothing/under/rank/medical(src)
new /obj/item/clothing/under/rank/medical(src)
new /obj/item/clothing/shoes/white(src)
new /obj/item/clothing/shoes/white(src)
new /obj/item/clothing/shoes/white(src)

View File

@@ -335,7 +335,7 @@
jobs += "<a href='?src=\ref[src];newjobban2=Chemist_RD_CMO;jobban4=\ref[M]'>Chemist+RD+CMO</a> <br>"
jobs += "<a href='?src=\ref[src];newjobban2=Geneticist_RD_CMO;jobban4=\ref[M]'>Geneticist+RD+CMO</a> <br>"
jobs += "<a href='?src=\ref[src];newjobban2=MD_CMO;jobban4=\ref[M]'>MD+CMO</a> <br>"
jobs += "<a href='?src=\ref[src];newjobban2=Virologist_RD_CMO;jobban4=\ref[M]'>Virologist+RD+CMO</a> <br>"
/*jobs += "<a href='?src=\ref[src];newjobban2=Virologist_RD_CMO;jobban4=\ref[M]'>Virologist+RD+CMO</a> <br>"*/
jobs += "<a href='?src=\ref[src];newjobban2=Scientist_RD;jobban4=\ref[M]'>Scientist+RD</a> <br>"
jobs += "<a href='?src=\ref[src];newjobban2=AI_Cyborg;jobban4=\ref[M]'>AI+Cyborg</a> <br>"
jobs += "<a href='?src=\ref[src];newjobban2=Detective_HoS;jobban4=\ref[M]'>Detective+HoS</a> <br><br>"

View File

@@ -784,74 +784,77 @@
switch(alert("You sure you wish to edit this mob's appearance?",,"Yes","No"))
if("No")
return
var/new_facial = input("Please select facial hair color.", "Character Generation") as color
if(new_facial)
M.r_facial = hex2num(copytext(new_facial, 2, 4))
M.g_facial = hex2num(copytext(new_facial, 4, 6))
M.b_facial = hex2num(copytext(new_facial, 6, 8))
if(istype(M,/mob/living/carbon/human/tajaran))
usr << "\red Tajarans do not have an editable appearance... yet!"
else
var/new_facial = input("Please select facial hair color.", "Character Generation") as color
if(new_facial)
M.r_facial = hex2num(copytext(new_facial, 2, 4))
M.g_facial = hex2num(copytext(new_facial, 4, 6))
M.b_facial = hex2num(copytext(new_facial, 6, 8))
var/new_hair = input("Please select hair color.", "Character Generation") as color
if(new_facial)
M.r_hair = hex2num(copytext(new_hair, 2, 4))
M.g_hair = hex2num(copytext(new_hair, 4, 6))
M.b_hair = hex2num(copytext(new_hair, 6, 8))
var/new_hair = input("Please select hair color.", "Character Generation") as color
if(new_facial)
M.r_hair = hex2num(copytext(new_hair, 2, 4))
M.g_hair = hex2num(copytext(new_hair, 4, 6))
M.b_hair = hex2num(copytext(new_hair, 6, 8))
var/new_eyes = input("Please select eye color.", "Character Generation") as color
if(new_eyes)
M.r_eyes = hex2num(copytext(new_eyes, 2, 4))
M.g_eyes = hex2num(copytext(new_eyes, 4, 6))
M.b_eyes = hex2num(copytext(new_eyes, 6, 8))
var/new_eyes = input("Please select eye color.", "Character Generation") as color
if(new_eyes)
M.r_eyes = hex2num(copytext(new_eyes, 2, 4))
M.g_eyes = hex2num(copytext(new_eyes, 4, 6))
M.b_eyes = hex2num(copytext(new_eyes, 6, 8))
var/new_tone = input("Please select skin tone level: 1-220 (1=albino, 35=caucasian, 150=black, 220='very' black)", "Character Generation") as text
var/new_tone = input("Please select skin tone level: 1-220 (1=albino, 35=caucasian, 150=black, 220='very' black)", "Character Generation") as text
if (new_tone)
M.s_tone = max(min(round(text2num(new_tone)), 220), 1)
M.s_tone = -M.s_tone + 35
if (new_tone)
M.s_tone = max(min(round(text2num(new_tone)), 220), 1)
M.s_tone = -M.s_tone + 35
// hair
var/list/all_hairs = typesof(/datum/sprite_accessory/hair) - /datum/sprite_accessory/hair
var/list/hairs = list()
// hair
var/list/all_hairs = typesof(/datum/sprite_accessory/hair) - /datum/sprite_accessory/hair
var/list/hairs = list()
// loop through potential hairs
for(var/x in all_hairs)
var/datum/sprite_accessory/hair/H = new x // create new hair datum based on type x
hairs.Add(H.name) // add hair name to hairs
del(H) // delete the hair after it's all done
// loop through potential hairs
for(var/x in all_hairs)
var/datum/sprite_accessory/hair/H = new x // create new hair datum based on type x
hairs.Add(H.name) // add hair name to hairs
del(H) // delete the hair after it's all done
var/new_style = input("Please select hair style", "Character Generation") as null|anything in hairs
var/new_style = input("Please select hair style", "Character Generation") as null|anything in hairs
// if new style selected (not cancel)
if (new_style)
M.h_style = new_style
// if new style selected (not cancel)
if (new_style)
M.h_style = new_style
for(var/x in all_hairs) // loop through all_hairs again. Might be slightly CPU expensive, but not significantly.
var/datum/sprite_accessory/hair/H = new x // create new hair datum
if(H.name == new_style)
M.hair_style = H // assign the hair_style variable a new hair datum
break
else
del(H) // if hair H not used, delete. BYOND can garbage collect, but better safe than sorry
for(var/x in all_hairs) // loop through all_hairs again. Might be slightly CPU expensive, but not significantly.
var/datum/sprite_accessory/hair/H = new x // create new hair datum
if(H.name == new_style)
M.hair_style = H // assign the hair_style variable a new hair datum
break
else
del(H) // if hair H not used, delete. BYOND can garbage collect, but better safe than sorry
// facial hair
var/list/all_fhairs = typesof(/datum/sprite_accessory/facial_hair) - /datum/sprite_accessory/facial_hair
var/list/fhairs = list()
// facial hair
var/list/all_fhairs = typesof(/datum/sprite_accessory/facial_hair) - /datum/sprite_accessory/facial_hair
var/list/fhairs = list()
for(var/x in all_fhairs)
var/datum/sprite_accessory/facial_hair/H = new x
fhairs.Add(H.name)
del(H)
new_style = input("Please select facial style", "Character Generation") as null|anything in fhairs
if(new_style)
M.f_style = new_style
for(var/x in all_fhairs)
var/datum/sprite_accessory/facial_hair/H = new x
if(H.name == new_style)
M.facial_hair_style = H
break
else
del(H)
fhairs.Add(H.name)
del(H)
new_style = input("Please select facial style", "Character Generation") as null|anything in fhairs
if(new_style)
M.f_style = new_style
for(var/x in all_fhairs)
var/datum/sprite_accessory/facial_hair/H = new x
if(H.name == new_style)
M.facial_hair_style = H
break
else
del(H)
var/new_gender = alert(usr, "Please select gender.", "Character Generation", "Male", "Female")
if (new_gender)

View File

@@ -315,6 +315,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
if(!record_found)//We have to pick their role if they have no record.
if(G_found.mind&&G_found.mind.assigned_role)//But they may have an assigned role already.
new_character.mind.assigned_role = G_found.mind.assigned_role//Also makes sure our MODE people are equipped right later on.
new_character.mind.role_alt_title = G_found.mind.role_alt_title
else
var/assigned_role = input("Please specify which job the character will be respawned as.", "Assigned role") as null|anything in get_all_jobs()
if(!assigned_role) new_character.mind.assigned_role = "Assistant"//Defaults to assistant.

View File

@@ -156,17 +156,27 @@
playsound(src.loc, 'Crowbar.ogg', 50, 1)
user << "\blue You remove the remote signalling device."
src.state = 3
new /obj/item/device/assembly/signaler( src.loc, 1 )
var/obj/item/device/assembly/signaler/S = locate() in src
if(S)
S.loc = src.loc
else
new /obj/item/device/assembly/signaler( src.loc, 1 )
if(isprox(W) && motion == 0)
// if(W:amount >= 1)
playsound(src.loc, 'Deconstruct.ogg', 50, 1)
// W:use(1)
user << "\blue You attach the proximity sensor."
user.drop_item()
W.loc = src
motion = 1
if(istype(W, /obj/item/weapon/crowbar) && motion)
playsound(src.loc, 'Crowbar.ogg', 50, 1)
user << "\blue You remove the proximity sensor."
new /obj/item/device/assembly/prox_sensor( src.loc, 1 )
var/obj/item/device/assembly/prox_sensor/S = locate() in src
if(S)
S.loc = src.loc
else
new /obj/item/device/assembly/prox_sensor( src.loc, 1 )
motion = 0
if(istype(W, /obj/item/stack/sheet/glass))
if(W:amount >= 1)

View File

@@ -115,17 +115,14 @@
handle_health_updates()
// if the mob has enough health, she should slowly heal
if(health >= 0)
var/pr = 5
var/pr = 10
if(stat == 1) // sleeping means faster healing
pr += 3
pr += 5
if(prob(pr))
heal_organ_damage(1,1)
adjustToxLoss(-1)
else if(health < 0)
var/pr = 8
// sleeping means slower damage
if(stat == 1)
pr = 3
var/pr = 80
if(prob(pr))
adjustToxLoss(1)
@@ -1203,4 +1200,4 @@
else if(shock_stage == 40)
src << "<font color='red'><b>"+pick("The pain is excrutiating!", "Please, just end the pain!", "Your whole body is going numb!")
else if(shock_stage == 80)
src << "<font color='red'><b>"+pick("You see a light at the end of the tunnel!", "You feel like you could die any moment now.", "You're about to lose consciousness.")
src << "<font color='red'><b>"+pick("You see a light at the end of the tunnel!", "You feel like you could die any moment now.", "You're about to lose consciousness.")

View File

@@ -1,7 +1,4 @@
/mob/living/carbon/human/say(var/message)
if(src.mutantrace == "lizard")
if(copytext(message, 1, 2) != "*")
message = dd_replaceText(message, "s", stutter("ss"))
if(src.mutantrace == "metroid" && prob(5))
if(copytext(message, 1, 2) != "*")
if(copytext(message, 1, 2) == ";")

View File

@@ -253,9 +253,9 @@
src << alert("[rank] is not available. Please try another.")
return 0
job_master.AssignRole(src, rank, 1)
var/mob/living/carbon/human/character = create_character()
var/icon/char_icon = getFlatIcon(character,0)//We're creating out own cache so it's not needed.
job_master.AssignRole(character, rank, 1)
job_master.EquipRank(character, rank, 1)
EquipCustomItems(character)
character.loc = pick(latejoin)
@@ -327,7 +327,7 @@
L.fields["sex"] = H.gender
L.fields["age"] = H.age
L.fields["id"] = md5("[H.real_name][H.mind.assigned_role]")
L.fields["rank"] = H.mind.assigned_role
L.fields["rank"] = H.mind.role_alt_title ? H.mind.role_alt_title : H.mind.assigned_role
L.fields["b_type"] = H.dna.b_type
L.fields["b_dna"] = H.dna.unique_enzymes
L.fields["enzymes"] = H.dna.struc_enzymes

View File

@@ -104,6 +104,8 @@ datum/preferences
job_engsec_med = 0
job_engsec_low = 0
list/job_alt_titles = new() // the default name of a job like "Medical Doctor"
flavor_text = ""
// slot stuff
@@ -213,6 +215,19 @@ datum/preferences
proc/closesave(mob/user)
user << browse(null, "window=saves;size=300x640")
proc/GetAltTitle(datum/job/job)
return job_alt_titles.Find(job.title) > 0 \
? job_alt_titles[job.title] \
: job.title
proc/SetAltTitle(datum/job/job, new_title)
// remove existing entry
if(job_alt_titles.Find(job.title))
job_alt_titles -= job.title
// add one if it's not default
if(job.title != new_title)
job_alt_titles[job.title] = new_title
proc/SetChoices(mob/user, changedjob)
var/HTML = "<body>"
HTML += "<tt><center>"
@@ -246,14 +261,17 @@ datum/preferences
HTML += "<font color=orange>\[Low]</font>"
else
HTML += "<font color=red>\[NEVER]</font>"
HTML += "</a><br>"
if(job.alt_titles)
HTML += "</a> <a href=\"byond://?src=\ref[user];preferences=1;alt_title=1;job=\ref[job]\">\[[GetAltTitle(job)]\]</a><br>"
else
HTML += "</a><br>"
HTML += "<br>"
HTML += "<a href=\"byond://?src=\ref[user];preferences=1;occ=0;job=cancel\">\[Done\]</a>"
HTML += "</center></tt>"
user << browse(null, "window=preferences")
user << browse(HTML, "window=mob_occupation;size=320x600")
user << browse(HTML, "window=mob_occupation;size=350x600")
return
@@ -378,6 +396,14 @@ datum/preferences
return 1
if(link_tags["alt_title"] && link_tags["job"])
var/datum/job/job = locate(link_tags["job"])
var/choices = list(job.title) + job.alt_titles
var/choice = input("Pick a title for [job.title].", "Character Generation", GetAltTitle(job)) as anything in choices | null
if(choice)
SetAltTitle(job, choice)
SetChoices(user)
if(link_tags["real_name"])
var/new_name
@@ -638,6 +664,7 @@ datum/preferences
job_engsec_high = 0
job_engsec_med = 0
job_engsec_low = 0
job_alt_titles = new()
underwear = 1
be_special = 0
be_random_name = 0

View File

@@ -115,6 +115,8 @@ datum/preferences/proc/savefile_save(mob/user, slot)
F["job_engsec_med"] << src.job_engsec_med
F["job_engsec_low"] << src.job_engsec_low
F["job_alt_titles"] << job_alt_titles
//Body data
F["hair_red"] << src.r_hair
F["hair_green"] << src.g_hair
@@ -212,6 +214,10 @@ datum/preferences/proc/savefile_load(mob/user, slot)
F["job_engsec_med"] >> src.job_engsec_med
F["job_engsec_low"] >> src.job_engsec_low
F["job_alt_titles"] >> job_alt_titles
if(!job_alt_titles)
job_alt_titles = new()
//NOTE: Conversion things go inside this if statement
//When updating the save file remember to add 1 to BOTH the savefile constants
//Also take the old conversion things that no longer apply out of this if

File diff suppressed because it is too large Load Diff