Merge branch 'bleeding-edge-freeze' of https://github.com/Baystation12/Baystation12 into bleeding-edge-freeze

Conflicts:
	html/changelog.html
	maps/tgstation.2.1.0.0.1.dmm
This commit is contained in:
Chinsky
2013-06-08 07:59:57 +04:00
50 changed files with 566 additions and 185 deletions

View File

@@ -53,6 +53,9 @@
#define FILE_DIR "sound/voice" #define FILE_DIR "sound/voice"
#define FILE_DIR "sound/voice/Serithi" #define FILE_DIR "sound/voice/Serithi"
#define FILE_DIR "sound/weapons" #define FILE_DIR "sound/weapons"
#define FILE_DIR "tools"
#define FILE_DIR "tools/AddToChangelog"
#define FILE_DIR "tools/AddToChangelog/AddToChangelog"
// END_FILE_DIR // END_FILE_DIR
// BEGIN_PREFERENCES // BEGIN_PREFERENCES
#define DEBUG #define DEBUG
@@ -255,6 +258,8 @@
#include "code\game\gamemodes\nuclear\pinpointer.dm" #include "code\game\gamemodes\nuclear\pinpointer.dm"
#include "code\game\gamemodes\revolution\revolution.dm" #include "code\game\gamemodes\revolution\revolution.dm"
#include "code\game\gamemodes\revolution\rp_revolution.dm" #include "code\game\gamemodes\revolution\rp_revolution.dm"
#include "code\game\gamemodes\sandbox\h_sandbox.dm"
#include "code\game\gamemodes\sandbox\sandbox.dm"
#include "code\game\gamemodes\traitor\traitor.dm" #include "code\game\gamemodes\traitor\traitor.dm"
#include "code\game\gamemodes\wizard\rightandwrong.dm" #include "code\game\gamemodes\wizard\rightandwrong.dm"
#include "code\game\gamemodes\wizard\soulstone.dm" #include "code\game\gamemodes\wizard\soulstone.dm"

View File

@@ -0,0 +1,197 @@
// emergency response teams
// work in progress
var/const/members_possible = 5
var/sent_emergency_team = 0
/client/proc/response_team()
set name = "Dispatch Emergency Response Team"
set category = "Special Verbs"
set desc = "Send an emergency response team to the station"
if(!holder)
usr << "\red Only administrators may use this command."
return
if(!ticker)
usr << "\red The game hasn't started yet!"
return
if(ticker.current_state == GAME_STATE_PREGAME)
usr << "\red The round hasn't started yet!"
return
if(sent_emergency_team == 1)
usr << "\red Central Command has already dispatched an emergency response team!"
return
if(alert("Do you want to dispatch an Emergency Response Team?",,"Yes","No") != "Yes")
return
if(get_security_level() != "red") // Allow admins to reconsider if the alert level isn't Red
switch(alert("The station has not entered code red recently. Do you still want to dispatch a response team?",,"Yes","No"))
if("No")
return
var/situation = null
while(!situation)
situation = copytext(sanitize(input(src, "Please specify the mission the emergency response team will undertake.", "Specify Mission", "")),1,MAX_MESSAGE_LEN)
if(!situation)
if(alert("You haven't specified a mission. Exit the setup process?",,"No","Yes")=="Yes")
return
if(sent_emergency_team)
usr << "\red Looks like somebody beat you to it!"
return
sent_emergency_team = 1
message_admins("[key_name_admin(usr)] has dispatched an Emergency Response Team.", 1)
log_admin("[key_name(usr)] used Dispatch Response Team.")
var/member_number = members_possible
var/leader_selected = 0
// Shamelessly stolen nuke code
var/nuke_code
var/temp_code
for(var/obj/machinery/nuclearbomb/N in world)
temp_code = text2num(N.r_code)
if(temp_code)
nuke_code = N.r_code
break
/* var/list/candidates = list() // ghosts who can be picked
var/list/members = list() // ghosts who have been picked
for(var/mob/dead/observer/G in player_list)
if(!G.client.holder && !G.client.is_afk())
if(!(G.mind && G.mind.current && G.mind.current.stat != DEAD))
candidates += G.key
for(var/i=members_possible,(i>0&&candidates.len), i--)
var/candidate = input("Choose characters to spawn as response team members. This will go on until there are no more ghosts to pick from or until all slots are full.", "Active Players") as null|anything in candidates */
// I tried doing this differently. Ghosts get a pop-up box similar to pAIs and one-click-antag
// Biggest diff here is in how the candidates list is updated
alert(usr, "Active ghosts are currently being given a chance to be considered to join the emergency response team. Please wait about 30 seconds.") // There's probably a better way to do this, with a fancy count-down timer or something
var/list/candidates = list()
var/list/members = list()
var/time_passed = world.time
for(var/mob/dead/observer/G in player_list)
if(!jobban_isbanned(G, "Syndicate") || !jobban_isbanned(G, "Emergency Response Team") || !jobban_isbanned(G, "Security Officer"))
spawn(0)
switch(alert(G, "Do you want to be considered for the Emergency Response Team? Please answer in 30 seconds!",,"Yes","No"))
if("Yes")
if((world.time-time_passed)>300)
return
candidates += G.key
if("No")
return
else
return
sleep(300)
for(var/i=members_possible,(i>0&&candidates.len), i--) // The rest of the choosing process is just an input with a list of candidates on it
var/chosen = input("Time's up! Choose characters to spawn as reponse team members. This will go on until there are no more ghosts to pick from or until all slots are full.", "Considered Players") as null|anything in candidates
candidates -= chosen
members += chosen
command_alert("Sensors indicate that [station_name()] has entered Code Red and is in need of assistance. We will prepare and dispatch an emergency response team to deal with the situation.", "NMV Icarus Command")
for(var/obj/effect/landmark/L in world)
if(L.name == "Response Team")
leader_selected = member_number == 1?1:0 // The last person selected will be the leader
var/mob/living/carbon/human/new_member = create_response_team(L, leader_selected)
new_member.age = !leader_selected ? rand(23,35) : rand(35,45)
if(members.len)
new_member.key = pick(members)
members -= new_member.key
if(!new_member.key) // It works ok? sort of
del(new_member)
break
switch(alert(new_member, "You are an Emergency Response Team member! Are you a boy or a girl?",,"Male","Female"))
if("Male")
new_member.gender = MALE
if("Female")
new_member.gender = FEMALE
var/new_name = input(new_member, "...Erm, what was your name again?", "Choose your name") as text
if(!new_name)
new_member.real_name = "Agent [pick("Red","Yellow","Orange","Silver","Gold", "Pink", "Purple", "Rainbow")]" // Choose a "random" agent name
new_member.name = usr.real_name
else
new_member.real_name = new_name
new_member.name = new_name
new_member.dna.ready_dna(new_member)
new_member.update_body(1)
new_member.mind_initialize()
new_member.mind.assigned_role = "Emergency Response Team"
new_member.mind.special_role = "Emergency Response Team"
ticker.mode.traitors += new_member.mind // ERTs will show up at the end of the round on the "traitor" list
new_member << "\blue You are the <b>Emergency Response Team[!leader_selected?"!</b>":" Leader!</b>"] \nAs a response team [!leader_selected?"member":"<b>leader</b>"] you answer directly to [!leader_selected?"your team leader.":"Central Command."] \nYou have been deployed by NanoTrasen Central Command in Tau Ceti to resolve a Code Red alert aboard [station_name()], and have been provided with the following instructions and information regarding your mission: \red [situation]"
new_member.mind.store_memory("<b>Mission Parameters:</b> \red [situation].")
if(leader_selected)
new_member << "\red The Nuclear Authentication Code is: <b> [nuke_code]</b>. You are instructed not to detonate the nuclear device aboard [station_name()] unless <u>absolutely necessary</u>."
new_member.mind.store_memory("<b>Nuclear Authentication Code:</b> \red [nuke_code]")
new_member.equip_response_team(leader_selected) // Start equipping them
member_number--
return 1
// Mob creation
/client/proc/create_response_team(obj/spawn_location, leader_selected = 0)
var/mob/living/carbon/human/new_member = new(spawn_location.loc)
return new_member
// Equip mob
/mob/living/carbon/human/proc/equip_response_team(leader_selected = 0)
// Headset
equip_to_slot_or_del(new /obj/item/device/radio/headset/ert(src), slot_ears)
// Uniform
equip_to_slot_or_del(new /obj/item/clothing/under/rank/centcom_officer(src), slot_w_uniform)
equip_to_slot_or_del(new /obj/item/clothing/shoes/swat(src), slot_shoes)
equip_to_slot_or_del(new /obj/item/clothing/gloves/swat(src), slot_gloves)
equip_to_slot_or_del(new /obj/item/weapon/gun/energy/gun(src), slot_belt)
// Glasses
equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses/sechud(src), slot_glasses)
// Backpack
equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/security(src), slot_back)
// Put stuff into their backpacks
equip_to_slot_or_del(new /obj/item/weapon/storage/box/engineer(src), slot_in_backpack)
equip_to_slot_or_del(new /obj/item/weapon/storage/firstaid(src), slot_in_backpack) // Not sure about this
// Loyalty implants
var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(src)
L.imp_in = src
L.implanted = 1
// ID cards
var/obj/item/weapon/card/id/E = new(src)
E.name = "[real_name]'s ID Card (Emergency Response Team)"
E.icon_state = "centcom"
E.access = get_all_accesses() // ERTs can go everywhere on the station
if(leader_selected)
E.name = "[real_name]'s ID Card (Emergency Response Team Leader)"
E.access += get_all_centcom_access()
E.assignment = "Emergency Response Team Leader"
else
E.access += list(access_cent_general, access_cent_specops, access_cent_living, access_cent_storage)
E.assignment = "Emergency Response Team"
E.registered_name = real_name
equip_to_slot_or_del(E, slot_wear_id)
return 1

View File

@@ -122,8 +122,10 @@ proc/get_id_photo(var/mob/living/carbon/human/H)
icobase = 'icons/mob/human_races/r_lizard.dmi' icobase = 'icons/mob/human_races/r_lizard.dmi'
if("Skrell") if("Skrell")
icobase = 'icons/mob/human_races/r_skrell.dmi' icobase = 'icons/mob/human_races/r_skrell.dmi'
if("Vox") if("Vox")
icobase = 'icons/mob/human_races/r_vox.dmi' icobase = 'icons/mob/human_races/r_vox.dmi'
else else
icobase = 'icons/mob/human_races/r_human.dmi' icobase = 'icons/mob/human_races/r_human.dmi'

View File

