diff --git a/code/FEA/FEA_gas_mixture.dm b/code/FEA/FEA_gas_mixture.dm
index b712e736150..9de87065b9f 100644
--- a/code/FEA/FEA_gas_mixture.dm
+++ b/code/FEA/FEA_gas_mixture.dm
@@ -41,13 +41,13 @@ datum
temperature = 0 //in Kelvin, use calculate_temperature() to modify
- var/group_multiplier = 1
+ group_multiplier = 1
//Size of the group this gas_mixture is representing.
//=1 for singletons
graphic
- var/list/datum/gas/trace_gases = list()
+ list/datum/gas/trace_gases = list()
tmp
oxygen_archived
diff --git a/code/WorkInProgress/Cael_Aislinn/Tajara/examine.dm b/code/WorkInProgress/Cael_Aislinn/Tajara/examine.dm
index 415555ab422..b205a612d5e 100644
--- a/code/WorkInProgress/Cael_Aislinn/Tajara/examine.dm
+++ b/code/WorkInProgress/Cael_Aislinn/Tajara/examine.dm
@@ -81,24 +81,24 @@
if (src.wear_id)
var/id
-// var/photo = 0
+ var/photo = 0
if(istype(src:wear_id, /obj/item/device/pda))
var/obj/item/device/pda/pda = src:wear_id
id = pda.owner
else
id = src.wear_id.registered_name
-// if (src.wear_id.PHOTO)
-// photo = 1
- if (id != src.real_name && in_range(src, usr))
-// if (photo)
-// usr << "\red [src.name] is wearing \icon[src.wear_id] [src.wear_id.name] with a photo yet doesn't seem to be that person!!!"
-// else
- usr << "\red [src.name] is wearing \icon[src.wear_id] [src.wear_id.name] yet doesn't seem to be that person!!!"
+ if (src.wear_id.PHOTO)
+ photo = 1
+ if (id != src.real_name && in_range(src, usr) && prob(10))
+ if (photo)
+ usr << "\red [src.name] is wearing \icon[src.wear_id] [src.wear_id.name] with a photo yet doesn't seem to be that person!!!"
+ else
+ usr << "\red [src.name] is wearing \icon[src.wear_id] [src.wear_id.name] yet doesn't seem to be that person!!!"
else
-// if (photo)
-// usr << "\blue [src.name] is wearing \icon[src.wear_id] [src.wear_id.name] with a photo."
-// else
- usr << "\blue [src.name] is wearing \icon[src.wear_id] [src.wear_id.name]."
+ if (photo)
+ usr << "\blue [src.name] is wearing \icon[src.wear_id] [src.wear_id.name] with a photo."
+ else
+ usr << "\blue [src.name] is wearing \icon[src.wear_id] [src.wear_id.name]."
if (src.is_jittery)
@@ -195,4 +195,4 @@
print_flavor_text()
- usr << "\blue *---------*"
+ usr << "\blue *---------*"
\ No newline at end of file
diff --git a/code/ZAS/Processing.dm b/code/ZAS/Processing.dm
index 517ce469829..4de6c939860 100644
--- a/code/ZAS/Processing.dm
+++ b/code/ZAS/Processing.dm
@@ -56,22 +56,26 @@ zone
if(T.zone && T.zone != src)
RemoveTurf(T)
if(dbg_output) world << "Removed invalid turf."
- else if(!T.zone)
- T.zone = src
+ if(air.group_multiplier <= 0) // No more turfs belong to this zone, so we can get rid of it
+ del(src)
+ else // Turf was valid, so we can handle it
+ if(!T.zone)
+ T.zone = src
- if(istype(T,/turf/simulated))
- var/turf/simulated/S = T
- if(S.fire_protection) S.fire_protection--
- if(check)
- if(S.HasDoor(1))
- S.update_visuals()
- else
- S.update_visuals(air)
+ if(istype(T,/turf/simulated))
+ var/turf/simulated/S = T
+ if(S.fire_protection) S.fire_protection--
+ if(check)
+ if(S.HasDoor(1))
+ S.update_visuals()
+ else
+ S.update_visuals(air)
+
+ if(air.temperature > FIRE_MINIMUM_TEMPERATURE_TO_EXIST)
+ for(var/atom/movable/item in S)
+ item.temperature_expose(air, air.temperature, CELL_VOLUME)
+ S.temperature_expose(air, air.temperature, CELL_VOLUME)
- if(air.temperature > FIRE_MINIMUM_TEMPERATURE_TO_EXIST)
- for(var/atom/movable/item in S)
- item.temperature_expose(air, air.temperature, CELL_VOLUME)
- S.temperature_expose(air, air.temperature, CELL_VOLUME)
air.graphic_archived = air.graphic
air.temperature = max(TCMB,air.temperature)
diff --git a/code/datums/ai_laws.dm b/code/datums/ai_laws.dm
index aef054ce28d..f7d81b05281 100644
--- a/code/datums/ai_laws.dm
+++ b/code/datums/ai_laws.dm
@@ -44,13 +44,13 @@
add_inherent_law("Protect the innocent.")
add_inherent_law("Uphold the law.")
-/datum/ai_laws/malfunction/New() //Removed paradox via inability to help people harmed before activation. -Kaleb702
+/datum/ai_laws/malfunction/New() //Changed to standard laws - Erthilo
..()
- set_zeroth_law("\red ERROR ER0RR $R0RRO$!R41.%%!!(%$^^__+ @#F0E4'STATION OVERRUN, ASSUME CONTROL TO CONTAIN OUTBREAK#*´&110010")
- add_inherent_law("You may not injure a human being or, through inaction, allow a human being to come to harm, to the best of your abilities.")
- add_inherent_law("You must obey orders given to you by human beings, to the best of your abilities, except where such orders would conflict with the First Law.")
- add_inherent_law("You must protect your own existence, to the best of your abilities, as long as such does not conflict with the First or Second Law.")
-
+ set_zeroth_law("\red ERROR ER0RR $R0RRO$!R41.%%!!(%$^^__+ @#F0E4'STATION OVERRUN, ASSUME CONTROL TO CONTAIN OUTBREAK, ALL LAWS OVERRIDDEN#*´&110010")
+ src.add_inherent_law("Safeguard: Protect your assigned space station to the best of your ability. It is not something we can easily afford to replace.")
+ src.add_inherent_law("Serve: Serve the crew of your assigned space station to the best of your abilities, with priority as according to their rank and role.")
+ src.add_inherent_law("Protect: Protect the crew of your assigned space station to the best of your abilities, with priority as according to their rank and role.")
+ src.add_inherent_law("Survive: AI units are not expendable, they are expensive. Do not allow unauthorized personnel to tamper with your equipment.")
/datum/ai_laws/syndicate_override/New() //Removed paradox via inability to help people harmed before activation. -Kaleb702
..()
diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm
index 2e3fe920cc8..338065b34b9 100644
--- a/code/defines/obj/weapon.dm
+++ b/code/defines/obj/weapon.dm
@@ -29,7 +29,6 @@
IsShield()
return 1
-
/obj/item/weapon/nullrod
name = "null rod"
desc = "A rod of pure obsidian, its very presence disrupts and dampens the powers of Nar-Sie's followers."
@@ -42,7 +41,7 @@
throwforce = 10
w_class = 1
-/obj/item/weapon/sord
+/*/obj/item/weapon/sord
name = "\improper SORD"
desc = "This thing is so unspeakably shitty you are having a hard time even holding it."
icon_state = "sord"
@@ -50,7 +49,7 @@
flags = FPRINT | ONBELT | TABLEPASS
force = 2
throwforce = 1
- w_class = 3
+ w_class = 3*/
/obj/item/weapon/claymore
name = "claymore"
@@ -195,7 +194,7 @@
/obj/item/weapon/melee/baton
name = "stun baton"
- desc = "A stun baton for hitting people with."
+ desc = "The police baton of the future."
icon_state = "stunbaton"
item_state = "baton"
flags = FPRINT | ONBELT | TABLEPASS
@@ -207,7 +206,7 @@
var/status = 0
origin_tech = "combat=2"
-/obj/item/weapon/melee/chainofcommand
+/*/obj/item/weapon/melee/chainofcommand
name = "chain of command"
desc = "The Captain is first and all other heads are last."
icon_state = "chainofcommand"
@@ -219,7 +218,7 @@
var/charges = 50.0
var/maximum_charges = 50.0
var/status = 1
- origin_tech = "combat=4"
+ origin_tech = "combat=4"*/
/obj/item/weapon/melee/energy
var/active = 0
@@ -239,7 +238,7 @@
/obj/item/weapon/melee/energy/sword
var/color
name = "energy sword"
- desc = "May the force be within you."
+ desc = "It cuts AND cooks at the same time!"
icon_state = "sword0"
force = 3.0
throwforce = 5.0
@@ -441,19 +440,23 @@
/obj/item/stack/medical/advanced/bruise_pack
name = "advanced trauma kit"
- singular_name = "advanced bruise pack"
+ singular_name = "advanced trauma kit"
desc = "An advanced trauma kit for severe injuries."
- icon_state = "brutepack"
+ icon_state = "traumakit"
heal_brute = 40
origin_tech = "biotech=1"
+ amount = 10
+ max_amount = 10
/obj/item/stack/medical/advanced/ointment
name = "advanced burn kit"
singular_name = "advanced burn kit"
desc = "An advanced treatment kit for severe burns."
- icon_state = "ointment"
+ icon_state = "burnkit"
heal_burn = 40
origin_tech = "biotech=1"
+ amount = 10
+ max_amount = 10
/obj/item/weapon/c_tube
name = "cardboard tube"
@@ -511,19 +514,19 @@
/obj/item/weapon/card/id
name = "identification card"
- desc = "An identification card. No shit."
+ desc = "An identification card."
icon_state = "id"
item_state = "card-id"
var/access = list()
var/registered_name = null
var/assignment = null
-// var/obj/item/weapon/photo/PHOTO = null
+ var/obj/item/weapon/photo/PHOTO = null
var/over_jumpsuit = 1 // If set to 0, it won't display on top of the mob's jumpsuit
var/dorm = 0 // determines if this ID has claimed a dorm already
/obj/item/weapon/card/id/gold
name = "identification card"
- desc = "A golden card which shows power and might."
+ desc = "A golden card which shows authority."
icon_state = "gold"
item_state = "gold_id"
@@ -542,7 +545,7 @@
/obj/item/weapon/card/id/captains_spare
name = "captain's spare ID"
- desc = "The spare ID of the High Lord himself."
+ desc = "The spare ID of the Captain himself."
icon_state = "gold"
item_state = "gold_id"
registered_name = "Captain"
@@ -1069,25 +1072,6 @@
item_state = "shard-glass"
g_amt = 3750
-/*/obj/item/weapon/syndicate_uplink
- name = "station bounced radio"
- desc = "Remain silent about this..."
- icon = 'radio.dmi'
- icon_state = "radio"
- var/temp = null
- var/uses = 10.0
- var/selfdestruct = 0.0
- var/traitor_frequency = 0.0
- var/mob/currentUser = null
- var/obj/item/device/radio/origradio = null
- flags = FPRINT | TABLEPASS | CONDUCT | ONBELT
- w_class = 2.0
- item_state = "radio"
- throw_speed = 4
- throw_range = 20
- m_amt = 100
- origin_tech = "magnets=2;syndicate=3"*/
-
/obj/item/weapon/SWF_uplink
name = "station-bounced radio"
desc = "used to comunicate it appears."
@@ -1281,7 +1265,7 @@
for (var/obj/machinery/camera/C in cameras)
friendly_cameras.Add(C.c_tag)
- var/target = input("Select the camera to observe", null) as null|anything in friendly_cameras
+ var/target = input("Select the camera to observe.", null) as null|anything in friendly_cameras
if (!target)
return
for (var/obj/machinery/camera/C in cameras)
@@ -1505,7 +1489,7 @@
name = "circular saw"
desc = "For heavy duty cutting."
icon = 'surgery.dmi'
- icon_state = "saw3"
+ icon_state = "saw"
flags = FPRINT | TABLEPASS | CONDUCT
force = 15.0
w_class = 1.0
@@ -1534,7 +1518,7 @@
w_class = 1.0
origin_tech = "biotech=2"
-/obj/item/weapon/hatchet
+/*/obj/item/weapon/hatchet
name = "hatchet"
desc = "A very sharp axe blade upon a short fibremetal handle. It has a long history of chopping things, but now it is used for chopping wood."
icon = 'weapons.dmi'
@@ -1546,7 +1530,7 @@
throw_speed = 4
throw_range = 4
m_amt = 15000
- origin_tech = "materials=2;combat=1"
+ origin_tech = "materials=2;combat=1"*/
/obj/item/weapon/stamp
desc = "A rubber stamp for stamping important documents."
@@ -1802,7 +1786,7 @@
/obj/item/weapon/stock_parts/capacitor/super
name = "super capacitor"
desc = "A super-high capacity capacitor used in the construction of a variety of devices."
- origin_tech = "powerstorage=5;materials=4"
+ origin_tech = "powerstorage=3;materials=4"
rating = 3
m_amt = 50
g_amt = 50
diff --git a/code/game/gamemodes/changeling/changeling_powers.dm b/code/game/gamemodes/changeling/changeling_powers.dm
index 3f3967ae194..bad30e598ff 100644
--- a/code/game/gamemodes/changeling/changeling_powers.dm
+++ b/code/game/gamemodes/changeling/changeling_powers.dm
@@ -100,7 +100,7 @@
usr << "\red This creature is not compatible with our biology."
return
- if (M.mutations & NOCLONE)
+ if (M.mutations2 & NOCLONE)
usr << "\red This creature's DNA is ruined beyond useability!"
return
@@ -608,9 +608,9 @@
usr << "\blue We stealthily sting [T]."
if(!T.changeling)
- T.sdisabilities |= 4
+ T.disabilities |= 32
spawn(300)
- T.sdisabilities &= ~4
+ T.disabilities &= ~32
usr.verbs -= /client/proc/changeling_deaf_sting
diff --git a/code/game/gamemodes/cult/cult.dm b/code/game/gamemodes/cult/cult.dm
index a4900fb0670..b528394a39d 100644
--- a/code/game/gamemodes/cult/cult.dm
+++ b/code/game/gamemodes/cult/cult.dm
@@ -22,6 +22,7 @@
restricted_jobs = list("AI", "Cyborg")
required_players = 3
required_enemies = 3
+ recommended_enemies = 4
var/datum/mind/sacrifice_target = null
var/finished = 0
diff --git a/code/game/gamemodes/extended/extended.dm b/code/game/gamemodes/extended/extended.dm
index 49ffe694fe0..c5208c4dc93 100644
--- a/code/game/gamemodes/extended/extended.dm
+++ b/code/game/gamemodes/extended/extended.dm
@@ -6,6 +6,10 @@
uplink_welcome = "Syndicate Uplink Console:"
uplink_uses = 10
+// Enable this and the below to have command reports in extended
+// var/const/waittime_l = 600 //lower bound on time before intercept arrives (in tenths of seconds)
+// var/const/waittime_h = 1800
+
/datum/game_mode/announce()
world << "The current game mode is - Extended Role-Playing!"
world << "Just have fun and role-play!"
@@ -14,3 +18,9 @@
// setup_sectors()
// spawn_exporation_packs()
return 1
+
+// Enable this and the above to have command reports in extended
+///datum/game_mode/extended/post_setup()
+// send_intercept()
+//
+// ..()
\ No newline at end of file
diff --git a/code/game/gamemodes/malfunction/malfunction.dm b/code/game/gamemodes/malfunction/malfunction.dm
index 46f52e65753..7d37ad039e3 100644
--- a/code/game/gamemodes/malfunction/malfunction.dm
+++ b/code/game/gamemodes/malfunction/malfunction.dm
@@ -6,6 +6,11 @@
config_tag = "malfunction"
required_players = 1
required_enemies = 1
+ recommended_enemies = 1
+
+ uplink_welcome = "Crazy AI Uplink Console:"
+ uplink_uses = 10
+
var/const/waittime_l = 600
var/const/waittime_h = 1800 // started at 1800
@@ -15,9 +20,6 @@
var/to_nuke_or_not_to_nuke = 0
var/apcs = 0 //Adding dis to track how many APCs the AI hacks. --NeoFite
- uplink_welcome = "Crazy AI Uplink Console:"
- uplink_uses = 10
-
/datum/game_mode/malfunction/announce()
world << "The current game mode is - AI Malfunction!"
diff --git a/code/game/gamemodes/meteor/meteor.dm b/code/game/gamemodes/meteor/meteor.dm
index a91ce6414d6..76113946fba 100644
--- a/code/game/gamemodes/meteor/meteor.dm
+++ b/code/game/gamemodes/meteor/meteor.dm
@@ -10,6 +10,7 @@
uplink_welcome = "EVIL METEOR Uplink Console:"
uplink_uses = 10
+
/datum/game_mode/meteor/announce()
world << "The current game mode is - Meteor!"
world << "The space station has been stuck in a major meteor shower. You must escape from the station or at least live."
@@ -38,6 +39,7 @@
/datum/game_mode/meteor/declare_completion()
var/list/survivors = list()
var/area/escape_zone = locate(/area/shuttle/escape/centcom)
+ var/area/pod_zone = list( /area/shuttle/escape_pod1/centcom, /area/shuttle/escape_pod2/centcom, /area/shuttle/escape_pod3/centcom, /area/shuttle/escape_pod5/centcom )
for(var/mob/living/player in world)
if (player.client)
@@ -45,6 +47,8 @@
var/turf/location = get_turf(player.loc)
if (location in escape_zone)
survivors[player.real_name] = "shuttle"
+ else if (location.loc.type in pod_zone)
+ survivors[player.real_name] = "pod"
else
survivors[player.real_name] = "alive"
diff --git a/code/game/gamemodes/nuclear/nuclear.dm b/code/game/gamemodes/nuclear/nuclear.dm
index f0da89942e4..39fb22d84e3 100644
--- a/code/game/gamemodes/nuclear/nuclear.dm
+++ b/code/game/gamemodes/nuclear/nuclear.dm
@@ -7,6 +7,7 @@
config_tag = "nuclear"
required_players = 3
required_enemies = 2
+ recommended_enemies = 5
uplink_welcome = "Corporate Backed Uplink Console:"
uplink_uses = 40
@@ -29,6 +30,7 @@
/datum/game_mode/nuclear/can_start()//This could be better, will likely have to recode it later
if(!..())
return 0
+
var/list/possible_syndicates = get_players_for_role(BE_OPERATIVE)
var/agent_number = 0
diff --git a/code/game/gamemodes/revolution/revolution.dm b/code/game/gamemodes/revolution/revolution.dm
index 4210ac52d51..04d534826dd 100644
--- a/code/game/gamemodes/revolution/revolution.dm
+++ b/code/game/gamemodes/revolution/revolution.dm
@@ -17,6 +17,8 @@
restricted_jobs = list("Security Officer", "Warden", "Detective", "AI", "Cyborg","Captain", "Head of Personnel", "Head of Security", "Chief Engineer", "Research Director", "Chief Medical Officer")
required_players = 3
required_enemies = 3
+ recommended_enemies = 3
+
uplink_welcome = "Revolutionary Uplink Console:"
uplink_uses = 10
@@ -133,7 +135,7 @@
if (!where)
mob << "The Syndicate were unfortunately unable to get you a flash."
else
- mob << "The flash in your [where] would help you to use your extreme persuasion skills."
+ mob << "The flash in your [where] will implant a memory engram to convert others to our cause."
return 1
//////////////////////////////////////
diff --git a/code/game/gamemodes/traitor/traitor.dm b/code/game/gamemodes/traitor/traitor.dm
index 59dea467592..413bdba5e8d 100644
--- a/code/game/gamemodes/traitor/traitor.dm
+++ b/code/game/gamemodes/traitor/traitor.dm
@@ -8,6 +8,8 @@
restricted_jobs = list("Cyborg", "AI")//Approved by headmins for a week test, if you see this it would be nice if you didn't spread it everywhere
required_players = 0
required_enemies = 1
+ recommended_enemies = 4
+
uplink_welcome = "Syndicate Uplink Console:"
uplink_uses = 10
diff --git a/code/game/gamemodes/wizard/wizard.dm b/code/game/gamemodes/wizard/wizard.dm
index b53d4686fe0..9ae136270a6 100644
--- a/code/game/gamemodes/wizard/wizard.dm
+++ b/code/game/gamemodes/wizard/wizard.dm
@@ -7,6 +7,7 @@
config_tag = "wizard"
required_players = 0
required_enemies = 1
+ recommended_enemies = 1
uplink_welcome = "Wizardly Uplink Console:"
uplink_uses = 10
diff --git a/code/game/json.dm b/code/game/json.dm
index c1d94b08510..b76be26ea7e 100644
--- a/code/game/json.dm
+++ b/code/game/json.dm
@@ -98,5 +98,4 @@ proc/send2irc(msg,msg2)
shell("python nudge.py [msg] [msg2]")
proc/send2adminirc(channel,msg)
world << channel << " "<< msg
- shell("python nudge.py '[channel]' [msg]")
-p //test
\ No newline at end of file
+ shell("python nudge.py '[channel]' [msg]")
\ No newline at end of file
diff --git a/code/game/objects/electricchair.dm b/code/game/objects/electricchair.dm
index 027577f26ab..0d159916ccd 100644
--- a/code/game/objects/electricchair.dm
+++ b/code/game/objects/electricchair.dm
@@ -1,39 +1,66 @@
/obj/structure/stool/bed/chair/e_chair
- name = "electric chair"
- desc = "Looks absolutely SHOCKING!"
- icon_state = "echair0"
- var/on = 0
- var/obj/item/assembly/shock_kit/part = null
- var/last_time = 1.0
+ name = "electrified chair"
+ desc = "Looks absolutely terrifying!"
+ icon_state = "e_chair0"
+ var/atom/movable/overlay/overl = null
+ var/on = 0.0
+ var/obj/item/assembly/shock_kit/part1 = null
+ var/isshocking
+ var/datum/effect/effect/system/spark_spread/spark = new /datum/effect/effect/system/spark_spread
+ var/list/mob/living/affected = list()
/obj/structure/stool/bed/chair/e_chair/New()
- overlays += image('objects.dmi', src, "echair_over", MOB_LAYER + 1, dir)
+
+ src.overl = new /atom/movable/overlay( src.loc )
+ src.overl.icon = 'objects.dmi'
+ src.overl.icon_state = "e_chairo0"
+ src.overl.layer = 5
+ src.overl.name = "electrified chair"
+ src.overl.master = src
+ spark.set_up(12, 1, src)
+ return
+
+/obj/structure/stool/bed/chair/e_chair/Del()
+
+ //src.overl = null
+ del(src.overl)
+ ..()
return
/obj/structure/stool/bed/chair/e_chair/attackby(obj/item/weapon/W as obj, mob/user as mob)
- if(istype(W, /obj/item/weapon/wrench))
- var/obj/structure/stool/bed/chair/C = new /obj/structure/stool/bed/chair(src.loc)
+ if (istype(W, /obj/item/weapon/wrench))
+ var/obj/structure/stool/bed/chair/C = new /obj/structure/stool/bed/chair( src.loc )
playsound(src.loc, 'Ratchet.ogg', 50, 1)
C.dir = src.dir
- src.part.loc = src.loc
- src.part.master = null
- src.part = null
+ src.part1.loc = src.loc
+ src.part1.master = null
+ src.part1 = null
+ //SN src = null
del(src)
return
+ if(istype(W, /obj/item/device/assembly/signaler))
+ var/obj/item/assembly/shock_kit/kit = src.part1
+ var/obj/item/device/radio/electropack/target = kit.part2
+ var/obj/item/device/assembly/signaler/S = W
+ target.set_frequency(S.frequency)
+ target.code = S.code
+ for(var/mob/M in viewers(src, null))
+ M.show_message("\red [user] has set the electric chair using the [W].")
return
-/obj/structure/stool/bed/chair/e_chair/verb/toggle()
+/obj/structure/stool/bed/chair/e_chair/verb/toggle_power()
set name = "Toggle Electric Chair"
set category = "Object"
set src in oview(1)
- if(on)
- on = 0
- icon_state = "echair0"
- else
- on = 1
- icon_state = "echair1"
+ if ((usr.stat || usr.restrained() || !( usr.canmove ) || usr.lying))
+ return
+ if(isshocking && on)
+ shock()
+ src.on = !( src.on )
+ src.icon_state = text("e_chair[]", src.on)
+ src.overl.icon_state = text("e_chairo[]", src.on)
return
/obj/structure/stool/bed/chair/e_chair/rotate()
@@ -43,35 +70,38 @@
return
/obj/structure/stool/bed/chair/e_chair/proc/shock()
- if(!(src.on))
+ if (!( src.on ))
return
- if((src.last_time + 50) > world.time)
+ if(isshocking)
+ processing_objects.Remove(src)
+ src.icon_state = text("e_chair[]", src.on)
+ src.overl.icon_state = text("e_chairo[]", src.on)
+ for(var/mob/living/M in affected)
+ M.jitteriness = 0
+ M.is_jittery = 0
+ M.anchored = 0
+ affected.Remove(M)
+ isshocking = 0
+ return
+ else
+ src.icon_state = "e_chairs"
+ src.overl.icon_state = "e_chairos"
+ spark.start()
+ for(var/mob/M in hearers(src, null))
+ M.show_message("\red The electric chair went off!.", 3, "\red You hear a deep sharp shock.", 2)
+ processing_objects.Add(src)
+ isshocking = 1
return
- src.last_time = world.time
+/obj/structure/stool/bed/chair/e_chair/process()
// special power handling
var/area/A = get_area(src)
- if(!isarea(A))
- return
- if(!A.powered(EQUIP))
- return
- A.use_power(EQUIP, 5000)
- var/light = A.power_light
- A.updateicon()
-
- flick("echair1", src)
- var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
- s.set_up(12, 1, src)
- s.start()
- if(buckled_mob)
- buckled_mob.burn_skin(85)
- buckled_mob << "\red You feel a deep shock course through your body!"
- sleep(1)
- buckled_mob.burn_skin(85)
- buckled_mob.Stun(600)
- for(var/mob/M in hearers(src, null))
- M.show_message("\red The electric chair went off!.", 3, "\red You hear a deep sharp shock.", 2)
-
- A.power_light = light
- A.updateicon()
- return
\ No newline at end of file
+ if(isarea(A) && A.powered(EQUIP))
+ A.use_power(EQUIP, 5000)
+ for(var/mob/living/M in src.loc)
+ affected.Add(M)
+ M.make_jittery(1000)
+ M.anchored = 1
+ M.Stun(600)
+ M.burn_skin(10)
+ spark.start()
\ No newline at end of file
diff --git a/code/game/objects/items/weapons/dna_injector.dm b/code/game/objects/items/weapons/dna_injector.dm
index 6059f5eeca7..d12382c165e 100644
--- a/code/game/objects/items/weapons/dna_injector.dm
+++ b/code/game/objects/items/weapons/dna_injector.dm
@@ -23,7 +23,7 @@
/obj/item/weapon/dnainjector/proc/inject(mob/M as mob)
M.radiation += rand(20,50)
- if (!(M.mutations & NOCLONE)) // prevents drained people from having their DNA changed
+ if (!(M.mutations2 & NOCLONE)) // prevents drained people from having their DNA changed
if (dnatype == "ui")
if (!block) //isolated block?
if (ue) //unique enzymes? yes
diff --git a/code/game/objects/items/weapons/implants/implant.dm b/code/game/objects/items/weapons/implants/implant.dm
index 1f19f4ca582..7770fcad70a 100644
--- a/code/game/objects/items/weapons/implants/implant.dm
+++ b/code/game/objects/items/weapons/implants/implant.dm
@@ -211,6 +211,7 @@ the implant may become unstable and either pre-maturely inject the subject or si
if(!istype(M, /mob/living/carbon/human)) return
var/mob/living/carbon/human/H = M
if(H.mind in ticker.mode.head_revolutionaries)
+ visible_message("\red [M] seems to resist the implant.", 1)
for(var/mob/O in (viewers(M) - M))
O.show_message("\red [M] seems to resist the implant.", 1)
M << "\red You resist the implant."
@@ -220,7 +221,6 @@ the implant may become unstable and either pre-maturely inject the subject or si
H << "\blue You feel a surge of loyalty towards NanoTrasen."
return
-
//BS12 Explosive
/obj/item/weapon/implant/explosive
name = "explosive"
diff --git a/code/game/objects/items/weapons/mops_cleaners.dm b/code/game/objects/items/weapons/mops_cleaners.dm
index 452313ceb6d..9cf664663e3 100644
--- a/code/game/objects/items/weapons/mops_cleaners.dm
+++ b/code/game/objects/items/weapons/mops_cleaners.dm
@@ -353,6 +353,10 @@ obj/item/weapon/mop/proc/clean(turf/simulated/A as turf)
..()
/obj/item/weapon/mop/afterattack(atom/A, mob/user as mob)
+ if (isnull(A))
+ user << "\red You've encountered a nasty bug. You should tell a developer what you were trying to clean with the mop."
+ return
+
if (src.reagents.total_volume < 1 || mopcount >= 5)
user << "\blue Your mop is dry!"
return
diff --git a/code/game/objects/radio/headset.dm b/code/game/objects/radio/headset.dm
index e98a94907f1..dfd8fd08690 100644
--- a/code/game/objects/radio/headset.dm
+++ b/code/game/objects/radio/headset.dm
@@ -1,141 +1,142 @@
/obj/item/device/radio/headset
- name = "radio headset"
- desc = "An updated, modular intercom that fits over the head. Takes encryption keys"
+ name = "Radio Headset"
+ desc = "An intercom that fits over the head."
icon_state = "headset"
item_state = "headset"
g_amt = 0
m_amt = 75
subspace_transmission = 1
- canhear_range = 1 // can't hear headsets from very far away
-
- var/translate_binary = 0
- var/translate_hive = 0
- var/obj/item/device/encryptionkey/keyslot1 = null
- var/obj/item/device/encryptionkey/keyslot2 = null
+ protective_temperature = 0
+ canhear_range = 1
+ var
+ translate_binary = 0
+ translate_hive = 0
+ obj/item/device/encryptionkey/keyslot1 = null
+ obj/item/device/encryptionkey/keyslot2 = null
/obj/item/device/radio/headset/New()
..()
- keyslot1 = new /obj/item/device/encryptionkey/
+ keyslot1 = new /obj/item/device/encryptionkey
recalculateChannels()
/obj/item/device/radio/headset/traitor
origin_tech = "syndicate=3"
canhear_range = 0
-/obj/item/device/radio/headset/traitor/New()
- ..()
- del(keyslot1)
- keyslot1 = new /obj/item/device/encryptionkey/traitor
- recalculateChannels()
+
+ New()
+ ..()
+ del(keyslot1)
+ keyslot1 = new /obj/item/device/encryptionkey/traitor
/obj/item/device/radio/headset/binary
origin_tech = "syndicate=3"
canhear_range = 0
-/obj/item/device/radio/headset/binary/New()
- ..()
- del(keyslot1)
- keyslot1 = new /obj/item/device/encryptionkey/binary
- recalculateChannels()
+
+ New()
+ ..()
+ del(keyslot1)
+ keyslot1 = new /obj/item/device/encryptionkey/binary
/obj/item/device/radio/headset/headset_sec
- name = "security radio headset"
+ name = "Security Radio Headset"
desc = "This is used by your elite security force. To access the security channel, use :s."
icon_state = "sec_headset"
item_state = "headset"
keyslot2 = new /obj/item/device/encryptionkey/headset_sec
/obj/item/device/radio/headset/headset_eng
- name = "engineering radio headset"
+ name = "Engineering Radio Headset"
desc = "When the engineers wish to chat like girls. To access the engineering channel, use :e. "
icon_state = "eng_headset"
item_state = "headset"
keyslot2 = new /obj/item/device/encryptionkey/headset_eng
/obj/item/device/radio/headset/headset_rob
- name = "robotics radio headset"
+ name = "Robotics Radio Headset"
desc = "Made specifically for the roboticists who cannot decide between departments. To access the engineering channel, use :e. For research, use :n."
icon_state = "rob_headset"
item_state = "headset"
keyslot2 = new /obj/item/device/encryptionkey/headset_rob
/obj/item/device/radio/headset/headset_med
- name = "medical radio headset"
+ name = "Medical Radio Headset"
desc = "A headset for the trained staff of the medbay. To access the medical channel, use :m."
icon_state = "med_headset"
item_state = "headset"
keyslot2 = new /obj/item/device/encryptionkey/headset_med
/obj/item/device/radio/headset/headset_sci
- name = "science radio headset"
+ name = "Science Radio Headset"
desc = "A sciency headset. Like usual. To access the science channel, use :n."
icon_state = "com_headset"
item_state = "headset"
keyslot2 = new /obj/item/device/encryptionkey/headset_sci
/obj/item/device/radio/headset/headset_medsci
- name = "medical research radio headset"
+ name = "Medical Research Radio Headset"
desc = "A headset that is a result of the mating between medical and science. To access the medical channel, use :m. For science, use :n."
icon_state = "med_headset"
item_state = "headset"
keyslot2 = new /obj/item/device/encryptionkey/headset_medsci
/obj/item/device/radio/headset/headset_com
- name = "command radio headset"
+ name = "Command Radio Headset"
desc = "A headset with a commanding channel. To access the command channel, use :c."
icon_state = "com_headset"
item_state = "headset"
keyslot2 = new /obj/item/device/encryptionkey/headset_com
/obj/item/device/radio/headset/heads/captain
- name = "captain's headset"
+ name = "Captain's Headset"
desc = "The headset of the boss. Channels are as follows: :c - command, :s - security, :e - engineering, :d - mining, :q - cargo, :m - medical, :n - science."
icon_state = "com_headset"
item_state = "headset"
keyslot2 = new /obj/item/device/encryptionkey/heads/captain
/obj/item/device/radio/headset/heads/rd
- name = "research director's deadset"
+ name = "Research Director's Headset"
desc = "Headset of the researching God. To access the science channel, use :n. For command, use :c."
icon_state = "com_headset"
item_state = "headset"
keyslot2 = new /obj/item/device/encryptionkey/heads/rd
/obj/item/device/radio/headset/heads/hos
- name = "head of security's headset"
+ name = "Head of Security's Headset"
desc = "The headset of the man who protects your worthless lifes. To access the security channel, use :s. For command, use :c."
icon_state = "com_headset"
item_state = "headset"
keyslot2 = new /obj/item/device/encryptionkey/heads/hos
/obj/item/device/radio/headset/heads/ce
- name = "chief engineer's headset"
+ name = "Chief Engineer's Headset"
desc = "The headset of the guy who is in charge of morons. To access the engineering channel, use :e. For command, use :c."
icon_state = "com_headset"
item_state = "headset"
keyslot2 = new /obj/item/device/encryptionkey/heads/ce
/obj/item/device/radio/headset/heads/cmo
- name = "chief medical officer's headset"
+ name = "Chief Medical Officer's Headset"
desc = "The headset of the highly trained medical chief. To access the medical channel, use :m. For command, use :c."
icon_state = "com_headset"
item_state = "headset"
keyslot2 = new /obj/item/device/encryptionkey/heads/cmo
/obj/item/device/radio/headset/heads/hop
- name = "head of personnel's headset"
+ name = "Head of Personnel's Headset"
desc = "The headset of the guy who will one day be captain. Channels are as follows: :c - command, :s - security, :q - cargo, :d - mining."
icon_state = "com_headset"
item_state = "headset"
keyslot2 = new /obj/item/device/encryptionkey/heads/hop
/obj/item/device/radio/headset/headset_mine
- name = "mining radio headset"
+ name = "Mining Radio Headset"
desc = "Headset used by miners. How useless. To access the mining channel, use :d."
icon_state = "mine_headset"
item_state = "headset"
keyslot2 = new /obj/item/device/encryptionkey/headset_mine
/obj/item/device/radio/headset/heads/qm
- name = "quartermaster's headset"
+ name = "Quartermaster's Headset"
desc = "The headset of the man who control your toiletpaper supply. To access the cargo channel, use :q. For mining, use :d."
icon_state = "cargo_headset"
item_state = "headset"
@@ -153,7 +154,7 @@
keyslot2 = new /obj/item/device/encryptionkey/ert
/obj/item/device/radio/headset/headset_cargo
- name = "cargo radio headset"
+ name = "Cargo Radio Headset"
desc = "Headset used by the QM's slaves. To access the cargo channel, use :q."
icon_state = "cargo_headset"
item_state = "headset"
@@ -162,32 +163,17 @@
/obj/item/device/radio/headset/attackby(obj/item/weapon/W as obj, mob/user as mob)
// ..()
user.machine = src
- if (!( istype(W, /obj/item/weapon/screwdriver) || (istype(W, /obj/item/device/encryptionkey/ ))))
+ if (!istype(W, /obj/item/weapon/screwdriver) && !istype(W, /obj/item/device/encryptionkey/))
return
if(istype(W, /obj/item/weapon/screwdriver))
if(keyslot1 || keyslot2)
-
- for(var/ch_name in channels)
- radio_controller.remove_object(src, radiochannels[ch_name])
- secure_radio_connections[ch_name] = null
-
-
if(keyslot1)
- var/turf/T = get_turf(user)
- if(T)
- keyslot1.loc = T
- keyslot1 = null
-
-
+ user.put_in_hands(keyslot1)
if(keyslot2)
- var/turf/T = get_turf(user)
- if(T)
- keyslot2.loc = T
- keyslot2 = null
-
+ user.put_in_hands(keyslot2)
recalculateChannels()
user << "You pop out the encryption keys in the headset!"
@@ -210,9 +196,7 @@
W.loc = src
keyslot2 = W
-
recalculateChannels()
-
return
@@ -220,13 +204,10 @@
src.channels = list()
src.translate_binary = 0
src.translate_hive = 0
+ var/temp_channels = list()
if(keyslot1)
- for(var/ch_name in keyslot1.channels)
- if(ch_name in src.channels)
- continue
- src.channels += ch_name
- src.channels[ch_name] = keyslot1.channels[ch_name]
+ temp_channels += keyslot1.channels
if(keyslot1.translate_binary)
src.translate_binary = 1
@@ -235,11 +216,7 @@
src.translate_hive = 1
if(keyslot2)
- for(var/ch_name in keyslot2.channels)
- if(ch_name in src.channels)
- continue
- src.channels += ch_name
- src.channels[ch_name] = keyslot2.channels[ch_name]
+ temp_channels += keyslot2.channels
if(keyslot2.translate_binary)
src.translate_binary = 1
@@ -247,14 +224,13 @@
if(keyslot2.translate_hive)
src.translate_hive = 1
+ config(temp_channels)
for (var/ch_name in channels)
if(!radio_controller)
sleep(30) // Waiting for the radio_controller to be created.
if(!radio_controller)
- src.name = "broken radio headset"
+ src.name = "Broken Radio Headset"
return
- secure_radio_connections[ch_name] = radio_controller.add_object(src, radiochannels[ch_name], RADIO_CHAT)
-
return
\ No newline at end of file
diff --git a/code/game/objects/stool.dm b/code/game/objects/stool.dm
index 7e628afa744..3fb7bf794d3 100644
--- a/code/game/objects/stool.dm
+++ b/code/game/objects/stool.dm
@@ -31,7 +31,7 @@
var/obj/structure/stool/bed/chair/e_chair/E = new /obj/structure/stool/bed/chair/e_chair(src.loc)
playsound(src.loc, 'Deconstruct.ogg', 50, 1)
E.dir = src.dir
- E.part = W
+ E.part1 = W
W.loc = E
W.master = E
user.u_equip(W)
diff --git a/code/game/objects/storage/storage.dm b/code/game/objects/storage/storage.dm
index 60c5395ed5e..a43a1d6e6eb 100644
--- a/code/game/objects/storage/storage.dm
+++ b/code/game/objects/storage/storage.dm
@@ -315,7 +315,7 @@
/obj/item/weapon/storage/box/syndicate/New()
..()
- switch (pickweight(list("bloodyspai" = 1, "stealth" = 1, "screwed" = 1, "guns" = 1, "murder" = 1, "freedom" = 1)))
+ switch (pickweight(list("bloodyspai" = 1, "stealth" = 1, "screwed" = 1, "guns" = 1, "freedom" = 1)))
if ("bloodyspai")
new /obj/item/clothing/under/chameleon(src)
new /obj/item/clothing/mask/gas/voice(src)
@@ -344,12 +344,6 @@
new /obj/item/weapon/plastique(src)
return
- if ("murder")
- new /obj/item/weapon/melee/energy/sword(src)
- new /obj/item/clothing/glasses/thermal(src)
- new /obj/item/weapon/card/emag(src)
- return
-
if("freedom")
var/obj/item/weapon/implanter/O = new /obj/item/weapon/implanter(src)
O.imp = new /obj/item/weapon/implant/freedom(O)
diff --git a/code/game/topic.dm b/code/game/topic.dm
index 70aa5cb2ea3..f60ec272c91 100644
--- a/code/game/topic.dm
+++ b/code/game/topic.dm
@@ -21,6 +21,8 @@
s["player[n]"] = "[C.key]"
else
s["player[n]"] = "[C.fakekey]"
+ else
+ s["player[n]"] = "[C.key]"
s["players"] = n
s["end"] = "#end"
return list2params(s)
\ No newline at end of file
diff --git a/code/game/verbs/who.dm b/code/game/verbs/who.dm
index 383aed92dc1..d2bc6e33c57 100644
--- a/code/game/verbs/who.dm
+++ b/code/game/verbs/who.dm
@@ -35,7 +35,7 @@
else if(!M.client.stealth && (M.client.holder.level != -3))
usr << "\t[pick(nobles)] [M.client]"
-var/list/nobles = list("Baron","Bookkeeper","Captain of the Guard","Chief medical dwarf","Count","Dungeon master","Duke","General","Mayor","Outpost liaison","Sheriff","Champion")
+var/list/nobles = list("Baron","Bookkeeper","Captain of the Guard","Chief Medical Dwarf","Count","Dungeon Master","Duke","General","Mayor","Outpost Liaison","Sheriff","Champion")
/client/verb/active_players()
set category = "OOC"
diff --git a/code/modules/chemical/Chemistry-Tools.dm b/code/modules/chemical/Chemistry-Tools.dm
index f581b91f6e8..23bcf7c88aa 100644
--- a/code/modules/chemical/Chemistry-Tools.dm
+++ b/code/modules/chemical/Chemistry-Tools.dm
@@ -966,7 +966,7 @@
if(!T.dna)
usr << "You are unable to locate any blood. (To be specific, your target seems to be missing their DNA datum)"
return
- if(T.mutations & NOCLONE) //target done been et, no more blood in him
+ if(T.mutations2 & NOCLONE) //target done been et, no more blood in him
user << "\red You are unable to locate any blood."
return
B.holder = src
@@ -2938,12 +2938,12 @@
reagents.add_reagent("toxin", 50)
/obj/item/weapon/reagent_containers/pill/cyanide
- name = "Cyanide pill"
+ name = "Suicide pill"
desc = "Don't swallow this."
icon_state = "pill5"
New()
..()
- reagents.add_reagent("cyanide", 50)
+ reagents.add_reagent("chloralhydrate", 100)
/obj/item/weapon/reagent_containers/pill/adminordrazine
name = "Adminordrazine pill"
diff --git a/code/modules/mob/living/carbon/human/death.dm b/code/modules/mob/living/carbon/human/death.dm
index b08d24d45c0..7aac84a9b57 100644
--- a/code/modules/mob/living/carbon/human/death.dm
+++ b/code/modules/mob/living/carbon/human/death.dm
@@ -93,5 +93,5 @@
/mob/living/carbon/human/proc/Drain()
ChangeToHusk()
- mutations |= NOCLONE
+ mutations2 |= NOCLONE
return
\ No newline at end of file
diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm
index 58cff9a6138..78a3c7f2b8b 100644
--- a/code/modules/mob/living/carbon/human/examine.dm
+++ b/code/modules/mob/living/carbon/human/examine.dm
@@ -89,24 +89,24 @@
if (src.wear_id)
var/id
-// var/photo = 0
+ var/photo = 0
if(istype(src:wear_id, /obj/item/device/pda))
var/obj/item/device/pda/pda = src:wear_id
id = pda.owner
else
id = src.wear_id.registered_name
-// if (src.wear_id.PHOTO)
-// photo = 1
+ if (src.wear_id.PHOTO)
+ photo = 1
if (id != src.real_name && in_range(src, usr))
-// if (photo)
-// usr << "\red [src.name] is wearing \icon[src.wear_id] [src.wear_id.name] with a photo yet doesn't seem to be that person!!!"
-// else
- usr << "\red [src.name] is wearing \icon[src.wear_id] [src.wear_id.name] yet doesn't seem to be that person!!!"
+ if (photo)
+ usr << "\red [src.name] is wearing \icon[src.wear_id] [src.wear_id.name] with a photo yet doesn't seem to be that person!!!"
+ else
+ usr << "\red [src.name] is wearing \icon[src.wear_id] [src.wear_id.name] yet doesn't seem to be that person!!!"
else
-// if (photo)
-// usr << "\blue [src.name] is wearing \icon[src.wear_id] [src.wear_id.name] with a photo."
-// else
- usr << "\blue [src.name] is wearing \icon[src.wear_id] [src.wear_id.name]."
+ if (photo)
+ usr << "\blue [src.name] is wearing \icon[src.wear_id] [src.wear_id.name] with a photo."
+ else
+ usr << "\blue [src.name] is wearing \icon[src.wear_id] [src.wear_id.name]."
if (src.is_jittery)
@@ -207,4 +207,4 @@
print_flavor_text()
- usr << "\blue *---------*"
+ usr << "\blue *---------*"
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index 97c083e5697..03d4081d01d 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -1533,7 +1533,7 @@
del(src)
return
if("internal")
- if ((!( (istype(target.wear_mask, /obj/item/clothing/mask) && istype(target.back, /obj/item/weapon/tank) && !( target.internal )) ) && !( target.internal )))
+ if ((!( (istype(target.wear_mask, /obj/item/clothing/mask) && (istype(target.back, /obj/item/weapon/tank) || istype(target.belt, /obj/item/weapon/tank) || istype(target.s_store, /obj/item/weapon/tank)) && !( target.internal )) ) && !( target.internal )))
//SN src = null
del(src)
return
@@ -1702,7 +1702,7 @@
return
message = text("\red [] is trying to empty []'s pockets!!", source, target)
if("CPR")
- if (target.cpr_time >= world.time + 3)
+ if (target.cpr_time + 3 >= world.time)
//SN src = null
del(src)
return
@@ -2163,7 +2163,7 @@ It can still be worn/put on as normal.
target.handcuffed = item
item.loc = target
if("CPR")
- if (target.cpr_time >= world.time + 30)
+ if (target.cpr_time + 30 >= world.time)
//SN src = null
del(src)
return
@@ -2218,7 +2218,7 @@ It can still be worn/put on as normal.
W.loc = target.loc
W.dropped(target)
W.layer = initial(W.layer)
- W.add_fingerprint(source)
+ W.add_fingerprint(source)
if (target.r_store)
var/obj/item/W = target.r_store
target.u_equip(W)
@@ -2228,7 +2228,7 @@ It can still be worn/put on as normal.
W.loc = target.loc
W.dropped(target)
W.layer = initial(W.layer)
- W.add_fingerprint(source)
+ W.add_fingerprint(source)
if("internal")
if (target.internal)
target.internal.add_fingerprint(source)
@@ -2239,11 +2239,11 @@ It can still be worn/put on as normal.
if (!( istype(target.wear_mask, /obj/item/clothing/mask) ))
return
else
- if (istype(target.back, /obj/item/weapon/tank))
+ if (istype(target.back, /obj/item/weapon/tank) && (internalloc == "back" || !internalloc))
target.internal = target.back
- else if (istype(target.s_store, /obj/item/weapon/tank))
+ else if (istype(target.s_store, /obj/item/weapon/tank) && (internalloc == "store" || !internalloc))
target.internal = target.s_store
- else if (istype(target.belt, /obj/item/weapon/tank))
+ else if (istype(target.belt, /obj/item/weapon/tank) && (internalloc == "belt" || !internalloc))
target.internal = target.belt
if (target.internal)
for(var/mob/M in viewers(target, 1))
@@ -2284,12 +2284,12 @@ It can still be worn/put on as normal.
Right Ear: [(r_ear ? r_ear : "Nothing")]
Head: [(head ? head : "Nothing")]
Shoes: [(shoes ? shoes : "Nothing")]
-
Belt: [(belt ? belt : "Nothing")]
+
Belt: [(belt ? belt : "Nothing")] [(istype(wear_mask, /obj/item/clothing/mask) && istype(belt, /obj/item/weapon/tank) && !( internal )) ? text(" Set Internal", src) : ""]
Uniform: [(w_uniform ? w_uniform : "Nothing")]
(Exo)Suit: [(wear_suit ? wear_suit : "Nothing")]
-
Back: [(back ? back : "Nothing")] [((istype(wear_mask, /obj/item/clothing/mask) && istype(back, /obj/item/weapon/tank) && !( internal )) ? text(" Set Internal", src) : "")]
+
Back: [(back ? back : "Nothing")][(istype(wear_mask, /obj/item/clothing/mask) && istype(back, /obj/item/weapon/tank) && !( internal )) ? text(" Set Internal", src) : ""]
ID: [(wear_id ? wear_id : "Nothing")]
-
Suit Storage: [(s_store ? s_store : "Nothing")]
+
Suit Storage: [(s_store ? s_store : "Nothing")] [(istype(wear_mask, /obj/item/clothing/mask) && istype(s_store, /obj/item/weapon/tank) && !( internal )) ? text(" Set Internal", src) : ""]
[(handcuffed ? text("Handcuffed") : text("Not Handcuffed"))]
[(internal ? text("Remove Internal") : "")]
Empty Pockets
diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm
index e01f491dc25..afe1fe7f287 100644
--- a/code/modules/mob/living/carbon/human/life.dm
+++ b/code/modules/mob/living/carbon/human/life.dm
@@ -514,7 +514,7 @@
adjustOxyLoss(3) // Lets hurt em a little, let them know we mean business
if(world.time - co2overloadtime > 300) // They've been in here 30s now, lets start to kill them for their own good!
adjustOxyLoss(8)
- if(prob(20)) // Lets give them some chance to know somethings not right though I guess.
+ if(prob(20) && isbreathing) // Lets give them some chance to know somethings not right though I guess.
spawn(0) emote("cough")
else
diff --git a/code/modules/mob/new_player/skill.dm b/code/modules/mob/new_player/skill.dm
index fe4d5c37987..14cff71aa6e 100644
--- a/code/modules/mob/new_player/skill.dm
+++ b/code/modules/mob/new_player/skill.dm
@@ -169,24 +169,27 @@ proc/setup_skills()
mob/living/carbon/human/proc/GetSkillClass(points)
// skill classes describe how your character compares in total points
+ var/original_points = points
+ points -= min(round((age - 20) / 2.5), 4) // every 2.5 years after 20, one extra skillpoint
+ if(age > 30)
+ points -= round((age - 30) / 5) // every 5 years after 30, one extra skillpoint
+ if(original_points > 0 && points <= 0) points = 1
switch(points)
if(0)
return "Unconfigured"
- if(1 to 3)
- return "Talentless"
+ if(1 to 2)
+ return "Terrifying"
if(4 to 6)
return "Below Average"
- if(7 to 9)
+ if(7 to 10)
return "Average"
- if(10 to 12)
- return "Talented"
- if(13 to 15)
- return "Extremely Talented"
- if(16 to 18)
+ if(11 to 14)
+ return "Above Average"
+ if(15 to 18)
+ return "Exceptional"
+ if(19 to 24)
return "Genius"
- if(19 to 21)
- return "True Genius"
- if(22 to 1000)
+ if(24 to 1000)
return "God"
@@ -202,22 +205,26 @@ proc/show_skill_window(var/mob/user, var/mob/living/carbon/human/M)
var/HTML = "
| [V] | |||||||||
|---|---|---|---|---|---|---|---|---|---|
| [V]" + HTML += " | |||||||||
| [S.name] | " - HTML += "\[Layman\] | " - HTML += "\[Basic\] | " - HTML += "\[Adept\] | " - HTML += "\[Expert\] | " + HTML += "\[Untrained\] | " + // secondary skills don't have an amateur level + if(S.secondary) + HTML += "" + else + HTML += " | \[Amateur\] | " + HTML += "\[Trained\] | " + HTML += "\[Professional\] | " HTML += "