diff --git a/baystation12.dme b/baystation12.dme index ce69add117c..bdbb2ffbcb1 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -1150,6 +1150,7 @@ #include "code\modules\mob\living\silicon\robot\life.dm" #include "code\modules\mob\living\silicon\robot\login.dm" #include "code\modules\mob\living\silicon\robot\robot.dm" +#include "code\modules\mob\living\silicon\robot\robot_items.dm" #include "code\modules\mob\living\silicon\robot\robot_modules.dm" #include "code\modules\mob\living\silicon\robot\robot_movement.dm" #include "code\modules\mob\living\silicon\robot\say.dm" diff --git a/code/controllers/_DynamicAreaLighting_TG.dm b/code/controllers/_DynamicAreaLighting_TG.dm index 2bc317aabbc..c8f52ef9365 100644 --- a/code/controllers/_DynamicAreaLighting_TG.dm +++ b/code/controllers/_DynamicAreaLighting_TG.dm @@ -294,6 +294,73 @@ area //show the dark overlay so areas, not yet in a lighting subarea, won't be bright as day and look silly. SetLightLevel(4) +atom + var/light_on = 0 //Am I emitting light? + var/brightness_on = 0 //Luminosity when the above: light_on = 1 + + //Called when turning off or dropping a flashlight for ex. + //It checks the users slots for another source of light, and return the appropriate brightness. 0 if no other source is found + proc/search_light(mob/M, obj/item/W as obj) + var/list/slots + var/obj/item/I + var brightness = 0 //the new brightness to be returned + + if (istype(M, /mob/living/carbon/human)) + var/mob/living/carbon/human/H = M + slots = list ( + "l_hand", + "r_hand", + "belt", + "head", + "l_pocket", + "r_pocket", + "s_store") + + for (var/slot in slots) + switch(slot) + if("belt") + I = H.belt + if("head") + I = H.head + if("l_hand") + I = H.l_hand + if("r_hand") + I = H.r_hand + if("l_pocket") + I = H.l_store + if("r_pocket") + I = H.r_store + if("s_store") + I = H.s_store + if (I) + if ((I.light_on) && (I != W)) //an item emitting light other than itself + if (I.brightness_on > brightness) + brightness = I.brightness_on + + else if (istype(M, /mob/living/carbon/monkey)) + slots = list ( + "l_hand", + "r_hand") + + for (var/slot in slots) + switch(slot) + if("l_hand") + I = M.l_hand + if("r_hand") + I = M.r_hand + if (I) + if ((I.light_on) && (I != W)) //an item emitting light other than itself + if (I.brightness_on > brightness) + brightness = I.brightness_on + + else + for (I in M.contents) //Justin Case + if (I) + if ((I.light_on) && (I != W)) //an item emitting light other than itself + if (I.brightness_on > brightness) + brightness = I.brightness_on + + return brightness #undef LIGHTING_MAX_LUMINOSITY #undef LIGHTING_MAX_LUMINOSITY_MOB diff --git a/code/datums/organs/organ_external.dm b/code/datums/organs/organ_external.dm index d59c2a79315..c10c6c77ecd 100644 --- a/code/datums/organs/organ_external.dm +++ b/code/datums/organs/organ_external.dm @@ -356,7 +356,7 @@ H = new /obj/item/weapon/organ/head(owner.loc, owner) if(ishuman(owner)) if(owner.gender == FEMALE) - H.icon_state = "head_f_l" + H.icon_state = "head_f" H.overlays += owner.generate_head_icon() H:transfer_identity(owner) H.pixel_x = -10 @@ -682,7 +682,7 @@ obj/item/weapon/organ/New(loc, mob/living/carbon/human/H) obj/item/weapon/organ/head name = "head" - icon_state = "head_m_l" + icon_state = "head_m" var/mob/living/carbon/brain/brainmob var/brain_op_stage = 0 diff --git a/code/game/gamemodes/events/miniblob.dm b/code/game/gamemodes/events/miniblob.dm index cbb32198363..93f3c2a7172 100644 --- a/code/game/gamemodes/events/miniblob.dm +++ b/code/game/gamemodes/events/miniblob.dm @@ -9,7 +9,7 @@ blobevent = 1 spawn(0) dotheblobbaby() - spawn(3000) + spawn(12000) // blob event can last up to 20 minutes blobevent = 0 spawn(rand(1000, 2000)) //Delayed announcements to keep the crew on their toes. command_alert("Confirmed outbreak of level 5 biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert") @@ -25,5 +25,5 @@ if(B.z != 1) continue B.Life() - spawn(70) - dotheblobbaby() \ No newline at end of file + spawn(280) // advance 1 tile every 30 seconds + dotheblobbaby() diff --git a/code/game/jobs/job/assistant.dm b/code/game/jobs/job/assistant.dm index 5a68cf9e182..b5b6f039707 100644 --- a/code/game/jobs/job/assistant.dm +++ b/code/game/jobs/job/assistant.dm @@ -12,4 +12,8 @@ if(!H) return 0 H.equip_to_slot_or_del(new /obj/item/clothing/under/color/grey(H), slot_w_uniform) H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes) + if(H.backbag == 1) + 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 diff --git a/code/game/jobs/job/civilian.dm b/code/game/jobs/job/civilian.dm index 274f5146b7b..1347cc2fd24 100644 --- a/code/game/jobs/job/civilian.dm +++ b/code/game/jobs/job/civilian.dm @@ -57,6 +57,10 @@ H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes) H.equip_to_slot_or_del(new /obj/item/clothing/head/chefhat(H), slot_head) H.equip_to_slot_or_del(new /obj/item/device/pda/chef(H), slot_belt) + if(H.backbag == 1) + 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 @@ -80,6 +84,10 @@ H.equip_to_slot_or_del(new /obj/item/clothing/suit/apron(H), slot_wear_suit) H.equip_to_slot_or_del(new /obj/item/device/analyzer/plant_analyzer(H), slot_s_store) H.equip_to_slot_or_del(new /obj/item/device/pda/botanist(H), slot_belt) + if(H.backbag == 1) + 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 @@ -105,6 +113,10 @@ H.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(H), slot_gloves) H.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses(H), slot_glasses) H.equip_to_slot_or_del(new /obj/item/weapon/clipboard(H), slot_l_hand) + if(H.backbag == 1) + 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 @@ -127,6 +139,10 @@ H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes) H.equip_to_slot_or_del(new /obj/item/device/pda/cargo(H), slot_belt) H.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(H), slot_gloves) + if(H.backbag == 1) + 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 @@ -251,6 +267,10 @@ H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/janitor(H), slot_w_uniform) H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes) H.equip_to_slot_or_del(new /obj/item/device/pda/janitor(H), slot_belt) + if(H.backbag == 1) + 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 @@ -273,6 +293,10 @@ H.equip_to_slot_or_del(new /obj/item/device/pda/librarian(H), slot_belt) H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes) H.equip_to_slot_or_del(new /obj/item/weapon/barcodescanner(H), slot_l_hand) + if(H.backbag == 1) + 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 diff --git a/code/game/jobs/job/civilian_chaplain.dm b/code/game/jobs/job/civilian_chaplain.dm index eca1cb35828..6ad83d2b238 100644 --- a/code/game/jobs/job/civilian_chaplain.dm +++ b/code/game/jobs/job/civilian_chaplain.dm @@ -18,6 +18,10 @@ H.equip_to_slot_or_del(new /obj/item/device/pda/chaplain(H), slot_belt) H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/chaplain(H), slot_w_uniform) H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes) + if(H.backbag == 1) + 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) spawn(0) var/religion_name = "Christianity" var/new_religion = copytext(sanitize(input(H, "You are the Chaplain. Would you like to change your religion? Default is Christianity, in SPACE.", "Name change", religion_name)),1,MAX_NAME_LEN) diff --git a/code/game/jobs/job/medical.dm b/code/game/jobs/job/medical.dm index 900061d9639..8d57e15fcc1 100644 --- a/code/game/jobs/job/medical.dm +++ b/code/game/jobs/job/medical.dm @@ -99,6 +99,10 @@ H.equip_to_slot_or_del(new /obj/item/clothing/shoes/white(H), slot_shoes) H.equip_to_slot_or_del(new /obj/item/device/pda/chemist(H), slot_belt) H.equip_to_slot_or_del(new /obj/item/clothing/suit/labcoat/chemist(H), slot_wear_suit) + if(H.backbag == 1) + 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 @@ -122,6 +126,10 @@ H.equip_to_slot_or_del(new /obj/item/device/pda/geneticist(H), slot_belt) H.equip_to_slot_or_del(new /obj/item/clothing/suit/labcoat/genetics(H), slot_wear_suit) H.equip_to_slot_or_del(new /obj/item/device/flashlight/pen(H), slot_s_store) + if(H.backbag == 1) + 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 /* diff --git a/code/game/jobs/job/science.dm b/code/game/jobs/job/science.dm index f1a202f1341..0a8a881f34b 100644 --- a/code/game/jobs/job/science.dm +++ b/code/game/jobs/job/science.dm @@ -18,6 +18,10 @@ H.equip_to_slot_or_del(new /obj/item/device/pda/heads/rd(H), slot_belt) H.equip_to_slot_or_del(new /obj/item/clothing/suit/labcoat(H), slot_wear_suit) H.equip_to_slot_or_del(new /obj/item/weapon/clipboard(H), slot_l_hand) + if(H.backbag == 1) + 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 @@ -41,6 +45,8 @@ H.equip_to_slot_or_del(new /obj/item/clothing/shoes/white(H), slot_shoes) H.equip_to_slot_or_del(new /obj/item/device/pda/toxins(H), slot_belt) H.equip_to_slot_or_del(new /obj/item/clothing/suit/labcoat/science(H), slot_wear_suit) -// H.equip_to_slot_or_del(new /obj/item/clothing/mask/gas(H), slot_wear_mask) -// H.equip_to_slot_or_del(new /obj/item/weapon/tank/oxygen(H), slot_l_hand) + if(H.backbag == 1) + 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 \ No newline at end of file diff --git a/code/game/objects/items/candle.dm b/code/game/objects/items/candle.dm index b47a2a30684..0ea57a12561 100644 --- a/code/game/objects/items/candle.dm +++ b/code/game/objects/items/candle.dm @@ -5,9 +5,11 @@ icon_state = "candle1" item_state = "candle1" w_class = 1 + light_on = 0 + brightness_on = 3 //luminosity when on var/wax = 200 - var/lit = 0 + proc light(var/flavor_text = "\red [usr] lights the [name].") @@ -19,7 +21,7 @@ else if(wax>80) i = 2 else i = 3 - icon_state = "candle[i][lit ? "_lit" : ""]" + icon_state = "candle[i][light_on ? "_lit" : ""]" attackby(obj/item/weapon/W as obj, mob/user as mob) @@ -30,30 +32,30 @@ light("\red [user] casually lights the [name] with [W], what a badass.") else if(istype(W, /obj/item/weapon/lighter)) var/obj/item/weapon/lighter/L = W - if(L.lit) + if(L.light_on) light() else if(istype(W, /obj/item/weapon/match)) var/obj/item/weapon/match/M = W - if(M.lit) + if(M.light_on) light() else if(istype(W, /obj/item/candle)) var/obj/item/candle/C = W - if(C.lit) + if(C.light_on) light() light(var/flavor_text = "\red [usr] lights the [name].") - if(!src.lit) - src.lit = 1 + if(!src.light_on) + src.light_on = 1 //src.damtype = "fire" for(var/mob/O in viewers(usr, null)) O.show_message(flavor_text, 1) - SetLuminosity(CANDLE_LUM) + SetLuminosity(brightness_on) processing_objects.Add(src) process() - if(!lit) + if(!light_on) return wax-- if(!wax) @@ -68,20 +70,29 @@ attack_self(mob/user as mob) - if(lit) - lit = 0 + if(light_on) + light_on = 0 update_icon() SetLuminosity(0) - user.SetLuminosity(user.luminosity - CANDLE_LUM) + user.SetLuminosity(search_light(user, src)) pickup(mob/user) - if(lit) + if(light_on) + if (user.luminosity < brightness_on) + user.SetLuminosity(brightness_on) SetLuminosity(0) - user.SetLuminosity(user.luminosity + CANDLE_LUM) dropped(mob/user) - if(lit) - user.SetLuminosity(user.luminosity - CANDLE_LUM) - SetLuminosity(CANDLE_LUM) + if(light_on) + if ((layer <= 3) || (loc != user.loc)) + user.SetLuminosity(search_light(user, src)) + SetLuminosity(brightness_on) + + + equipped(mob/user, slot) + if(light_on) + if (user.luminosity < brightness_on) + user.SetLuminosity(brightness_on) + SetLuminosity(0) diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index 1207d01fad4..f0edf678650 100755 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -13,6 +13,8 @@ var/global/list/obj/item/device/pda/PDAs = list() w_class = 1.0 flags = FPRINT | TABLEPASS slot_flags = SLOT_ID | SLOT_BELT + light_on = 0 //Is the flashlight function on? + brightness_on = 4 //Luminosity for the flashlight function //Main variables var/owner = null @@ -22,8 +24,6 @@ var/global/list/obj/item/device/pda/PDAs = list() //Secondary variables var/scanmode = 0 //1 is medical scanner, 2 is forensics, 3 is reagent scanner. - var/fon = 0 //Is the flashlight function on? - var/f_lum = 4 //Luminosity for the flashlight function var/silent = 0 //To beep or not to beep, that is the question var/toff = 0 //If 1, messenger disabled var/tnote = null //Current Texts @@ -192,14 +192,22 @@ var/global/list/obj/item/device/pda/PDAs = list() * The Actual PDA */ /obj/item/device/pda/pickup(mob/user) - if(fon) + if(light_on) + if(user.luminosity < brightness_on) + user.SetLuminosity(brightness_on) SetLuminosity(0) - user.SetLuminosity(user.luminosity + f_lum) /obj/item/device/pda/dropped(mob/user) - if(fon) - user.SetLuminosity(user.luminosity - f_lum) - SetLuminosity(f_lum) + if(light_on) + if ((layer <= 3) || (loc != user.loc)) + user.SetLuminosity(search_light(user, src)) + SetLuminosity(brightness_on) + +/obj/item/device/pda/equipped(mob/user, slot) + if(light_on) + if(user.luminosity < brightness_on) + user.SetLuminosity(brightness_on) + SetLuminosity(0) /obj/item/device/pda/New() ..() @@ -320,7 +328,7 @@ var/global/list/obj/item/device/pda/PDAs = list() if (cartridge.access_remote_door) dat += "
  • Toggle Remote Door
  • " dat += "
  • Atmospheric Scan
  • " - dat += "
  • [fon ? "Disable" : "Enable"] Flashlight
  • " + dat += "
  • [light_on ? "Disable" : "Enable"] Flashlight
  • " if (pai) if(pai.loc != src) pai = null @@ -495,14 +503,18 @@ var/global/list/obj/item/device/pda/PDAs = list() //MAIN FUNCTIONS=================================== if("Light") - if(fon) - fon = 0 - if(src in U.contents) U.SetLuminosity(U.luminosity - f_lum) - else SetLuminosity(0) + if(light_on) + light_on = 0 + if(src in U.contents) + U.SetLuminosity(search_light(U, src)) + else + SetLuminosity(0) else - fon = 1 - if(src in U.contents) U.SetLuminosity(U.luminosity + f_lum) - else SetLuminosity(f_lum) + light_on = 1 + if((src in U.contents) && (U.luminosity < brightness_on)) + U.SetLuminosity(brightness_on) + else + SetLuminosity(brightness_on) if("Medical Scan") if(scanmode == 1) scanmode = 0 diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm index 40c8fcdc89f..166b534bb72 100644 --- a/code/game/objects/items/devices/flashlight.dm +++ b/code/game/objects/items/devices/flashlight.dm @@ -10,12 +10,13 @@ m_amt = 50 g_amt = 20 icon_action_button = "action_flashlight" - var/on = 0 - var/brightness_on = 4 //luminosity when on + light_on = 0 + brightness_on = 4 //luminosity when on + var brightness = 0 /obj/item/device/flashlight/initialize() ..() - if(on) + if(light_on) icon_state = "[initial(icon_state)]-on" SetLuminosity(brightness_on) else @@ -23,16 +24,16 @@ SetLuminosity(0) /obj/item/device/flashlight/proc/update_brightness(var/mob/user = null) - if(on) + if(light_on) icon_state = "[initial(icon_state)]-on" - if(loc == user) - user.SetLuminosity(user.luminosity + brightness_on) + if((loc == user) && (user.luminosity < brightness_on)) + user.SetLuminosity(brightness_on) else if(isturf(loc)) SetLuminosity(brightness_on) else icon_state = initial(icon_state) if(loc == user) - user.SetLuminosity(user.luminosity - brightness_on) + user.SetLuminosity(search_light(user, src)) else if(isturf(loc)) SetLuminosity(0) @@ -40,14 +41,14 @@ if(!isturf(user.loc)) user << "You cannot turn the light on while in this [user.loc]." //To prevent some lighting anomalities. return - on = !on + light_on = !light_on update_brightness(user) return /obj/item/device/flashlight/attack(mob/living/M as mob, mob/living/user as mob) add_fingerprint(user) - if(on && user.zone_sel.selecting == "eyes") + if(light_on && user.zone_sel.selecting == "eyes") if(((CLUMSY in user.mutations) || user.getBrainLoss() >= 60) && prob(50)) //too dumb to use flashlight properly return ..() //just hit them in the head @@ -88,15 +89,24 @@ /obj/item/device/flashlight/pickup(mob/user) - if(on) - user.SetLuminosity(user.luminosity + brightness_on) + if(light_on) + if (user.luminosity < brightness_on) + user.SetLuminosity(brightness_on) SetLuminosity(0) /obj/item/device/flashlight/dropped(mob/user) - if(on) - user.SetLuminosity(user.luminosity - brightness_on) - SetLuminosity(brightness_on) + if(light_on) + if ((layer <= 3) || (loc != user.loc)) + user.SetLuminosity(search_light(user, src)) + SetLuminosity(brightness_on) + + +/obj/item/device/flashlight/equipped(mob/user, slot) + if(light_on) + if (user.luminosity < brightness_on) + user.SetLuminosity(brightness_on) + SetLuminosity(0) /obj/item/device/flashlight/pen @@ -119,7 +129,7 @@ flags = FPRINT | TABLEPASS | CONDUCT m_amt = 0 g_amt = 0 - on = 1 + light_on = 1 // green-shaded desk lamp @@ -159,14 +169,14 @@ var/turf/pos = get_turf(src) pos.hotspot_expose(produce_heat, 5) fuel = max(fuel - 1, 0) - if(!fuel || !on) + if(!fuel || !light_on) turn_off() if(!fuel) src.icon_state = "[initial(icon_state)]-empty" processing_objects -= src /obj/item/device/flashlight/flare/proc/turn_off() - on = 0 + light_on = 0 src.force = initial(src.force) src.damtype = initial(src.damtype) if(ismob(loc)) @@ -182,12 +192,12 @@ if(!fuel) user << "It's out of fuel." return - if(!on) + if(!light_on) user.visible_message("[user] activates the flare.", "You pull the cord on the flare, activating it!") else return // All good, turn it on. - on = 1 + light_on = 1 update_brightness(user) src.force = on_damage src.damtype = "fire" diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm index 5df2b005bc6..63992bde103 100644 --- a/code/game/objects/items/stacks/medical.dm +++ b/code/game/objects/items/stacks/medical.dm @@ -23,70 +23,34 @@ if (istype(M, /mob/living/carbon/human)) var/mob/living/carbon/human/H = M - var/datum/organ/external/affecting = H.get_organ("chest") - + var/datum/organ/external/affecting = H.get_organ(user.zone_sel.selecting) if(affecting.status & ORGAN_ROBOT) user << "\red This isn't useful at all on a robotic limb.." return 1 - if(istype(user, /mob/living/carbon/human)) - var/mob/living/carbon/human/user2 = user - affecting = H.get_organ(check_zone(user2.zone_sel.selecting)) - else - if(!istype(affecting, /datum/organ/external) || affecting:burn_dam <= 0) - affecting = H.get_organ("head") + if(src.heal_brute) + if(!affecting.bandage()) + user << "\red The wounds on [M]'s [affecting.display_name] have already been bandaged." + return 1 + else + user.visible_message( "\blue [user] bandages wounds on [M]'s [affecting.display_name].", \ + "\blue You bandage wounds on [M]'s [affecting.display_name]." ) - // If we're targetting arms or legs, also heal the respective hand/foot - if(affecting.name in list("l_arm","r_arm","l_leg","r_leg")) - var/datum/organ/external/child - if(affecting.name == "l_arm") - child = H.get_organ("l_hand") - else if(affecting.name == "r_arm") - child = H.get_organ("r_hand") - else if(affecting.name == "r_leg") - child = H.get_organ("r_foot") - else if(affecting.name == "l_leg") - child = H.get_organ("l_foot") - - if(src.heal_brute) - if(!affecting.bandage() && !child.bandage()) - user << "\red The wounds on this limb have already been bandaged." - return 1 - else if(src.heal_burn) - if(!affecting.salve() && !child.salve()) - user << "\red The wounds on this limb have already been salved." - return 1 - else - if(src.heal_brute) - if(!affecting.bandage()) - user << "\red The wounds on this limb have already been bandaged." - return 1 - else if(src.heal_burn) - if(!affecting.salve()) - user << "\red The wounds on this limb have already been salved." - return 1 + else if(src.heal_burn) + if(!affecting.salve()) + user << "\red The wounds on [M]'s [affecting.display_name] have already been salved." + return 1 + else + user.visible_message( "\blue [user] salves wounds on [M]'s [affecting.display_name].", \ + "\blue You salve wounds on [M]'s [affecting.display_name]." ) H.UpdateDamageIcon() - M.updatehealth() else M.heal_organ_damage((src.heal_brute/2), (src.heal_burn/2)) + user.visible_message( \ + "\blue [M] has been applied with [src] by [user].", \ + "\blue You apply \the [src] to [M]." \ + ) use(1) - - if (user) - if (M != user) - user.visible_message( \ - "\blue [M] has been applied with [src] by [user].", \ - "\blue You apply \the [src] to [M]." \ - ) - else - var/t_himself = "itself" - if (user.gender == MALE) - t_himself = "himself" - else if (user.gender == FEMALE) - t_himself = "herself" - - user.visible_message( \ - "\blue [M] applied [src] on [t_himself].", \ - "\blue You apply \the [src] on yourself." \ - ) + M.updatehealth() diff --git a/code/game/objects/items/weapons/cigs_lighters.dm b/code/game/objects/items/weapons/cigs_lighters.dm index 9499b40f617..5d5b6d6ea48 100644 --- a/code/game/objects/items/weapons/cigs_lighters.dm +++ b/code/game/objects/items/weapons/cigs_lighters.dm @@ -85,12 +85,12 @@ ZIPPO else if(istype(W, /obj/item/weapon/lighter/zippo)) var/obj/item/weapon/lighter/zippo/Z = W - if(Z.lit) + if(Z.light_on) light("With a single flick of their wrist, [user] smoothly lights their [name] with their [W]. Damn they're cool.") else if(istype(W, /obj/item/weapon/lighter)) var/obj/item/weapon/lighter/L = W - if(L.lit) + if(L.light_on) light("After some fiddling, [user] manages to light their [name] with [W].") else if(istype(W, /obj/item/weapon/match)) @@ -375,7 +375,8 @@ ZIPPO flags = TABLEPASS | CONDUCT slot_flags = SLOT_BELT attack_verb = list("burnt", "singed") - var/lit = 0 + light_on = 0 + brightness_on = 2 //luminosity when on /obj/item/weapon/lighter/zippo name = "Zippo lighter" @@ -394,8 +395,8 @@ ZIPPO /obj/item/weapon/lighter/attack_self(mob/living/user) if(user.r_hand == src || user.l_hand == src) - if(!lit) - lit = 1 + if(!light_on) + light_on = 1 icon_state = icon_on item_state = icon_on if(istype(src, /obj/item/weapon/lighter/zippo) ) @@ -411,10 +412,11 @@ ZIPPO user.apply_damage(2,BURN,"r_hand") user.visible_message("After a few attempts, [user] manages to light the [src], they however burn their finger in the process.") - user.SetLuminosity(user.luminosity + 2) + if (user.luminosity < brightness_on) + user.SetLuminosity(brightness_on) processing_objects.Add(src) else - lit = 0 + light_on = 0 icon_state = icon_off item_state = icon_off if(istype(src, /obj/item/weapon/lighter/zippo) ) @@ -422,7 +424,7 @@ ZIPPO else user.visible_message("[user] quietly shuts off the [src].") - user.SetLuminosity(user.luminosity - 2) + user.SetLuminosity(search_light(user, src)) processing_objects.Remove(src) else return ..() @@ -433,7 +435,7 @@ ZIPPO if(!istype(M, /mob)) return - if(istype(M.wear_mask, /obj/item/clothing/mask/cigarette) && user.zone_sel.selecting == "mouth" && lit) + if(istype(M.wear_mask, /obj/item/clothing/mask/cigarette) && user.zone_sel.selecting == "mouth" && light_on) var/obj/item/clothing/mask/cigarette/cig = M.wear_mask if(M == user) cig.attackby(src, user) @@ -453,14 +455,24 @@ ZIPPO /obj/item/weapon/lighter/pickup(mob/user) - if(lit) + if(light_on) + if (user.luminosity < brightness_on) + user.SetLuminosity(brightness_on) SetLuminosity(0) - user.SetLuminosity(user.luminosity+2) return /obj/item/weapon/lighter/dropped(mob/user) - if(lit) - user.SetLuminosity(user.luminosity-2) - SetLuminosity(2) + if(light_on) + if ((layer <= 3) || (loc != user.loc)) + user.SetLuminosity(search_light(user, src)) + SetLuminosity(brightness_on) + return + + +/obj/item/weapon/lighter/equipped(mob/user, slot) + if(light_on) + if (user.luminosity < brightness_on) + user.SetLuminosity(brightness_on) + SetLuminosity(0) return diff --git a/code/game/objects/items/weapons/tanks/tank_types.dm b/code/game/objects/items/weapons/tanks/tank_types.dm index 1cbca540bd1..3d785619255 100644 --- a/code/game/objects/items/weapons/tanks/tank_types.dm +++ b/code/game/objects/items/weapons/tanks/tank_types.dm @@ -134,7 +134,7 @@ w_class = 2.0 force = 4.0 distribute_pressure = ONE_ATMOSPHERE*O2STANDARD - volume = 3 //Tiny. Real life equivalents only have 21 breaths of oxygen in them. They're EMERGENCY tanks anyway -errorage (dangercon 2011) + volume = 2 //Tiny. Real life equivalents only have 21 breaths of oxygen in them. They're EMERGENCY tanks anyway -errorage (dangercon 2011) New() diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index 35c600dcd53..7a14927c057 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -173,26 +173,54 @@ var/global/floorIsLava = 0 /datum/player_info/var/content // text content of the information /datum/player_info/var/timestamp // Because this is bloody annoying +#define PLAYER_NOTES_ENTRIES_PER_PAGE 50 /datum/admins/proc/PlayerNotes() set category = "Admin" set name = "Player Notes" - var/dat = "Player notes
    " if (!istype(src,/datum/admins)) src = usr.client.holder if (!istype(src,/datum/admins)) usr << "Error: you are not an admin!" return + PlayerNotesPage(1) +/datum/admins/proc/PlayerNotesPage(page) + var/dat = "Player notes
    " var/savefile/S=new("data/player_notes.sav") var/list/note_keys S >> note_keys if(!note_keys) dat += "No notes found." else + dat += "
    " sortList(note_keys) - for(var/t in note_keys) + + // Display the notes on the current page + var/number_pages = note_keys.len / PLAYER_NOTES_ENTRIES_PER_PAGE + // Emulate ceil(why does BYOND not have ceil) + if(number_pages != round(number_pages)) + number_pages = round(number_pages) + 1 + var/page_index = page - 1 + if(page_index < 0 || page_index >= number_pages) + return + + var/lower_bound = page_index * PLAYER_NOTES_ENTRIES_PER_PAGE + 1 + var/upper_bound = (page_index + 1) * PLAYER_NOTES_ENTRIES_PER_PAGE + upper_bound = min(upper_bound, note_keys.len) + for(var/index = lower_bound, index <= upper_bound, index++) + var/t = note_keys[index] dat += "" - dat += "
    [t]
    " + + dat += "
    " + + // Display a footer to select different pages + for(var/index = 1, index <= number_pages, index++) + if(index == page) + dat += "" + dat += "[index] " + if(index == page) + dat += "" + usr << browse(dat, "window=player_notes;size=400x400") @@ -1123,4 +1151,4 @@ proc/move_alien_ship() alien_ship_location = 0 else alien_ship_location = 1 - return \ No newline at end of file + return diff --git a/code/modules/admin/holder2.dm b/code/modules/admin/holder2.dm index 96bc9b6e20c..9f9e9abd3fa 100644 --- a/code/modules/admin/holder2.dm +++ b/code/modules/admin/holder2.dm @@ -2706,4 +2706,6 @@ var/list/admin_datums = list() switch(href_list["notes"]) if("show") show_player_info(ckey) + if("list") + PlayerNotesPage(href_list["index"]) return diff --git a/code/modules/clothing/head/hardhat.dm b/code/modules/clothing/head/hardhat.dm index dfca62aa013..f35ddfb30c9 100644 --- a/code/modules/clothing/head/hardhat.dm +++ b/code/modules/clothing/head/hardhat.dm @@ -4,8 +4,8 @@ icon_state = "hardhat0_yellow" flags = FPRINT | TABLEPASS item_state = "hardhat0_yellow" - var/brightness_on = 4 //luminosity when on - var/on = 0 + brightness_on = 4 //luminosity when on + light_on = 0 color = "yellow" //Determines used sprites: hardhat[on]_[color] and hardhat[on]_[color]2 (lying down sprite) armor = list(melee = 30, bullet = 5, laser = 20,energy = 10, bomb = 20, bio = 10, rad = 20) flags_inv = 0 @@ -15,24 +15,35 @@ if(!isturf(user.loc)) user << "You cannot turn the light on while in this [user.loc]" //To prevent some lighting anomalities. return - on = !on - icon_state = "hardhat[on]_[color]" - item_state = "hardhat[on]_[color]" + light_on = !light_on + icon_state = "hardhat[light_on]_[color]" + item_state = "hardhat[light_on]_[color]" - if(on) user.SetLuminosity(user.luminosity + brightness_on) - else user.SetLuminosity(user.luminosity - brightness_on) + if((light_on) && (user.luminosity < brightness_on)) + user.SetLuminosity(brightness_on) + else + user.SetLuminosity(search_light(user, src)) pickup(mob/user) - if(on) - user.SetLuminosity(user.luminosity + brightness_on) + if(light_on) + if (user.luminosity < brightness_on) + user.SetLuminosity(brightness_on) // user.UpdateLuminosity() //TODO: Carn SetLuminosity(0) dropped(mob/user) - if(on) - user.SetLuminosity(user.luminosity - brightness_on) -// user.UpdateLuminosity() - SetLuminosity(brightness_on) + if(light_on) + if ((layer <= 3) || (loc != user.loc)) + user.SetLuminosity(search_light(user, src)) + SetLuminosity(brightness_on) + // user.UpdateLuminosity() + + equipped(mob/user, slot) + if(light_on) + if (user.luminosity < brightness_on) + user.SetLuminosity(brightness_on) +// user.UpdateLuminosity() //TODO: Carn + SetLuminosity(0) /obj/item/clothing/head/hardhat/orange diff --git a/code/modules/clothing/head/misc_special.dm b/code/modules/clothing/head/misc_special.dm index 96d6ad87059..5a3a1a18338 100644 --- a/code/modules/clothing/head/misc_special.dm +++ b/code/modules/clothing/head/misc_special.dm @@ -122,32 +122,42 @@ color = "pumpkin" flags = FPRINT | TABLEPASS | HEADCOVERSEYES | HEADCOVERSMOUTH | BLOCKHAIR flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE - var/brightness_on = 2 //luminosity when on - var/on = 0 + brightness_on = 2 //luminosity when on + light_on = 0 attack_self(mob/user) if(!isturf(user.loc)) user << "You cannot turn the light on while in this [user.loc]" //To prevent some lighting anomalities. return - on = !on - icon_state = "hardhat[on]_[color]" - item_state = "hardhat[on]_[color]" + light_on = !light_on + icon_state = "hardhat[light_on]_[color]" + item_state = "hardhat[light_on]_[color]" - if(on) user.SetLuminosity(user.luminosity + brightness_on) - else user.SetLuminosity(user.luminosity - brightness_on) + if((light_on) && (user.luminosity < brightness_on)) + user.SetLuminosity(brightness_on) + else + user.SetLuminosity(search_light(user, src)) pickup(mob/user) - if(on) - user.SetLuminosity(user.luminosity + brightness_on) -// user.UpdateLuminosity() + if(light_on) + if (user.luminosity < brightness_on) + user.SetLuminosity(brightness_on) +// user.UpdateLuminosity() //TODO: Carn SetLuminosity(0) dropped(mob/user) - if(on) - user.SetLuminosity(user.luminosity - brightness_on) -// user.UpdateLuminosity() - SetLuminosity(brightness_on) + if(light_on) + if ((layer <= 3) || (loc != user.loc)) + user.SetLuminosity(search_light(user, src)) + SetLuminosity(brightness_on) + // user.UpdateLuminosity() + equipped(mob/user, slot) + if(light_on) + if (user.luminosity < brightness_on) + user.SetLuminosity(brightness_on) +// user.UpdateLuminosity() //TODO: Carn + SetLuminosity(0) /* * Kitty ears */ diff --git a/code/modules/clothing/spacesuits/rig.dm b/code/modules/clothing/spacesuits/rig.dm index 9429e41cb31..ff07fc01983 100644 --- a/code/modules/clothing/spacesuits/rig.dm +++ b/code/modules/clothing/spacesuits/rig.dm @@ -6,8 +6,8 @@ item_state = "eng_helm" armor = list(melee = 40, bullet = 5, laser = 20,energy = 5, bomb = 35, bio = 100, rad = 100) allowed = list(/obj/item/device/flashlight) - var/brightness_on = 4 //luminosity when on - var/on = 0 + brightness_on = 4 //luminosity when on + light_on = 0 color = "engineering" //Determines used sprites: rig[on]-[color] and rig[on]-[color]2 (lying down sprite) icon_action_button = "action_hardhat" heat_protection = HEAD @@ -17,24 +17,35 @@ if(!isturf(user.loc)) user << "You cannot turn the light on while in this [user.loc]" //To prevent some lighting anomalities. return - on = !on - icon_state = "rig[on]-[color]" + light_on = !light_on + icon_state = "rig[light_on]-[color]" // item_state = "rig[on]-[color]" - if(on) user.SetLuminosity(user.luminosity + brightness_on) - else user.SetLuminosity(user.luminosity - brightness_on) + if((light_on) && (user.luminosity < brightness_on)) + user.SetLuminosity(brightness_on) + else + user.SetLuminosity(search_light(user, src)) pickup(mob/user) - if(on) - user.SetLuminosity(user.luminosity + brightness_on) -// user.UpdateLuminosity() + if(light_on) + if (user.luminosity < brightness_on) + user.SetLuminosity(brightness_on) +// user.UpdateLuminosity() //TODO: Carn SetLuminosity(0) dropped(mob/user) - if(on) - user.SetLuminosity(user.luminosity - brightness_on) -// user.UpdateLuminosity() - SetLuminosity(brightness_on) + if(light_on) + if ((layer <= 3) || (loc != user.loc)) + user.SetLuminosity(search_light(user, src)) + SetLuminosity(brightness_on) + // user.UpdateLuminosity() + + equipped(mob/user, slot) + if(light_on) + if (user.luminosity < brightness_on) + user.SetLuminosity(brightness_on) +// user.UpdateLuminosity() //TODO: Carn + SetLuminosity(0) /obj/item/clothing/suit/space/rig name = "engineering hardsuit" diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 1b5c560a3f0..6a189778d42 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -421,19 +421,19 @@ if(!item) return //Grab processing has a chance of returning null + item.layer = initial(item.layer) u_equip(item) update_icons() - if(src.client) - src.client.screen -= item + //if(src.client) + //src.client.screen -= item - item.loc = src.loc + //item.loc = src.loc - if(istype(item, /obj/item)) - item:dropped(src) // let it know it's been dropped + //if(istype(item, /obj/item)) + //item:dropped(src) // let it know it's been dropped //actually throw it! if (item) - item.layer = initial(item.layer) src.visible_message("\red [src] has thrown [item].") if(!src.lastarea) diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm index 90500d0d924..fe14579d1e6 100644 --- a/code/modules/mob/living/carbon/human/inventory.dm +++ b/code/modules/mob/living/carbon/human/inventory.dm @@ -159,9 +159,8 @@ client.screen -= W W.loc = loc W.dropped(src) - if(W) - W.layer = initial(W.layer) - + //if(W) + //W.layer = initial(W.layer) update_action_buttons() return 1 @@ -592,7 +591,15 @@ It can still be worn/put on as normal. target.internals.icon_state = "internal1" if(slot_to_process) if(strip_item) //Stripping an item from the mob - target.u_equip(strip_item) + var/obj/item/W = strip_item + target.u_equip(W) + if (target.client) + target.client.screen -= W + if (W) + W.loc = target.loc + W.layer = initial(W.layer) + W.dropped(target) + W.add_fingerprint(source) if(slot_to_process == slot_l_store) //pockets! Needs to process the other one too. Snowflake code, wooo! It's not like anyone will rewrite this anytime soon. If I'm wrong then... CONGRATULATIONS! ;) if(target.r_store) target.u_equip(target.r_store) //At this stage l_store is already processed by the code above, we only need to process r_store. @@ -601,6 +608,7 @@ It can still be worn/put on as normal. if(item.mob_can_equip(target, slot_to_process, 0)) source.u_equip(item) target.equip_to_slot_if_possible(item, slot_to_process, 0, 1, 1) + item.dropped(source) source.update_icons() target.update_icons() diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 0760863943f..0dbd1dd272c 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -140,7 +140,7 @@ if(D.data["donor"] == src) B = D break - var/datum/reagent/nutriment/F = locate() in vessel.reagent_list + var/datum/reagent/nutriment/F = locate() in reagents.reagent_list if(F != null) if(F.volume >= 1) // nutriment speeds it up quite a bit diff --git a/code/modules/mob/living/carbon/monkey/inventory.dm b/code/modules/mob/living/carbon/monkey/inventory.dm index b1060ad9a96..e9f57611620 100644 --- a/code/modules/mob/living/carbon/monkey/inventory.dm +++ b/code/modules/mob/living/carbon/monkey/inventory.dm @@ -102,8 +102,8 @@ target.client.screen -= W if (W) W.loc = target.loc - W.dropped(target) W.layer = initial(W.layer) + W.dropped(target) W.add_fingerprint(source) else if (istype(item, /obj/item)) @@ -112,6 +112,8 @@ item.layer = 20 target.l_hand = item item.loc = target + item.dropped(source) + item.equipped(target,target.l_hand) if("r_hand") if (target.r_hand) var/obj/item/W = target.r_hand @@ -120,8 +122,8 @@ target.client.screen -= W if (W) W.loc = target.loc - W.dropped(target) W.layer = initial(W.layer) + W.dropped(target) W.add_fingerprint(source) else if (istype(item, /obj/item)) @@ -130,6 +132,8 @@ item.layer = 20 target.r_hand = item item.loc = target + item.dropped(source) + item.equipped(target,target.r_hand) if("back") if (target.back) var/obj/item/W = target.back diff --git a/code/modules/mob/living/silicon/robot/robot_items.dm b/code/modules/mob/living/silicon/robot/robot_items.dm new file mode 100644 index 00000000000..4b66af1f7d5 --- /dev/null +++ b/code/modules/mob/living/silicon/robot/robot_items.dm @@ -0,0 +1,122 @@ +// A special tray for the service droid. Allow droid to pick up and drop items as if they were using the tray normally +// Click on table to unload, click on item to load. Otherwise works identically to a tray. +// Unlike the base item "tray", robotrays ONLY pick up food, drinks and condiments. + +/obj/item/weapon/tray/robotray + name = "RoboTray" + desc = "An autoloading tray specialized for carrying refreshments." + +/obj/item/weapon/tray/robotray/afterattack(atom/target, mob/user as mob) + if ( !target ) + return + // pick up items, mostly copied from base tray pickup proc + // see code\game\objects\items\weapons\kitchen.dm line 241 + if ( istype(target,/obj/item)) + if ( !isturf(target.loc) ) // Don't load up stuff if it's inside a container or mob! + return + var turf/pickup = target.loc + + var addedSomething = 0 + + for(var/obj/item/weapon/reagent_containers/food/I in pickup) + + + if( I != src && !I.anchored && !istype(I, /obj/item/clothing/under) && !istype(I, /obj/item/clothing/suit) && !istype(I, /obj/item/projectile) ) + var/add = 0 + if(I.w_class == 1.0) + add = 1 + else if(I.w_class == 2.0) + add = 3 + else + add = 5 + if(calc_carry() + add >= max_carry) + break + + I.loc = src + carrying.Add(I) + overlays += image("icon" = I.icon, "icon_state" = I.icon_state, "layer" = 30 + I.layer) + addedSomething = 1 + if ( addedSomething ) + user.visible_message("\blue [user] load some items onto their service tray.") + + return + + // Unloads the tray, copied from base item's proc dropped() and altered + // see code\game\objects\items\weapons\kitchen.dm line 263 + + if ( isturf(target) || istype(target,/obj/structure/table) ) + var foundtable = istype(target,/obj/structure/table/) + if ( !foundtable ) //it must be a turf! + for(var/obj/structure/table/T in target) + foundtable = 1 + break + + var turf/dropspot + if ( !foundtable ) // don't unload things onto walls or other silly places. + dropspot = user.loc + else if ( isturf(target) ) // they clicked on a turf with a table in it + dropspot = target + else // they clicked on a table + dropspot = target.loc + + + overlays = null + + var droppedSomething = 0 + + for(var/obj/item/I in carrying) + I.loc = dropspot + carrying.Remove(I) + droppedSomething = 1 + if(!foundtable && isturf(dropspot)) + // if no table, presume that the person just shittily dropped the tray on the ground and made a mess everywhere! + spawn() + for(var/i = 1, i <= rand(1,2), i++) + if(I) + step(I, pick(NORTH,SOUTH,EAST,WEST)) + sleep(rand(2,4)) + if ( droppedSomething ) + if ( foundtable ) + user.visible_message("\blue [user] unloads their service tray.") + else + user.visible_message("\blue [user] drops all the items on their tray.") + + return ..() + + + + +// A special pen for service droids. Can be toggled to switch between normal writting mode, and paper rename mode +// Allows service droids to rename paper items. + +/obj/item/weapon/pen/robopen + desc = "A black ink printing attachment with a paper naming mode." + name = "Printing Pen" + var/mode = 1 + +/obj/item/weapon/pen/robopen/attack_self(mob/user as mob) + playsound(src.loc, 'sound/effects/pop.ogg', 50, 0) + if (mode == 1) + mode = 2 + user << "Changed printing mode to 'Rename Paper'" + return + if (mode == 2) + mode = 1 + user << "Changed printing mode to 'Write Paper'" + +// Copied over from paper's rename verb +// see code\modules\paperwork\paper.dm line 62 + +/obj/item/weapon/pen/robopen/proc/RenamePaper(mob/user as mob,obj/paper as obj) + if ( !user || !paper ) + return + var/n_name = input(user, "What would you like to label the paper?", "Paper Labelling", null) as text + if ( !user || !paper ) + return + + n_name = copytext(n_name, 1, 32) + if(( get_dist(user,paper) <= 1 && user.stat == 0)) + paper.name = "paper[(n_name ? text("- '[n_name]'") : null)]" + add_fingerprint(user) + return + diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index 2817ab49579..36904df4999 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -170,7 +170,7 @@ ..() src.modules += new /obj/item/weapon/reagent_containers/food/drinks/beer(src) src.modules += new /obj/item/weapon/reagent_containers/food/condiment/enzyme(src) - src.modules += new /obj/item/weapon/pen(src) + src.modules += new /obj/item/weapon/pen/robopen(src) var/obj/item/weapon/rsf/M = new /obj/item/weapon/rsf(src) M.matter = 30 @@ -179,10 +179,10 @@ src.modules += new /obj/item/weapon/reagent_containers/robodropper(src) var/obj/item/weapon/lighter/zippo/L = new /obj/item/weapon/lighter/zippo(src) - L.lit = 1 + L.light_on = 1 src.modules += L - src.modules += new /obj/item/weapon/tray(src) + src.modules += new /obj/item/weapon/tray/robotray(src) src.modules += new /obj/item/weapon/reagent_containers/food/drinks/shaker(src) src.emag = new /obj/item/weapon/reagent_containers/food/drinks/beer(src) diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index c007425c9b8..ccaf59f8d29 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -264,7 +264,10 @@ clown = 1 if(istype(P, /obj/item/weapon/pen) || istype(P, /obj/item/toy/crayon)) - user << browse("[name][info_links][stamps]", "window=[name]") + if ( istype(P, /obj/item/weapon/pen/robopen) && P:mode == 2 ) + P:RenamePaper(user,src) + else + user << browse("[name][info_links][stamps]", "window=[name]") //openhelp(user) return else if(istype(P, /obj/item/weapon/stamp)) diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 067ef207acd..ab930dcfe56 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -87,19 +87,19 @@ visible_message("\red [A.name] is hit by the [src.name] in the [def_zone]!")//X has fired Y is now given by the guns so you cant tell who shot you if you could not see the shooter if(istype(firer, /mob)) - M.attack_log += "\[[time_stamp()]\] [firer]/[firer.ckey] shot [M]/[M.ckey] with a [src]" - firer.attack_log += "\[[time_stamp()]\] [firer]/[firer.ckey] shot [M]/[M.ckey] with a [src]" - log_attack("[firer] ([firer.ckey]) shot [M] ([M.ckey]) with a [src]") + M.attack_log += "\[[time_stamp()]\] [firer]/[firer.ckey] shot [M]/[M.ckey] with a [src.type]" + firer.attack_log += "\[[time_stamp()]\] [firer]/[firer.ckey] shot [M]/[M.ckey] with a [src.type]" + log_attack("[firer] ([firer.ckey]) shot [M] ([M.ckey]) with a [src.type]") - log_admin("ATTACK: [firer] ([firer.ckey]) shot [M] ([M.ckey]) with a [src]") - msg_admin_attack("ATTACK: [firer] ([firer.ckey]) shot [M] ([M.ckey]) with a [src]") //BS12 EDIT ALG + log_admin("ATTACK: [firer] ([firer.ckey]) shot [M] ([M.ckey]) with a [src.type]") + msg_admin_attack("ATTACK: [firer] ([firer.ckey]) shot [M] ([M.ckey]) with a [src.type]") //BS12 EDIT ALG else M.attack_log += "\[[time_stamp()]\] UNKNOWN SUBJECT (No longer exists) shot [M]/[M.ckey] with a [src]" - log_attack("UNKNOWN shot [M] ([M.ckey]) with a [src]") + log_attack("UNKNOWN shot [M] ([M.ckey]) with a [src.type]") log_admin("ATTACK: UNKNOWN shot [M] ([M.ckey]) with a [src]") - 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.type]") //BS12 EDIT ALG spawn(0) if(A) diff --git a/code/modules/reagents/reagent_containers/food/drinks.dm b/code/modules/reagents/reagent_containers/food/drinks.dm index 8471568c3ec..020efe4a313 100644 --- a/code/modules/reagents/reagent_containers/food/drinks.dm +++ b/code/modules/reagents/reagent_containers/food/drinks.dm @@ -93,15 +93,27 @@ user << "\red [target] is full." return + + + var/datum/reagent/refill + var/datum/reagent/refillName + if(isrobot(user)) + refill = reagents.get_master_reagent_id() + refillName = reagents.get_master_reagent_name() + var/trans = src.reagents.trans_to(target, amount_per_transfer_from_this) user << "\blue You transfer [trans] units of the solution to [target]." if(isrobot(user)) //Cyborg modules that include drinks automatically refill themselves, but drain the borg's cell var/mob/living/silicon/robot/bro = user - bro.cell.use(30) - var/refill = reagents.get_master_reagent_id() - spawn(600) + var/chargeAmount = max(30,4*trans) + bro.cell.use(chargeAmount) + user << "Now synthesizing [trans] units of [refillName]..." + + + spawn(300) reagents.add_reagent(refill, trans) + user << "Cyborg [src] refilled." return diff --git a/code/modules/reagents/reagent_containers/food/snacks/grown.dm b/code/modules/reagents/reagent_containers/food/snacks/grown.dm index 3d0cb1ee66a..31d1536eb4b 100644 --- a/code/modules/reagents/reagent_containers/food/snacks/grown.dm +++ b/code/modules/reagents/reagent_containers/food/snacks/grown.dm @@ -216,8 +216,8 @@ seed = "/obj/item/seeds/glowberryseed" name = "bunch of glow-berries" desc = "Nutritious!" - var/on = 1 - var/brightness_on = 2 //luminosity when on + light_on = 1 + brightness_on = 2 //luminosity when on icon_state = "glowberrypile" New() ..() diff --git a/code/setup.dm b/code/setup.dm index 0fe085d5a6b..1abc93a19bb 100644 --- a/code/setup.dm +++ b/code/setup.dm @@ -534,7 +534,7 @@ var/list/liftable_structures = list(\ #define INVISIBILITY_MAXIMUM 100 //Object specific defines -#define CANDLE_LUM 3 //For how bright candles are +//#define CANDLE_LUM 3 //For how bright candles are //Why is this here? Moved to candle.dm (brightness_on) -SweeperM //Some mob defines below diff --git a/maps/tgstation.2.0.9.1.dmm b/maps/tgstation.2.0.9.1.dmm index c6f444dd29b..c1758f271e8 100644 --- a/maps/tgstation.2.0.9.1.dmm +++ b/maps/tgstation.2.0.9.1.dmm @@ -784,7 +784,7 @@ "apd" = (/turf/simulated/floor/carpet,/area/security/detectives_office) "ape" = (/obj/structure/table/woodentable,/obj/item/weapon/cigpacket,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/item/clothing/glasses/sunglasses,/turf/simulated/floor/carpet,/area/security/detectives_office) "apf" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/turf/simulated/floor/carpet,/area/security/detectives_office) -"apg" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp/green{on = 0; pixel_x = -3; pixel_y = 8},/obj/item/weapon/book/manual/security_space_law,/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office) +"apg" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp/green{light_on = 0; pixel_x = -3; pixel_y = 8},/obj/item/weapon/book/manual/security_space_law,/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office) "aph" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/requests_console{department = "Law office"; pixel_x = -32; pixel_y = 0},/turf/simulated/floor/wood,/area/lawoffice) "api" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor/wood,/area/lawoffice) "apj" = (/obj/structure/table/woodentable,/obj/item/weapon/book/manual/security_space_law,/obj/item/weapon/book/manual/security_space_law,/obj/item/weapon/pen/red,/turf/simulated/floor/wood,/area/lawoffice)