@@ -183,24 +183,85 @@ var/global/list/obj/item/device/pda/PDAs = list()
default_cartridge = /obj/item/weapon/cartridge/medical default_cartridge = /obj/item/weapon/cartridge/medical
icon_state = "pda-gene" icon_state = "pda-gene"
// Special AI/pAI PDAs that cannot explode. // Special AI/pAI PDAs that cannot explode.
/obj/item/device/pda/ai /obj/item/device/pda/ai
icon_state = "NONE" icon_state = "NONE"
ttone = "data" ttone = "data"
detonate = 0 detonate = 0
/obj/item/device/pda/ai/proc/set_name_and_job(newname as text, newjob as text)
owner = newname
ownjob = newjob
name = newname + " (" + ownjob + ")"
//AI verb and proc for sending PDA messages.
/obj/item/device/pda/ai/verb/cmd_send_pdamesg()
set category = "AI IM"
set name = "Send Message"
set src in usr
if(usr.stat == 2)
usr << "You can't send PDA messages because you are dead!"
return
var/list/plist = available_pdas()
if (plist)
var/c = input(usr, "Please select a PDA") as null|anything in sortList(plist)
if (!c) // if the user hasn't selected a PDA file we can't send a message
return
var/selected = plist[c]
create_message(usr, selected)
/obj/item/device/pda/ai/verb/cmd_toggle_pda_receiver()
set category = "AI IM"
set name = "Toggle Sender/Receiver"
set src in usr
if(usr.stat == 2)
usr << "You can't do that because you are dead!"
return
toff = !toff
usr << "<span class='notice'>PDA sender/receiver toggled [(toff ? "Off" : "On")]!</span>"
/obj/item/device/pda/ai/verb/cmd_toggle_pda_silent()
set category = "AI IM"
set name = "Toggle Ringer"
set src in usr
if(usr.stat == 2)
usr << "You can't do that because you are dead!"
return
silent=!silent
usr << "<span class='notice'>PDA ringer toggled [(silent ? "Off" : "On")]!</span>"
/obj/item/device/pda/ai/verb/cmd_show_message_log()
set category = "AI IM"
set name = "Show Message Log"
set src in usr
if(usr.stat == 2)
usr << "You can't do that because you are dead!"
return
var/HTML = "<html><head><title>AI PDA Message Log</title></head><body>[tnote]</body></html>"
usr << browse(HTML, "window=log;size=400x444;border=1;can_resize=1;can_close=1;can_minimize=0")
/obj/item/device/pda/ai/can_use() /obj/item/device/pda/ai/can_use()
return 1 return 1
/obj/item/device/pda/ai/attack_self(mob/user as mob) /obj/item/device/pda/ai/attack_self(mob/user as mob)
if ((honkamt > 0) && (prob(60)))//For clown virus. if ((honkamt > 0) && (prob(60)))//For clown virus.
honkamt-- honkamt--
playsound(loc, 'sound/items/bikehorn.ogg', 30, 1) playsound(loc, 'sound/items/bikehorn.ogg', 30, 1)
return return
/obj/item/device/pda/ai/pai /obj/item/device/pda/ai/pai
ttone = "assist" ttone = "assist"
/* /*
* The Actual PDA * The Actual PDA
*/ */
@@ -832,6 +893,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
else else
usr << "<span class='notice'>You cannot do this while restrained.</span>" usr << "<span class='notice'>You cannot do this while restrained.</span>"
/obj/item/device/pda/proc/id_check(mob/user as mob, choice as num)//To check for IDs; 1 for in-pda use, 2 for out of pda use. /obj/item/device/pda/proc/id_check(mob/user as mob, choice as num)//To check for IDs; 1 for in-pda use, 2 for out of pda use.
if(choice == 1) if(choice == 1)
if (id) if (id)
@@ -1071,21 +1133,12 @@ var/global/list/obj/item/device/pda/PDAs = list()
M.Stun(8) M.Stun(8)
M.Weaken(5) M.Weaken(5)
/obj/item/device/pda/proc/available_pdas()
//AI verb and proc for sending PDA messages.
/mob/living/silicon/ai/verb/cmd_send_pdamesg()
set category = "AI Commands"
set name = "PDA - Send Message"
var/list/names = list() var/list/names = list()
var/list/plist = list() var/list/plist = list()
var/list/namecounts = list() var/list/namecounts = list()
if(usr.stat == 2) if (toff)
usr << "You can't send PDA messages because you are dead!"
return
if(src.aiPDA.toff)
usr << "Turn on your receiver in order to send messages." usr << "Turn on your receiver in order to send messages."
return return
@@ -1098,8 +1151,6 @@ var/global/list/obj/item/device/pda/PDAs = list()
continue continue
else if (P.toff) else if (P.toff)
continue continue
else if (P == src.aiPDA)
continue
var/name = P.owner var/name = P.owner
if (name in names) if (name in names)
@@ -1110,52 +1161,8 @@ var/global/list/obj/item/device/pda/PDAs = list()
namecounts[name] = 1 namecounts[name] = 1
plist[text("[name]")] = P plist[text("[name]")] = P
return plist
var/c = input(usr, "Please select a PDA") as null|anything in sortList(plist)
if (!c)
return
var/selected = plist[c]
src.aiPDA.create_message(src, selected)
/mob/living/silicon/ai/verb/cmd_toggle_pda_receiver()
set category = "AI Commands"
set name = "PDA - Toggle Sender/Receiver"
if(usr.stat == 2)
usr << "You can't do that because you are dead!"
return
if(!isnull(aiPDA))
aiPDA.toff = !aiPDA.toff
usr << "<span class='notice'>PDA sender/receiver toggled [(aiPDA.toff ? "Off" : "On")]!</span>"
else
usr << "You do not have a PDA. You should make an issue report about this."
/mob/living/silicon/ai/verb/cmd_toggle_pda_silent()
set category = "AI Commands"
set name = "PDA - Toggle Ringer"
if(usr.stat == 2)
usr << "You can't do that because you are dead!"
return
if(!isnull(aiPDA))
//0
aiPDA.silent = !aiPDA.silent
usr << "<span class='notice'>PDA ringer toggled [(aiPDA.silent ? "Off" : "On")]!</span>"
else
usr << "You do not have a PDA. You should make an issue report about this."
/mob/living/silicon/ai/verb/cmd_show_message_log()
set category = "AI Commands"
set name = "PDA - Show Message Log"
if(usr.stat == 2)
usr << "You can't do that because you are dead!"
return
if(!isnull(aiPDA))
var/HTML = "<html><head><title>AI PDA Message Log</title></head><body>[aiPDA.tnote]</body></html>"
usr << browse(HTML, "window=log;size=400x444;border=1;can_resize=1;can_close=1;can_minimize=0")
else
usr << "You do not have a PDA. You should make an issue report about this."
//Some spare PDAs in a box //Some spare PDAs in a box
/obj/item/weapon/storage/box/PDAs /obj/item/weapon/storage/box/PDAs

View File

@@ -186,7 +186,7 @@
new /obj/item/weapon/gun/energy/taser(src) new /obj/item/weapon/gun/energy/taser(src)
new /obj/item/clothing/glasses/sunglasses/sechud(src) new /obj/item/clothing/glasses/sunglasses/sechud(src)
new /obj/item/taperoll/police(src) new /obj/item/taperoll/police(src)
new /obj/item/device/hailer new /obj/item/device/hailer(src)
return return

View File

