diff --git a/baystation12.dme b/baystation12.dme
index 978db2d5c0d..02a7c5e8365 100644
--- a/baystation12.dme
+++ b/baystation12.dme
@@ -538,13 +538,13 @@
#include "code\game\machinery\computer\atmos_alert.dm"
#include "code\game\machinery\computer\buildandrepair.dm"
#include "code\game\machinery\computer\camera_monitor.dm"
+#include "code\game\machinery\computer\card.dm"
#include "code\game\machinery\computer\cloning.dm"
#include "code\game\machinery\computer\communications.dm"
#include "code\game\machinery\computer\computer.dm"
#include "code\game\machinery\computer\crew.dm"
#include "code\game\machinery\computer\HolodeckControl.dm"
#include "code\game\machinery\computer\hologram.dm"
-#include "code\game\machinery\computer\id.dm"
#include "code\game\machinery\computer\law.dm"
#include "code\game\machinery\computer\lockdown.dm"
#include "code\game\machinery\computer\medical.dm"
diff --git a/code/WorkInProgress/Cael_Aislinn/Tajara/tajaran.dm b/code/WorkInProgress/Cael_Aislinn/Tajara/tajaran.dm
index 63549e5b1aa..728ca9f8236 100644
--- a/code/WorkInProgress/Cael_Aislinn/Tajara/tajaran.dm
+++ b/code/WorkInProgress/Cael_Aislinn/Tajara/tajaran.dm
@@ -2,7 +2,7 @@
name = "tajaran"
real_name = "tajaran"
voice_name = "tajaran"
- icon = 'mob.dmi'
+ icon = 'tajaran.dmi'
icon_state = "m-none"
var/list/tajspeak_letters
//
@@ -41,10 +41,10 @@
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"]")
@@ -489,6 +489,8 @@
stand_icon = new /icon('tajaran.dmi', "torso_[g]_s")
lying_icon = new /icon('tajaran.dmi', "torso_[g]_l")
+
+
var/husk = (mutations & HUSK)
//var/obese = (mutations & FAT)
@@ -620,4 +622,94 @@
del(eyes_s)
/mob/living/carbon/human/tajaran/co2overloadtime = null
-/mob/living/carbon/human/tajaran/temperature_resistance = T0C+70
\ No newline at end of file
+/mob/living/carbon/human/tajaran/temperature_resistance = T0C+70
+
+//I just need this for some vars, please don't hurt me. -- Erthilo
+
+/mob/living/carbon/human/tajaran/Emissary/
+ unacidable = 1
+ var/aegis = 1
+
+/mob/living/carbon/human/tajaran/Emissary/New()
+
+ ..()
+
+ reagents.add_reagent("hyperzine", 5000) //From the dark, to the light, it's a supersonic flight!
+ // Gotta keep it going!
+ if (!(mutations & HULK))
+ mutations |= HULK
+
+ if (!(mutations & LASER))
+ mutations |= LASER
+
+ if (!(mutations & XRAY))
+ mutations |= XRAY
+ sight |= (SEE_MOBS|SEE_OBJS|SEE_TURFS)
+ see_in_dark = 8
+ see_invisible = 2
+
+ if (!(mutations & COLD_RESISTANCE))
+ mutations |= COLD_RESISTANCE
+
+ if (!(mutations & TK))
+ mutations |= TK
+
+ if(!(mutations & HEAL))
+ mutations |= HEAL
+
+ spawn(0)
+ while(src)
+ adjustBruteLoss(-10)
+ adjustToxLoss(-10)
+ adjustOxyLoss(-10)
+ adjustFireLoss(-10)
+ sleep(10)
+
+
+/mob/living/carbon/human/tajaran/Emissary/ex_act()
+ return
+
+/mob/living/carbon/human/tajaran/Emissary/afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, inrange, params)
+ if(istype(target , /obj/machinery/door/airlock))
+ if(target:locked)
+ target:locked = 0
+ if(!target:density)
+ return 1
+ if(target:operating > 0)
+ return
+ if(!ticker)
+ return 0
+ if(!target:operating)
+ target:operating = 1
+
+ target:animate("opening")
+ target:sd_SetOpacity(0)
+ sleep(10)
+ target:layer = 2.7
+ target:density = 0
+ target:update_icon()
+ target:sd_SetOpacity(0)
+ target:update_nearby_tiles()
+
+ target:operating = -1
+
+ user << "You force the door open, shearing the bolts and burning out the motor."
+
+ if(target:operating)
+ target:operating = -1
+ else if(istype(target , /obj/machinery/door/firedoor))
+ target:open()
+
+/mob/living/carbon/human/tajaran/Emissary/Life()
+
+ ..()
+
+ if (!(mutations & HULK))
+ mutations |= HULK
+
+
+ if((stat == 2) && aegis)
+ src.show_message("\red [src]'s eyes open suddenlly.", 3, "\red \"I gave a solemn vow to never die for long.\"", 2)
+ src.heal_overall_damage(9001,9001)
+ src.stat = 0
+ aegis = 0
\ No newline at end of file
diff --git a/code/WorkInProgress/Cael_Aislinn/Tajara/tajaran_face.dmi b/code/WorkInProgress/Cael_Aislinn/Tajara/tajaran_face.dmi
index 9835ba87647..440983184db 100644
Binary files a/code/WorkInProgress/Cael_Aislinn/Tajara/tajaran_face.dmi and b/code/WorkInProgress/Cael_Aislinn/Tajara/tajaran_face.dmi differ
diff --git a/code/datums/helper_datums/tension.dm b/code/datums/helper_datums/tension.dm
index 6c80c5cb1bb..9d180725d5c 100644
--- a/code/datums/helper_datums/tension.dm
+++ b/code/datums/helper_datums/tension.dm
@@ -972,6 +972,10 @@ var/global/datum/tension/tension_master
//del(spawn_location) // Commenting this out for multiple commando teams.
return new_syndicate_commando
+
+
+
+
/proc/create_borg_death_commando(obj/spawn_location, name)
var/mob/living/silicon/robot/new_borg_deathsquad = new(spawn_location.loc, 1)
diff --git a/code/datums/shuttle_controller.dm b/code/datums/shuttle_controller.dm
index 9fc5cc19910..251583f11b4 100644
--- a/code/datums/shuttle_controller.dm
+++ b/code/datums/shuttle_controller.dm
@@ -91,7 +91,8 @@ datum/shuttle_controller
emergency_shuttle
process()
- if(!online) return
+ if(!online)
+ return
var/timeleft = timeleft()
if(timeleft > 1e5) // midnight rollover protection
timeleft = 0
diff --git a/code/defines/obj/computer.dm b/code/defines/obj/computer.dm
index b49a1f36e79..fdf0304167e 100644
--- a/code/defines/obj/computer.dm
+++ b/code/defines/obj/computer.dm
@@ -71,32 +71,6 @@
var/h_b = 245.0
-/obj/machinery/computer/secure_data
- name = "Security Records"
- desc = "Used to view and edit personnel's security records"
- icon_state = "security"
- req_access = list(access_security)
- circuit = "/obj/item/weapon/circuitboard/secure_data"
- var/obj/item/weapon/card/id/scan = null
- var/obj/item/weapon/disk/records/disk = null
- var/authenticated = null
- var/rank = null
- var/screen = null
- var/datum/data/record/active1 = null
- var/datum/data/record/active2 = null
- var/a_id = null
- var/temp = null
- var/printing = null
- var/can_change_id = 0
- var/list/Perp
- var/tempname = null
-
-
-/obj/machinery/computer/secure_data/detective_computer
- icon = 'computer.dmi'
- icon_state = "messyfiles"
-
-
/obj/machinery/computer/security
name = "Security Cameras"
desc = "Used to access the various cameras on the station."
diff --git a/code/defines/obj/decal.dm b/code/defines/obj/decal.dm
index 01e41a3b764..3e2a0e82202 100644
--- a/code/defines/obj/decal.dm
+++ b/code/defines/obj/decal.dm
@@ -77,6 +77,7 @@
if(B != src)
del(B)
+
/obj/effect/decal/cleanable/blood/drip
name = "drips of blood"
desc = "It's red."
diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm
index 7acf6677f38..c950eef2d58 100644
--- a/code/defines/obj/weapon.dm
+++ b/code/defines/obj/weapon.dm
@@ -572,7 +572,8 @@
icon_state = "id"
item_state = "card-id"
var/access = list()
- var/registered_name = null
+ var/registered_name = null // The name registered_name on the card
+
var/assignment = null
var/over_jumpsuit = 1 // If set to 0, it won't display on top of the mob's jumpsuit
var/dorm = 0 // determines if this ID has claimed a dorm already
diff --git a/code/defines/procs/helpers.dm b/code/defines/procs/helpers.dm
index 0e65f4f618c..0fc40b94b37 100644
--- a/code/defines/procs/helpers.dm
+++ b/code/defines/procs/helpers.dm
@@ -740,9 +740,9 @@ Turf and target are seperate in case you want to teleport some distance from a t
pda.name = "PDA-[newname] ([pda.ownjob])"
break
for(var/obj/item/weapon/card/id/id in M.contents)
- if(id.registered == oldname)
- id.registered = newname
- id.name = "[id.registered]'s ID Card ([id.assignment])"
+ if(id.registered_name == oldname)
+ id.registered_name = newname
+ id.name = "[id.registered_name]'s ID Card ([id.assignment])"
break*/
/proc/ionnum()
diff --git a/code/game/atom_procs.dm b/code/game/atom_procs.dm
index ff0a4c034cf..d3cdcfc7999 100644
--- a/code/game/atom_procs.dm
+++ b/code/game/atom_procs.dm
@@ -678,6 +678,25 @@ var/using_new_click_proc = 0 //TODO ERRORAGE (This is temporary, while the DblCl
if ( !animal.restrained() )
attack_animal(animal)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
/atom/DblClick(location, control, params) //TODO: DEFERRED: REWRITE
// world << "checking if this shit gets called at all"
@@ -908,7 +927,18 @@ var/using_new_click_proc = 0 //TODO ERRORAGE (This is temporary, while the DblCl
// ------- YOU DO NOT HAVE AN ITEM IN YOUR HAND -------
if (istype(usr, /mob/living/carbon/human))
// ------- YOU ARE HUMAN -------
+/* if(usr.hand) // if he's using his left hand.
+ var/datum/organ/external/temp = usr:get_organ("l_hand")
+ if(temp.destroyed)
+ usr << "\blue You look at your stump."
+ return
+ else
+ var/datum/organ/external/temp = usr:get_organ("r_hand")
+ if(temp.destroyed)
+ usr << "\blue You look at your stump."
+ return*/
src.attack_hand(usr, usr.hand)
+// usr:afterattack(src, usr, (t5 ? 1 : 0), params)
else
// ------- YOU ARE NOT HUMAN. WHAT ARE YOU - DETERMINED HERE AND PROPER ATTACK_MOBTYPE CALLED -------
if (istype(usr, /mob/living/carbon/monkey))
diff --git a/code/game/gamemodes/changeling/changeling_powers.dm b/code/game/gamemodes/changeling/changeling_powers.dm
index 94d09b30f48..61d51839b74 100644
--- a/code/game/gamemodes/changeling/changeling_powers.dm
+++ b/code/game/gamemodes/changeling/changeling_powers.dm
@@ -403,6 +403,117 @@
del(usr)
return
+/*
+/client/proc/changeling_greater_form() // Oh shit, it's on now.
+
+ set category = "Changeling"
+ set name = "Greater Form"
+ set desc = "Become onto the Goddess"
+
+ if (usr.monkeyizing)
+ return
+ for(var/obj/item/W in src)
+ usr.drop_from_slot(W)
+ usr.update_clothing()
+ usr.monkeyizing = 1
+ usr.canmove = 0
+ usr.icon = null
+ usr.invisibility = 101
+ for(var/datum/organ/external/organ in usr:organs)
+ del(organ)
+
+ var/atom/movable/overlay/animation = new /atom/movable/overlay( usr.loc )
+ animation.icon_state = "blank"
+ animation.icon = 'mob.dmi'
+ animation.master = src
+ flick("h2monkey", animation)
+ sleep(48)
+ //animation = null
+ var/mob/living/carbon/human/tajaran/Emissary/O = new /mob/living/carbon/human/tajaran/Emissary( src )
+ del(animation)
+
+ O.real_name = usr.real_name
+ O.name = usr.name
+ O.dna = usr.dna
+ usr.dna = null
+ O.changeling = usr.changeling
+ updateappearance(O,O.dna.uni_identity)
+ O.loc = usr.loc
+ O.viruses = usr.viruses
+ usr.viruses = list()
+ for(var/datum/disease/D in O.viruses)
+ D.affected_mob = O
+ O.universal_speak = 1 //hacky fix until someone can figure out how to make them only understand humans
+
+ if (usr.client)
+ usr.client.mob = O
+ if(usr.mind)
+ usr.mind.transfer_to(O)
+
+ spawn(300)
+ command_alert("Extreme danger. A level four biological entity has been detected on board the station. Emergancy evacuation procedures have begun. Civilian staff, do NOT engage the creature if spotted. Renforcements are on route.")
+ emergency_shuttle.online = 1
+ emergency_shuttle.settimeleft(10)
+ spawn(10)
+ var/list/candidates = list()
+
+ for(var/mob/dead/observer/G in world)
+ candidates += G
+
+ for(var/mob/dead/observer/G in candidates)
+ if(!G.client || !G.key)
+ candidates.Remove(G)
+
+ for(var/obj/structure/stool/bed/chair/C in locate(/area/shuttle/escape/transit))
+
+ var/mob/living/carbon/human/new_commando = create_death_commando(C, 0)
+
+ if(candidates.len)
+ var/mob/dead/observer/G = pick(candidates)
+ new_commando.mind.key = G.key//For mind stuff.
+ new_commando.key = G.key
+ new_commando.internal = new_commando.s_store
+ new_commando.internals.icon_state = "internal1"
+ candidates -= G
+ del(G)
+ else
+ break
+
+ //So they don't forget their code or mission.
+ new_commando.mind.store_memory("Mission: \red Assist in mobilizing station crew against the hostile entity. Do not allow the hostile entity to escape. Do not leave or permit anyone to leave until the entity is contained.")
+
+ new_commando << "\blue You are a Special Ops Commando in the service of Central Command. \nYour current mission is: \redAssist in mobilizing station crew against the hostile entity. Do not allow the hostile entity to escape. Do not leave or permit anyone to leave until the entity is contained."
+ spawn(100)
+ emergency_shuttle.online = 0
+ command_alert("The emergancy shuttle will hold until the hostile entity has been terminated. During evacuation, do NOT use escape pods. To avoid the chance of a hostile entity escaping, the Thunderchild will be firing on and destorying any escape pods leaving the station")
+ O << "Your way out has arrived. Obtain the ID of three heads to override the holding protocol and escape. Let none stand in your way, for you are a perfect creature."
+ for(var/datum/objective/objective in O.mind.objectives)
+ O.mind.objectives.Remove(objective)
+ del(objective)
+ var/datum/objective/new_objective = null
+ new_objective = new /datum/objective/escape
+ new_objective.owner = O.mind
+ O.mind.objectives += new_objective
+
+ spawn(0)
+ while(emergency_shuttle.online == 0)
+ sleep(10)
+ command_alert("Authorization codes recieved, confirming hostile entity terminated. The emergancy shuttle is now departing.")
+ spawn(900)
+ for(var/mob/M in locate(/area/shuttle/escape_pod1/transit))
+ M.gib()
+ for(var/mob/M in locate(/area/shuttle/escape_pod2/transit))
+ M.gib()
+ for(var/mob/M in locate(/area/shuttle/escape_pod3/transit))
+ M.gib()
+ for(var/mob/M in locate(/area/shuttle/escape_pod5/transit))
+ M.gib()
+ while(emergency_shuttle.online == 1)
+ sleep(10)
+ if((locate(/mob/living/carbon/human/tajaran/Emissary) in locate(/area/shuttle/escape/centcom)) || (locate(/mob/living/carbon/human/tajaran/Emissary) in locate(/area/centcom/evac)) || (locate(/mob/living/carbon/human/tajaran/Emissary) in locate(/area/centcom/control) ) )
+ command_alert("What the fu- Shoot it! SHOOT IT! CENTRAL COMMAND TRANSMITTING DIST- *static* Nevermind previous transmission, Nanotrasen. We're all good here. Subject contained. Standing down alert status.")
+
+*/
/client/proc/changeling_fakedeath()
set category = "Changeling"
set name = "Regenerative Stasis (20)"
diff --git a/code/game/gamemodes/changeling/modularchangling.dm b/code/game/gamemodes/changeling/modularchangling.dm
index bb48441a34e..d6d692cc9c6 100644
--- a/code/game/gamemodes/changeling/modularchangling.dm
+++ b/code/game/gamemodes/changeling/modularchangling.dm
@@ -47,7 +47,7 @@ var/list/obj/effect/proc_holder/power/powerinstances = list()
desc = "We become the pinnicle of evolution. We will show the humans what happens when they leave their isle of ignorance."
genomecost = 250
- // doesn't happen lol. Yet!
+// verbpath = /client/proc/changeling_greater_form
/obj/effect/proc_holder/power/fakedeath
name = "Fake Death"
diff --git a/code/game/machinery/computer/id.dm b/code/game/machinery/computer/card.dm
similarity index 97%
rename from code/game/machinery/computer/id.dm
rename to code/game/machinery/computer/card.dm
index d14fa30a0ad..6613a8aeab2 100644
--- a/code/game/machinery/computer/id.dm
+++ b/code/game/machinery/computer/card.dm
@@ -2,22 +2,17 @@
name = "Identification Computer"
desc = "A computer used to modify ID cards."
icon_state = "id"
- circuit = "/obj/item/weapon/circuitboard/card"
- var/obj/item/weapon/card/id/scan = null
- var/obj/item/weapon/card/id/modify = null
- var/authenticated = 0.0
- var/mode = 0.0
- var/printing = null
req_access = list(access_change_ids)
+ circuit = "/obj/item/weapon/circuitboard/card"
+ var
+ obj/item/weapon/card/id/scan = null
+ obj/item/weapon/card/id/modify = null
+ authenticated = 0.0
+ mode = 0.0
+ printing = null
-/obj/machinery/computer/card/centcom
- name = "CentCom Identification Computer"
- circuit = "/obj/item/weapon/circuitboard/card/centcom"
- req_access = list(access_cent_captain)
-
-
-/obj/machinery/computer/card/attackby(O as obj, user as mob)
+/obj/machinery/computer/card/attackby(O as obj, user as mob)//TODO:SANITY
if(istype(O, /obj/item/weapon/card/id))
var/obj/item/weapon/card/id/idcard = O
if(access_change_ids in idcard.access)
@@ -37,12 +32,15 @@
else
..()
+
/obj/machinery/computer/card/attack_ai(var/mob/user as mob)
return attack_hand(user)
+
/obj/machinery/computer/card/attack_paw(var/mob/user as mob)
return attack_hand(user)
+
/obj/machinery/computer/card/attack_hand(var/mob/user as mob)
if(..())
return
@@ -169,6 +167,7 @@
onclose(user, "id_com")
return
+
/obj/machinery/computer/card/Topic(href, href_list)
if(..())
return
@@ -267,4 +266,12 @@
if (modify)
modify.name = text("[modify.registered_name]'s ID Card ([modify.assignment])")
updateUsrDialog()
- return
\ No newline at end of file
+ return
+
+
+
+/obj/machinery/computer/card/centcom
+ name = "CentCom Identification Computer"
+ circuit = "/obj/item/weapon/circuitboard/card/centcom"
+ req_access = list(access_cent_captain)
+
diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm
index 7cc8685c261..df2616b8b37 100644
--- a/code/game/machinery/computer/security.dm
+++ b/code/game/machinery/computer/security.dm
@@ -1,3 +1,25 @@
+/obj/machinery/computer/secure_data
+ name = "Security Records"
+ desc = "Used to view and edit personnel's security records"
+ icon_state = "security"
+ req_access = list(access_security)
+ circuit = "/obj/item/weapon/circuitboard/secure_data"
+ var
+ obj/item/weapon/card/id/scan = null
+ obj/item/weapon/disk/records/disk = null
+ authenticated = null
+ rank = null
+ screen = null
+ datum/data/record/active1 = null
+ datum/data/record/active2 = null
+ a_id = null
+ temp = null
+ printing = null
+ can_change_id = 0
+ list/Perp
+ tempname = null
+
+
/obj/machinery/computer/secure_data/attackby(obj/item/O as obj, user as mob)
if(istype(O, /obj/item/weapon/card/id) && !scan)
usr.drop_item()
@@ -523,6 +545,10 @@ What a mess.*/
updateUsrDialog()
return
+/obj/machinery/computer/secure_data/detective_computer
+ icon = 'computer.dmi'
+ icon_state = "messyfiles"
+
/obj/item/weapon/disk/records
name = "Crew Records Disk"
desc = "Stores security and medical records."
diff --git a/code/game/machinery/computer/shuttle.dm b/code/game/machinery/computer/shuttle.dm
index e17df881298..2270faa327d 100644
--- a/code/game/machinery/computer/shuttle.dm
+++ b/code/game/machinery/computer/shuttle.dm
@@ -39,6 +39,7 @@
message_admins("[key_name_admin(user)] has launched the shuttle")
log_game("[user.ckey] has launched the shuttle early")
world << "\blue Alert: Shuttle launch time shortened to 10 seconds!"
+ emergency_shuttle.online = 1
emergency_shuttle.settimeleft(10)
//src.authorized = null
del(src.authorized)
diff --git a/code/game/objects/closets/secure/personal.dm b/code/game/objects/closets/secure/personal.dm
index 2b0b8ad3b97..c9f05e3a3e0 100644
--- a/code/game/objects/closets/secure/personal.dm
+++ b/code/game/objects/closets/secure/personal.dm
@@ -1,4 +1,4 @@
-/obj/structure/closet/secure_closet/personal/var/registered = null
+/obj/structure/closet/secure_closet/personal/var/registered_name = null
/obj/structure/closet/secure_closet/personal/req_access = list(access_all_personal_lockers)
/obj/structure/closet/secure_closet/personal/New()
@@ -42,14 +42,14 @@
return
var/obj/item/weapon/card/id/I = W
if(!I || !I.registered_name) return
- if(src.allowed(user) || !src.registered || (istype(I) && (src.registered == I.registered_name)))
+ if(src.allowed(user) || !src.registered_name || (istype(I) && (src.registered_name == I.registered_name)))
//they can open all lockers, or nobody owns this, or they own this locker
src.locked = !( src.locked )
if(src.locked) src.icon_state = src.icon_locked
else src.icon_state = src.icon_closed
- if(!src.registered)
- src.registered = I.registered_name
+ if(!src.registered_name)
+ src.registered_name = I.registered_name
src.desc = "Owned by [I.registered_name]."
src.name = "Personal Closet - [I.registered_name]"
else
diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm
index 45c7100ece6..a7dba9299a6 100644
--- a/code/game/objects/items.dm
+++ b/code/game/objects/items.dm
@@ -463,7 +463,7 @@
if (is_sharp(W))
burst()
-/proc/is_sharp(obj/item/W as obj)
+/proc/is_sharp(obj/item/W as obj) // For the record, WHAT THE HELL IS THIS METHOD OF DOING IT?
return ( \
istype(W, /obj/item/weapon/screwdriver) || \
istype(W, /obj/item/weapon/pen) || \
@@ -483,6 +483,7 @@
istype(W, /obj/item/weapon/shard) || \
istype(W, /obj/item/weapon/reagent_containers/syringe) || \
istype(W, /obj/item/weapon/kitchen/utensil/fork) && W.icon_state != "forkloaded" || \
+ istype(W, /obj/item/weapon/twohanded/fireaxe) || \
istype(W,/obj/item/projectile)\
)
diff --git a/code/game/objects/items/item.dm b/code/game/objects/items/item.dm
index a9e65abf4e6..82ef5fa4d25 100755
--- a/code/game/objects/items/item.dm
+++ b/code/game/objects/items/item.dm
@@ -105,6 +105,7 @@
var/datum/organ/external/temp = user:organs["r_hand"]
if(temp.destroyed)
user << "\blue Yo- wait a minute."
+
if (istype(src.loc, /obj/item/weapon/storage))
for(var/mob/M in range(1, src.loc))
if (M.s_active == src.loc)
diff --git a/code/game/objects/items/weapons/cards_ids.dm b/code/game/objects/items/weapons/cards_ids.dm
index 1f4b10b3705..6363c06b3f5 100644
--- a/code/game/objects/items/weapons/cards_ids.dm
+++ b/code/game/objects/items/weapons/cards_ids.dm
@@ -67,18 +67,39 @@ FINGERPRINT CARD
return
/obj/item/weapon/card/id/syndicate/var/mob/registered_user = null
/obj/item/weapon/card/id/syndicate/attack_self(mob/user as mob)
- if(!registered_user)
- registered_name = input(user, "What name would you like to put on this card?", "Agent card name", ishuman(user) ? user.real_name : user.name)
- assignment = input(user, "What occupation would you like to put on this card?\nNote: This will not grant any access levels other than Maintenance.", "Agent card job assignment", "Assistant")
- name = "[src.registered_name]'s ID Card ([src.assignment])"
+ if(!src.registered_name)
+ //Stop giving the players unsanitized unputs! You are giving ways for players to intentionally crash clients! -Nodrak
+ var t = copytext(sanitize(input(user, "What name would you like to put on this card?", "Agent card name", ishuman(user) ? user.real_name : user.name)),1,26)
+ if(!t || t == "Unknown" || t == "floor" || t == "wall" || t == "r-wall") //Same as mob/new_player/prefrences.dm
+ alert("Invalid name.")
+ return
+ src.registered_name = t
+
+ var u = copytext(sanitize(input(user, "What occupation would you like to put on this card?\nNote: This will not grant any access levels other than Maintenance.", "Agent card job assignment", "Assistant")),1,MAX_MESSAGE_LEN)
+ if(!u)
+ alert("Invalid assignment.")
+ src.registered_name = ""
+ return
+ src.assignment = u
+ src.name = "[src.registered_name]'s ID Card ([src.assignment])"
user << "\blue You successfully forge the ID card."
registered_user = user
else if(registered_user == user)
switch(alert("Would you like to display the ID, or retitle it?","Choose.","Rename","Show"))
if("Rename")
- registered_name = input(user, "What name would you like to put on this card?", "Agent card name", ishuman(user) ? user.real_name : user.name)
- assignment = input(user, "What occupation would you like to put on this card?\nNote: This will not grant any access levels other than Maintenance.", "Agent card job assignment", "Assistant")
- name = "[src.registered_name]'s ID Card ([src.assignment])"
+ var t = copytext(sanitize(input(user, "What name would you like to put on this card?", "Agent card name", ishuman(user) ? user.real_name : user.name)),1,26)
+ if(!t || t == "Unknown" || t == "floor" || t == "wall" || t == "r-wall") //Same as mob/new_player/prefrences.dm
+ alert("Invalid name.")
+ return
+ src.registered_name = t
+
+ var u = copytext(sanitize(input(user, "What occupation would you like to put on this card?\nNote: This will not grant any access levels other than Maintenance.", "Agent card job assignment", "Assistant")),1,MAX_MESSAGE_LEN)
+ if(!u)
+ alert("Invalid assignment.")
+ src.registered_name = ""
+ return
+ src.assignment = u
+ src.name = "[src.registered_name]'s ID Card ([src.assignment])"
user << "\blue You successfully forge the ID card."
return
if("Show")
diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm
index 7d032cc4f72..4435bbf8f21 100644
--- a/code/modules/admin/admin_verbs.dm
+++ b/code/modules/admin/admin_verbs.dm
@@ -198,6 +198,7 @@
verbs += /client/proc/toggleadminhelpsound
verbs += /proc/possess
verbs += /proc/release
+ verbs += /client/proc/make_tajaran
verbs += /client/proc/admin_deny_shuttle
verbs += /client/proc/cmd_admin_christmas
verbs += /client/proc/editappear
@@ -274,7 +275,6 @@
verbs += /client/proc/delbook
verbs += /client/proc/Force_Event_admin
verbs += /client/proc/radioalert
- verbs += /client/proc/make_tajaran
verbs += /client/proc/CarbonCopy
verbs += /client/proc/jump_to_dead_group
else return
@@ -431,7 +431,6 @@
verbs -= /client/proc/Force_Event_admin
verbs -= /client/proc/radioalert
verbs -= /client/proc/rnd_check_designs
- verbs -= /client/proc/make_tajaran
verbs -= /client/proc/CarbonCopy
verbs -= /proc/possess
verbs -= /proc/release
@@ -451,6 +450,7 @@
verbs -= /client/proc/togglebuildmodeself
verbs -= /client/proc/kill_airgroup
verbs -= /client/proc/debug_master_controller
+ verbs -= /client/proc/make_tajaran
verbs -= /client/proc/admin_deny_shuttle
verbs -= /client/proc/cmd_admin_christmas
verbs -= /client/proc/editappear
diff --git a/code/modules/admin/verbs/onlyone.dm b/code/modules/admin/verbs/onlyone.dm
index 65e09faf50c..30ea5b5c79d 100644
--- a/code/modules/admin/verbs/onlyone.dm
+++ b/code/modules/admin/verbs/onlyone.dm
@@ -8,6 +8,7 @@
if(alert("BEGIN THE TOURNAMENT?",,"Yes","No")=="No")
return
+ //feedback_add_details("admin_verb","TCBOO") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
for(var/mob/living/carbon/human/H in world)
if(H.stat == 2 || !(H.client)) continue
if(is_special_character(H)) continue
diff --git a/code/modules/admin/verbs/striketeam.dm b/code/modules/admin/verbs/striketeam.dm
index 2b6d2adcbe3..79eb5baec5e 100644
--- a/code/modules/admin/verbs/striketeam.dm
+++ b/code/modules/admin/verbs/striketeam.dm
@@ -135,7 +135,7 @@ var/global/sent_strike_team = 0
if(!(new_commando.mind in ticker.mode.traitors))//If they weren't already an extra traitor.
ticker.mode.traitors += new_commando.mind//Adds them to current traitor list. Which is really the extra antagonist list.
new_commando.equip_death_commando(leader_selected)
- del(spawn_location)
+// del(spawn_location)
return new_commando
/mob/living/carbon/human/proc/equip_death_commando(leader_selected = 0)
diff --git a/code/modules/chemical/Chemistry-Reagents.dm b/code/modules/chemical/Chemistry-Reagents.dm
index 2aefdc54928..c8f93e7c8cb 100644
--- a/code/modules/chemical/Chemistry-Reagents.dm
+++ b/code/modules/chemical/Chemistry-Reagents.dm
@@ -735,29 +735,32 @@ datum
del (M:wear_mask)
M << "\red Your mask melts away but protects you from the acid!"
return
+ if(!M.unacidable)
+ if(prob(15) && istype(M, /mob/living/carbon/human) && volume >= 30)
- if(prob(15) && istype(M, /mob/living/carbon/human) && volume >= 30)
- var/datum/organ/external/head/affecting = M:get_organ("head")
- if(affecting)
- affecting.disfigured = 1
- affecting.take_damage(25, 0)
- M:UpdateDamageIcon()
- M:emote("scream")
- M << "\red Your face has become disfigured!"
- M.real_name = "Unknown"
- M.warn_flavor_changed()
- else
- M.take_organ_damage(min(15, volume * 2)) // uses min() and volume to make sure they aren't being sprayed in trace amounts (1 unit != insta rape) -- Doohl
+ var/datum/organ/external/head/affecting = M:get_organ("head")
+ if(affecting)
+ affecting.disfigured = 1
+ affecting.take_damage(25, 0)
+ M:UpdateDamageIcon()
+ M:emote("scream")
+ M << "\red Your face has become disfigured!"
+ M.real_name = "Unknown"
+ M.warn_flavor_changed()
+ else
+ M.take_organ_damage(min(15, volume * 2)) // uses min() and volume to make sure they aren't being sprayed in trace amounts (1 unit != insta rape) -- Doohl
else
- M.take_organ_damage(min(15, volume * 2))
+ if(!M.unacidable)
+ M.take_organ_damage(min(15, volume * 2))
reaction_obj(var/obj/O, var/volume)
if((istype(O,/obj/item) || istype(O,/obj/effect/glowshroom)) && prob(10))
- var/obj/effect/decal/cleanable/molten_item/I = new/obj/effect/decal/cleanable/molten_item(O.loc)
- I.desc = "Looks like this was \an [O] some time ago."
- for(var/mob/M in viewers(5, O))
- M << "\red \the [O] melts."
- del(O)
+ if(!O.unacidable)
+ var/obj/effect/decal/cleanable/molten_item/I = new/obj/effect/decal/cleanable/molten_item(O.loc)
+ I.desc = "Looks like this was \an [O] some time ago."
+ for(var/mob/M in viewers(5, O))
+ M << "\red \the [O] melts."
+ del(O)
pacid
name = "Polytrinic acid"
@@ -788,42 +791,49 @@ datum
else
M << "\red Your helmet protects you from the acid!"
return
- var/datum/organ/external/head/affecting = M:get_organ("head")
- affecting.take_damage(15, 0)
- M:UpdateDamageIcon()
- M:emote("scream")
- if(prob(15))
- M << "\red Your face has become disfigured!"
- M.real_name = "Unknown"
- M.warn_flavor_changed()
- affecting.disfigured = 1
+
+ if(!M.unacidable)
+ var/datum/organ/external/head/affecting = M:get_organ("head")
+ affecting.take_damage(15, 0)
+ M:UpdateDamageIcon()
+ M:emote("scream")
+ if(prob(15))
+ M << "\red Your face has become disfigured!"
+ M.real_name = "Unknown"
+ M.warn_flavor_changed()
+ affecting.disfigured = 1
else
if(istype(M, /mob/living/carbon/monkey) && M:wear_mask)
del (M:wear_mask)
M << "\red Your mask melts away but protects you from the acid!"
return
- M.take_organ_damage(min(15, volume * 4)) // same deal as sulphuric acid
+
+
+ if(!M.unacidable)
+ M.take_organ_damage(min(15, volume * 4)) // same deal as sulphuric acid
else
- if(istype(M, /mob/living/carbon/human))
- var/datum/organ/external/head/affecting = M:get_organ("head")
- affecting.take_damage(15, 0)
- M:UpdateDamageIcon()
- M:emote("scream")
- if(prob(15))
- M << "\red Your face has become disfigured!"
- M.real_name = "Unknown"
- M.warn_flavor_changed()
- affecting.disfigured = 1
- else
- M.take_organ_damage(min(15, volume * 4))
+ if(!M.unacidable)
+ if(istype(M, /mob/living/carbon/human))
+ var/datum/organ/external/head/affecting = M:get_organ("head")
+ affecting.take_damage(15, 0)
+ M:UpdateDamageIcon()
+ M:emote("scream")
+ if(prob(15))
+ M << "\red Your face has become disfigured!"
+ M.real_name = "Unknown"
+ M.warn_flavor_changed()
+ affecting.disfigured = 1
+ else
+ M.take_organ_damage(min(15, volume * 4))
reaction_obj(var/obj/O, var/volume)
if((istype(O,/obj/item) || istype(O,/obj/effect/glowshroom)))
- var/obj/effect/decal/cleanable/molten_item/I = new/obj/effect/decal/cleanable/molten_item(O.loc)
- I.desc = "Looks like this was \an [O] some time ago."
- for(var/mob/M in viewers(5, O))
- M << "\red \the [O] melts."
- del(O)
+ if(!O.unacidable)
+ var/obj/effect/decal/cleanable/molten_item/I = new/obj/effect/decal/cleanable/molten_item(O.loc)
+ I.desc = "Looks like this was \an [O] some time ago."
+ for(var/mob/M in viewers(5, O))
+ M << "\red \the [O] melts."
+ del(O)
glycerol
name = "Glycerol"
diff --git a/code/modules/clothing/costume.dm b/code/modules/clothing/costume.dm
index f59854cb233..13f6d073a4b 100644
--- a/code/modules/clothing/costume.dm
+++ b/code/modules/clothing/costume.dm
@@ -162,6 +162,6 @@
W.name = "Fake Cyborg Card"
W.access = list(access_theatre)
W.assignment = "Kill all humans! Beep. Boop."
- W.registered = name
+ W.registered_name = name
del(src)
*/
\ No newline at end of file
diff --git a/code/modules/critters/critter_defenses.dm b/code/modules/critters/critter_defenses.dm
index 6033748bb33..766a9d63b5a 100644
--- a/code/modules/critters/critter_defenses.dm
+++ b/code/modules/critters/critter_defenses.dm
@@ -22,7 +22,12 @@ Contains the procs that control attacking critters
if (user.a_intent == "hurt")
TakeDamage(rand(1,2) * brutevuln)
- if(istype(user, /mob/living/carbon/human))
+ if(istajaran(user))
+ for(var/mob/O in viewers(src, null))
+ O.show_message("\red [user] has slashed at [src]!", 1)
+ playsound(src.loc, 'slice.ogg', 25, 1, -1)
+
+ else if(istype(user, /mob/living/carbon/human))
for(var/mob/O in viewers(src, null))
O.show_message("\red [user] has punched [src]!", 1)
playsound(src.loc, pick('punch1.ogg','punch2.ogg','punch3.ogg','punch4.ogg'), 100, 1)
@@ -32,10 +37,7 @@ Contains the procs that control attacking critters
O.show_message("\red [user] has slashed at [src]!", 1)
playsound(src.loc, 'slice.ogg', 25, 1, -1)
- else if(user.type == /mob/living/carbon/human/tajaran)
- for(var/mob/O in viewers(src, null))
- O.show_message("\red [user] has slashed at [src]!", 1)
- playsound(src.loc, 'slice.ogg', 25, 1, -1)
+
else
for(var/mob/O in viewers(src, null))
diff --git a/code/modules/mob/living/carbon/brain/brain.dm b/code/modules/mob/living/carbon/brain/brain.dm
index acab2597802..fc7e81cf2a8 100644
--- a/code/modules/mob/living/carbon/brain/brain.dm
+++ b/code/modules/mob/living/carbon/brain/brain.dm
@@ -1,6 +1,6 @@
/mob/living/carbon/brain
var
- obj/item/device/mmi/container = null
+ obj/item/container = null
timeofhostdeath = 0
New()
@@ -31,9 +31,14 @@
return 1
return ..()
- Login()
- if(!container)
- verbs += /mob/proc/ghost
- Logout()
- verbs -= /mob/proc/ghost
\ No newline at end of file
+/mob/living/carbon/brain/Login()
+ ..()
+
+ if (!isturf(src.loc))
+ src.client.eye = src.loc
+ src.client.perspective = EYE_PERSPECTIVE
+ if (!container || !istype(container, /obj/item/device/mmi))
+ src.verbs += /mob/proc/ghost
+
+ return
\ No newline at end of file
diff --git a/code/modules/mob/living/carbon/brain/death.dm b/code/modules/mob/living/carbon/brain/death.dm
index 24e868aaf73..021ef285d97 100644
--- a/code/modules/mob/living/carbon/brain/death.dm
+++ b/code/modules/mob/living/carbon/brain/death.dm
@@ -1,5 +1,5 @@
/mob/living/carbon/brain/death(gibbed)
- if(!gibbed && container)//If not gibbed but in a container.
+ if(!gibbed && container && istype(container, /obj/item/device/mmi))//If not gibbed but in a container.
for(var/mob/O in viewers(container, null))
O.show_message(text("\red []'s MMI flatlines!", src), 1, "\red You hear something flatline.", 2)
container.icon_state = "mmi_dead"
diff --git a/code/modules/mob/living/carbon/brain/life.dm b/code/modules/mob/living/carbon/brain/life.dm
index ac1fe5e7276..ea528b7e03f 100644
--- a/code/modules/mob/living/carbon/brain/life.dm
+++ b/code/modules/mob/living/carbon/brain/life.dm
@@ -40,6 +40,8 @@
clamp_values()
+
+
proc
clamp_values()
@@ -318,4 +320,5 @@
if(bodytemperature > 409)
for(var/datum/disease/D in viruses)
D.cure()
- return
\ No newline at end of file
+ return
+
diff --git a/code/modules/mob/living/carbon/brain/say.dm b/code/modules/mob/living/carbon/brain/say.dm
index ae306dc6caa..0650033917a 100644
--- a/code/modules/mob/living/carbon/brain/say.dm
+++ b/code/modules/mob/living/carbon/brain/say.dm
@@ -1,3 +1,4 @@
/mob/living/carbon/brain/say(var/message)
- if(!container) return //No container, can't speak, bucko./N
+ if(!(container && istype(container, /obj/item/device/mmi)))
+ return //No MMI, can't speak, bucko./N
else ..()
\ No newline at end of file
diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm
index d61d24d29bf..7dfe4cb5901 100644
--- a/code/modules/mob/living/carbon/carbon.dm
+++ b/code/modules/mob/living/carbon/carbon.dm
@@ -193,7 +193,6 @@
var/status = ""
var/brutedamage = org.brute_dam
var/burndamage = org.burn_dam
-
if(halloss > 0)
if(prob(30))
brutedamage += halloss
@@ -215,6 +214,9 @@
status += "blistered"
else if(burndamage > 0)
status += "numb"
+ if(org.destroyed)
+ status = "MISSING!"
+
if(status == "")
status = "OK"
src.show_message(text("\t []My [] is [].",status=="OK"?"\blue ":"\red ",org.getDisplayName(),status),1)
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index f6a90249965..4ac8972b60c 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -70,11 +70,17 @@
/mob/living/carbon/human/New()
+
+ ..()
+
+
+
var/datum/reagents/R = new/datum/reagents(1000)
reagents = R
R.my_atom = src
- if(!dna) dna = new /datum/dna(null)
+ if(!dna)
+ dna = new /datum/dna(null)
new /datum/organ/external/chest(src)
new /datum/organ/external/groin(src)
@@ -123,19 +129,24 @@
gender = MALE
g = "m"
- spawn (1)
- if(!stand_icon)
- stand_icon = new /icon('human.dmi', "body_[g]_s")
- if(!lying_icon)
- lying_icon = new /icon('human.dmi', "body_[g]_l")
+ spawn(1)
+ stand_icon = new /icon('human.dmi', "body_[g]_s")
+ lying_icon = new /icon('human.dmi', "body_[g]_l")
icon = stand_icon
update_clothing()
+
src << "\blue Your icons have been generated!"
+
+ spawn(10) // Failsafe for.. weirdness.
+ update_clothing()
+ update_body()
+
vessel = new/datum/reagents(600)
vessel.my_atom = src
vessel.add_reagent("blood",560)
- spawn(1) fixblood()
+ spawn(1)
+ fixblood()
..()
/*var/known_languages = list()
@@ -267,6 +278,7 @@
var/hungry = (500 - nutrition)/5 // So overeat would be 100 and default level would be 80
if (hungry >= 70) tally += hungry/50
+
for(var/organ in list("l_leg","l_foot","r_leg","r_foot"))
var/datum/organ/external/o = organs["[organ]"]
if(o.broken)
@@ -1484,7 +1496,6 @@
del(face_standing)
del(face_lying)
return
-
if(!facial_hair_style || !hair_style) return//Seems people like to lose their icons, this should stop the runtimes for now
del(face_standing)
del(face_lying)
diff --git a/code/modules/mob/living/carbon/human/human_attackhand.dm b/code/modules/mob/living/carbon/human/human_attackhand.dm
index 0340f2a925e..0e4eef42825 100644
--- a/code/modules/mob/living/carbon/human/human_attackhand.dm
+++ b/code/modules/mob/living/carbon/human/human_attackhand.dm
@@ -119,35 +119,36 @@
if("lizard")
attack_verb = "scratch"
if("plant")
- attack_verb = "slash"
+ attack_verb = "whip"
else
attack_verb = "punch"
- if(M.type == /mob/living/carbon/human/tajaran)
+ if(istajaran(M))
attack_verb = "slash"
var/damage = rand(0, 5)
if(!damage)
- if(M.mutantrace == "lizard")
- playsound(loc, 'slashmiss.ogg', 25, 1, -1)
- else if(M.type != /mob/living/carbon/human/tajaran)
- playsound(loc, 'punchmiss.ogg', 25, 1, -1)
- else if (M.type == /mob/living/carbon/human/tajaran)
- playsound(loc, 'slashmiss.ogg', 25, 1, -1)
+ switch(attack_verb)
+ if(("slash") || ("scratch"))
+ playsound(loc, 'slashmiss.ogg', 25, 1, -1)
+ else
+ playsound(loc, 'punchmiss.ogg', 25, 1, -1)
+
visible_message("\red [M] has attempted to [attack_verb] [src]!")
return 0
+
+
var/datum/organ/external/affecting = get_organ(ran_zone(M.zone_sel.selecting))
var/armor_block = run_armor_check(affecting, "melee")
if(M.mutations & HULK) damage += 5
- if(M.mutantrace == "lizard")
- damage += 10
- playsound(loc, 'slice.ogg', 25, 1, -1)
- else if(M.type != /mob/living/carbon/human/tajaran)
- playsound(loc, "punch", 25, 1, -1)
- else if (M.type == /mob/living/carbon/human/tajaran)
- damage += 10
- playsound(loc, 'slice.ogg', 25, 1, -1)
+
+ switch(attack_verb)
+ if(("slash") || ("scratch"))
+ damage += 10
+ playsound(loc, 'slice.ogg', 25, 1, -1)
+ else
+ playsound(loc, "punch", 25, 1, -1)
visible_message("\red [M] has [attack_verb]ed [src]!")
@@ -157,11 +158,10 @@
apply_effect(2, WEAKEN, armor_block)
UpdateDamageIcon()
-
if("disarm")
M.attack_log += text("\[[time_stamp()]\] Disarmed [src.name] ([src.ckey])")
src.attack_log += text("\[[time_stamp()]\] Has been disarmed by [M.name] ([M.ckey])")
-
+
log_admin("ATTACK: [src] ([src.ckey]) disarmed [M] ([M.ckey]).")
log_attack("[M.name] ([M.ckey]) disarmed [src.name] ([src.ckey])")
@@ -212,4 +212,7 @@
playsound(loc, 'punchmiss.ogg', 25, 1, -1)
visible_message("\red [M] attempted to disarm [src]!")
update_clothing()
+ return
+
+/mob/living/carbon/human/proc/afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, inrange, params)
return
\ No newline at end of file
diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm
index 4b96f26273a..9ffbb5dc451 100644
--- a/code/modules/mob/living/carbon/human/human_defense.dm
+++ b/code/modules/mob/living/carbon/human/human_defense.dm
@@ -119,10 +119,9 @@ emp_act
if(!I || !user) return 0
var/datum/organ/external/affecting = get_organ(ran_zone(user.zone_sel.selecting))
+
var/hit_area = affecting.display_name
-
-
if((user != src) && check_shields(I.force, "the [I.name]"))
return 0
diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm
index b746b3e5182..1d5156013d2 100644
--- a/code/modules/mob/living/carbon/human/life.dm
+++ b/code/modules/mob/living/carbon/human/life.dm
@@ -1148,22 +1148,41 @@
if (mutantrace == "lizard" || mutantrace == "metroid")
see_in_dark = 3
see_invisible = 1
+
+ else if (istajaran(src))
+ see_in_dark = 8
+
else if (druggy) // If drugged~
see_in_dark = 2
//see_invisible regulated by drugs themselves.
else
see_in_dark = 2
- var/seer = 0
- for(var/obj/effect/rune/R in world)
- if(loc==R.loc && R.word1==wordsee && R.word2==wordhell && R.word3==wordjoin)
- seer = 1
- if(!seer)
- see_invisible = 0
- else if(istype(head, /obj/item/clothing/head/helmet/welding))
+ var/seer = 0
+ for(var/obj/effect/rune/R in world)
+ if(loc==R.loc && R.word1==wordsee && R.word2==wordhell && R.word3==wordjoin)
+ seer = 1
+ if(!seer)
+ see_invisible = 0
+
+
+
+
+
+
+
+ else if(istype(head, /obj/item/clothing/head/helmet/welding)) // wat. This is never fucking called.
if(!head:up && tinted_weldhelh)
see_in_dark = 1
+
+
+
+
+
+
+
+
/* HUD shit goes here, as long as it doesn't modify src.sight flags */
// The purpose of this is to stop xray and w/e from preventing you from using huds -- Love, Doohl
if(istype(glasses, /obj/item/clothing/glasses/hud/health))
diff --git a/code/modules/mob/living/carbon/human/say.dm b/code/modules/mob/living/carbon/human/say.dm
index f77e48e980e..b647811511c 100644
--- a/code/modules/mob/living/carbon/human/say.dm
+++ b/code/modules/mob/living/carbon/human/say.dm
@@ -1,4 +1,7 @@
/mob/living/carbon/human/say(var/message)
+/* if(src.mutantrace == "lizard")
+ if(copytext(message, 1, 2) != "*")
+ message = dd_replaceText(message, "s", stutter("ss"))*///Just here for reference. -- Erthilo
if(src.mutantrace == "metroid" && prob(5))
if(copytext(message, 1, 2) != "*")
if(copytext(message, 1, 2) == ";")
diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm
index 9dc5bf406c8..a4bbfeb6b47 100644
--- a/code/modules/mob/mob_defines.dm
+++ b/code/modules/mob/mob_defines.dm
@@ -113,6 +113,7 @@
var/canmove = 1.0
var/eye_stat = null//Living, potentially Carbon
var/lastpuke = 0
+ var/unacidable = 0
var/name_archive //For admin things like possession
diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm
index bf3df67ac35..b84e24a47f3 100644
--- a/code/modules/mob/mob_helpers.dm
+++ b/code/modules/mob/mob_helpers.dm
@@ -56,7 +56,7 @@
return 0
/proc/iscat(A)
- if(istype(A, /mob/living/simple_animal/cat))
+ if(istype(A, /mob/living/simple_animal/cat/))
return 1
return 0
@@ -115,12 +115,16 @@ proc/hasorgans(A)
return 1
return 0
+
+
+
/proc/hsl2rgb(h, s, l)
return
/proc/check_zone(zone)
- if(!zone) return "chest"
+ if(!zone)
+ return "chest"
switch(zone)
if("eyes")
zone = "head"
diff --git a/code/modules/mob/organ/organ.dm b/code/modules/mob/organ/organ.dm
index 398cb8687a4..bc0d6ac5c77 100644
--- a/code/modules/mob/organ/organ.dm
+++ b/code/modules/mob/organ/organ.dm
@@ -91,7 +91,8 @@
brute *= 0.66 //~2/3 damage for ROBOLIMBS
burn *= 0.66 //~2/3 damage for ROBOLIMBS
- if(owner && !robot) owner.pain(display_name, (brute+burn)*3, 1)
+ if(owner && !robot)
+ owner.pain(display_name, (brute+burn)*3, 1)
if(sharp)
var/nux = brute * rand(10,15)
if(brute_dam >= max_damage)
@@ -382,7 +383,7 @@
destspawn = 1
if(!robot)
owner.visible_message("\red [owner.name]'s [display_name] flies off in an arc.",\
- "\red Your [display_name] goes flying off!",\
+ "Your [display_name] goes flying off!",\
"You hear a terrible sound of ripping tendons and flesh.")
else
owner.visible_message("\red [owner.name]'s [display_name] explodes violently!",\
diff --git a/code/modules/mob/organ/organ_external.dm b/code/modules/mob/organ/organ_external.dm
index 49e47ec16df..881e3623a67 100644
--- a/code/modules/mob/organ/organ_external.dm
+++ b/code/modules/mob/organ/organ_external.dm
@@ -84,6 +84,8 @@
min_broken_damage = 15
body_part = HAND_LEFT
+
+
obj/item/weapon/organ
icon = 'human.dmi'
@@ -112,6 +114,12 @@ obj/item/weapon/organ/head
var/mob/living/carbon/brain/brainmob
var/brain_op_stage = 0
+obj/item/weapon/organ/head/New()
+ ..()
+ spawn(5)
+ if(brainmob && brainmob.client)
+ brainmob.client.screen.len = null //clear the hud
+
obj/item/weapon/organ/head/proc/transfer_identity(var/mob/living/carbon/human/H)//Same deal as the regular brain proc. Used for human-->head
brainmob = new(src)
brainmob.name = H.real_name
@@ -119,6 +127,11 @@ obj/item/weapon/organ/head/proc/transfer_identity(var/mob/living/carbon/human/H)
brainmob.dna = H.dna
if(H.mind)
H.mind.transfer_to(brainmob)
+ brainmob.container = src
+ if (brainmob.client)
+ spawn(10)
+ if(brainmob.client)
+ verbs += /mob/proc/ghost
obj/item/weapon/organ/head/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(istype(W,/obj/item/weapon/scalpel))
diff --git a/code/unused/computer2/med_rec.dm b/code/unused/computer2/med_rec.dm
index c4a4e2245df..6d8e7e62e4d 100644
--- a/code/unused/computer2/med_rec.dm
+++ b/code/unused/computer2/med_rec.dm
@@ -119,7 +119,7 @@
src.active1 = null
src.active2 = null
if (src.check_access(src.master.authid))
- src.authenticated = src.master.authid.registered
+ src.authenticated = src.master.authid.registered_name
src.rank = src.master.authid.assignment
src.screen = 1
if (src.authenticated)
diff --git a/code/unused/gamemodes/ctf.dm b/code/unused/gamemodes/ctf.dm
index 8a957b9a325..5a464c0ce26 100644
--- a/code/unused/gamemodes/ctf.dm
+++ b/code/unused/gamemodes/ctf.dm
@@ -58,7 +58,7 @@
W.name = "[M.real_name]'s ID card (Red Team)"
W.access = access_red
W.assignment = "Red Team"
- W.registered = M.real_name
+ W.registered_name = M.real_name
M.wear_id = W
M.wear_id.layer = 20
if(R)
@@ -98,7 +98,7 @@
W.name = "[M.real_name]'s ID card (Green Team)"
W.access = access_green
W.assignment = "Green Team"
- W.registered = M.real_name
+ W.registered_name = M.real_name
M.wear_id = W
M.wear_id.layer = 20
if(G)
diff --git a/code/unused/gamemodes/deathmatch.dm b/code/unused/gamemodes/deathmatch.dm
index 662a96a58b7..6e7736ac68e 100644
--- a/code/unused/gamemodes/deathmatch.dm
+++ b/code/unused/gamemodes/deathmatch.dm
@@ -58,7 +58,7 @@
W.access = get_all_accesses()
W.name = "[newname]'s ID card (Death Commando)"
W.assignment = "Death Commando"
- W.registered = newname
+ W.registered_name = newname
M.equip_if_possible(W, M.slot_wear_id)
..()
diff --git a/code/unused/pda2/pda2.dm b/code/unused/pda2/pda2.dm
index f77136d1bfe..29d3556292c 100644
--- a/code/unused/pda2/pda2.dm
+++ b/code/unused/pda2/pda2.dm
@@ -159,8 +159,8 @@
src.cartridge = C
src.updateSelfDialog()
- else if (istype(C, /obj/item/weapon/card/id) && !src.owner && C:registered)
- src.owner = C:registered
+ else if (istype(C, /obj/item/weapon/card/id) && !src.owner && C:registered_name)
+ src.owner = C:registered_name
src.name = "PDA-[src.owner]"
user << "\blue Card scanned."
src.updateSelfDialog()