Merge remote-tracking branch 'upstream/dev-freeze' into dev

Conflicts:
	code/game/objects/items/weapons/storage/fancy.dm
	code/modules/mob/living/carbon/human/life.dm
This commit is contained in:
PsiOmega
2015-03-20 08:34:43 +01:00
26 changed files with 2301 additions and 2250 deletions

View File

@@ -52,7 +52,7 @@
message_admins("Admin [key_name_admin(usr)] has restarted the [controller] controller.") message_admins("Admin [key_name_admin(usr)] has restarted the [controller] controller.")
return return
/client/proc/debug_controller(controller in list("Master","Failsafe","Ticker","Lighting","Air","Jobs","Sun","Radio","Supply","Shuttles","Emergency Shuttle","Configuration","pAI", "Cameras", "Transfer Controller", "Gas Data","Event","Plants","Alarm")) /client/proc/debug_controller(controller in list("Master","Failsafe","Ticker","Lighting","Air","Jobs","Sun","Radio","Supply","Shuttles","Emergency Shuttle","Configuration","pAI", "Cameras", "Transfer Controller", "Gas Data","Event","Plants","Alarm","Nano"))
set category = "Debug" set category = "Debug"
set name = "Debug Controller" set name = "Debug Controller"
set desc = "Debug the various periodic loop controllers for the game (be careful!)" set desc = "Debug the various periodic loop controllers for the game (be careful!)"
@@ -116,5 +116,8 @@
if("Alarm") if("Alarm")
debug_variables(alarm_manager) debug_variables(alarm_manager)
feedback_add_details("admin_verb", "DAlarm") feedback_add_details("admin_verb", "DAlarm")
if("Nano")
debug_variables(nanomanager)
feedback_add_details("admin_verb", "DNano")
message_admins("Admin [key_name_admin(usr)] is debugging the [controller] controller.") message_admins("Admin [key_name_admin(usr)] is debugging the [controller] controller.")
return return

View File

@@ -198,7 +198,7 @@
var/obj/item/device/radio/R = new (src) var/obj/item/device/radio/R = new (src)
var/AN = "Self-Destruct System" var/AN = "Self-Destruct System"
R.autosay("Caution. Self-Destruct sequence has been actived. Self-destructing in Ten..", AN) R.autosay("Caution. Self-Destruct sequence has been activated. Self-destructing in Ten..", AN)
for (var/i=9 to 1 step -1) for (var/i=9 to 1 step -1)
sleep(10) sleep(10)
var/msg = "" var/msg = ""

View File

@@ -13,10 +13,10 @@
req_admin_notify = 1 req_admin_notify = 1
access = list(access_medical, access_morgue, access_genetics, access_heads, access = list(access_medical, access_morgue, access_genetics, access_heads,
access_chemistry, access_virology, access_cmo, access_surgery, access_RC_announce, access_chemistry, access_virology, access_cmo, access_surgery, access_RC_announce,
access_keycard_auth, access_sec_doors, access_psychiatrist) access_keycard_auth, access_sec_doors, access_psychiatrist, access_eva)
minimal_access = list(access_medical, access_morgue, access_genetics, access_heads, minimal_access = list(access_medical, access_morgue, access_genetics, access_heads,
access_chemistry, access_virology, access_cmo, access_surgery, access_RC_announce, access_chemistry, access_virology, access_cmo, access_surgery, access_RC_announce,
access_keycard_auth, access_sec_doors, access_psychiatrist) access_keycard_auth, access_sec_doors, access_psychiatrist, access_eva)
minimal_player_age = 10 minimal_player_age = 10
equip(var/mob/living/carbon/human/H) equip(var/mob/living/carbon/human/H)

View File

@@ -167,10 +167,11 @@
return return
var/mob/living/silicon/ai/A = new /mob/living/silicon/ai(src, null, null, 1) var/mob/living/silicon/ai/A = new /mob/living/silicon/ai(src, null, null, 1)
A.SetName(from)
Broadcast_Message(connection, A, Broadcast_Message(connection, A,
0, "*garbled automated announcement*", src, 0, "*garbled automated announcement*", src,
message, from, "Automated Announcement", from, "synthesized voice", message, from, "Automated Announcement", from, "synthesized voice",
4, 0, list(1), PUB_FREQ) 4, 0, list(0), connection.frequency, "states")
del(A) del(A)
return return

View File