@@ -66,7 +66,10 @@ var/list/admin_verbs_admin = list(
/client/proc/toggleattacklogs, /client/proc/toggleattacklogs,
/client/proc/toggledebuglogs, /client/proc/toggledebuglogs,
/datum/admins/proc/show_skills, /datum/admins/proc/show_skills,
/client/proc/check_customitem_activity /client/proc/check_customitem_activity,
/* Currently unticked.
/client/proc/response_team
*/
) )
var/list/admin_verbs_ban = list( var/list/admin_verbs_ban = list(
/client/proc/unban_panel, /client/proc/unban_panel,

View File

@@ -88,7 +88,7 @@ BLIND // can't see anything
desc = "Comfortable-looking shoes." desc = "Comfortable-looking shoes."
gender = PLURAL //Carn: for grammarically correct text-parsing gender = PLURAL //Carn: for grammarically correct text-parsing
var/chained = 0 var/chained = 0
siemens_coefficient = 0.9
body_parts_covered = FEET body_parts_covered = FEET
slot_flags = SLOT_FEET slot_flags = SLOT_FEET
@@ -105,6 +105,7 @@ BLIND // can't see anything
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
slot_flags = SLOT_OCLOTHING slot_flags = SLOT_OCLOTHING
var/blood_overlay_type = "suit" var/blood_overlay_type = "suit"
siemens_coefficient = 0.9
//Spacesuit //Spacesuit
//Note: Everything in modules/clothing/spacesuits should have the entire suit grouped together. //Note: Everything in modules/clothing/spacesuits should have the entire suit grouped together.
@@ -120,6 +121,7 @@ BLIND // can't see anything
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
cold_protection = HEAD cold_protection = HEAD
min_cold_protection_temperature = SPACE_HELMET_MIN_COLD_PROTECITON_TEMPERATURE min_cold_protection_temperature = SPACE_HELMET_MIN_COLD_PROTECITON_TEMPERATURE
siemens_coefficient = 0.9
/obj/item/clothing/suit/space /obj/item/clothing/suit/space
name = "Space suit" name = "Space suit"
@@ -137,6 +139,7 @@ BLIND // can't see anything
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
cold_protection = UPPER_TORSO | LOWER_TORSO | LEGS | FEET | ARMS | HANDS cold_protection = UPPER_TORSO | LOWER_TORSO | LEGS | FEET | ARMS | HANDS
min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECITON_TEMPERATURE min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECITON_TEMPERATURE
siemens_coefficient = 0.9
//Under clothing //Under clothing

View File

@@ -3,7 +3,7 @@
name = "ninja gloves" name = "ninja gloves"
icon_state = "s-ninja" icon_state = "s-ninja"
item_state = "s-ninja" item_state = "s-ninja"
siemens_coefficient = 0 siemens_coefficient = 0.2
var/draining = 0 var/draining = 0
var/candrain = 0 var/candrain = 0
var/mindrain = 200 var/mindrain = 200
@@ -32,7 +32,7 @@
name = "\improper SWAT Gloves" name = "\improper SWAT Gloves"
icon_state = "black" icon_state = "black"
item_state = "swat_gl" item_state = "swat_gl"
siemens_coefficient = 0 siemens_coefficient = 0.6
permeability_coefficient = 0.05 permeability_coefficient = 0.05
cold_protection = HANDS cold_protection = HANDS
@@ -70,3 +70,4 @@
icon_state = "leather" icon_state = "leather"
item_state = "ggloves" item_state = "ggloves"
permeability_coefficient = 0.9 permeability_coefficient = 0.9
siemens_coefficient = 0.9

View File

@@ -9,7 +9,7 @@
if(C.amount >= 2) if(C.amount >= 2)
C.use(2) C.use(2)
wired = 1 wired = 1
siemens_coefficient = 1 siemens_coefficient = 3.0
user << "<span class='notice'>You wrap some wires around [src].</span>" user << "<span class='notice'>You wrap some wires around [src].</span>"
update_icon() update_icon()
else else

View File

@@ -10,6 +10,7 @@
armor = list(melee = 30, bullet = 5, laser = 20,energy = 10, bomb = 20, bio = 10, rad = 20) armor = list(melee = 30, bullet = 5, laser = 20,energy = 10, bomb = 20, bio = 10, rad = 20)
flags_inv = 0 flags_inv = 0
icon_action_button = "action_hardhat" icon_action_button = "action_hardhat"
siemens_coefficient = 0.9
attack_self(mob/user) attack_self(mob/user)
if(!isturf(user.loc)) if(!isturf(user.loc))

View File

@@ -10,7 +10,7 @@
min_cold_protection_temperature = HELMET_MIN_COLD_PROTECITON_TEMPERATURE min_cold_protection_temperature = HELMET_MIN_COLD_PROTECITON_TEMPERATURE
heat_protection = HEAD heat_protection = HEAD
max_heat_protection_temperature = HELMET_MAX_HEAT_PROTECITON_TEMPERATURE max_heat_protection_temperature = HELMET_MAX_HEAT_PROTECITON_TEMPERATURE
siemens_coefficient = 0 siemens_coefficient = 0.7
/obj/item/clothing/head/helmet/warden /obj/item/clothing/head/helmet/warden
name = "warden's hat" name = "warden's hat"
@@ -26,6 +26,7 @@
flags = FPRINT|TABLEPASS|HEADCOVERSEYES flags = FPRINT|TABLEPASS|HEADCOVERSEYES
armor = list(melee = 82, bullet = 15, laser = 5,energy = 5, bomb = 5, bio = 2, rad = 0) armor = list(melee = 82, bullet = 15, laser = 5,energy = 5, bomb = 5, bio = 2, rad = 0)
flags_inv = HIDEEARS flags_inv = HIDEEARS
siemens_coefficient = 0.7
/obj/item/clothing/head/helmet/swat /obj/item/clothing/head/helmet/swat
name = "\improper SWAT helmet" name = "\improper SWAT helmet"
@@ -37,6 +38,7 @@
flags_inv = HIDEEARS|HIDEEYES flags_inv = HIDEEARS|HIDEEYES
cold_protection = HEAD cold_protection = HEAD
min_cold_protection_temperature = SPACE_HELMET_MIN_COLD_PROTECITON_TEMPERATURE min_cold_protection_temperature = SPACE_HELMET_MIN_COLD_PROTECITON_TEMPERATURE
siemens_coefficient = 0.5
/obj/item/clothing/head/helmet/thunderdome /obj/item/clothing/head/helmet/thunderdome
name = "\improper Thunderdome helmet" name = "\improper Thunderdome helmet"

View File

@@ -7,6 +7,7 @@
item_state = "chef" item_state = "chef"
desc = "The commander in chef's head wear." desc = "The commander in chef's head wear."
flags = FPRINT | TABLEPASS flags = FPRINT | TABLEPASS
siemens_coefficient = 0.9
//Captain: This probably shouldn't be space-worthy //Captain: This probably shouldn't be space-worthy
/obj/item/clothing/head/caphat /obj/item/clothing/head/caphat
@@ -15,6 +16,7 @@
desc = "It's good being the king." desc = "It's good being the king."
flags = FPRINT|TABLEPASS flags = FPRINT|TABLEPASS
item_state = "caphat" item_state = "caphat"
siemens_coefficient = 0.9
//Captain: This probably shouldn't be space-worthy //Captain: This probably shouldn't be space-worthy
/obj/item/clothing/head/helmet/cap /obj/item/clothing/head/helmet/cap
@@ -25,6 +27,7 @@
flags_inv = 0 flags_inv = 0
cold_protection = HEAD cold_protection = HEAD
min_cold_protection_temperature = SPACE_HELMET_MIN_COLD_PROTECITON_TEMPERATURE min_cold_protection_temperature = SPACE_HELMET_MIN_COLD_PROTECITON_TEMPERATURE
siemens_coefficient = 0.9
//Chaplain //Chaplain
/obj/item/clothing/head/chaplain_hood /obj/item/clothing/head/chaplain_hood
@@ -32,6 +35,7 @@
desc = "It's hood that covers the head. It keeps you warm during the space winters." desc = "It's hood that covers the head. It keeps you warm during the space winters."
icon_state = "chaplain_hood" icon_state = "chaplain_hood"
flags = FPRINT|TABLEPASS|HEADCOVERSEYES|BLOCKHAIR flags = FPRINT|TABLEPASS|HEADCOVERSEYES|BLOCKHAIR
siemens_coefficient = 0.9
//Chaplain //Chaplain
/obj/item/clothing/head/nun_hood /obj/item/clothing/head/nun_hood
@@ -39,6 +43,7 @@
desc = "Maximum piety in this star system." desc = "Maximum piety in this star system."
icon_state = "nun_hood" icon_state = "nun_hood"
flags = FPRINT|TABLEPASS|HEADCOVERSEYES|BLOCKHAIR flags = FPRINT|TABLEPASS|HEADCOVERSEYES|BLOCKHAIR
siemens_coefficient = 0.9
//Mime //Mime
/obj/item/clothing/head/beret /obj/item/clothing/head/beret
@@ -46,6 +51,7 @@
desc = "A beret, an artists favorite headwear." desc = "A beret, an artists favorite headwear."
icon_state = "beret" icon_state = "beret"
flags = FPRINT | TABLEPASS flags = FPRINT | TABLEPASS
siemens_coefficient = 0.9
//Security //Security
/obj/item/clothing/head/beret/sec /obj/item/clothing/head/beret/sec

View File

@@ -6,6 +6,7 @@
desc = "It's good to be emperor." desc = "It's good to be emperor."
flags = FPRINT|TABLEPASS flags = FPRINT|TABLEPASS
item_state = "centhat" item_state = "centhat"
siemens_coefficient = 0.9
/obj/item/clothing/head/hairflower /obj/item/clothing/head/hairflower
name = "hair flower pin" name = "hair flower pin"
@@ -26,6 +27,7 @@
icon_state = "tophat" icon_state = "tophat"
item_state = "that" item_state = "that"
flags = FPRINT|TABLEPASS flags = FPRINT|TABLEPASS
siemens_coefficient = 0.9
/obj/item/clothing/head/redcoat /obj/item/clothing/head/redcoat
name = "redcoat's hat" name = "redcoat's hat"
@@ -45,6 +47,7 @@
icon_state = "plaguedoctor" icon_state = "plaguedoctor"
flags = FPRINT | TABLEPASS flags = FPRINT | TABLEPASS
permeability_coefficient = 0.01 permeability_coefficient = 0.01
siemens_coefficient = 0.9
/obj/item/clothing/head/hasturhood /obj/item/clothing/head/hasturhood
name = "hastur's hood" name = "hastur's hood"
@@ -57,6 +60,7 @@
desc = "It allows quick identification of trained medical personnel." desc = "It allows quick identification of trained medical personnel."
icon_state = "nursehat" icon_state = "nursehat"
flags = FPRINT|TABLEPASS flags = FPRINT|TABLEPASS
siemens_coefficient = 0.9
/obj/item/clothing/head/syndicatefake /obj/item/clothing/head/syndicatefake
name = "red space-helmet replica" name = "red space-helmet replica"
@@ -65,6 +69,7 @@
desc = "A plastic replica of a syndicate agent's space helmet, you'll look just like a real murderous syndicate agent in this! This is a toy, it is not made for use in space!" desc = "A plastic replica of a syndicate agent's space helmet, you'll look just like a real murderous syndicate agent in this! This is a toy, it is not made for use in space!"
flags = FPRINT | TABLEPASS | BLOCKHAIR flags = FPRINT | TABLEPASS | BLOCKHAIR
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
siemens_coefficient = 2.0
/obj/item/clothing/head/cueball /obj/item/clothing/head/cueball
name = "cueball helmet" name = "cueball helmet"
@@ -82,6 +87,7 @@
flags = FPRINT|TABLEPASS flags = FPRINT|TABLEPASS
flags_inv = 0 flags_inv = 0
/obj/item/clothing/head/greenbandana /obj/item/clothing/head/greenbandana
name = "green bandana" name = "green bandana"
desc = "It's a green bandana with some fine nanotech lining." desc = "It's a green bandana with some fine nanotech lining."
@@ -132,6 +138,7 @@
desc = "A working man's cap." desc = "A working man's cap."
icon_state = "flat_cap" icon_state = "flat_cap"
item_state = "detective" item_state = "detective"
siemens_coefficient = 0.9
/obj/item/clothing/head/pirate /obj/item/clothing/head/pirate
name = "pirate hat" name = "pirate hat"
@@ -210,6 +217,7 @@
icon_state = "witch" icon_state = "witch"
item_state = "witch" item_state = "witch"
flags = FPRINT | TABLEPASS | BLOCKHAIR flags = FPRINT | TABLEPASS | BLOCKHAIR
siemens_coefficient = 2.0
/obj/item/clothing/head/chicken /obj/item/clothing/head/chicken
name = "chicken suit head" name = "chicken suit head"
@@ -217,6 +225,7 @@
icon_state = "chickenhead" icon_state = "chickenhead"
item_state = "chickensuit" item_state = "chickensuit"
flags = FPRINT | TABLEPASS | BLOCKHAIR flags = FPRINT | TABLEPASS | BLOCKHAIR
siemens_coefficient = 2.0
/obj/item/clothing/head/bearpelt /obj/item/clothing/head/bearpelt
name = "bear pelt hat" name = "bear pelt hat"
@@ -224,6 +233,7 @@
icon_state = "bearpelt" icon_state = "bearpelt"
item_state = "bearpelt" item_state = "bearpelt"
flags = FPRINT | TABLEPASS | BLOCKHAIR flags = FPRINT | TABLEPASS | BLOCKHAIR
siemens_coefficient = 2.0
/obj/item/clothing/head/xenos /obj/item/clothing/head/xenos
name = "xenos helmet" name = "xenos helmet"
@@ -232,3 +242,4 @@
desc = "A helmet made out of chitinous alien hide." desc = "A helmet made out of chitinous alien hide."
flags = FPRINT | TABLEPASS | BLOCKHAIR flags = FPRINT | TABLEPASS | BLOCKHAIR
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
siemens_coefficient = 2.0

View File

@@ -23,6 +23,7 @@
armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
flags_inv = (HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE) flags_inv = (HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE)
icon_action_button = "action_welding" icon_action_button = "action_welding"
siemens_coefficient = 0.9
/obj/item/clothing/head/welding/attack_self() /obj/item/clothing/head/welding/attack_self()
toggle() toggle()
@@ -158,6 +159,7 @@
flags = FPRINT | TABLEPASS flags = FPRINT | TABLEPASS
var/icon/mob var/icon/mob
var/icon/mob2 var/icon/mob2
siemens_coefficient = 1.5
update_icon(var/mob/living/carbon/human/user) update_icon(var/mob/living/carbon/human/user)
if(!istype(user)) return if(!istype(user)) return

View File

@@ -6,6 +6,7 @@
item_state = "helmet" item_state = "helmet"
color = "cargo" color = "cargo"
var/flipped = 0 var/flipped = 0
siemens_coefficient = 0.9
dropped() dropped()
src.icon_state = "[color]soft" src.icon_state = "[color]soft"

View File

@@ -15,6 +15,7 @@
flags = FPRINT|TABLEPASS|BLOCKHAIR flags = FPRINT|TABLEPASS|BLOCKHAIR
flags_inv = HIDEFACE flags_inv = HIDEFACE
w_class = 2 w_class = 2
siemens_coefficient = 3.0
/obj/item/clothing/mask/luchador/tecnicos /obj/item/clothing/mask/luchador/tecnicos
name = "Tecnicos Mask" name = "Tecnicos Mask"

View File

@@ -8,6 +8,7 @@
item_state = "gas_alt" item_state = "gas_alt"
gas_transfer_coefficient = 0.01 gas_transfer_coefficient = 0.01
permeability_coefficient = 0.01 permeability_coefficient = 0.01
siemens_coefficient = 0.9
//Plague Dr suit can be found in clothing/suits/bio.dm //Plague Dr suit can be found in clothing/suits/bio.dm
/obj/item/clothing/mask/gas/plaguedoctor /obj/item/clothing/mask/gas/plaguedoctor
@@ -21,11 +22,13 @@
name = "\improper SWAT mask" name = "\improper SWAT mask"
desc = "A close-fitting tactical mask that can be connected to an air supply." desc = "A close-fitting tactical mask that can be connected to an air supply."
icon_state = "swat" icon_state = "swat"
siemens_coefficient = 0.7
/obj/item/clothing/mask/gas/syndicate /obj/item/clothing/mask/gas/syndicate
name = "syndicate mask" name = "syndicate mask"
desc = "A close-fitting tactical mask that can be connected to an air supply." desc = "A close-fitting tactical mask that can be connected to an air supply."
icon_state = "swat" icon_state = "swat"
siemens_coefficient = 0.7
/obj/item/clothing/mask/gas/voice /obj/item/clothing/mask/gas/voice
name = "gas mask" name = "gas mask"
@@ -41,6 +44,7 @@
icon_state = "s-ninja" icon_state = "s-ninja"
item_state = "s-ninja_mask" item_state = "s-ninja_mask"
vchange = 1 vchange = 1
siemens_coefficient = 0.2
/obj/item/clothing/mask/gas/clown_hat /obj/item/clothing/mask/gas/clown_hat
name = "clown wig and mask" name = "clown wig and mask"
@@ -76,6 +80,7 @@
name = "Death Commando Mask" name = "Death Commando Mask"
icon_state = "death_commando_mask" icon_state = "death_commando_mask"
item_state = "death_commando_mask" item_state = "death_commando_mask"
siemens_coefficient = 0.2
/obj/item/clothing/mask/gas/cyborg /obj/item/clothing/mask/gas/cyborg
name = "cyborg visor" name = "cyborg visor"

View File

@@ -81,6 +81,7 @@
flags = FPRINT|TABLEPASS|BLOCKHAIR flags = FPRINT|TABLEPASS|BLOCKHAIR
flags_inv = HIDEFACE flags_inv = HIDEFACE
w_class = 2 w_class = 2
siemens_coefficient = 0.9
/obj/item/clothing/mask/horsehead /obj/item/clothing/mask/horsehead
name = "horse head mask" name = "horse head mask"
@@ -91,3 +92,4 @@
flags_inv = HIDEFACE flags_inv = HIDEFACE
w_class = 2 w_class = 2
var/voicechange = 0 var/voicechange = 0
siemens_coefficient = 0.9

View File

@@ -7,7 +7,7 @@
flags = NOSLIP flags = NOSLIP
origin_tech = "syndicate=3" origin_tech = "syndicate=3"
var/list/clothing_choices = list() var/list/clothing_choices = list()
siemens_coefficient = 0 siemens_coefficient = 0.8
/obj/item/clothing/shoes/mime /obj/item/clothing/shoes/mime
name = "mime shoes" name = "mime shoes"
@@ -20,7 +20,7 @@
icon_state = "swat" icon_state = "swat"
armor = list(melee = 80, bullet = 60, laser = 50,energy = 25, bomb = 50, bio = 10, rad = 0) armor = list(melee = 80, bullet = 60, laser = 50,energy = 25, bomb = 50, bio = 10, rad = 0)
flags = NOSLIP flags = NOSLIP
siemens_coefficient = 0 siemens_coefficient = 0.6
/obj/item/clothing/shoes/combat //Basically SWAT shoes combined with galoshes. /obj/item/clothing/shoes/combat //Basically SWAT shoes combined with galoshes.
name = "combat boots" name = "combat boots"
@@ -28,7 +28,7 @@
icon_state = "swat" icon_state = "swat"
armor = list(melee = 80, bullet = 60, laser = 50,energy = 25, bomb = 50, bio = 10, rad = 0) armor = list(melee = 80, bullet = 60, laser = 50,energy = 25, bomb = 50, bio = 10, rad = 0)
flags = NOSLIP flags = NOSLIP
siemens_coefficient = 0 siemens_coefficient = 0.6
cold_protection = FEET cold_protection = FEET
min_cold_protection_temperature = SHOE_MIN_COLD_PROTECITON_TEMPERATURE min_cold_protection_temperature = SHOE_MIN_COLD_PROTECITON_TEMPERATURE
@@ -42,7 +42,7 @@
permeability_coefficient = 0.01 permeability_coefficient = 0.01
flags = NOSLIP flags = NOSLIP
armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30) armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30)
siemens_coefficient = 0 siemens_coefficient = 0.2
cold_protection = FEET cold_protection = FEET
min_cold_protection_temperature = SHOE_MIN_COLD_PROTECITON_TEMPERATURE min_cold_protection_temperature = SHOE_MIN_COLD_PROTECITON_TEMPERATURE
@@ -82,7 +82,7 @@
icon_state = "jackboots" icon_state = "jackboots"
item_state = "jackboots" item_state = "jackboots"
color = "hosred" color = "hosred"
siemens_coefficient = 0 siemens_coefficient = 0.7
/obj/item/clothing/shoes/cult /obj/item/clothing/shoes/cult
name = "boots" name = "boots"
@@ -90,7 +90,7 @@
icon_state = "cult" icon_state = "cult"
item_state = "cult" item_state = "cult"
color = "cult" color = "cult"
siemens_coefficient = 0 siemens_coefficient = 0.7
cold_protection = FEET cold_protection = FEET
min_cold_protection_temperature = SHOE_MIN_COLD_PROTECITON_TEMPERATURE min_cold_protection_temperature = SHOE_MIN_COLD_PROTECITON_TEMPERATURE

View File

@@ -26,4 +26,4 @@
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
cold_protection = UPPER_TORSO | LOWER_TORSO | LEGS | FEET | ARMS | HANDS cold_protection = UPPER_TORSO | LOWER_TORSO | LEGS | FEET | ARMS | HANDS
min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECITON_TEMPERATURE min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECITON_TEMPERATURE
siemens_coefficient = 0 siemens_coefficient = 0.7

View File

@@ -4,7 +4,7 @@
icon_state = "ert_commander" icon_state = "ert_commander"
item_state = "helm-command" item_state = "helm-command"
armor = list(melee = 50, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 100, rad = 60) armor = list(melee = 50, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 100, rad = 60)
siemens_coefficient = 0 siemens_coefficient = 0.6
/obj/item/clothing/suit/space/ert /obj/item/clothing/suit/space/ert
name = "emergency response team suit" name = "emergency response team suit"
@@ -19,7 +19,7 @@
/obj/item/weapon/screwdriver, /obj/item/weapon/weldingtool, /obj/item/weapon/wirecutters, /obj/item/weapon/wrench, /obj/item/device/multitool, \ /obj/item/weapon/screwdriver, /obj/item/weapon/weldingtool, /obj/item/weapon/wirecutters, /obj/item/weapon/wrench, /obj/item/device/multitool, \
/obj/item/device/radio, /obj/item/device/analyzer, /obj/item/weapon/gun/energy/laser, /obj/item/weapon/gun/energy/pulse_rifle, \ /obj/item/device/radio, /obj/item/device/analyzer, /obj/item/weapon/gun/energy/laser, /obj/item/weapon/gun/energy/pulse_rifle, \
/obj/item/weapon/gun/energy/taser, /obj/item/weapon/melee/baton, /obj/item/weapon/gun/energy/gun) /obj/item/weapon/gun/energy/taser, /obj/item/weapon/melee/baton, /obj/item/weapon/gun/energy/gun)
siemens_coefficient = 0 siemens_coefficient = 0.6
//Commander //Commander
/obj/item/clothing/head/helmet/space/ert/commander /obj/item/clothing/head/helmet/space/ert/commander

View File

@@ -25,7 +25,7 @@
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
cold_protection = UPPER_TORSO | LOWER_TORSO | LEGS | FEET | ARMS | HANDS cold_protection = UPPER_TORSO | LOWER_TORSO | LEGS | FEET | ARMS | HANDS
min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECITON_TEMPERATURE min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECITON_TEMPERATURE
siemens_coefficient = 0 siemens_coefficient = 0.7
//Deathsquad suit //Deathsquad suit
/obj/item/clothing/head/helmet/space/deathsquad /obj/item/clothing/head/helmet/space/deathsquad
@@ -34,7 +34,7 @@
icon_state = "deathsquad" icon_state = "deathsquad"
item_state = "deathsquad" item_state = "deathsquad"
armor = list(melee = 65, bullet = 55, laser = 35,energy = 20, bomb = 30, bio = 30, rad = 30) armor = list(melee = 65, bullet = 55, laser = 35,energy = 20, bomb = 30, bio = 30, rad = 30)
siemens_coefficient = 0 siemens_coefficient = 0.2
/obj/item/clothing/head/helmet/space/deathsquad/beret /obj/item/clothing/head/helmet/space/deathsquad/beret
name = "officer's beret" name = "officer's beret"
@@ -42,6 +42,7 @@
icon_state = "beret_badge" icon_state = "beret_badge"
armor = list(melee = 65, bullet = 55, laser = 35,energy = 20, bomb = 30, bio = 30, rad = 30) armor = list(melee = 65, bullet = 55, laser = 35,energy = 20, bomb = 30, bio = 30, rad = 30)
flags = FPRINT | TABLEPASS | HEADCOVERSEYES | BLOCKHAIR | STOPSPRESSUREDMAGE flags = FPRINT | TABLEPASS | HEADCOVERSEYES | BLOCKHAIR | STOPSPRESSUREDMAGE
siemens_coefficient = 0.9
//Space santa outfit suit //Space santa outfit suit
/obj/item/clothing/head/helmet/space/santahat /obj/item/clothing/head/helmet/space/santahat
@@ -68,6 +69,7 @@
item_state = "pirate" item_state = "pirate"
armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30) armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30)
flags = FPRINT | TABLEPASS | HEADCOVERSEYES | BLOCKHAIR | STOPSPRESSUREDMAGE flags = FPRINT | TABLEPASS | HEADCOVERSEYES | BLOCKHAIR | STOPSPRESSUREDMAGE
siemens_coefficient = 0.9
/obj/item/clothing/suit/space/pirate /obj/item/clothing/suit/space/pirate
name = "pirate coat" name = "pirate coat"
@@ -78,5 +80,6 @@
allowed = list(/obj/item/weapon/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/weapon/tank/emergency_oxygen) allowed = list(/obj/item/weapon/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/weapon/tank/emergency_oxygen)
slowdown = 0 slowdown = 0
armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30) armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30)
siemens_coefficient = 0.9

View File

@@ -5,7 +5,7 @@
item_state = "s-ninja_mask" item_state = "s-ninja_mask"
allowed = list(/obj/item/weapon/cell) allowed = list(/obj/item/weapon/cell)
armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 25) armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 25)
siemens_coefficient = 0 siemens_coefficient = 0.2
/obj/item/clothing/suit/space/space_ninja /obj/item/clothing/suit/space/space_ninja
@@ -16,7 +16,7 @@
allowed = list(/obj/item/weapon/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/cell) allowed = list(/obj/item/weapon/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/cell)
slowdown = 0 slowdown = 0
armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30) armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30)
siemens_coefficient = 0 siemens_coefficient = 0.2
//Important parts of the suit. //Important parts of the suit.
var/mob/living/carbon/affecting = null//The wearer. var/mob/living/carbon/affecting = null//The wearer.

View File

@@ -86,7 +86,7 @@
item_state = "syndie_helm" item_state = "syndie_helm"
color = "syndi" color = "syndi"
armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 35, bio = 100, rad = 60) armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 35, bio = 100, rad = 60)
siemens_coefficient = 0 siemens_coefficient = 0.6
/obj/item/clothing/suit/space/rig/syndi /obj/item/clothing/suit/space/rig/syndi
@@ -98,7 +98,7 @@
w_class = 3 w_class = 3
armor = list(melee = 60, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 60) armor = list(melee = 60, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 60)
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/weapon/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/melee/energy/sword,/obj/item/weapon/handcuffs) allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/weapon/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/melee/energy/sword,/obj/item/weapon/handcuffs)
siemens_coefficient = 0 siemens_coefficient = 0.6
//Wizard Rig //Wizard Rig
@@ -110,7 +110,7 @@
color = "wiz" color = "wiz"
unacidable = 1 //No longer shall our kind be foiled by lone chemists with spray bottles! unacidable = 1 //No longer shall our kind be foiled by lone chemists with spray bottles!
armor = list(melee = 40, bullet = 20, laser = 20,energy = 20, bomb = 35, bio = 100, rad = 60) armor = list(melee = 40, bullet = 20, laser = 20,energy = 20, bomb = 35, bio = 100, rad = 60)
siemens_coefficient = 0 siemens_coefficient = 0.7
/obj/item/clothing/suit/space/rig/wizard /obj/item/clothing/suit/space/rig/wizard
icon_state = "rig-wiz" icon_state = "rig-wiz"
@@ -121,7 +121,7 @@
w_class = 3 w_class = 3
unacidable = 1 unacidable = 1
armor = list(melee = 40, bullet = 20, laser = 20,energy = 20, bomb = 35, bio = 100, rad = 60) armor = list(melee = 40, bullet = 20, laser = 20,energy = 20, bomb = 35, bio = 100, rad = 60)
siemens_coefficient = 0 siemens_coefficient = 0.7
//Medical Rig //Medical Rig
@@ -148,7 +148,7 @@
item_state = "sec_helm" item_state = "sec_helm"
color = "sec" color = "sec"
armor = list(melee = 60, bullet = 10, laser = 30, energy = 5, bomb = 45, bio = 100, rad = 10) armor = list(melee = 60, bullet = 10, laser = 30, energy = 5, bomb = 45, bio = 100, rad = 10)
siemens_coefficient = 0 siemens_coefficient = 0.7
/obj/item/clothing/suit/space/rig/security /obj/item/clothing/suit/space/rig/security
icon_state = "rig-sec" icon_state = "rig-sec"
@@ -157,7 +157,7 @@
item_state = "sec_hardsuit" item_state = "sec_hardsuit"
armor = list(melee = 60, bullet = 10, laser = 30, energy = 5, bomb = 45, bio = 100, rad = 10) armor = list(melee = 60, bullet = 10, laser = 30, energy = 5, bomb = 45, bio = 100, rad = 10)
allowed = list(/obj/item/weapon/gun,/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/weapon/melee/baton) allowed = list(/obj/item/weapon/gun,/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/weapon/melee/baton)
siemens_coefficient = 0 siemens_coefficient = 0.7
//Atmospherics Rig (BS12) //Atmospherics Rig (BS12)

View File

@@ -6,7 +6,7 @@
item_state = "syndicate" item_state = "syndicate"
desc = "Has a tag: Totally not property of an enemy corporation, honest." desc = "Has a tag: Totally not property of an enemy corporation, honest."
armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30) armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30)
siemens_coefficient = 0 siemens_coefficient = 0.8
/obj/item/clothing/suit/space/syndicate /obj/item/clothing/suit/space/syndicate
name = "red space suit" name = "red space suit"
@@ -17,7 +17,7 @@
allowed = list(/obj/item/weapon/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/melee/energy/sword,/obj/item/weapon/handcuffs,/obj/item/weapon/tank/emergency_oxygen) allowed = list(/obj/item/weapon/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/melee/energy/sword,/obj/item/weapon/handcuffs,/obj/item/weapon/tank/emergency_oxygen)
slowdown = 1 slowdown = 1
armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30) armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30)
siemens_coefficient = 0 siemens_coefficient = 0.8
//Green syndicate space suit //Green syndicate space suit

View File

@@ -8,7 +8,7 @@
min_cold_protection_temperature = ARMOR_MIN_COLD_PROTECITON_TEMPERATURE min_cold_protection_temperature = ARMOR_MIN_COLD_PROTECITON_TEMPERATURE
heat_protection = UPPER_TORSO|LOWER_TORSO heat_protection = UPPER_TORSO|LOWER_TORSO
max_heat_protection_temperature = ARMOR_MAX_HEAT_PROTECITON_TEMPERATURE max_heat_protection_temperature = ARMOR_MAX_HEAT_PROTECITON_TEMPERATURE
siemens_coefficient = 0 siemens_coefficient = 0.6
/obj/item/clothing/suit/armor/vest /obj/item/clothing/suit/armor/vest
@@ -42,6 +42,7 @@
slowdown = 1 slowdown = 1
armor = list(melee = 80, bullet = 10, laser = 10, energy = 10, bomb = 0, bio = 0, rad = 0) armor = list(melee = 80, bullet = 10, laser = 10, energy = 10, bomb = 0, bio = 0, rad = 0)
flags_inv = HIDEJUMPSUIT flags_inv = HIDEJUMPSUIT
siemens_coefficient = 0.5
/obj/item/clothing/suit/armor/bulletproof /obj/item/clothing/suit/armor/bulletproof
@@ -51,7 +52,7 @@
item_state = "armor" item_state = "armor"
blood_overlay_type = "armor" blood_overlay_type = "armor"
armor = list(melee = 10, bullet = 80, laser = 10, energy = 10, bomb = 0, bio = 0, rad = 0) armor = list(melee = 10, bullet = 80, laser = 10, energy = 10, bomb = 0, bio = 0, rad = 0)
siemens_coefficient = 0.7
/obj/item/clothing/suit/armor/laserproof /obj/item/clothing/suit/armor/laserproof
name = "Ablative Armor Vest" name = "Ablative Armor Vest"
@@ -60,7 +61,7 @@
item_state = "armor_reflec" item_state = "armor_reflec"
blood_overlay_type = "armor" blood_overlay_type = "armor"
armor = list(melee = 10, bullet = 10, laser = 80, energy = 50, bomb = 0, bio = 0, rad = 0) armor = list(melee = 10, bullet = 10, laser = 80, energy = 50, bomb = 0, bio = 0, rad = 0)
siemens_coefficient = 0
/obj/item/clothing/suit/armor/swat /obj/item/clothing/suit/armor/swat
name = "swat suit" name = "swat suit"
@@ -77,6 +78,7 @@
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
cold_protection = UPPER_TORSO | LOWER_TORSO | LEGS | FEET | ARMS | HANDS cold_protection = UPPER_TORSO | LOWER_TORSO | LEGS | FEET | ARMS | HANDS
min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECITON_TEMPERATURE min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECITON_TEMPERATURE
siemens_coefficient = 0.5
/obj/item/clothing/suit/armor/swat/officer /obj/item/clothing/suit/armor/swat/officer
@@ -151,6 +153,7 @@
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
cold_protection = UPPER_TORSO | LOWER_TORSO | LEGS | FEET | ARMS | HANDS cold_protection = UPPER_TORSO | LOWER_TORSO | LEGS | FEET | ARMS | HANDS
min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECITON_TEMPERATURE min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECITON_TEMPERATURE
siemens_coefficient = 0
/obj/item/clothing/suit/armor/heavy /obj/item/clothing/suit/armor/heavy
name = "heavy armor" name = "heavy armor"
@@ -162,6 +165,7 @@
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
slowdown = 3 slowdown = 3
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
siemens_coefficient = 0
/obj/item/clothing/suit/armor/tdome /obj/item/clothing/suit/armor/tdome
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS

View File

@@ -7,6 +7,7 @@
flags = FPRINT|TABLEPASS|HEADCOVERSEYES|HEADCOVERSMOUTH|BLOCKHAIR flags = FPRINT|TABLEPASS|HEADCOVERSEYES|HEADCOVERSMOUTH|BLOCKHAIR
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 20) armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 20)
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES flags_inv = HIDEMASK|HIDEEARS|HIDEEYES
siemens_coefficient = 0.9
/obj/item/clothing/suit/bio_suit /obj/item/clothing/suit/bio_suit
name = "bio suit" name = "bio suit"
@@ -22,6 +23,7 @@
allowed = list(/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/pen,/obj/item/device/flashlight/pen) allowed = list(/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/pen,/obj/item/device/flashlight/pen)
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 20) armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 20)
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
siemens_coefficient = 0.9
//Standard biosuit, orange stripe //Standard biosuit, orange stripe

View File

@@ -16,6 +16,7 @@
blood_overlay_type = "armor" blood_overlay_type = "armor"
body_parts_covered = UPPER_TORSO|LOWER_TORSO body_parts_covered = UPPER_TORSO|LOWER_TORSO
allowed = list (/obj/item/weapon/gun/energy/laser/bluetag) allowed = list (/obj/item/weapon/gun/energy/laser/bluetag)
siemens_coefficient = 3.0
/obj/item/clothing/suit/redtag /obj/item/clothing/suit/redtag
name = "red laser tag armour" name = "red laser tag armour"
@@ -25,6 +26,7 @@
blood_overlay_type = "armor" blood_overlay_type = "armor"
body_parts_covered = UPPER_TORSO|LOWER_TORSO body_parts_covered = UPPER_TORSO|LOWER_TORSO
allowed = list (/obj/item/weapon/gun/energy/laser/redtag) allowed = list (/obj/item/weapon/gun/energy/laser/redtag)
siemens_coefficient = 3.0
/* /*
* Costume * Costume
@@ -145,6 +147,7 @@
item_state = "chickensuit" item_state = "chickensuit"
body_parts_covered = UPPER_TORSO|ARMS|LOWER_TORSO|LEGS|FEET body_parts_covered = UPPER_TORSO|ARMS|LOWER_TORSO|LEGS|FEET
flags_inv = HIDESHOES|HIDEJUMPSUIT flags_inv = HIDESHOES|HIDEJUMPSUIT
siemens_coefficient = 2.0
/obj/item/clothing/suit/monkeysuit /obj/item/clothing/suit/monkeysuit
@@ -154,6 +157,7 @@
item_state = "monkeysuit" item_state = "monkeysuit"
body_parts_covered = UPPER_TORSO|ARMS|LOWER_TORSO|LEGS|FEET|HANDS body_parts_covered = UPPER_TORSO|ARMS|LOWER_TORSO|LEGS|FEET|HANDS
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
siemens_coefficient = 2.0
/obj/item/clothing/suit/holidaypriest /obj/item/clothing/suit/holidaypriest
@@ -269,30 +273,35 @@
desc = "A rather skimpy pink swimsuit." desc = "A rather skimpy pink swimsuit."
icon_state = "stripper_p_under" icon_state = "stripper_p_under"
color = "stripper_p" color = "stripper_p"
siemens_coefficient = 1
/obj/item/clothing/under/stripper/stripper_green /obj/item/clothing/under/stripper/stripper_green
name = "green swimsuit" name = "green swimsuit"
desc = "A rather skimpy green swimsuit." desc = "A rather skimpy green swimsuit."
icon_state = "stripper_g_under" icon_state = "stripper_g_under"
color = "stripper_g" color = "stripper_g"
siemens_coefficient = 1
/obj/item/clothing/suit/stripper/stripper_pink /obj/item/clothing/suit/stripper/stripper_pink
name = "pink skimpy dress" name = "pink skimpy dress"
desc = "A rather skimpy pink dress." desc = "A rather skimpy pink dress."
icon_state = "stripper_p_over" icon_state = "stripper_p_over"
item_state = "stripper_p" item_state = "stripper_p"
siemens_coefficient = 1
/obj/item/clothing/suit/stripper/stripper_green /obj/item/clothing/suit/stripper/stripper_green
name = "green skimpy dress" name = "green skimpy dress"
desc = "A rather skimpy green dress." desc = "A rather skimpy green dress."
icon_state = "stripper_g_over" icon_state = "stripper_g_over"
item_state = "stripper_g" item_state = "stripper_g"
siemens_coefficient = 1
/obj/item/clothing/under/stripper/mankini /obj/item/clothing/under/stripper/mankini
name = "the mankini" name = "the mankini"
desc = "No honest man would wear this abomination" desc = "No honest man would wear this abomination"
icon_state = "mankini" icon_state = "mankini"
color = "mankini" color = "mankini"
siemens_coefficient = 1
/obj/item/clothing/suit/xenos /obj/item/clothing/suit/xenos
name = "xenos suit" name = "xenos suit"
@@ -301,35 +310,42 @@
item_state = "xenos_helm" item_state = "xenos_helm"
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS|HANDS body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS|HANDS
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
siemens_coefficient = 2.0
//swimsuit //swimsuit
/obj/item/clothing/under/swimsuit/
siemens_coefficient = 1
/obj/item/clothing/under/swimsuit/black /obj/item/clothing/under/swimsuit/black
name = "black swimsuit" name = "black swimsuit"
desc = "An oldfashioned black swimsuit." desc = "An oldfashioned black swimsuit."
icon_state = "swim_black" icon_state = "swim_black"
color = "swim_black" color = "swim_black"
siemens_coefficient = 1
/obj/item/clothing/under/swimsuit/blue /obj/item/clothing/under/swimsuit/blue
name = "blue swimsuit" name = "blue swimsuit"
desc = "An oldfashioned blue swimsuit." desc = "An oldfashioned blue swimsuit."
icon_state = "swim_blue" icon_state = "swim_blue"
color = "swim_blue" color = "swim_blue"
siemens_coefficient = 1
/obj/item/clothing/under/swimsuit/purple /obj/item/clothing/under/swimsuit/purple
name = "purple swimsuit" name = "purple swimsuit"
desc = "An oldfashioned purple swimsuit." desc = "An oldfashioned purple swimsuit."
icon_state = "swim_purp" icon_state = "swim_purp"
color = "swim_purp" color = "swim_purp"
siemens_coefficient = 1
/obj/item/clothing/under/swimsuit/green /obj/item/clothing/under/swimsuit/green
name = "green swimsuit" name = "green swimsuit"
desc = "An oldfashioned green swimsuit." desc = "An oldfashioned green swimsuit."
icon_state = "swim_green" icon_state = "swim_green"
color = "swim_green" color = "swim_green"
siemens_coefficient = 1
/obj/item/clothing/under/swimsuit/red /obj/item/clothing/under/swimsuit/red
name = "red swimsuit" name = "red swimsuit"
desc = "An oldfashioned red swimsuit." desc = "An oldfashioned red swimsuit."
icon_state = "swim_red" icon_state = "swim_red"
color = "swim_red" color = "swim_red"
siemens_coefficient = 1

View File

@@ -3,11 +3,13 @@
desc = "Strange-looking hat-wear that most certainly belongs to a real magic user." desc = "Strange-looking hat-wear that most certainly belongs to a real magic user."
icon_state = "wizard" icon_state = "wizard"
//Not given any special protective value since the magic robes are full-body protection --NEO //Not given any special protective value since the magic robes are full-body protection --NEO
siemens_coefficient = 0.8
/obj/item/clothing/head/wizard/red /obj/item/clothing/head/wizard/red
name = "red wizard hat" name = "red wizard hat"
desc = "Strange-looking, red, hat-wear that most certainly belongs to a real magic user." desc = "Strange-looking, red, hat-wear that most certainly belongs to a real magic user."
icon_state = "redwizard" icon_state = "redwizard"
siemens_coefficient = 0.8
/obj/item/clothing/head/wizard/fake /obj/item/clothing/head/wizard/fake
name = "wizard hat" name = "wizard hat"
@@ -18,12 +20,14 @@
name = "Witch Hat" name = "Witch Hat"
desc = "Strange-looking hat-wear, makes you want to cast fireballs." desc = "Strange-looking hat-wear, makes you want to cast fireballs."
icon_state = "marisa" icon_state = "marisa"
siemens_coefficient = 0.8
/obj/item/clothing/head/wizard/magus /obj/item/clothing/head/wizard/magus
name = "Magus Helm" name = "Magus Helm"
desc = "A mysterious helmet that hums with an unearthly power" desc = "A mysterious helmet that hums with an unearthly power"
icon_state = "magus" icon_state = "magus"
item_state = "magus" item_state = "magus"
siemens_coefficient = 0.8
/obj/item/clothing/suit/wizrobe /obj/item/clothing/suit/wizrobe
@@ -37,7 +41,7 @@
armor = list(melee = 30, bullet = 20, laser = 20,energy = 20, bomb = 20, bio = 20, rad = 20) armor = list(melee = 30, bullet = 20, laser = 20,energy = 20, bomb = 20, bio = 20, rad = 20)
allowed = list(/obj/item/weapon/teleportation_scroll) allowed = list(/obj/item/weapon/teleportation_scroll)
flags_inv = HIDEJUMPSUIT flags_inv = HIDEJUMPSUIT
siemens_coefficient = 0.8
/obj/item/clothing/suit/wizrobe/red /obj/item/clothing/suit/wizrobe/red
name = "red wizard robe" name = "red wizard robe"
@@ -72,12 +76,14 @@
item_state = "wizrobe" item_state = "wizrobe"
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
siemens_coefficient = 1.0
/obj/item/clothing/head/wizard/marisa/fake /obj/item/clothing/head/wizard/marisa/fake
name = "Witch Hat" name = "Witch Hat"
desc = "Strange-looking hat-wear, makes you want to cast fireballs." desc = "Strange-looking hat-wear, makes you want to cast fireballs."
icon_state = "marisa" icon_state = "marisa"
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
siemens_coefficient = 1.0
/obj/item/clothing/suit/wizrobe/marisa/fake /obj/item/clothing/suit/wizrobe/marisa/fake
name = "Witch Robe" name = "Witch Robe"
@@ -86,4 +92,5 @@
item_state = "marisarobe" item_state = "marisarobe"
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
siemens_coefficient = 1.0

View File

@@ -6,7 +6,7 @@
color = "black" color = "black"
desc = "It's a plain jumpsuit. It seems to have a small dial on the wrist." desc = "It's a plain jumpsuit. It seems to have a small dial on the wrist."
origin_tech = "syndicate=3" origin_tech = "syndicate=3"
siemens_coefficient = 0 siemens_coefficient = 0.8
var/list/clothing_choices = list() var/list/clothing_choices = list()
New() New()

View File

@@ -16,6 +16,7 @@
color = "warden" color = "warden"
armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
flags = FPRINT | TABLEPASS flags = FPRINT | TABLEPASS
siemens_coefficient = 0.9
/obj/item/clothing/under/rank/security /obj/item/clothing/under/rank/security
name = "security officer's jumpsuit" name = "security officer's jumpsuit"
@@ -25,6 +26,7 @@
color = "secred" color = "secred"
armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
flags = FPRINT | TABLEPASS flags = FPRINT | TABLEPASS
siemens_coefficient = 0.9
/obj/item/clothing/under/rank/dispatch /obj/item/clothing/under/rank/dispatch
name = "dispatcher's uniform" name = "dispatcher's uniform"
@@ -34,6 +36,7 @@
color = "dispatch" color = "dispatch"
armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
flags = FPRINT | TABLEPASS flags = FPRINT | TABLEPASS
siemens_coefficient = 0.9
/obj/item/clothing/under/rank/security2 /obj/item/clothing/under/rank/security2
name = "security officer's uniform" name = "security officer's uniform"
@@ -43,6 +46,7 @@
color = "redshirt2" color = "redshirt2"
armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
flags = FPRINT | TABLEPASS flags = FPRINT | TABLEPASS
siemens_coefficient = 0.9
/* /*
* Detective * Detective
@@ -55,6 +59,7 @@
color = "detective" color = "detective"
armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
flags = FPRINT | TABLEPASS flags = FPRINT | TABLEPASS
siemens_coefficient = 0.9
/obj/item/clothing/head/det_hat /obj/item/clothing/head/det_hat
@@ -63,6 +68,7 @@
icon_state = "detective" icon_state = "detective"
allowed = list(/obj/item/weapon/reagent_containers/food/snacks/candy_corn, /obj/item/weapon/pen) allowed = list(/obj/item/weapon/reagent_containers/food/snacks/candy_corn, /obj/item/weapon/pen)
armor = list(melee = 50, bullet = 5, laser = 25,energy = 10, bomb = 0, bio = 0, rad = 0) armor = list(melee = 50, bullet = 5, laser = 25,energy = 10, bomb = 0, bio = 0, rad = 0)
siemens_coefficient = 0.9
/* /*
* Head of Security * Head of Security
@@ -75,7 +81,7 @@
color = "hosred" color = "hosred"
armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
flags = FPRINT | TABLEPASS flags = FPRINT | TABLEPASS
siemens_coefficient = 0 siemens_coefficient = 0.8
/obj/item/clothing/head/helmet/HoS /obj/item/clothing/head/helmet/HoS
@@ -86,7 +92,7 @@
armor = list(melee = 80, bullet = 60, laser = 50,energy = 10, bomb = 25, bio = 10, rad = 0) armor = list(melee = 80, bullet = 60, laser = 50,energy = 10, bomb = 25, bio = 10, rad = 0)
flags_inv = 0 flags_inv = 0
flags_inv = HIDEEARS flags_inv = HIDEEARS
siemens_coefficient = 0 siemens_coefficient = 0.8
/obj/item/clothing/suit/armor/hos /obj/item/clothing/suit/armor/hos
@@ -97,7 +103,7 @@
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS
armor = list(melee = 65, bullet = 30, laser = 50, energy = 10, bomb = 25, bio = 0, rad = 0) armor = list(melee = 65, bullet = 30, laser = 50, energy = 10, bomb = 25, bio = 0, rad = 0)
flags_inv = HIDEJUMPSUIT flags_inv = HIDEJUMPSUIT
siemens_coefficient = 0 siemens_coefficient = 0.6
/obj/item/clothing/head/helmet/HoS/dermal /obj/item/clothing/head/helmet/HoS/dermal
@@ -105,6 +111,7 @@
desc = "You're not quite sure how you manage to take it on and off, but it implants nicely in your head." desc = "You're not quite sure how you manage to take it on and off, but it implants nicely in your head."
icon_state = "dermal" icon_state = "dermal"
item_state = "dermal" item_state = "dermal"
siemens_coefficient = 0.6
//Jensen cosplay gear //Jensen cosplay gear
/obj/item/clothing/under/rank/head_of_security/jensen /obj/item/clothing/under/rank/head_of_security/jensen
@@ -113,7 +120,7 @@
icon_state = "jensen" icon_state = "jensen"
item_state = "jensen" item_state = "jensen"
color = "jensen" color = "jensen"
siemens_coefficient = 0 siemens_coefficient = 0.6
/obj/item/clothing/suit/armor/hos/jensen /obj/item/clothing/suit/armor/hos/jensen
name = "armored trenchcoat" name = "armored trenchcoat"
@@ -121,4 +128,4 @@
icon_state = "jensencoat" icon_state = "jensencoat"
item_state = "jensencoat" item_state = "jensencoat"
flags_inv = 0 flags_inv = 0
siemens_coefficient = 0 siemens_coefficient = 0.6

View File

@@ -6,7 +6,7 @@
color = "syndicate" color = "syndicate"
has_sensor = 0 has_sensor = 0
armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
siemens_coefficient = 0 siemens_coefficient = 0.9
/obj/item/clothing/under/syndicate/combat /obj/item/clothing/under/syndicate/combat
name = "combat turtleneck" name = "combat turtleneck"

View File

@@ -14,16 +14,24 @@ emp_act
if(istype(P, /obj/item/projectile/energy/electrode)) if(istype(P, /obj/item/projectile/energy/electrode))
var/datum/organ/external/select_area = get_organ(def_zone) // We're checking the outside, buddy! var/datum/organ/external/select_area = get_organ(def_zone) // We're checking the outside, buddy!
var/list/body_parts = list(head, wear_mask, wear_suit, w_uniform, gloves, shoes) // What all are we checking? var/list/body_parts = list(head, wear_mask, wear_suit, w_uniform, gloves, shoes) // What all are we checking?
// var/deflectchance=90 //Is it a CRITICAL HIT with that taser?
for(var/bp in body_parts) //Make an unregulated var to pass around. for(var/bp in body_parts) //Make an unregulated var to pass around.
if(!bp) if(!bp)
continue //Does this thing we're shooting even exist? continue //Does this thing we're shooting even exist?
if(bp && istype(bp ,/obj/item/clothing)) // If it exists, and it's clothed if(bp && istype(bp ,/obj/item/clothing)) // If it exists, and it's clothed
var/obj/item/clothing/C = bp // Then call an argument C to be that clothing! var/obj/item/clothing/C = bp // Then call an argument C to be that clothing!
if(C.body_parts_covered & select_area.body_part) // Is that body part being targeted covered? if(C.body_parts_covered & select_area.body_part) // Is that body part being targeted covered?
P.agony=P.agony*C.siemens_coefficient
visible_message("\red [src]'s [C.name] absorbs some of the shock from the [P.name]!</B></red>")
apply_effect(P.agony,AGONY,0)
del P
/* Commenting out new-old taser nerf.
if(C.siemens_coefficient == 0) //If so, is that clothing shock proof? if(C.siemens_coefficient == 0) //If so, is that clothing shock proof?
visible_message("\red <B>The [P.name] gets deflected by [src]'s [C.name]!</B>") //DEFLECT! if(prob(deflectchance))
del P visible_message("\red <B>The [P.name] gets deflected by [src]'s [C.name]!</B>") //DEFLECT!
visible_message("\red <B> Taser hit for [P.damage] damage!</B>")
del P
*/
/* Commenting out old Taser nerf /* Commenting out old Taser nerf
if(wear_suit && istype(wear_suit, /obj/item/clothing/suit/armor)) if(wear_suit && istype(wear_suit, /obj/item/clothing/suit/armor))
if(istype(P, /obj/item/projectile/energy/electrode)) if(istype(P, /obj/item/projectile/energy/electrode))
@@ -32,6 +40,7 @@ emp_act
return -1 return -1
*/ */
// END TASER NERF // END TASER NERF
if(wear_suit && istype(wear_suit, /obj/item/clothing/suit/armor/laserproof)) if(wear_suit && istype(wear_suit, /obj/item/clothing/suit/armor/laserproof))
if(istype(P, /obj/item/projectile/energy) || istype(P, /obj/item/projectile/beam)) if(istype(P, /obj/item/projectile/energy) || istype(P, /obj/item/projectile/beam))
var/reflectchance = 40 - round(P.damage/3) var/reflectchance = 40 - round(P.damage/3)

View File

@@ -961,19 +961,21 @@
del a del a
if(halloss > 100) if(halloss > 100)
src << "<span class='notice'>You're too tired to keep going...</span>" src << "<span class='notice'>You're in too much pain to keep going...</span>"
for(var/mob/O in oviewers(src, null)) for(var/mob/O in oviewers(src, null))
O.show_message("<B>[src]</B> slumps to the ground panting, too weak to continue fighting.", 1) O.show_message("<B>[src]</B> slumps to the ground, too weak to continue fighting.", 1)
Paralyse(3) Paralyse(10)
setHalLoss(99) setHalLoss(99)
if(paralysis) if(paralysis)
AdjustParalysis(-1) AdjustParalysis(-1)
blinded = 1 blinded = 1
stat = UNCONSCIOUS stat = UNCONSCIOUS
if(halloss > 0)
adjustHalLoss(-6)
else if(sleeping) else if(sleeping)
handle_dreams() handle_dreams()
adjustHalLoss(-5) adjustHalLoss(-6)
if (mind) if (mind)
if((mind.active && client != null) || immune_to_ssd) //This also checks whether a client is connected, if not, sleep is not reduced. if((mind.active && client != null) || immune_to_ssd) //This also checks whether a client is connected, if not, sleep is not reduced.
sleeping = max(sleeping-1, 0) sleeping = max(sleeping-1, 0)
@@ -982,9 +984,14 @@
if( prob(10) && health && !hal_crit ) if( prob(10) && health && !hal_crit )
spawn(0) spawn(0)
emote("snore") emote("snore")
else if(resting)
if(halloss > 0)
adjustHalLoss(-6)
//CONSCIOUS //CONSCIOUS
else else
stat = CONSCIOUS stat = CONSCIOUS
if(halloss > 0)
adjustHalLoss(-2)
//Eyes //Eyes
if(sdisabilities & BLIND) //disabled-blind, doesn't get better on its own if(sdisabilities & BLIND) //disabled-blind, doesn't get better on its own

View File

@@ -444,9 +444,11 @@ proc/get_damage_icon_part(damage_state, body_part)
if("skrell") if("skrell")
race_icon = 'icons/mob/human_races/r_skrell.dmi' race_icon = 'icons/mob/human_races/r_skrell.dmi'
deform_icon = 'icons/mob/human_races/r_def_skrell.dmi' deform_icon = 'icons/mob/human_races/r_def_skrell.dmi'
if("vox") if("vox")
race_icon = 'icons/mob/human_races/r_vox.dmi' race_icon = 'icons/mob/human_races/r_vox.dmi'
deform_icon = 'icons/mob/human_races/r_def_vox.dmi' deform_icon = 'icons/mob/human_races/r_def_vox.dmi'
else else
race_icon = 'icons/mob/human_races/r_human.dmi' race_icon = 'icons/mob/human_races/r_human.dmi'
deform_icon = 'icons/mob/human_races/r_def_human.dmi' deform_icon = 'icons/mob/human_races/r_def_human.dmi'

View File

@@ -49,6 +49,8 @@
Weaken(effect/(blocked+1)) Weaken(effect/(blocked+1))
if(PARALYZE) if(PARALYZE)
Paralyse(effect/(blocked+1)) Paralyse(effect/(blocked+1))
if(AGONY)
halloss += effect // Useful for objects that cause "subdual" damage. PAIN!
if(IRRADIATE) if(IRRADIATE)
radiation += max((((effect - (effect*(getarmor(null, "rad")/100))))/(blocked+1)),0)//Rads auto check armor radiation += max((((effect - (effect*(getarmor(null, "rad")/100))))/(blocked+1)),0)//Rads auto check armor
if(STUTTER) if(STUTTER)
@@ -62,7 +64,7 @@
return 1 return 1
/mob/living/proc/apply_effects(var/stun = 0, var/weaken = 0, var/paralyze = 0, var/irradiate = 0, var/stutter = 0, var/eyeblur = 0, var/drowsy = 0, var/blocked = 0) /mob/living/proc/apply_effects(var/stun = 0, var/weaken = 0, var/paralyze = 0, var/irradiate = 0, var/stutter = 0, var/eyeblur = 0, var/drowsy = 0, var/blocked = 0, var/agony = 0)
if(blocked >= 2) return 0 if(blocked >= 2) return 0
if(stun) apply_effect(stun, STUN, blocked) if(stun) apply_effect(stun, STUN, blocked)
if(weaken) apply_effect(weaken, WEAKEN, blocked) if(weaken) apply_effect(weaken, WEAKEN, blocked)
@@ -71,4 +73,5 @@
if(stutter) apply_effect(stutter, STUTTER, blocked) if(stutter) apply_effect(stutter, STUTTER, blocked)
if(eyeblur) apply_effect(eyeblur, EYE_BLUR, blocked) if(eyeblur) apply_effect(eyeblur, EYE_BLUR, blocked)
if(drowsy) apply_effect(drowsy, DROWSY, blocked) if(drowsy) apply_effect(drowsy, DROWSY, blocked)
if(agony) apply_effect(agony, AGONY, blocked)
return 1 return 1

View File

@@ -178,28 +178,17 @@ var/list/ai_list = list()
//usr <<"You can only change your display once!" //usr <<"You can only change your display once!"
//return //return
/mob/living/silicon/ai/Stat()
..()
statpanel("Status")
if (client.statpanel == "Status")
stat(null, "Station Time: [worldtime2text()]")
if(emergency_shuttle.online && emergency_shuttle.location < 2)
var/timeleft = emergency_shuttle.timeleft()
if (timeleft)
stat(null, "ETA-[(timeleft / 60) % 60]:[add_zero(num2text(timeleft % 60), 2)]")
if(ticker.mode.name == "AI malfunction") // displays the malf_ai information if the AI is the malf
var/datum/game_mode/malfunction/malf = ticker.mode /mob/living/silicon/ai/show_malf_ai()
for (var/datum/mind/malfai in malf.malf_ai) if(ticker.mode.name == "AI malfunction")
if (mind == malfai) var/datum/game_mode/malfunction/malf = ticker.mode
if (malf.apcs >= 3) for (var/datum/mind/malfai in malf.malf_ai)
stat(null, "Time until station control secured: [max(malf.AI_win_timeleft/(malf.apcs/3), 0)] seconds") if (mind == malfai) // are we the evil one?
if (malf.apcs >= 3)
if(!stat) stat(null, "Time until station control secured: [max(malf.AI_win_timeleft/(malf.apcs/3), 0)] seconds")
stat(null, text("System integrity: [(health+100)/2]%"))
else
stat(null, text("Systems nonfunctional"))
/mob/living/silicon/ai/proc/ai_alerts() /mob/living/silicon/ai/proc/ai_alerts()
set category = "AI Commands" set category = "AI Commands"
set name = "Show Alerts" set name = "Show Alerts"
@@ -236,17 +225,11 @@ var/list/ai_list = list()
viewalerts = 1 viewalerts = 1
src << browse(dat, "window=aialerts&can_close=0") src << browse(dat, "window=aialerts&can_close=0")
// this verb lets the ai see the stations manifest
/mob/living/silicon/ai/proc/ai_roster() /mob/living/silicon/ai/proc/ai_roster()
set category = "AI Commands" set category = "AI Commands"
set name = "Show Crew Manifest" set name = "Show Crew Manifest"
var/dat show_station_manifest()
dat += "<h4>Crew Manifest</h4>"
if(data_core)
dat += data_core.get_manifest(0) // make it monochrome
dat += "<br>"
src << browse(dat, "window=airoster")
onclose(src, "airoster")
/mob/living/silicon/ai/proc/ai_call_shuttle() /mob/living/silicon/ai/proc/ai_call_shuttle()
set category = "AI Commands" set category = "AI Commands"

View File

@@ -75,23 +75,20 @@
..() ..()
usr << browse_rsc('html/paigrid.png') // Go ahead and cache the interface resources as early as possible usr << browse_rsc('html/paigrid.png') // Go ahead and cache the interface resources as early as possible
// this function shows the information about being silenced as a pAI in the Status panel
/mob/living/silicon/pai/proc/show_silenced()
if(src.silence_time)
var/timeleft = round((silence_time - world.timeofday)/10 ,1)
stat(null, "Communications system reboot in -[(timeleft / 60) % 60]:[add_zero(num2text(timeleft % 60), 2)]")
/mob/living/silicon/pai/Stat() /mob/living/silicon/pai/Stat()
..() ..()
statpanel("Status") statpanel("Status")
if (src.client.statpanel == "Status") if (src.client.statpanel == "Status")
if(emergency_shuttle.online && emergency_shuttle.location < 2) show_silenced()
var/timeleft = emergency_shuttle.timeleft()
if (timeleft)
stat(null, "ETA-[(timeleft / 60) % 60]:[add_zero(num2text(timeleft % 60), 2)]")
if(src.silence_time)
var/timeleft = round((silence_time - world.timeofday)/10 ,1)
stat(null, "Communications system reboot in -[(timeleft / 60) % 60]:[add_zero(num2text(timeleft % 60), 2)]")
if(!src.stat)
stat(null, text("System integrity: [(src.health+100)/2]%"))
else
stat(null, text("Systems nonfunctional"))
if (proc_holder_list.len)//Generic list for proc_holder objects. if (proc_holder_list.len)//Generic list for proc_holder objects.
for(var/obj/effect/proc_holder/P in proc_holder_list) for(var/obj/effect/proc_holder/P in proc_holder_list)
statpanel("[P.panel]","",P) statpanel("[P.panel]","",P)

View File

@@ -29,6 +29,8 @@
var/obj/item/device/mmi/mmi = null var/obj/item/device/mmi/mmi = null
var/obj/item/device/pda/ai/rbPDA = null
var/opened = 0 var/opened = 0
var/emagged = 0 var/emagged = 0
var/wiresexposed = 0 var/wiresexposed = 0
@@ -101,6 +103,12 @@
playsound(loc, 'sound/voice/liveagain.ogg', 75, 1) playsound(loc, 'sound/voice/liveagain.ogg', 75, 1)
// setup the PDA and its name
/mob/living/silicon/robot/proc/setup_PDA()
if (!rbPDA)
rbPDA = new/obj/item/device/pda/ai(src)
rbPDA.set_name_and_job(custom_name,braintype)
//If there's an MMI in the robot, have it ejected when the mob goes away. --NEO //If there's an MMI in the robot, have it ejected when the mob goes away. --NEO
//Improved /N //Improved /N
/mob/living/silicon/robot/Del() /mob/living/silicon/robot/Del()
@@ -238,6 +246,8 @@
radio.config(channels) radio.config(channels)
updateicon() updateicon()
/
/mob/living/silicon/robot/proc/updatename(var/prefix as text) /mob/living/silicon/robot/proc/updatename(var/prefix as text)
if(istype(mmi, /obj/item/device/mmi/posibrain)) if(istype(mmi, /obj/item/device/mmi/posibrain))
@@ -252,6 +262,9 @@
changed_name = "[(prefix ? "[prefix] " : "")][braintype]-[num2text(ident)]" changed_name = "[(prefix ? "[prefix] " : "")][braintype]-[num2text(ident)]"
real_name = changed_name real_name = changed_name
name = real_name name = real_name
// if we've changed our name, we also need to update the display name for our PDA
setup_PDA()
/mob/living/silicon/robot/verb/Namepick() /mob/living/silicon/robot/verb/Namepick()
if(custom_name) if(custom_name)
@@ -271,6 +284,13 @@
set name = "Show Alerts" set name = "Show Alerts"
robot_alerts() robot_alerts()
// this verb lets cyborgs see the stations manifest
/mob/living/silicon/robot/verb/cmd_station_manifest()
set category = "Robot Commands"
set name = "Show Station Manifest"
show_station_manifest()
/mob/living/silicon/robot/proc/robot_alerts() /mob/living/silicon/robot/proc/robot_alerts()
var/dat = "<HEAD><TITLE>Current Station Alerts</TITLE><META HTTP-EQUIV='Refresh' CONTENT='10'></HEAD><BODY>\n" var/dat = "<HEAD><TITLE>Current Station Alerts</TITLE><META HTTP-EQUIV='Refresh' CONTENT='10'></HEAD><BODY>\n"
dat += "<A HREF='?src=\ref[src];mach_close=robotalerts'>Close</A><BR><BR>" dat += "<A HREF='?src=\ref[src];mach_close=robotalerts'>Close</A><BR><BR>"
@@ -301,35 +321,52 @@
return 1 return 1
return 0 return 0
// this function shows information about the malf_ai gameplay type in the status screen
/mob/living/silicon/robot/show_malf_ai()
..()
if(ticker.mode.name == "AI malfunction")
var/datum/game_mode/malfunction/malf = ticker.mode
for (var/datum/mind/malfai in malf.malf_ai)
if(connected_ai)
if(connected_ai.mind == malfai)
if(malf.apcs >= 3)
stat(null, "Time until station control secured: [max(malf.AI_win_timeleft/(malf.apcs/3), 0)] seconds")
else if(ticker.mode:malf_mode_declared)
stat(null, "Time left: [max(ticker.mode:AI_win_timeleft/(ticker.mode:apcs/3), 0)]")
return 0
// this function displays jetpack pressure in the stat panel
/mob/living/silicon/robot/proc/show_jetpack_pressure()
// if you have a jetpack, show the internal tank pressure
var/obj/item/weapon/tank/jetpack/current_jetpack = installed_jetpack()
if (current_jetpack)
stat("Internal Atmosphere Info", current_jetpack.name)
stat("Tank Pressure", current_jetpack.air_contents.return_pressure())
// this function returns the robots jetpack, if one is installed
/mob/living/silicon/robot/proc/installed_jetpack()
if(module)
return (locate(/obj/item/weapon/tank/jetpack) in module.modules)
return 0
// this function displays the cyborgs current cell charge in the stat panel
/mob/living/silicon/robot/proc/show_cell_power()
if(cell)
stat(null, text("Charge Left: [cell.charge]/[cell.maxcharge]"))
else
stat(null, text("No Cell Inserted!"))
// update the status screen display
/mob/living/silicon/robot/Stat() /mob/living/silicon/robot/Stat()
..() ..()
statpanel("Status") statpanel("Status")
if (client.statpanel == "Status") if (client.statpanel == "Status")
if(emergency_shuttle.online && emergency_shuttle.location < 2) show_cell_power()
var/timeleft = emergency_shuttle.timeleft() show_jetpack_pressure()
if (timeleft)
stat(null, "ETA-[(timeleft / 60) % 60]:[add_zero(num2text(timeleft % 60), 2)]")
if(ticker.mode.name == "AI malfunction")
var/datum/game_mode/malfunction/malf = ticker.mode
for (var/datum/mind/malfai in malf.malf_ai)
if(connected_ai)
if(connected_ai.mind == malfai)
if(malf.apcs >= 3)
stat(null, "Time until station control secured: [max(malf.AI_win_timeleft/(malf.apcs/3), 0)] seconds")
else if(ticker.mode:malf_mode_declared)
stat(null, "Time left: [max(ticker.mode:AI_win_timeleft/(ticker.mode:apcs/3), 0)]")
if(cell)
stat(null, text("Charge Left: [cell.charge]/[cell.maxcharge]"))
else
stat(null, text("No Cell Inserted!"))
if(module)
internal = locate(/obj/item/weapon/tank/jetpack) in module.modules
if(internal)
stat("Internal Atmosphere Info", internal.name)
stat("Tank Pressure", internal.air_contents.return_pressure())
/mob/living/silicon/robot/restrained() /mob/living/silicon/robot/restrained()
return 0 return 0

View File

@@ -144,4 +144,51 @@
return 0 return 0
if (bot.connected_ai == ai) if (bot.connected_ai == ai)
return 1 return 1
return 0 return 0
// this function shows the health of the pAI in the Status panel
/mob/living/silicon/proc/show_system_integrity()
if(!src.stat)
stat(null, text("System integrity: [(src.health+100)/2]%"))
else
stat(null, text("Systems nonfunctional"))
// This is a pure virtual function, it should be overwritten by all subclasses
/mob/living/silicon/proc/show_malf_ai()
return 0
// this function displays the station time in the status panel
/mob/living/silicon/proc/show_station_time()
stat(null, "Station Time: [worldtime2text()]")
// this function displays the shuttles ETA in the status panel if the shuttle has been called
/mob/living/silicon/proc/show_emergency_shuttle_eta()
if(emergency_shuttle.online && emergency_shuttle.location < 2)
var/timeleft = emergency_shuttle.timeleft()
if (timeleft)
stat(null, "ETA-[(timeleft / 60) % 60]:[add_zero(num2text(timeleft % 60), 2)]")
// This adds the basic clock, shuttle recall timer, and malf_ai info to all silicon lifeforms
/mob/living/silicon/Stat()
..()
statpanel("Status")
if (src.client.statpanel == "Status")
show_station_time()
show_emergency_shuttle_eta()
show_system_integrity()
show_malf_ai()
// this function displays the stations manifest in a separate window
/mob/living/silicon/proc/show_station_manifest()
var/dat
dat += "<h4>Crew Manifest</h4>"
if(data_core)
dat += data_core.get_manifest(0) // make it monochrome
dat += "<br>"
src << browse(dat, "window=airoster")
onclose(src, "airoster")

View File

@@ -144,8 +144,10 @@ datum/preferences
icobase = 'icons/mob/human_races/r_lizard.dmi' icobase = 'icons/mob/human_races/r_lizard.dmi'
if("Skrell") if("Skrell")
icobase = 'icons/mob/human_races/r_skrell.dmi' icobase = 'icons/mob/human_races/r_skrell.dmi'
if("Vox") if("Vox")
icobase = 'icons/mob/human_races/r_vox.dmi' icobase = 'icons/mob/human_races/r_vox.dmi'
else else
icobase = 'icons/mob/human_races/r_human.dmi' icobase = 'icons/mob/human_races/r_human.dmi'
preview_icon = new /icon(icobase, "torso_[g]") preview_icon = new /icon(icobase, "torso_[g]")

View File

@@ -740,8 +740,10 @@ obj/item/weapon/organ/New(loc, mob/living/carbon/human/H)
base = new('icons/mob/human_races/r_lizard.dmi') base = new('icons/mob/human_races/r_lizard.dmi')
if("skrell") if("skrell")
base = new('icons/mob/human_races/r_skrell.dmi') base = new('icons/mob/human_races/r_skrell.dmi')
if("vox") if("vox")
base = new('icons/mob/human_races/r_vox.dmi') base = new('icons/mob/human_races/r_vox.dmi')
else else
base = new('icons/mob/human_races/r_human.dmi') base = new('icons/mob/human_races/r_human.dmi')
if(base) if(base)

View File

@@ -174,7 +174,7 @@
playsound(user, fire_sound, 50, 1) playsound(user, fire_sound, 50, 1)
in_chamber.on_hit(M) in_chamber.on_hit(M)
if (!in_chamber.nodamage) if (!in_chamber.nodamage)
user.apply_damage(in_chamber.damage*2.5, in_chamber.damage_type, "head", used_weapon = "Point blank shot in the mouth with \a [in_chamber]") user.apply_damage(in_chamber.damage*100, in_chamber.damage_type, "head", used_weapon = "Point blank shot in the mouth with \a [in_chamber]")
else else
user << "<span class = 'notice'>You feel dumb for trying this...</span>" user << "<span class = 'notice'>You feel dumb for trying this...</span>"
del(in_chamber) del(in_chamber)

View File

@@ -48,6 +48,7 @@
var/stutter = 0 var/stutter = 0
var/eyeblur = 0 var/eyeblur = 0
var/drowsy = 0 var/drowsy = 0
var/agony = 0
proc/on_hit(var/atom/target, var/blocked = 0) proc/on_hit(var/atom/target, var/blocked = 0)
@@ -55,7 +56,7 @@
if(!isliving(target)) return 0 if(!isliving(target)) return 0
if(isanimal(target)) return 0 if(isanimal(target)) return 0
var/mob/living/L = target var/mob/living/L = target
L.apply_effects(stun, weaken, paralyze, irradiate, stutter, eyeblur, drowsy, blocked) L.apply_effects(stun, weaken, paralyze, irradiate, stutter, eyeblur, drowsy, agony, blocked) // add in AGONY!
return 1 return 1
proc/check_fire(var/mob/living/target as mob, var/mob/living/user as mob) //Checks if you can hit them or not. proc/check_fire(var/mob/living/target as mob, var/mob/living/user as mob) //Checks if you can hit them or not.
@@ -114,6 +115,7 @@
msg_admin_attack("ATTACK: UNKNOWN shot [M] ([M.ckey]) with a [src]") //BS12 EDIT ALG msg_admin_attack("ATTACK: UNKNOWN shot [M] ([M.ckey]) with a [src]") //BS12 EDIT ALG
spawn(0) spawn(0)
if(A) if(A)
if (!forcedodge) if (!forcedodge)
forcedodge = A.bullet_act(src, def_zone) // searches for return value forcedodge = A.bullet_act(src, def_zone) // searches for return value
@@ -125,7 +127,6 @@
loc = A.loc loc = A.loc
permutated.Add(A) permutated.Add(A)
return 0 return 0
if(istype(A,/turf)) if(istype(A,/turf))
for(var/obj/O in A) for(var/obj/O in A)
O.bullet_act(src) O.bullet_act(src)

View File

@@ -9,14 +9,15 @@
/obj/item/projectile/energy/electrode /obj/item/projectile/energy/electrode
name = "electrode" name = "electrode"
icon_state = "spark" icon_state = "spark"
/* - Old taser bit nodamage = 1
nodamage = 0 /*
stun = 10 stun = 10
weaken = 10 weaken = 10
stutter = 10 stutter = 10
*/ */
damage = 40 agony = 40
damage_type = HALLOSS damage_type = HALLOSS
//Damage will be handled on the MOB side, to prevent window shattering.

View File

@@ -427,6 +427,7 @@ var/list/global_mutations = list() // list of hidden mutation things
#define WEAKEN "weaken" #define WEAKEN "weaken"
#define PARALYZE "paralize" #define PARALYZE "paralize"
#define IRRADIATE "irradiate" #define IRRADIATE "irradiate"
#define AGONY "agony" // Added in PAIN!
#define STUTTER "stutter" #define STUTTER "stutter"
#define EYE_BLUR "eye_blur" #define EYE_BLUR "eye_blur"
#define DROWSY "drowsy" #define DROWSY "drowsy"

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB

View File

@@ -7217,7 +7217,7 @@
"cIO" = (/obj/structure/stool/bed/chair{dir = 1},/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/creed) "cIO" = (/obj/structure/stool/bed/chair{dir = 1},/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/creed)
"cIP" = (/obj/machinery/computer/pod{id = "NTrasen"; name = "Hull Door Control"},/obj/item/device/radio/intercom{broadcasting = 1; dir = 1; frequency = 1441; name = "Spec Ops Intercom"; pixel_y = 28},/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/creed) "cIP" = (/obj/machinery/computer/pod{id = "NTrasen"; name = "Hull Door Control"},/obj/item/device/radio/intercom{broadcasting = 1; dir = 1; frequency = 1441; name = "Spec Ops Intercom"; pixel_y = 28},/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/creed)
"cIQ" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/secure/briefcase,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/control) "cIQ" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/secure/briefcase,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/control)
"cIR" = (/turf/unsimulated/floor{tag = "icon-yellow (NORTHWEST)"; icon_state = "yellow"; dir = 9},/area/centcom/control) "cIR" = (/obj/effect/landmark{name = "Response Team"; tag = "Response Team"},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/control)
"cIS" = (/turf/unsimulated/floor{tag = "icon-yellow (NORTHEAST)"; icon_state = "yellow"; dir = 5},/area/centcom/control) "cIS" = (/turf/unsimulated/floor{tag = "icon-yellow (NORTHEAST)"; icon_state = "yellow"; dir = 5},/area/centcom/control)
"cIT" = (/turf/unsimulated/floor{tag = "icon-whitehall (NORTHWEST)"; icon_state = "whitehall"; dir = 9},/area/centcom/control) "cIT" = (/turf/unsimulated/floor{tag = "icon-whitehall (NORTHWEST)"; icon_state = "whitehall"; dir = 9},/area/centcom/control)
"cIU" = (/turf/unsimulated/floor{tag = "icon-whitehall (NORTHEAST)"; icon_state = "whitehall"; dir = 5},/area/centcom/control) "cIU" = (/turf/unsimulated/floor{tag = "icon-whitehall (NORTHEAST)"; icon_state = "whitehall"; dir = 5},/area/centcom/control)
@@ -10032,6 +10032,7 @@
"dKV" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/stool/bed/roller,/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay) "dKV" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/stool/bed/roller,/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
"dKW" = (/obj/structure/table/reinforced,/obj/machinery/computer/med_data/laptop,/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/medbay) "dKW" = (/obj/structure/table/reinforced,/obj/machinery/computer/med_data/laptop,/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/medbay)
"dKX" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/camera{c_tag = "Medbay Foyer"; dir = 8; network = list("SS13"); pixel_x = 0; pixel_y = -22},/obj/structure/table/reinforced,/obj/item/weapon/folder/white,/obj/item/weapon/pen,/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/medbay) "dKX" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/camera{c_tag = "Medbay Foyer"; dir = 8; network = list("SS13"); pixel_x = 0; pixel_y = -22},/obj/structure/table/reinforced,/obj/item/weapon/folder/white,/obj/item/weapon/pen,/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/medbay)
"dKY" = (/obj/effect/landmark{name = "Response Team"; tag = "Response Team"},/turf/unsimulated/floor{tag = "icon-yellow (NORTHWEST)"; icon_state = "yellow"; dir = 9},/area/centcom/control)
(1,1,1) = {" (1,1,1) = {"
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -10437,10 +10438,10 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactjctjctjctjctjctjctjctjctjctjctjctjctjcFycFycFycFycFycFycFycFycFycFycFycFycFycIhcIicIicIhaaaaaaaaacHzcIjcHZcHZcHZcHZcHzcHFcEOcHGcEicEJcEJcGAcEAcEAcEAcEAcEAcEAcEAcEAcEAcGJcEJcEJcEiaaaaaaaaaaaaaaacEicIkcHMcEicIccIlcIccFccHOcHOcHOcHOcHOcHOcEicEOcIecFecFecIfcEOcIgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactjctjctjctjctjctjctjctjctjctjctjctjctjcFycFycFycFycFycFycFycFycFycFycFycFycFycIhcIicIicIhaaaaaaaaacHzcIjcHZcHZcHZcHZcHzcHFcEOcHGcEicEJcEJcGAcEAcEAcEAcEAcEAcEAcEAcEAcEAcGJcEJcEJcEiaaaaaaaaaaaaaaacEicIkcHMcEicIccIlcIccFccHOcHOcHOcHOcHOcHOcEicEOcIecFecFecIfcEOcIgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacImcIncIncIncIncIocIocIncIncIpaaacHzcHZcHZcHZcHZcIqcHzcIrcEOcIscEicEicItcEicEicEicEicEicIucEicEicEicEicEicEicEicEiaaaaaaaaaaaaaaacEicIvcHMcEicFCcFccFccFccHOaaaaaaaaaaaaaaacEicEOcIecFecFecIfcEOcIgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacImcIncIncIncIncIocIocIncIncIpaaacHzcHZcHZcHZcHZcIqcHzcIrcEOcIscEicEicItcEicEicEicEicEicIucEicEicEicEicEicEicEicEiaaaaaaaaaaaaaaacEicIvcHMcEicFCcFccFccFccHOaaaaaaaaaaaaaaacEicEOcIecFecFecIfcEOcIgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIwcIxcIycIzcIAcIzcIzcIBcICcIncIpcHzcHZcIDcIEcIFcIGcHzcIHcEOcEOcEOcEOcEOcEOcIIcEicEicIJcIJcIJcEiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEicEicEicEicEicEicEicEicHOaaaaaaaaaaaaaaacIKcEOcIecFecFecIfcEOcIgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIwcIxcIycIzcIAcIzcIzcIBcICcIncIpcHzcHZcIDcIEcIFcIGcHzcIHcEOcEOcEOcEOcEOcEOcIIcEicEicIJcIJcIJcEiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEicEicEicEicEicEicEicEicHOaaaaaaaaaaaaaaacIKcEOcIecFecFecIfcEOcIgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIwcIxcIycIzcIzcIzcIzcIzcIzcILcIMcHzcHZcINcIOcIPcIOcHzcIQcEOcIRcIScITcIUcEOcIVcEicEicEicIWcEicEicEiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIXcEOcEOcIYcIYcEOcEOcIXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIwcIxcIycIzcIzcIzcIzcIzcIzcILcIMcHzcHZcINcIOcIPcIOcHzcIQcIRdKYcIScITcIUcEOcIVcEicEicEicIWcEicEicEiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIXcEOcEOcIYcIYcEOcEOcIXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIwcIxcIycIZcIZcIZcIZcIZcIZcIncJacHzcHZcHZcHZcHZcHZcHzcJbcEOcJccJdcJecJfcEOcJgcEicEzcGJcEJcGAcJhcEiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEicJicEOcEOcEOcEOcJjcEiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIwcIxcIycIZcIZcIZcIZcIZcIZcIncJacHzcHZcHZcHZcHZcHZcHzcJbcIRcJccJdcJecJfcEOcJgcEicEzcGJcEJcGAcJhcEiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEicJicEOcEOcEOcEOcJjcEiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacJkcIncIncIncIncIncIncIncIncJaaaacHzcHzcHzcHzcHzcHzcHzcJlcEOcJmcJncJocJpcEOcJqcEicJrcJscJtcJscJucEiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEicEicEicEicEicEicEicEiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacJkcIncIncIncIncIncIncIncIncJaaaacHzcHzcHzcHzcHzcHzcHzcJlcIRcJmcJncJocJpcEOcJqcEicJrcJscJtcJscJucEiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEicEicEicEicEicEicEicEiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEicJvcEOcJwcJxcJycJzcEOcJAcJBcEIcJCcEJcJDcFScHOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacJEcJFcJGcJGcJGcJHcJIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEicJvcIRcJwcJxcJycJzcEOcJAcJBcEIcJCcEJcJDcFScHOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacJEcJFcJGcJGcJGcJHcJIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEicEOcEOcEOcEOcEOcEOcEOcJJcJBcETcHecGUcHecJKcHOaaaaaaaaaaaaaaaaaaaaaaaaaaacJEcJLcJMcJNcJOcJNcJPcJQcJIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEicEOcEOcEOcEOcEOcEOcEOcJJcJBcETcHecGUcHecJKcHOaaaaaaaaaaaaaaaaaaaaaaaaaaacJEcJLcJMcJNcJOcJNcJPcJQcJIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEicJRcJScJTcJUcEOcJVcJWcJXcJBcJYcJZcKacJZcKbcHOaaaaaaaaaaaaaaaaaaaaaaaaaaacKccKdcKecKfcKfcKfcKgcKhcKcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEicJRcJScJTcJUcEOcJVcJWcJXcJBcJYcJZcKacJZcKbcHOaaaaaaaaaaaaaaaaaaaaaaaaaaacKccKdcKecKfcKfcKfcKgcKhcKcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacJBcJBcJBcJBcJBcJBcJBcJBcJBcJBcJBcJBcJBcJBcJBcJBcKicJBcJBcJBcJBcEIcEJcKjcEJcKkcHOcHOcHOaaaaaaaaaaaaaaaaaaaaacKccKlcKecKfcKfcKmcKgcKncKcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacJBcJBcJBcJBcJBcJBcJBcJBcJBcJBcJBcJBcJBcJBcJBcJBcKicJBcJBcJBcJBcEIcEJcKjcEJcKkcHOcHOcHOaaaaaaaaaaaaaaaaaaaaacKccKlcKecKfcKfcKmcKgcKncKcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa