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

Conflicts:
	maps/tgstation.2.1.0.0.1.dmm

Signed-off-by: Cael_Aislinn <cael_aislinn@yahoo.com.au>
This commit is contained in:
Cael_Aislinn
2013-03-15 20:37:35 +10:00
31 changed files with 18859 additions and 18570 deletions

View File

@@ -345,6 +345,7 @@
#include "code\game\machinery\bots\bots.dm"
#include "code\game\machinery\bots\cleanbot.dm"
#include "code\game\machinery\bots\ed209bot.dm"
#include "code\game\machinery\bots\floorbot.dm"
#include "code\game\machinery\bots\medbot.dm"
#include "code\game\machinery\bots\mulebot.dm"
#include "code\game\machinery\bots\secbot.dm"

View File

@@ -75,6 +75,24 @@ datum/controller/vote
choices[master_mode] += non_voters
if(choices[master_mode] >= greatest_votes)
greatest_votes = choices[master_mode]
else if(mode == "crew_transfer")
var/factor = 0.5
switch(world.time / (10 * 60)) // minutes
if(0 to 60)
factor = 0.5
if(61 to 120)
factor = 0.8
if(121 to 240)
factor = 1
if(241 to 300)
factor = 1.2
else
factor = 1.4
choices["Initiate Crew Transfer"] = round(choices["Initiate Crew Transfer"] * factor)
world << "<font color='purple'>Crew Transfer Factor: [factor]</font>"
greatest_votes = max(choices["Initiate Crew Transfer"], choices["Continue The Round"])
//get all options with that many votes and return them in a list
. = list()
if(greatest_votes)

View File

@@ -113,4 +113,8 @@
/datum/organ/internal/kidney
name = "kidney"
parent_organ = "chest"
parent_organ = "chest"
/datum/organ/internal/brain
name = "brain"
parent_organ = "head"

View File

@@ -87,4 +87,23 @@ mob/living/carbon/human/proc/handle_pain()
var/datum/organ/internal/I = internal_organs[organ_name]
if(I.damage > 2) if(prob(2))
var/datum/organ/external/parent = get_organ(I.parent_organ)
src.custom_pain("You feel a sharp pain in your [parent.display_name]", 1)
src.custom_pain("You feel a sharp pain in your [parent.display_name]", 1)
var/toxDamageMessage = null
var/toxMessageProb = 1
switch(getToxLoss())
if(1 to 5)
toxMessageProb = 1
toxDamageMessage = "Your body stings slightly."
if(6 to 10)
toxMessageProb = 2
toxDamageMessage = "Your whole body hurts a little."
if(11 to 15)
toxMessageProb = 2
toxDamageMessage = "Your whole body hurts."
else
toxMessageProb = 5
toxDamageMessage = "Your body aches all over, it's driving you mad."
if(toxDamageMessage && prob(toxMessageProb))
src.custom_pain(toxDamageMessage, getToxLoss() >= 15)

View File

@@ -344,7 +344,7 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
/datum/supply_packs/virus
name = "Virus crate"
contains = list(/obj/item/weapon/reagent_containers/glass/bottle/flu_virion,
/* contains = list(/obj/item/weapon/reagent_containers/glass/bottle/flu_virion,
/obj/item/weapon/reagent_containers/glass/bottle/cold,
/obj/item/weapon/reagent_containers/glass/bottle/epiglottis_virion,
/obj/item/weapon/reagent_containers/glass/bottle/liver_enhance_virion,
@@ -355,7 +355,11 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
/obj/item/weapon/reagent_containers/glass/bottle/hullucigen_virion,
/obj/item/weapon/storage/box/syringes,
/obj/item/weapon/storage/box/beakers,
/obj/item/weapon/reagent_containers/glass/bottle/mutagen)
/obj/item/weapon/reagent_containers/glass/bottle/mutagen)*/
contains = list(/obj/item/weapon/virusdish/random,
/obj/item/weapon/virusdish/random,
/obj/item/weapon/virusdish/random,
/obj/item/weapon/virusdish/random)
cost = 25
containertype = "/obj/structure/closet/crate/secure"
containername = "Virus crate"

View File

@@ -336,7 +336,7 @@ datum/objective/silence
datum/objective/escape
explanation_text = "Escape on the shuttle or an escape pod alive."
explanation_text = "Escape on the shuttle or an escape pod alive and free."
check_completion()
@@ -353,6 +353,10 @@ datum/objective/escape
return 0
if(istype(location, /turf/simulated/shuttle/floor4)) // Fails tratiors if they are in the shuttle brig -- Polymorph
if(istype(owner.current, /mob/living/carbon))
var/mob/living/carbon/C = owner.current
if (!C.handcuffed)
return 1
return 0
var/area/check_area = location.loc

View File

@@ -0,0 +1 @@
var/list/departments = list("Command", "Medical", "Engineering", "Security", "Civilian", "Cargo")

View File

@@ -12,11 +12,11 @@
access = list(access_engine, access_engine_equip, access_tech_storage, access_maint_tunnels,
access_teleporter, access_external_airlocks, access_atmospherics, access_emergency_storage, access_eva,
access_heads, access_construction, access_sec_doors,
access_ce, access_RC_announce, access_keycard_auth, access_tcomsat)
access_ce, access_RC_announce, access_keycard_auth, access_tcomsat, access_ai_upload)
minimal_access = list(access_engine, access_engine_equip, access_tech_storage, access_maint_tunnels,
access_teleporter, access_external_airlocks, access_atmospherics, access_emergency_storage, access_eva,
access_heads, access_construction, access_sec_doors,
access_ce, access_RC_announce, access_keycard_auth, access_tcomsat)
access_ce, access_RC_announce, access_keycard_auth, access_tcomsat, access_ai_upload)
minimal_player_age = 7

View File

@@ -174,7 +174,7 @@
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_med(H), slot_back)
if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/virologist(H), slot_w_uniform)
H.equip_to_slot_or_del(new /obj/item/device/pda/medical(H), slot_belt)
H.equip_to_slot_or_del(new /obj/item/device/pda/viro(H), slot_belt)
H.equip_to_slot_or_del(new /obj/item/clothing/mask/surgical(H), slot_wear_mask)
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/white(H), slot_shoes)
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/labcoat/virologist(H), slot_wear_suit)
@@ -215,4 +215,4 @@
H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H), slot_r_hand)
else
H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack)
return 1
return 1

View File

@@ -495,5 +495,5 @@ var/global/datum/controller/occupations/job_master
level3++
else level4++ //not selected
tmp_str += "HIGH=[level1]|MEDIUM=[level2]|LOW=[level3]|NEVER=[level4]|BANNED=[level5]|-|YOUNG=[level6]|-"
tmp_str += "HIGH=[level1]|MEDIUM=[level2]|LOW=[level3]|NEVER=[level4]|BANNED=[level5]|YOUNG=[level6]|-"
feedback_add_details("job_preferences",tmp_str)

View File

@@ -45,12 +45,6 @@ var/const/ASSISTANT =(1<<13)
var/list/assistant_occupations = list(
"Assistant",
"Atmospheric Technician",
"Cargo Technician",
"Chaplain",
"Lawyer",
"Librarian"
)
@@ -68,7 +62,6 @@ var/list/engineering_positions = list(
"Chief Engineer",
"Station Engineer",
"Atmospheric Technician",
"Roboticist"
)
@@ -85,7 +78,7 @@ var/list/science_positions = list(
"Research Director",
"Scientist",
"Geneticist", //Part of both medical and science
"Roboticist" //Part of both engineering and science
"Roboticist"
)
//BS12 EDIT

View File

@@ -3,6 +3,8 @@
//Potential replacement for genetics revives or something I dunno (?)
#define CLONE_BIOMASS 150
/obj/machinery/clonepod
anchored = 1
name = "cloning pod"
@@ -18,6 +20,7 @@
var/mess = 0 //Need to clean out it if it's full of exploded clone.
var/attempting = 0 //One clone attempt at a time thanks
var/eject_wait = 0 //Don't eject them as soon as they are created fuckkk
var/biomass = CLONE_BIOMASS
//The return of data disks?? Just for transferring between genetics machine/cloning machine.
//TO-DO: Make the genetics machine accept them.
@@ -271,6 +274,12 @@
src.locked = 0
src.go_out()
return
else if (istype(W, /obj/item/weapon/reagent_containers/food/snacks/meat))
user << "\blue \The [src] processes \the [W]."
biomass += 50
user.drop_item()
del(W)
return
else
..()
@@ -328,6 +337,9 @@
domutcheck(src.occupant) //Waiting until they're out before possible monkeyizing.
src.occupant.add_side_effect("Bad Stomach") // Give them an extra side-effect for free.
src.occupant = null
src.biomass -= CLONE_BIOMASS
return
/obj/machinery/clonepod/proc/malfunction()

View File

@@ -202,6 +202,9 @@
dat += "Lock status: <a href='byond://?src=\ref[src];lock=1'>[src.scanner.locked ? "Locked" : "Unlocked"]</a><br>"
if (!isnull(src.pod1))
dat += "Biomass: <i>[src.pod1.biomass]</i><br>"
// Database
dat += "<h4>Database Functions</h4>"
dat += "<a href='byond://?src=\ref[src];menu=2'>View Records</a><br>"
@@ -243,8 +246,12 @@
dat += "<br>" //Keeping a line empty for appearances I guess.
dat += {"<b>UI:</b> [src.active_record.fields["UI"]]<br>
<b>SE:</b> [src.active_record.fields["SE"]]<br><br>
<a href='byond://?src=\ref[src];clone=\ref[src.active_record]'>Clone</a><br>"}
<b>SE:</b> [src.active_record.fields["SE"]]<br><br>"}
if(pod1 && pod1.biomass >= CLONE_BIOMASS)
dat += {"<a href='byond://?src=\ref[src];clone=\ref[src.active_record]'>Clone</a><br>"}
else
dat += {"<b>Unsufficient biomass</b><br>"}
if(4)
if (!src.active_record)
@@ -378,6 +385,8 @@
temp = "Error: No Clonepod detected."
else if(pod1.occupant)
temp = "Error: Clonepod is currently occupied."
else if(pod1.biomass < CLONE_BIOMASS)
temp = "Error: Not enough biomass."
else if(pod1.mess)
temp = "Error: Clonepod malfunction."
else if(!config.revival_cloning)
@@ -389,6 +398,7 @@
del(C)
menu = 1
else
var/mob/selected = find_dead_player("[C.fields["ckey"]]")
selected << 'chime.ogg' //probably not the best sound but I think it's reasonable
var/answer = alert(selected,"Do you want to return to life?","Cloning","Yes","No")

View File

@@ -48,6 +48,10 @@ var/global/list/obj/item/device/pda/PDAs = list()
default_cartridge = /obj/item/weapon/cartridge/medical
icon_state = "pda-m"
/obj/item/device/pda/viro
default_cartridge = /obj/item/weapon/cartridge/medical
icon_state = "pda-v"
/obj/item/device/pda/engineering
default_cartridge = /obj/item/weapon/cartridge/engineering
icon_state = "pda-e"

View File

@@ -11,6 +11,19 @@
src << "You can't commit suicide before the game starts!"
return
var/permitted = 0
var/list/allowed = list("Syndicate","traitor","Wizard","Head Revolutionary","Cultist","Changeling")
for(var/T in allowed)
if(mind.special_role == T)
permitted = 1
break
if(!permitted)
message_admins("[ckey] has tried to suicide, but they were not permitted due to not being antagonist as human.", 1)
src << "No. Adminhelp if there is a legitimate reason."
return
if (suiciding)
src << "You're already committing suicide! Be patient!"
return

View File

@@ -50,7 +50,7 @@
//Chief Engineer's rig
/obj/item/clothing/head/helmet/space/rig/elite
name = "advanced hardsuit helmet"
desc = "A special suit that protects against hazardous, low pressure environments. Shines with a high polish."
desc = "An advanced helmet designed for work in a hazardous, low pressure environment. Shines with a high polish."
icon_state = "rig0-white"
item_state = "ce_helm"
color = "white"
@@ -58,12 +58,14 @@
/obj/item/clothing/suit/space/rig/elite
icon_state = "rig-white"
name = "advanced hardsuit"
desc = "An advanced suit that protects against hazardous, low pressure environments. Shines with a high polish."
item_state = "ce_hardsuit"
//Mining rig
/obj/item/clothing/head/helmet/space/rig/mining
name = "mining hardsuit helmet"
desc = "A special helmet designed for work in a hazardous, low pressure environment. Has reinforced plating."
icon_state = "rig0-mining"
item_state = "mining_helm"
color = "mining"
@@ -71,6 +73,7 @@
/obj/item/clothing/suit/space/rig/mining
icon_state = "rig-mining"
name = "mining hardsuit"
desc = "A special suit that protects against hazardous, low pressure environments. Has reinforced plating."
item_state = "mining_hardsuit"
@@ -78,6 +81,7 @@
//Syndicate rig
/obj/item/clothing/head/helmet/space/rig/syndi
name = "blood-red hardsuit helmet"
desc = "An advanced helmet designed for work in special operations. Property of Gorlex Marauders."
icon_state = "rig0-syndi"
item_state = "syndie_helm"
color = "syndi"
@@ -87,6 +91,7 @@
/obj/item/clothing/suit/space/rig/syndi
icon_state = "rig-syndi"
name = "blood-red hardsuit"
desc = "An advanced suit that protects against injuries during special operations. Property of Gorlex Marauders."
item_state = "syndie_hardsuit"
slowdown = 1
w_class = 3
@@ -97,6 +102,7 @@
//Wizard Rig
/obj/item/clothing/head/helmet/space/rig/wizard
name = "gem-encrusted hardsuit helmet"
desc = "A bizarre gem-encrusted helmet that radiates magical energies."
icon_state = "rig0-wiz"
item_state = "wiz_helm"
color = "wiz"
@@ -106,6 +112,7 @@
/obj/item/clothing/suit/space/rig/wizard
icon_state = "rig-wiz"
name = "gem-encrusted hardsuit"
desc = "A bizarre gem-encrusted suit that radiates magical energies."
item_state = "wiz_hardsuit"
slowdown = 1
w_class = 3
@@ -116,6 +123,7 @@
//Medical Rig
/obj/item/clothing/head/helmet/space/rig/medical
name = "medical hardsuit helmet"
desc = "A special helmet designed for work in a hazardous, low pressure environment. Has minor radiation shielding."
icon_state = "rig0-medical"
item_state = "medical_helm"
color = "medical"
@@ -123,6 +131,7 @@
/obj/item/clothing/suit/space/rig/medical
icon_state = "rig-medical"
name = "medical hardsuit"
desc = "A special suit that protects against hazardous, low pressure environments. Has minor radiation shielding."
item_state = "medical_hardsuit"
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/weapon/storage/firstaid,/obj/item/device/healthanalyzer,/obj/item/stack/medical)
@@ -130,6 +139,7 @@
//Security
/obj/item/clothing/head/helmet/space/rig/security
name = "security hardsuit helmet"
desc = "A special helmet designed for work in a hazardous, low pressure environment. Has an additional layer of armor."
icon_state = "rig0-sec"
item_state = "sec_helm"
color = "sec"
@@ -138,6 +148,7 @@
/obj/item/clothing/suit/space/rig/security
icon_state = "rig-sec"
name = "security hardsuit"
desc = "A special suit that protects against hazardous, low pressure environments. Has an additional layer of armor."
item_state = "sec_hardsuit"
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)

View File

@@ -29,7 +29,7 @@
else if(prob(50))
msg = "Contact has been lost with a combat drone wing operating out of the NMV Icarus. If any are sighted in the area, approach with caution."
else
msg = "Syndicate saboteurs have targetted a combat drone wing deployed from the NMV Icarus. If any are sighted in the area, approach with caution."
msg = "Unidentified hackers have targetted a combat drone wing deployed from the NMV Icarus. If any are sighted in the area, approach with caution."
command_alert(msg, "Rogue drone alert")
/datum/event/rogue_drone/tick()

View File

@@ -413,8 +413,35 @@
msg += "<span class = 'deptradio'>Criminal status:</span> <a href='?src=\ref[src];criminal=1'>\[[criminal]\]</a>\n"
msg += "<span class = 'deptradio'>Security records:</span> <a href='?src=\ref[src];secrecord=`'>\[View\]</a>\n"
//msg += "\[Set Hostile Identification\]\n"
if(istype(usr, /mob/living/carbon/human))
var/mob/living/carbon/human/H = usr
if(istype(H.glasses, /obj/item/clothing/glasses/hud/health))
var/perpname = "wot"
var/medical = "None"
if(wear_id)
if(istype(wear_id,/obj/item/weapon/card/id))
perpname = wear_id:registered_name
else if(istype(wear_id,/obj/item/device/pda))
var/obj/item/device/pda/tempPda = wear_id
perpname = tempPda.owner
else
perpname = src.name
for (var/datum/data/record/E in data_core.general)
if (E.fields["name"] == perpname)
for (var/datum/data/record/R in data_core.general)
if (R.fields["id"] == E.fields["id"])
medical = R.fields["p_stat"]
msg += "<span class = 'deptradio'>Physical status:</span> <a href='?src=\ref[src];medical=1'>\[[medical]\]</a>\n"
msg += "<span class = 'deptradio'>Medical records:</span> <a href='?src=\ref[src];medrecord=`'>\[View\]</a>\n"
if(print_flavor_text()) msg += "[print_flavor_text()]\n"
msg += "*---------*</span>"

View File