@@ -25,6 +25,10 @@ var/global/list/datum/stack_recipe/metal_recipes = list ( \
new/datum/stack_recipe("brown comfy chair", /obj/structure/bed/chair/comfy/brown, 2, one_per_turf = 1, on_floor = 1), \ new/datum/stack_recipe("brown comfy chair", /obj/structure/bed/chair/comfy/brown, 2, one_per_turf = 1, on_floor = 1), \
new/datum/stack_recipe("lime comfy chair", /obj/structure/bed/chair/comfy/lime, 2, one_per_turf = 1, on_floor = 1), \ new/datum/stack_recipe("lime comfy chair", /obj/structure/bed/chair/comfy/lime, 2, one_per_turf = 1, on_floor = 1), \
new/datum/stack_recipe("teal comfy chair", /obj/structure/bed/chair/comfy/teal, 2, one_per_turf = 1, on_floor = 1), \ new/datum/stack_recipe("teal comfy chair", /obj/structure/bed/chair/comfy/teal, 2, one_per_turf = 1, on_floor = 1), \
new/datum/stack_recipe("red comfy chair", /obj/structure/bed/chair/comfy/red, 2, one_per_turf = 1, on_floor = 1), \
new/datum/stack_recipe("blue comfy chair", /obj/structure/bed/chair/comfy/blue, 2, one_per_turf = 1, on_floor = 1), \
new/datum/stack_recipe("purple comfy chair", /obj/structure/bed/chair/comfy/purp, 2, one_per_turf = 1, on_floor = 1), \
new/datum/stack_recipe("green comfy chair", /obj/structure/bed/chair/comfy/green, 2, one_per_turf = 1, on_floor = 1), \
), 2), \ ), 2), \
null, \ null, \
new/datum/stack_recipe("table parts", /obj/item/weapon/table_parts, 2), \ new/datum/stack_recipe("table parts", /obj/item/weapon/table_parts, 2), \

View File

@@ -47,8 +47,10 @@
icon_type = "egg" icon_type = "egg"
name = "egg box" name = "egg box"
storage_slots = 12 storage_slots = 12
max_storage_space = 24 can_hold = list(
can_hold = list(/obj/item/weapon/reagent_containers/food/snacks/egg) /obj/item/weapon/reagent_containers/food/snacks/egg,
/obj/item/weapon/reagent_containers/food/snacks/boiledegg
)
/obj/item/weapon/storage/fancy/egg_box/New() /obj/item/weapon/storage/fancy/egg_box/New()
..() ..()

View File

@@ -105,21 +105,33 @@
overlays -= armrest overlays -= armrest
/obj/structure/bed/chair/comfy/brown /obj/structure/bed/chair/comfy/brown
color = rgb(255,113,0) color = rgb(141,70,0)
/obj/structure/bed/chair/comfy/red
color = rgb(218,2,10)
/obj/structure/bed/chair/comfy/teal
color = rgb(0,234,250)
/obj/structure/bed/chair/comfy/black
color = rgb(60,60,60)
/obj/structure/bed/chair/comfy/green
color = rgb(1,196,8)
/obj/structure/bed/chair/comfy/purp
color = rgb(112,2,176)
/obj/structure/bed/chair/comfy/blue
color = rgb(2,9,210)
/obj/structure/bed/chair/comfy/beige /obj/structure/bed/chair/comfy/beige
color = rgb(255,253,195) color = rgb(255,253,195)
/obj/structure/bed/chair/comfy/teal
color = rgb(0,255,255)
/obj/structure/bed/chair/office /obj/structure/bed/chair/office
anchored = 0 anchored = 0
buckle_movable = 1 buckle_movable = 1
/obj/structure/bed/chair/comfy/black
color = rgb(167,164,153)
/obj/structure/bed/chair/comfy/lime /obj/structure/bed/chair/comfy/lime
color = rgb(255,251,0) color = rgb(255,251,0)

View File

@@ -1177,6 +1177,16 @@
icon_state = "head_m" icon_state = "head_m"
body_parts_covered = FACE|EYES body_parts_covered = FACE|EYES
//Painted mask: Dante Cicero - andrewmeythaler
/obj/item/clothing/mask/andrewmeythaler
name = "painted mask"
desc = "A ghoulish mask with a stylized painting of a flame over the left eye, and a painted tear stream coming from the right eye."
icon = 'icons/obj/custom_items.dmi'
item_state = "cicero"
icon_state = "cicero"
body_parts_covered = FACE|EYES
////// Small locket - Altair An-Nasaqan - Serithi ////// Small locket - Altair An-Nasaqan - Serithi
/obj/item/clothing/accessory/fluff/altair_locket /obj/item/clothing/accessory/fluff/altair_locket

View File

@@ -298,6 +298,21 @@
if(src) del(src) if(src) del(src)
return return
if(seed.kitchen_tag == "grass")
user.show_message("<span class='notice'>You make a grass tile out of \the [src]!</span>", 1)
for(var/i=0,i<2,i++)
var/obj/item/stack/tile/grass/G = new (user.loc)
G.color = seed.get_trait(TRAIT_PRODUCT_COLOUR)
for (var/obj/item/stack/tile/grass/NG in user.loc)
if(G==NG)
continue
if(NG.amount>=NG.max_amount)
continue
NG.attackby(G, user)
user << "You add the newly-formed grass to the stack. It now contains [G.amount] tiles."
del(src)
return
if(seed.get_trait(TRAIT_SPREAD) > 0) if(seed.get_trait(TRAIT_SPREAD) > 0)
user << "<span class='notice'>You plant the [src.name].</span>" user << "<span class='notice'>You plant the [src.name].</span>"
new /obj/machinery/portable_atmospherics/hydroponics/soil/invisible(get_turf(user),src.seed) new /obj/machinery/portable_atmospherics/hydroponics/soil/invisible(get_turf(user),src.seed)

View File

@@ -685,7 +685,7 @@
name = "wheat" name = "wheat"
seed_name = "wheat" seed_name = "wheat"
display_name = "wheat stalks" display_name = "wheat stalks"
chems = list("nutriment" = list(1,25), "flour" = list(1,25)) chems = list("nutriment" = list(1,25), "flour" = list(15,15))
kitchen_tag = "wheat" kitchen_tag = "wheat"
/datum/seed/wheat/New() /datum/seed/wheat/New()
@@ -703,7 +703,7 @@
name = "rice" name = "rice"
seed_name = "rice" seed_name = "rice"
display_name = "rice stalks" display_name = "rice stalks"
chems = list("nutriment" = list(1,25), "rice" = list(1,25)) chems = list("nutriment" = list(1,25), "rice" = list(10,15))
kitchen_tag = "rice" kitchen_tag = "rice"
/datum/seed/rice/New() /datum/seed/rice/New()
@@ -870,7 +870,8 @@
name = "grass" name = "grass"
seed_name = "grass" seed_name = "grass"
display_name = "grass" display_name = "grass"
chems = list("nutriment" = list(1,20), "orangejuice" = list(1,20)) chems = list("nutriment" = list(1,20))
kitchen_tag = "grass"
/datum/seed/grass/New() /datum/seed/grass/New()
..() ..()

View File

@@ -40,7 +40,7 @@
/obj/machinery/seed_storage/garden /obj/machinery/seed_storage/garden
name = "Garden seed storage" name = "Garden seed storage"
scanner = list("stats") scanner = list("stats")
starting_seeds = list(/obj/item/seeds/appleseed = 3, /obj/item/seeds/bananaseed = 3, /obj/item/seeds/berryseed = 3, /obj/item/seeds/cabbageseed = 3, /obj/item/seeds/carrotseed = 3, /obj/item/seeds/chantermycelium = 3, /obj/item/seeds/cherryseed = 3, /obj/item/seeds/chiliseed = 3, /obj/item/seeds/cocoapodseed = 3, /obj/item/seeds/cornseed = 3, /obj/item/seeds/eggplantseed = 3, /obj/item/seeds/grapeseed = 3, /obj/item/seeds/grassseed = 3, /obj/item/seeds/lemonseed = 3, /obj/item/seeds/limeseed = 3, /obj/item/seeds/mtearseed = 2, /obj/item/seeds/orangeseed = 3, /obj/item/seeds/peanutseed = 3, /obj/item/seeds/plumpmycelium = 3, /obj/item/seeds/poppyseed = 3, /obj/item/seeds/potatoseed = 3, /obj/item/seeds/pumpkinseed = 3, /obj/item/seeds/riceseed = 3, /obj/item/seeds/soyaseed = 3, /obj/item/seeds/sugarcaneseed = 3, /obj/item/seeds/sunflowerseed = 3, /obj/item/seeds/shandseed = 2, /obj/item/seeds/tobaccoseed = 3, /obj/item/seeds/tomatoseed = 3, /obj/item/seeds/towermycelium = 3, /obj/item/seeds/watermelonseed = 3, /obj/item/seeds/wheatseed = 3, /obj/item/seeds/whitebeetseed = 3) starting_seeds = list(/obj/item/seeds/appleseed = 3, /obj/item/seeds/bananaseed = 3, /obj/item/seeds/berryseed = 3, /obj/item/seeds/cabbageseed = 3, /obj/item/seeds/carrotseed = 3, /obj/item/seeds/chantermycelium = 3, /obj/item/seeds/cherryseed = 3, /obj/item/seeds/chiliseed = 3, /obj/item/seeds/cocoapodseed = 3, /obj/item/seeds/cornseed = 3, /obj/item/seeds/eggplantseed = 3, /obj/item/seeds/grapeseed = 3, /obj/item/seeds/grassseed = 3, /obj/item/seeds/replicapod = 3, /obj/item/seeds/lemonseed = 3, /obj/item/seeds/limeseed = 3, /obj/item/seeds/mtearseed = 2, /obj/item/seeds/orangeseed = 3, /obj/item/seeds/peanutseed = 3, /obj/item/seeds/plumpmycelium = 3, /obj/item/seeds/poppyseed = 3, /obj/item/seeds/potatoseed = 3, /obj/item/seeds/pumpkinseed = 3, /obj/item/seeds/riceseed = 3, /obj/item/seeds/soyaseed = 3, /obj/item/seeds/sugarcaneseed = 3, /obj/item/seeds/sunflowerseed = 3, /obj/item/seeds/shandseed = 2, /obj/item/seeds/tobaccoseed = 3, /obj/item/seeds/tomatoseed = 3, /obj/item/seeds/towermycelium = 3, /obj/item/seeds/watermelonseed = 3, /obj/item/seeds/wheatseed = 3, /obj/item/seeds/whitebeetseed = 3)
/obj/machinery/seed_storage/xenobotany /obj/machinery/seed_storage/xenobotany
name = "Xenobotany seed storage" name = "Xenobotany seed storage"

View File

@@ -21,12 +21,11 @@
if(germ_level < GERM_LEVEL_MOVE_CAP && prob(8)) if(germ_level < GERM_LEVEL_MOVE_CAP && prob(8))
germ_level++ germ_level++
/mob/living/carbon/relaymove(var/mob/user, direction) /mob/living/carbon/relaymove(var/mob/living/user, direction)
if(user in src.stomach_contents) if((user in src.stomach_contents) && istype(user))
if(prob(40)) if(user.last_special <= world.time)
for(var/mob/M in hearers(4, src)) user.last_special = world.time + 50
if(M.client) src.visible_message("<span class='danger'>You hear something rumbling inside [src]'s stomach...</span>")
M.show_message(text("\red You hear something rumbling inside [src]'s stomach..."), 2)
var/obj/item/I = user.get_active_hand() var/obj/item/I = user.get_active_hand()
if(I && I.force) if(I && I.force)
var/d = rand(round(I.force / 4), I.force) var/d = rand(round(I.force / 4), I.force)
@@ -40,9 +39,7 @@
H.updatehealth() H.updatehealth()
else else
src.take_organ_damage(d) src.take_organ_damage(d)
for(var/mob/M in viewers(user, null)) user.visible_message("<span class='danger'>[user] attacks [src]'s stomach wall with the [I.name]!</span>")
if(M.client)
M.show_message(text("\red <B>[user] attacks [src]'s stomach wall with the [I.name]!"), 2)
playsound(user.loc, 'sound/effects/attackblob.ogg', 50, 1) playsound(user.loc, 'sound/effects/attackblob.ogg', 50, 1)
if(prob(src.getBruteLoss() - 50)) if(prob(src.getBruteLoss() - 50))

View File

@@ -713,7 +713,7 @@
if(species.has_fine_manipulation) if(species.has_fine_manipulation)
return 1 return 1
if(!silent) if(!silent)
src << "<span class='warning'>You don't have the dexterity to use [src]!</span>" src << "<span class='warning'>You don't have the dexterity to use that!<span>"
return 0 return 0
/mob/living/carbon/human/abiotic(var/full_body = 0) /mob/living/carbon/human/abiotic(var/full_body = 0)

View File

@@ -1218,6 +1218,8 @@
glasses_processed = 1 glasses_processed = 1
process_glasses(glasses) process_glasses(glasses)
if(!glasses_processed && (species.vision_flags > 0))
sight |= species.vision_flags
if(!seer && !glasses_processed) if(!seer && !glasses_processed)
see_invisible = SEE_INVISIBLE_LIVING see_invisible = SEE_INVISIBLE_LIVING

View File

@@ -37,6 +37,7 @@
var/list/unarmed_attacks = null // For empty hand harm-intent attack var/list/unarmed_attacks = null // For empty hand harm-intent attack
var/brute_mod = 1 // Physical damage multiplier. var/brute_mod = 1 // Physical damage multiplier.
var/burn_mod = 1 // Burn damage multiplier. var/burn_mod = 1 // Burn damage multiplier.
var/vision_flags = 0 // Same flags as glasses.
// Death vars. // Death vars.
var/gibber_type = /obj/effect/gibspawner/human var/gibber_type = /obj/effect/gibspawner/human

View File

@@ -7,7 +7,7 @@
language = "Sol Common" //todo? language = "Sol Common" //todo?
unarmed_types = list(/datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/punch) unarmed_types = list(/datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/punch)
flags = IS_RESTRICTED | NO_BREATHE | NO_PAIN | NO_BLOOD | IS_SYNTHETIC | NO_SCAN | NO_POISON flags = IS_RESTRICTED | NO_BREATHE | NO_PAIN | NO_BLOOD | NO_SCAN | NO_POISON
siemens_coefficient = 0 siemens_coefficient = 0
breath_type = null breath_type = null

View File

@@ -42,6 +42,8 @@
breath_type = null breath_type = null
poison_type = null poison_type = null
vision_flags = SEE_MOBS
has_organ = list( has_organ = list(
"heart" = /datum/organ/internal/heart, "heart" = /datum/organ/internal/heart,
"brain" = /datum/organ/internal/brain/xeno, "brain" = /datum/organ/internal/brain/xeno,

View File

@@ -270,7 +270,7 @@
//Unless its monkey mode monkeys cant use advanced tools //Unless its monkey mode monkeys cant use advanced tools
/mob/living/carbon/monkey/IsAdvancedToolUser(var/silent) /mob/living/carbon/monkey/IsAdvancedToolUser(var/silent)
if(!silent) if(!silent)
src << "<span class='warning'>You don't have the dexterity to use [src]!</span>" src << "<span class='warning'>You don't have the dexterity to use that!</span>"
return 0 return 0
/mob/living/carbon/monkey/say(var/message, var/datum/language/speaking = null, var/verb="says", var/alt_name="", var/italics=0, var/message_range = world.view, var/list/used_radios = list()) /mob/living/carbon/monkey/say(var/message, var/datum/language/speaking = null, var/verb="says", var/alt_name="", var/italics=0, var/message_range = world.view, var/list/used_radios = list())

View File

@@ -16,7 +16,7 @@
speak_chance = 5 speak_chance = 5
turns_per_move = 5 turns_per_move = 5
see_in_dark = 10 see_in_dark = 10
meat_type = /obj/item/weapon/reagent_containers/food/snacks/bearmeat meat_type = /obj/item/weapon/reagent_containers/food/snacks/xenomeat
response_help = "pets" response_help = "pets"
response_disarm = "gently pushes aside" response_disarm = "gently pushes aside"
response_harm = "pokes" response_harm = "pokes"

View File

@@ -630,7 +630,7 @@
if(istype(O,/obj/item/weapon/storage/bag/plants)) if(istype(O,/obj/item/weapon/storage/bag/plants))
var/failed = 1 var/failed = 1
for(var/obj/item/G in O.contents) for(var/obj/item/G in O.contents)
if(!O.reagents || !O.reagents.total_volume) if(!G.reagents || !G.reagents.total_volume)
continue continue
failed = 0 failed = 0
O.contents -= G O.contents -= G
@@ -644,9 +644,9 @@
return 1 return 1
if(!O.contents.len) if(!O.contents.len)
user << "You fill \the [src]." user << "You empty \the [O] into \the [src]."
else else
user << "You fill \the [src]. Some of the things in the plant bag aren't suitable." user << "You fill \the [src] from \the [O]."
src.updateUsrDialog() src.updateUsrDialog()
return 0 return 0

View File

@@ -684,7 +684,8 @@
New() New()
..() ..()
reagents.add_reagent("protein", 3) reagents.add_reagent("protein", 6)
reagents.add_reagent("pacid",6)
src.bitesize = 6 src.bitesize = 6
/obj/item/weapon/reagent_containers/food/snacks/meatball /obj/item/weapon/reagent_containers/food/snacks/meatball

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 62 KiB

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 122 KiB

After

Width:  |  Height:  |  Size: 104 KiB

File diff suppressed because it is too large Load Diff