@@ -42,32 +42,9 @@
new/datum/organ/internal/lungs(src)
new/datum/organ/internal/liver(src)
new/datum/organ/internal/kidney(src)
new/datum/organ/internal/brain(src)
// connect feet to legs and hands to arms
/* var/datum/organ/external/organ = organs_by_name["l_hand"]
organ.parent = organs_by_name["l_arm"]
organ = organs_by_name["r_hand"]
organ.parent = organs_by_name["r_arm"]
organ = organs_by_name["l_foot"]
organ.parent = organs_by_name["l_leg"]
organ = organs_by_name["r_foot"]
organ.parent = organs_by_name["r_leg"]
organ = organs_by_name["r_foot"]
organ.parent = organs_by_name["r_leg"]
organ = organs_by_name["head"]
organ.parent = organs_by_name["chest"]
organ = organs_by_name["groin"]
organ.parent = organs_by_name["chest"]
organ = organs_by_name["r_leg"]
organ.parent = organs_by_name["groin"]
organ = organs_by_name["l_leg"]
organ.parent = organs_by_name["groin"]
organ = organs_by_name["r_arm"]
organ.parent = organs_by_name["chest"]
organ = organs_by_name["l_arm"]
organ.parent = organs_by_name["chest"]
*/
for(var/name in organs_by_name)
organs += organs_by_name[name]
@@ -632,6 +609,103 @@
if(!modified)
usr << "\red Unable to locate a data core entry for this person."
if (href_list["secrecord"])
if(istype(usr, /mob/living/carbon/human))
var/mob/living/carbon/human/H = usr
if(istype(H.glasses, /obj/item/clothing/glasses/hud/security) || istype(H.glasses, /obj/item/clothing/glasses/sunglasses/sechud))
var/perpname = "wot"
var/read = 0
if(wear_id)
if(istype(wear_id,/obj/item/weapon/card/id))
perpname = wear_id:registered_name
else if(istype(wear_id,/obj/item/device/pda))
var/obj/item/device/pda/tempPda = wear_id
perpname = tempPda.owner
else
perpname = src.name
for (var/datum/data/record/E in data_core.general)
if (E.fields["name"] == perpname)
for (var/datum/data/record/R in data_core.security)
if (R.fields["id"] == E.fields["id"])
if(istype(H.glasses, /obj/item/clothing/glasses/hud/security) || istype(H.glasses, /obj/item/clothing/glasses/sunglasses/sechud))
usr << "<b>Name:</b> [R.fields["name"]] <b>Criminal Status:</b> [R.fields["criminal"]]"
usr << "<b>Minor Crimes:</b> [R.fields["mi_crim"]]"
usr << "<b>Details:</b> [R.fields["mi_crim_d"]]"
usr << "<b>Major Crimes:</b> [R.fields["ma_crim"]]"
usr << "<b>Details:</b> [R.fields["ma_crim_d"]]"
usr << "<b>Notes:</b> [R.fields["notes"]]"
read = 1
if(!read)
usr << "\red Unable to locate a data core entry for this person."
if (href_list["medical"])
if(istype(usr, /mob/living/carbon/human))
var/mob/living/carbon/human/H = usr
if(istype(H.glasses, /obj/item/clothing/glasses/hud/health))
var/perpname = "wot"
var/modified = 0
if(wear_id)
if(istype(wear_id,/obj/item/weapon/card/id))
perpname = wear_id:registered_name
else if(istype(wear_id,/obj/item/device/pda))
var/obj/item/device/pda/tempPda = wear_id
perpname = tempPda.owner
else
perpname = src.name
for (var/datum/data/record/E in data_core.general)
if (E.fields["name"] == perpname)
for (var/datum/data/record/R in data_core.general)
if (R.fields["id"] == E.fields["id"])
var/setmedical = input(usr, "Specify a new criminal status for this person.", "Medical HUD", R.fields["p_stat"]) in list("*Deceased*", "*Unconscious*", "Physically Unfit", "Active", "Cancel")
if(istype(H.glasses, /obj/item/clothing/glasses/hud/health))
if(setmedical != "Cancel")
R.fields["p_stat"] = setmedical
modified = 1
spawn()
H.handle_regular_hud_updates()
if(!modified)
usr << "\red Unable to locate a data core entry for this person."
if (href_list["medrecord"])
if(istype(usr, /mob/living/carbon/human))
var/mob/living/carbon/human/H = usr
if(istype(H.glasses, /obj/item/clothing/glasses/hud/health))
var/perpname = "wot"
var/read = 0
if(wear_id)
if(istype(wear_id,/obj/item/weapon/card/id))
perpname = wear_id:registered_name
else if(istype(wear_id,/obj/item/device/pda))
var/obj/item/device/pda/tempPda = wear_id
perpname = tempPda.owner
else
perpname = src.name
for (var/datum/data/record/E in data_core.general)
if (E.fields["name"] == perpname)
for (var/datum/data/record/R in data_core.medical)
if (R.fields["id"] == E.fields["id"])
if(istype(H.glasses, /obj/item/clothing/glasses/hud/health))
usr << "<b>Name:</b> [R.fields["name"]] <b>Blood Type:</b> [R.fields["b_type"]]"
usr << "<b>DNA:</b> [R.fields["b_dna"]]"
usr << "<b>Minor Disabilities:</b> [R.fields["mi_dis"]]"
usr << "<b>Details:</b> [R.fields["mi_dis_d"]]"
usr << "<b>Major Disabilities:</b> [R.fields["ma_dis"]]"
usr << "<b>Details:</b> [R.fields["ma_dis_d"]]"
usr << "<b>Notes:</b> [R.fields["notes"]]"
read = 1
if(!read)
usr << "\red Unable to locate a data core entry for this person."
..()
return

View File

@@ -15,6 +15,15 @@
ChangeToHusk()
return
/mob/living/carbon/human/getBrainLoss()
var/res = brainloss
var/datum/organ/internal/brain/sponge = internal_organs["brain"]
if (sponge.is_bruised())
res += 20
if (sponge.is_broken())
res += 50
res = min(res,maxHealth*2)
return res
//These procs fetch a cumulative total damage from all organs
/mob/living/carbon/human/getBruteLoss()

View File

@@ -142,6 +142,9 @@ var/list/department_radio_keys = list(
// Check changed so that parrots can use headsets. Other simple animals do not have ears and will cause runtimes.
// And borgs -Sieve
if(src.stunned > 2 || (traumatic_shock > 61 && prob(50)))
message_mode = "" //Stunned people shouldn't be able to physically turn on their radio/hold down the button to speak into it
if (!message)
return
@@ -179,12 +182,14 @@ var/list/department_radio_keys = list(
var/is_speaking_skrell = 0
var/is_speaking_soghun = 0
var/is_speaking_taj = 0
var/is_speaking_radio = 0
switch (message_mode)
if ("headset")
if (src:ears)
src:ears.talk_into(src, message)
used_radios += src:ears
is_speaking_radio = 1
message_range = 1
italics = 1
@@ -194,6 +199,7 @@ var/list/department_radio_keys = list(
if (src:ears)
src:ears.talk_into(src, message, 1)
used_radios += src:ears
is_speaking_radio = 1
message_range = 1
italics = 1
@@ -202,6 +208,7 @@ var/list/department_radio_keys = list(
if (r_hand)
r_hand.talk_into(src, message)
used_radios += src:r_hand
is_speaking_radio = 1
message_range = 1
italics = 1
@@ -210,6 +217,7 @@ var/list/department_radio_keys = list(
if (l_hand)
l_hand.talk_into(src, message)
used_radios += src:l_hand
is_speaking_radio = 1
message_range = 1
italics = 1
@@ -218,6 +226,7 @@ var/list/department_radio_keys = list(
for (var/obj/item/device/radio/intercom/I in view(1, null))
I.talk_into(src, message)
used_radios += I
is_speaking_radio = 1
message_range = 1
italics = 1
@@ -244,6 +253,7 @@ var/list/department_radio_keys = list(
if (src:ears)
src:ears.talk_into(src, message, message_mode)
used_radios += src:ears
is_speaking_radio = 1
else if(istype(src, /mob/living/silicon/robot))
if (src:radio)
src:radio.talk_into(src, message, message_mode)
@@ -375,6 +385,10 @@ var/list/department_radio_keys = list(
var/image/speech_bubble = image('icons/mob/talk.dmi',src,"h[speech_bubble_test]")
spawn(30) del(speech_bubble)
for(var/mob/M in hearers(5, src))
if(M != src && is_speaking_radio)
M:show_message("<span class='notice'>[src] talks into [used_radios.len ? used_radios[1] : "radio"]</span>")
var/rendered = null
if (length(heard_a))
var/message_a = say_quote(message,is_speaking_soghun,is_speaking_skrell,is_speaking_taj)
@@ -383,7 +397,6 @@ var/list/department_radio_keys = list(
message_a = "<i>[message_a]</i>"
rendered = "<span class='game say'><span class='name'>[GetVoice()]</span>[alt_name] <span class='message'>[message_a]</span></span>"
for (var/M in heard_a)
if(hascall(M,"show_message"))
var/deaf_message = ""

View File

@@ -382,56 +382,62 @@
*/
/datum/sprite_accessory/hair
spines_long
una_spines_long
name = "Long Unathi Spines"
icon_state = "soghun_longspines"
species_allowed = list("Unathi")
spines_short
una_spines_short
name = "Short Unathi Spines"
icon_state = "soghun_shortspines"
species_allowed = list("Unathi")
frills_long
una_frills_long
name = "Long Unathi Frills"
icon_state = "soghun_longfrills"
species_allowed = list("Unathi")
frills_short
una_frills_short
name = "Short Unathi Frills"
icon_state = "soghun_shortfrill"
species_allowed = list("Unathi")
horns
una_horns
name = "Unathi Horns"
icon_state = "soghun_horns"
species_allowed = list("Unathi")
tentacle_f
skr_tentacle_m
name = "Skrell Male Tentacles"
icon_state = "skrell_hair_m"
species_allowed = list("Skrell")
gender = MALE
skr_tentacle_f
name = "Skrell Female Tentacles"
icon_state = "skrell_hair_f"
species_allowed = list("Skrell")
gender = FEMALE
gold_m
skr_gold_m
name = "Gold plated Skrell Male Tentacles"
icon_state = "skrell_goldhair_m"
species_allowed = list("Skrell")
gender = MALE
gold_f
skr_gold_f
name = "Gold chained Skrell Female Tentacles"
icon_state = "skrell_goldhair_f"
species_allowed = list("Skrell")
gender = FEMALE
clothtentacle_m
skr_clothtentacle_m
name = "Cloth draped Skrell Male Tentacles"
icon_state = "skrell_clothhair_m"
species_allowed = list("Skrell")
gender = MALE
clothtentacle_f
skr_clothtentacle_f
name = "Cloth draped Skrell Female Tentacles"
icon_state = "skrell_clothhair_f"
species_allowed = list("Skrell")
@@ -443,12 +449,12 @@
species_allowed = list("Tajaran")
taj_ears_clean
name = "Clean"
name = "Tajara Clean"
icon_state = "hair_clean"
species_allowed = list("Tajaran")
taj_ears_shaggy
name = "Shaggy"
name = "Tajara Shaggy"
icon_state = "hair_shaggy"
species_allowed = list("Tajaran")
@@ -458,64 +464,64 @@
species_allowed = list("Tajaran")
taj_ears_plait
name = "Plait"
name = "Tajara Plait"
icon_state = "hair_plait"
species_allowed = list("Tajaran")
taj_ears_straight
name = "Straight"
name = "Tajara Straight"
icon_state = "hair_straight"
species_allowed = list("Tajaran")
taj_ears_long
name = "Long"
name = "Tajara Long"
icon_state = "hair_long"
species_allowed = list("Tajaran")
taj_ears_rattail
name = "Rat Tail"
name = "Tajara Rat Tail"
icon_state = "hair_rattail"
species_allowed = list("Tajaran")
taj_ears_spiky
name = "Tajaran Spiky"
name = "Tajara Spiky"
icon_state = "hair_tajspiky"
species_allowed = list("Tajaran")
taj_ears_messy
name = "Messy"
name = "Tajara Messy"
icon_state = "hair_messy"
species_allowed = list("Tajaran")
/datum/sprite_accessory/facial_hair
taj_sideburns
name = "Sideburns"
name = "Tajara Sideburns"
icon_state = "facial_mutton"
species_allowed = list("Tajaran")
taj_mutton
name = "Mutton"
name = "Tajara Mutton"
icon_state = "facial_mutton"
species_allowed = list("Tajaran")
taj_pencilstache
name = "Pencilstache"
name = "Tajara Pencilstache"
icon_state = "facial_pencilstache"
species_allowed = list("Tajaran")
taj_moustache
name = "Moustache"
name = "Tajara Moustache"
icon_state = "facial_moustache"
species_allowed = list("Tajaran")
taj_goatee
name = "Goatee"
name = "Tajara Goatee"
icon_state = "facial_goatee"
species_allowed = list("Tajaran")
taj_smallstache
name = "Smallsatche"
name = "Tajara Smallsatche"
icon_state = "facial_smallstache"
species_allowed = list("Tajaran")

View File

@@ -6,6 +6,10 @@
nodamage = 0
flag = "bullet"
on_hit(var/atom/target, var/blocked = 0)
if (..(target, blocked))
var/mob/living/L = target
shake_camera(L, 3, 2)
/obj/item/projectile/bullet/weakbullet
damage = 10

View File

@@ -1815,6 +1815,7 @@ datum
M.sleeping += 1
if(51 to INFINITY)
M.sleeping += 1
M:toxloss += (data - 50)
..()
return

View File

@@ -12,11 +12,11 @@
icon_state = "anog"
/area/research_outpost/power
name = "Research Outpost Power Substation"
name = "Research Outpost Power"
icon_state = "engine"
/area/research_outpost/atmos
name = "Research Outpost Maintenance"
name = "Research Outpost Atmospherics"
icon_state = "atmos"
/area/research_outpost/maint

View File

@@ -1,4 +1,4 @@
//Procedures in this file: Brain extraction. slime Core extraction.
//Procedures in this file: Brain extraction. Brain fixing. Slime Core extraction.
//////////////////////////////////////////////////////////////////
// BRAIN SURGERY //
//////////////////////////////////////////////////////////////////
@@ -99,7 +99,39 @@
//////////////////////////////////////////////////////////////////
// slime CORE EXTRACTION //
// BRAIN DAMAGE FIXING //
//////////////////////////////////////////////////////////////////
/datum/surgery_step/brain/cut_brain
required_tool = /obj/item/weapon/hemostat
allowed_tools = list(/obj/item/weapon/wirecutters, /obj/item/weapon/kitchen/utensil/fork)
min_duration = 80
max_duration = 100
can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
return ..() && target.brain_op_stage == 2
begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
user.visible_message("[user] starts mending ruptured vessels in [target]'s brain with \the [tool].", \
"You start mending [target]'s brainwith \the [tool].")
..()
end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
user.visible_message("\blue [user] mends [target]'s brain hematoma with \the [tool].", \
"\blue You mend ruptured vessels to [target]'s brain hematoma with \the [tool].")
var/datum/organ/internal/brain/sponge = target.internal_organs["brain"]
if (sponge)
sponge.damage = 0
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
user.visible_message("\red [user]'s hand slips, cutting a vein in [target]'s brain with \the [tool]!", \
"\red Your hand slips, cutting a vein in [target]'s brain with \the [tool]!")
target.apply_damage(50, BRUTE, "head", 1)
//////////////////////////////////////////////////////////////////
// SLIME CORE EXTRACTION //
//////////////////////////////////////////////////////////////////
/datum/surgery_step/slime/

View File

@@ -1,4 +1,4 @@
//Procedures in this file: Generic ribcage opening steps, Removing alien embryo, Fixing ruptured lungs
//Procedures in this file: Generic ribcage opening steps, Removing alien embryo, Fixing internal organs.
//////////////////////////////////////////////////////////////////
// GENERIC RIBCAGE SURGERY //
//////////////////////////////////////////////////////////////////

View File

@@ -58,6 +58,30 @@ Stuff which is in development and not yet visible to players or just code relate
should be listed in the changelog upon commit though. Thanks. -->
<!-- To take advantage of the pretty new format (well it was new when I wrote this anyway), open the "add-to-changelog.html" file in any browser and add the stuff and then generate the html code and paste it here -->
<div class="commit sansserif">
<h2 class="date">14.03.2013</h2>
<h3 class="author">Spamcat updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">Figured I should make one of these. Syringestabbing now produces a broken syringe complete with fingerprints of attacker and blood of a victim, so dispose your evidence carefully. Maximum transfer amount per stab is lowered to 10.</li>
</ul>
</div>
<div class="commit sansserif">
<h2 class="date">11/03/2013</h2>
<h3 class="author">Chinsky updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">Sec HUDs now can see short versions of sec records.on examine. Med HUDs do same for medical records, and can set medical status of patient.</li>
<li class="rscadd">Damage to the head can now cause brain damage.</li>
</ul>
</div>
<div class="commit sansserif">
<h2 class="date">March 11th 2013</h2>
<h3 class="author">CIB updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">Cloning now requires you to put slabs of meat into the cloning pod to replenish biomass.</li>
</ul>
</div>
<div class="commit sansserif">
<h2 class="date">March 11th 2013</h2>
@@ -91,6 +115,10 @@ should be listed in the changelog upon commit though. Thanks. -->
<li class="wip">code/maps/rust_test.dmm contains an example setup for a functional RUST reactor. Maximum output is in the range of 12 to 20MW (12 to 20 million watts).</li>
<li class="bugfix">Removed double announcement for gridchecks, reduced duration of gridchecks.</li>
</ul>
<h3 class="author">RavingManiac updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">You can now stab people with syringes using the "harm" intent. This destroys the syringe and transfers a random percentage of its contents into the target. Armor has a 50% chance of blocking the syringe.</li>
</ul>
</div>
<div class="commit sansserif">

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff