diff --git a/code/WorkInProgress/Mini/ATM.dm b/code/WorkInProgress/Mini/ATM.dm index 32c9bc4d222..3feb2014916 100644 --- a/code/WorkInProgress/Mini/ATM.dm +++ b/code/WorkInProgress/Mini/ATM.dm @@ -26,6 +26,10 @@ log transactions del I /obj/machinery/atm/attack_hand(mob/user as mob) + if(istype(user, /mob/living/silicon)) + user << "\red Artificial unit recognized. Artificial units do not currently receive monetary compensation, as per NanoTrasen regulation #1005." + return + var/obj/item/weapon/card/id/user_id = src.scan_user(user) if(..()) return diff --git a/code/defines/obj.dm b/code/defines/obj.dm index 8b8bcc63adb..06c6295f442 100644 --- a/code/defines/obj.dm +++ b/code/defines/obj.dm @@ -88,7 +88,7 @@ /obj/structure/bedsheetbin name = "linen bin" - desc = "A bin for containing bedsheets. It looks rather cosy." + desc = "A small wire mesh bin full of extra bedsheets and cleaning supplies for the beds. Smells of lilacs and has a faint undertone of disinfectant." icon = 'items.dmi' icon_state = "bedbin" var/amount = 23.0 @@ -232,7 +232,7 @@ var/mob/living/carbon/monkey/target = null /obj/effect/sign/securearea - desc = "A warning sign which reads 'SECURE AREA'" + desc = "A large yellow warning sign which reads 'SECURE AREA', it appears to have been painted onto the wall like that." name = "SECURE AREA" icon = 'decals.dmi' icon_state = "securearea" @@ -250,7 +250,7 @@ density = 0 /obj/effect/sign/biohazard - desc = "A warning sign which reads 'BIOHAZARD'" + desc = "A warning sign which reads 'BIOHAZARD', you think it'd be a good idea to ensure you have a properly sealed hazardsuit on." name = "BIOHAZARD" icon = 'decals.dmi' icon_state = "bio" @@ -259,7 +259,7 @@ density = 0 /obj/effect/sign/electricshock - desc = "A warning sign which reads 'HIGH VOLTAGE'" + desc = "A warning sign which reads 'HIGH VOLTAGE', it looks like it'd be a wise decision to stay away from here." name = "HIGH VOLTAGE" icon = 'decals.dmi' icon_state = "shock" diff --git a/code/defines/obj/machinery.dm b/code/defines/obj/machinery.dm index ae581a05f9a..b29f26d928e 100644 --- a/code/defines/obj/machinery.dm +++ b/code/defines/obj/machinery.dm @@ -225,38 +225,6 @@ idle_power_usage = 10 active_power_usage = 400 -/obj/machinery/door_control - name = "remote door-control" - desc = "It controls doors, remotely." - icon = 'stationobjs.dmi' - icon_state = "doorctrl0" - desc = "A remote control-switch for a door." - var/id = null - var/range = 10 - var/normaldoorcontrol = 0 - var/desiredstate = 0 // Zero is closed, 1 is open. - var/specialfunctions = 1 - /* - Bitflag, 1= open - 2= idscan, - 4= bolts - 8= shock - 16= door safties - - */ - - var/exposedwires = 0 - var/wires = 3 - /* - Bitflag, 1=checkID - 2=Network Access - */ - - anchored = 1.0 - use_power = 1 - idle_power_usage = 2 - active_power_usage = 4 - /obj/machinery/driver_button name = "mass driver button" icon = 'objects.dmi' diff --git a/code/defines/procs/helpers.dm b/code/defines/procs/helpers.dm index 61dc65dbc3b..859e8abd106 100644 --- a/code/defines/procs/helpers.dm +++ b/code/defines/procs/helpers.dm @@ -838,6 +838,7 @@ Turf and target are seperate in case you want to teleport some distance from a t var/list/names = list() var/list/creatures = list() var/list/namecounts = list() + for(var/mob/M in mobs) var/name = M.name if (name in names) @@ -846,13 +847,16 @@ Turf and target are seperate in case you want to teleport some distance from a t else names.Add(name) namecounts[name] = 1 + if (M.real_name && M.real_name != M.name) name += " \[[M.original_name? M.original_name : M.real_name]\]" + if (M.stat == 2) if(istype(M, /mob/dead/observer/)) name += " \[ghost\]" else name += " \[dead\]" + creatures[name] = M return creatures diff --git a/code/game/algorithm.dm b/code/game/algorithm.dm index 386a48d4326..f0c1a7f737a 100644 --- a/code/game/algorithm.dm +++ b/code/game/algorithm.dm @@ -179,19 +179,16 @@ proc/countJob(rank) del(W) return equipped -/proc/AutoUpdateAI(obj/subject) -/* +/proc/AutoUpdateAI(obj/subject) // Needed for AI's to not have to click on every computer after every change. if (subject!=null) for(var/mob/living/silicon/ai/M in world) if ((M.client && M.machine == subject)) subject.attack_ai(M) -*/ -/proc/AutoUpdateTK(obj/subject) -/* if (subject!=null) +/proc/AutoUpdateTK(obj/subject) // Commented where used due to lag. + if (subject!=null) for(var/obj/item/tk_grab/T in world) if (T.host) var/mob/M = T.host if(M.client && M.machine == subject) subject.attack_hand(M) -*/ diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm index df2616b8b37..0790bc4af8b 100644 --- a/code/game/machinery/computer/security.dm +++ b/code/game/machinery/computer/security.dm @@ -86,6 +86,8 @@ background = "'background-color:#CD853F;'" if("Released") background = "'background-color:#3BB9FF;'" + if("Deceased") + background = "'background-color:#CD853F;'" if("None") background = "'background-color:#00FF7F;'" if("") @@ -171,6 +173,8 @@ background = "'background-color:#CD853F;'" if("Released") background = "'background-color:#3BB9FF;'" + if("Deceased") + background = "'background-color:#CD853F;'" if("None") background = "'background-color:#00FF7F;'" if("") @@ -472,6 +476,7 @@ What a mess.*/ temp += "
  • Incarcerated
  • " temp += "
  • Parolled
  • " temp += "
  • Released
  • " + temp += "
  • Deceased
  • " temp += "" if("rank") var/list/L = list( "Head of Personnel", "Captain", "AI" ) @@ -525,6 +530,8 @@ What a mess.*/ active2.fields["criminal"] = "Parolled" if("released") active2.fields["criminal"] = "Released" + if("deceased") + active2.fields["criminal"] = "Deceased" if ("Delete Record (Security) Execute") if (active2) diff --git a/code/game/machinery/door_control.dm b/code/game/machinery/door_control.dm index c30890f0cb0..7c9e3135609 100644 --- a/code/game/machinery/door_control.dm +++ b/code/game/machinery/door_control.dm @@ -1,3 +1,35 @@ +/obj/machinery/door_control + name = "remote door-control" + desc = "It controls doors, remotely." + icon = 'stationobjs.dmi' + icon_state = "doorctrl0" + desc = "A remote control-switch for a door." + var/id = null + var/range = 10 + var/normaldoorcontrol = 0 + var/desiredstate = 0 // Zero is closed, 1 is open. + var/specialfunctions = 1 + /* + Bitflag, 1= open + 2= idscan, + 4= bolts + 8= shock + 16= door safties + + */ + + var/exposedwires = 0 + var/wires = 3 + /* + Bitflag, 1=checkID + 2=Network Access + */ + + anchored = 1.0 + use_power = 1 + idle_power_usage = 2 + active_power_usage = 4 + /obj/machinery/door_control/attack_ai(mob/user as mob) if(wires & 2) return src.attack_hand(user) diff --git a/code/game/master_controller.dm b/code/game/master_controller.dm index dcd8969b6bb..c5fcd673f0b 100644 --- a/code/game/master_controller.dm +++ b/code/game/master_controller.dm @@ -59,9 +59,9 @@ datum/controller/game_controller setupgenetics() - for(var/i = 0, i < max_secret_rooms, i++) - make_mining_asteroid_secret() - +// for(var/i = 0, i < max_secret_rooms, i++) +// make_mining_asteroid_secret() +// Because energy cutlasses, facehuggers, and empty rooms are silly. FOR NOW. - Erthilo syndicate_code_phrase = generate_code_phrase()//Sets up code phrase for traitors, for the round. syndicate_code_response = generate_code_phrase() diff --git a/code/game/objects/effect_system.dm b/code/game/objects/effect_system.dm index 473a33c1e6c..c661ae8a725 100644 --- a/code/game/objects/effect_system.dm +++ b/code/game/objects/effect_system.dm @@ -1034,7 +1034,8 @@ steam.start() -- spawns the effect user << "\blue You hit the metal foam to no effect." CanPass(atom/movable/mover, turf/target, height=1.5, air_group = 0) - if(air_group) return 0 + if(!istype(mover)) + return 0 return !density diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index e44d45d7905..3993a1e2acf 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -372,7 +372,7 @@ if(M:brain_op_stage == 4.0) for(var/mob/O in viewers(M, null)) - if(O == (user || M)) + if(O == user || O == M) continue if(M == user) O.show_message(text("\red [user] inserts [src] into his head!"), 1) diff --git a/code/game/objects/items/weapons/kitchen.dm b/code/game/objects/items/weapons/kitchen.dm index b4187524e96..3d83483ef90 100644 --- a/code/game/objects/items/weapons/kitchen.dm +++ b/code/game/objects/items/weapons/kitchen.dm @@ -164,10 +164,10 @@ KNIFE playsound(M, 'trayhit2.ogg', 50, 1) //sound playin' return //it always returns, but I feel like adding an extra return just for safety's sakes. EDIT; Oh well I won't :3 - var/mob/living/carbon/human/H = M ///////////////////////////////////// /Let's have this ready for later. + var/mob/living/carbon/human/H = M // Let's have this ready for later. - if(!(user.zone_sel.selecting == ("eyes" || "head"))) //////////////hitting anything else other than the eyes + if(user.zone_sel.selecting != "eyes" && user.zone_sel.selecting != "head") //hitting anything else other than the eyes if(prob(33)) src.add_blood(H) var/turf/location = H.loc diff --git a/code/game/objects/items/weapons/surgery_limbattachment.dm b/code/game/objects/items/weapons/surgery_limbattachment.dm index b84ae2cf0b7..874536f7c7b 100644 --- a/code/game/objects/items/weapons/surgery_limbattachment.dm +++ b/code/game/objects/items/weapons/surgery_limbattachment.dm @@ -1,4 +1,6 @@ -/obj/item/robot_parts/l_arm/attack(mob/living/carbon/human/M as mob, mob/living/carbon/user as mob) +/obj/item/robot_parts/attack(mob/living/carbon/human/M as mob, mob/living/carbon/user as mob) + var/limbloc = null + if(!istype(M)) return ..() @@ -8,230 +10,59 @@ if(!istype(M, /mob/living/carbon/human)) return ..() - if(user.zone_sel.selecting == "l_arm") - var/mob/living/carbon/human/H = M - var/datum/organ/external/S = H.organs[user.zone_sel.selecting] - if(S.destroyed) - if(!S.attachable) - user << "\red The wound is not ready for a replacement!" - return 0 + if((user.zone_sel.selecting == "l_arm") && (istype(src, /obj/item/robot_parts/l_arm))) + limbloc = "l_hand" + else if((user.zone_sel.selecting == "r_arm") && (istype(src, /obj/item/robot_parts/r_arm))) + limbloc = "r_hand" + else if((user.zone_sel.selecting == "r_leg") && (istype(src, /obj/item/robot_parts/r_leg))) + limbloc = "r_foot" + else if((user.zone_sel.selecting == "l_leg") && (istype(src, /obj/item/robot_parts/l_leg))) + limbloc = "l_foot" + else + user << "\red That doesn't fit there!" + return ..() + + var/mob/living/carbon/human/H = M + var/datum/organ/external/S = H.organs[user.zone_sel.selecting] + if(S.destroyed) + if(!S.attachable) + user << "\red The wound is not ready for a replacement!" + return 0 + if(M != user) + M.visible_message( \ + "\red [user] is beginning to attach \the [src] where [H]'s [S.display_name] used to be.", \ + "\red [user] begins to attach \the [src] where your [S.display_name] used to be.") + else + M.visible_message( \ + "\red [user] begins to attach a robotic limb where \his [S.display_name] used to be with [src].", \ + "\red You begin to attach \the [src] where your [S.display_name] used to be.") + + if(do_mob(user, H, 100)) if(M != user) M.visible_message( \ - "\red [user] is beginning to attach a robotic limb where [H]'s [S.display_name] used to be with [src].", \ - "\red [user] begins to attach a robotic limb where [S.display_name] used to be with [src].") + "\red [user] finishes attaching [H]'s new [S.display_name].", \ + "\red [user] finishes attaching your new [S.display_name].") else M.visible_message( \ - "\red [user] begins to attach a robotic limb where \his [S.display_name] used to be with [src].", \ - "\red You begin to attach a robotic limb where your [S.display_name] used to be with [src].") + "\red [user] finishes attaching \his new [S.display_name].", \ + "\red You finish attaching your new [S.display_name].") - if(do_mob(user, H, 100)) - if(M != user) - M.visible_message( \ - "\red [user] finishes attaching [H]'s new [S.display_name].", \ - "\red [user] finishes attaching your new [S.display_name].") - else - M.visible_message( \ - "\red [user] finishes attaching \his new [S.display_name].", \ - "\red You finish attaching your new [S.display_name].") + if(H == user && prob(25)) + user << "\red You mess up!" + S.take_damage(15) - if(H == user && prob(25)) - user << "\red You mess up!" - S.take_damage(15) + S.broken = 0 + S.attachable = 0 + S.destroyed = 0 + S.robot = 1 + var/datum/organ/external/T = H.organs[limbloc] + T.attachable = 0 + T.destroyed = 0 + T.broken = 0 + T.robot = 1 + del(src) + M.update_body() + M.updatehealth() + M.UpdateDamageIcon() - S.broken = 0 - S.attachable = 0 - S.destroyed = 0 - S.robot = 1 - var/datum/organ/external/T = H.organs["l_hand"] - T.attachable = 0 - T.destroyed = 0 - T.broken = 0 - T.robot = 1 - user.drop_item() - M.update_body() - M.updatehealth() - M.UpdateDamageIcon() - - return 1 - else - user << "\red That doesn't fit there!." - return ..() - - -/obj/item/robot_parts/r_arm/attack(mob/living/carbon/human/M as mob, mob/living/carbon/user as mob) - if(!istype(M)) - return ..() - - if(!((locate(/obj/machinery/optable, M.loc) && M.resting) || (locate(/obj/structure/stool/bed/roller, M.loc) && (M.buckled || M.lying || M.weakened || M.stunned || M.paralysis || M.sleeping || M.stat)) && prob(75) || (locate(/obj/structure/table/, M.loc) && (M.lying || M.weakened || M.stunned || M.paralysis || M.sleeping || M.stat) && prob(66)))) - return ..() - - if(!istype(M, /mob/living/carbon/human)) - return ..() - - if(user.zone_sel.selecting == "r_arm") - var/mob/living/carbon/human/H = M - var/datum/organ/external/S = H.organs[user.zone_sel.selecting] - if(S.destroyed) - if(!S.attachable) - user << "\red The wound is not ready for a replacement!" - return 0 - if(M != user) - M.visible_message( \ - "\red [user] is beginning to attach a robotic limb where [H]'s [S.display_name] used to be with [src].", \ - "\red [user] begins to attach a robotic limb where [S.display_name] used to be with [src].") - else - M.visible_message( \ - "\red [user] begins to attach a robotic limb where \his [S.display_name] used to be with [src].", \ - "\red You begin to attach a robotic limb where your [S.display_name] used to be with [src].") - - if(do_mob(user, H, 100)) - if(M != user) - M.visible_message( \ - "\red [user] finishes attaching [H]'s new [S.display_name].", \ - "\red [user] finishes attaching your new [S.display_name].") - else - M.visible_message( \ - "\red [user] finishes attaching \his new [S.display_name].", \ - "\red You finish attaching your new [S.display_name].") - - if(H == user && prob(25)) - user << "\red You mess up!" - S.take_damage(15) - - S.broken = 0 - S.attachable = 0 - S.destroyed = 0 - S.robot = 1 - var/datum/organ/external/T = H.organs["r_hand"] - T.attachable = 0 - T.destroyed = 0 - T.broken = 0 - T.robot = 1 - user.drop_item() - M.update_body() - M.updatehealth() - M.UpdateDamageIcon() - - return 1 - else - user << "\red That doesn't fit there!." - return ..() - -/obj/item/robot_parts/l_leg/attack(mob/living/carbon/human/M as mob, mob/living/carbon/user as mob) - if(!istype(M)) - return ..() - - if(!((locate(/obj/machinery/optable, M.loc) && M.resting) || (locate(/obj/structure/stool/bed/roller, M.loc) && (M.buckled || M.lying || M.weakened || M.stunned || M.paralysis || M.sleeping || M.stat)) && prob(75) || (locate(/obj/structure/table/, M.loc) && (M.lying || M.weakened || M.stunned || M.paralysis || M.sleeping || M.stat) && prob(66)))) - return ..() - - if(!istype(M, /mob/living/carbon/human)) - return ..() - - if(user.zone_sel.selecting == "l_leg") - var/mob/living/carbon/human/H = M - var/datum/organ/external/S = H.organs[user.zone_sel.selecting] - if(S.destroyed) - if(!S.attachable) - user << "\red The wound is not ready for a replacement!" - return 0 - if(M != user) - M.visible_message( \ - "\red [user] is beginning to attach a robotic limb where [H]'s [S.display_name] used to be with [src].", \ - "\red [user] begins to attach a robotic limb where [S.display_name] used to be with [src].") - else - M.visible_message( \ - "\red [user] begins to attach a robotic limb where \his [S.display_name] used to be with [src].", \ - "\red You begin to attach a robotic limb where your [S.display_name] used to be with [src].") - - if(do_mob(user, H, 100)) - if(M != user) - M.visible_message( \ - "\red [user] finishes attaching [H]'s new [S.display_name].", \ - "\red [user] finishes attaching your new [S.display_name].") - else - M.visible_message( \ - "\red [user] finishes attaching \his new [S.display_name].", \ - "\red You finish attaching your new [S.display_name].") - - if(H == user && prob(25)) - user << "\red You mess up!" - S.take_damage(15) - - S.broken = 0 - S.attachable = 0 - S.destroyed = 0 - S.robot = 1 - var/datum/organ/external/T = H.organs["l_foot"] - T.attachable = 0 - T.destroyed = 0 - T.broken = 0 - T.robot = 1 - user.drop_item() - M.update_body() - M.updatehealth() - M.UpdateDamageIcon() - - return 1 - else - user << "\red That doesn't fit there!." - return ..() - - -/obj/item/robot_parts/r_leg/attack(mob/living/carbon/human/M as mob, mob/living/carbon/user as mob) - if(!istype(M)) - return ..() - - if(!((locate(/obj/machinery/optable, M.loc) && M.resting) || (locate(/obj/structure/stool/bed/roller, M.loc) && (M.buckled || M.lying || M.weakened || M.stunned || M.paralysis || M.sleeping || M.stat)) && prob(75) || (locate(/obj/structure/table/, M.loc) && (M.lying || M.weakened || M.stunned || M.paralysis || M.sleeping || M.stat) && prob(66)))) - return ..() - - if(!istype(M, /mob/living/carbon/human)) - return ..() - - if(user.zone_sel.selecting == "r_leg") - var/mob/living/carbon/human/H = M - var/datum/organ/external/S = H.organs[user.zone_sel.selecting] - if(S.destroyed) - if(!S.attachable) - user << "\red The wound is not ready for a replacement!" - return 0 - if(M != user) - M.visible_message( \ - "\red [user] is beginning to attach a robotic limb where [H]'s [S.display_name] used to be with [src].", \ - "\red [user] begins to attach a robotic limb where [S.display_name] used to be with [src].") - else - M.visible_message( \ - "\red [user] begins to attach a robotic limb where \his [S.display_name] used to be with [src].", \ - "\red You begin to attach a robotic limb where your [S.display_name] used to be with [src].") - - if(do_mob(user, H, 100)) - if(M != user) - M.visible_message( \ - "\red [user] finishes attaching [H]'s new [S.display_name].", \ - "\red [user] finishes attaching your new [S.display_name].") - else - M.visible_message( \ - "\red [user] finishes attaching \his new [S.display_name].", \ - "\red You finish attaching your new [S.display_name].") - - if(H == user && prob(25)) - user << "\red You mess up!" - S.take_damage(15) - - S.broken = 0 - S.attachable = 0 - S.destroyed = 0 - S.robot = 1 - var/datum/organ/external/T = H.organs["r_foot"] - T.attachable = 0 - T.destroyed = 0 - T.broken = 0 - T.robot = 1 - user.drop_item() - M.update_body() - M.updatehealth() - M.UpdateDamageIcon() - - return 1 - else - user << "\red That doesn't fit there!." - return ..() \ No newline at end of file + return 1 \ No newline at end of file diff --git a/code/game/shuttle_engines.dm b/code/game/shuttle_engines.dm index 5449634b6ab..6e35204691b 100644 --- a/code/game/shuttle_engines.dm +++ b/code/game/shuttle_engines.dm @@ -10,12 +10,9 @@ opacity = 0 anchored = 1 -/obj/structure/shuttle/window/New() - var/temploc = src.loc - for(var/turf/simulated/W in range(temploc,0)) - W.blocks_air = 1 - W.density = 1 - ..() + CanPass(atom/movable/mover, turf/target, height, air_group) + if(!height || air_group) return 0 + else return ..() /obj/structure/shuttle/engine name = "engine" diff --git a/code/game/topic.dm b/code/game/topic.dm index ba0a70af30f..0f6a30d73f8 100644 --- a/code/game/topic.dm +++ b/code/game/topic.dm @@ -11,6 +11,7 @@ s["ai"] = config.allow_ai s["host"] = host ? host : null s["players"] = list() + s["admins"] = 0 var/n = 0 for(var/client/C) diff --git a/code/modules/admin/verbs/adminjump.dm b/code/modules/admin/verbs/adminjump.dm index 943205551f4..871f0bfcc97 100644 --- a/code/modules/admin/verbs/adminjump.dm +++ b/code/modules/admin/verbs/adminjump.dm @@ -95,20 +95,24 @@ else alert("Admin jumping disabled") -/client/proc/Getmob(var/mob/M) +/client/proc/Getmob(var/mob/M in world) set category = "Admin" set name = "Get Mob" set desc = "Mob to teleport" + if(!src.holder) src << "Only administrators may use this command." return + if(config.allow_admin_jump) if(!M || !istype(M)) var/mobs = getmobs() var/selection = input("Please, select a player!", "Admin Jumping", null, null) as null|anything in mobs - M = mobs[selection] - if(!istype(M)) + if(!selection) return + + M = mobs[selection] + var/mob/A = src.mob var/turf/T = get_turf(A) if(T && isturf(T)) diff --git a/code/modules/chemical/Chemistry-Reagents.dm b/code/modules/chemical/Chemistry-Reagents.dm index e5273876fa8..f83b1d29539 100644 --- a/code/modules/chemical/Chemistry-Reagents.dm +++ b/code/modules/chemical/Chemistry-Reagents.dm @@ -696,10 +696,11 @@ datum id = "sugar" description = "The organic compound commonly known as table sugar and sometimes called saccharose. This white, odorless, crystalline powder has a pleasing, sweet taste." reagent_state = SOLID + nutriment_factor = 1 * REAGENTS_METABOLISM color = "#808080" // rgb: 128, 128, 128 on_mob_life(var/mob/living/M as mob) - M:nutrition += 1 + M:nutrition += nutriment_factor ..() return @@ -2236,7 +2237,6 @@ datum M:nutrition += nutriment_factor if(!M) M = holder.my_atom if(M:getOxyLoss() && prob(30)) M:adjustOxyLoss(-1) - M:nutrition++ ..() return @@ -2252,7 +2252,6 @@ datum M:nutrition += nutriment_factor if(!M) M = holder.my_atom if(M:getFireLoss() && prob(20)) M:heal_organ_damage(0,1) - M:nutrition++ ..() return @@ -2268,7 +2267,6 @@ datum M:nutrition += nutriment_factor if(!M) M = holder.my_atom if(M:getToxLoss() && prob(20)) M:adjustToxLoss(-1) - M:nutrition++ ..() return @@ -2420,12 +2418,13 @@ datum id = "milk" description = "An opaque white liquid produced by the mammary glands of mammals." reagent_state = LIQUID + nutriment_factor = 1.5 * REAGENTS_METABOLISM color = "#DFDFDF" // rgb: 223, 223, 223 on_mob_life(var/mob/living/M as mob) + M:nutrition += nutriment_factor if(!M) M = holder.my_atom if(M:getBruteLoss() && prob(20)) M:heal_organ_damage(1,0) - M:nutrition++ ..() return @@ -2434,12 +2433,13 @@ datum id = "soymilk" description = "An opaque white liquid made from soybeans." reagent_state = LIQUID + nutriment_factor = 1.2 * REAGENTS_METABOLISM color = "#DFDFC7" // rgb: 223, 223, 199 on_mob_life(var/mob/living/M as mob) + M:nutrition += nutriment_factor if(!M) M = holder.my_atom if(M:getBruteLoss() && prob(20)) M:heal_organ_damage(1,0) - M:nutrition++ ..() return @@ -2543,13 +2543,14 @@ datum id = "cola" description = "A refreshing beverage." reagent_state = LIQUID + nutriment_factor = 1 * REAGENTS_METABOLISM color = "#100800" // rgb: 16, 8, 0 on_mob_life(var/mob/living/M as mob) M:drowsyness = max(0,M:drowsyness-5) if (M.bodytemperature > 310)//310 is the normal bodytemp. 310.055 M.bodytemperature = max(310, M.bodytemperature-5) - M:nutrition += 1 + M:nutrition += nutriment_factor ..() return @@ -2558,6 +2559,7 @@ datum id = "nuka_cola" description = "Cola, cola never changes." reagent_state = LIQUID + nutriment_factor = 1 * REAGENTS_METABOLISM color = "#100800" // rgb: 16, 8, 0 on_mob_life(var/mob/living/M as mob) @@ -2569,7 +2571,7 @@ datum M:sleeping = max(0,M.sleeping-2) if (M.bodytemperature > 310)//310 is the normal bodytemp. 310.055 M.bodytemperature = max(310, M.bodytemperature-5) - M:nutrition += 1 + M:nutrition += nutriment_factor ..() return @@ -2578,6 +2580,7 @@ datum id = "spacemountainwind" description = "Blows right through you like a space wind." reagent_state = LIQUID + nutriment_factor = 1 * REAGENTS_METABOLISM color = "#102000" // rgb: 16, 32, 0 on_mob_life(var/mob/living/M as mob) @@ -2587,7 +2590,7 @@ datum if (M.bodytemperature > 310) M.bodytemperature = max(310, M.bodytemperature-5) M.make_jittery(1) - M:nutrition += 1 + M:nutrition += nutriment_factor ..() return @@ -2596,13 +2599,14 @@ datum id = "dr_gibb" description = "A delicious blend of 42 different flavours" reagent_state = LIQUID + nutriment_factor = 1 * REAGENTS_METABOLISM color = "#102000" // rgb: 16, 32, 0 on_mob_life(var/mob/living/M as mob) M:drowsyness = max(0,M:drowsyness-6) if (M.bodytemperature > 310) M.bodytemperature = max(310, M.bodytemperature-5) //310 is the normal bodytemp. 310.055 - M:nutrition += 1 + M:nutrition += nutriment_factor ..() return @@ -2611,12 +2615,13 @@ datum id = "space_up" description = "Tastes like a hull breach in your mouth." reagent_state = LIQUID + nutriment_factor = 1 * REAGENTS_METABOLISM color = "#202800" // rgb: 32, 40, 0 on_mob_life(var/mob/living/M as mob) if (M.bodytemperature > 310) M.bodytemperature = max(310, M.bodytemperature-8) //310 is the normal bodytemp. 310.055 - M:nutrition += 1 + M:nutrition += nutriment_factor ..() return @@ -2625,12 +2630,13 @@ datum description = "A tangy substance made of 0.5% natural citrus!" id = "lemon_lime" reagent_state = LIQUID + nutriment_factor = 1 * REAGENTS_METABOLISM color = "#878F00" // rgb: 135, 40, 0 on_mob_life(var/mob/living/M as mob) if (M.bodytemperature > 310) M.bodytemperature = max(310, M.bodytemperature-8) //310 is the normal bodytemp. 310.055 - M:nutrition += 1 + M:nutrition += nutriment_factor ..() return @@ -2664,6 +2670,7 @@ datum id = "ethanol" description = "A well-known alcohol with a variety of applications." reagent_state = LIQUID + nutriment_factor = 0 //So alcohol can fill you up! If they want to. color = "#404030" // rgb: 64, 64, 48 var dizzy_adj = 3 @@ -2675,6 +2682,7 @@ datum pass_out = 325 //amount absorbed after which mob starts passing out on_mob_life(var/mob/living/M as mob) + M:nutrition += nutriment_factor if(!src.data) data = 1 src.data++ @@ -2706,13 +2714,13 @@ datum name = "Beer" id = "beer" description = "An alcoholic beverage made from malted grains, hops, yeast, and water." + nutriment_factor = 2 * REAGENTS_METABOLISM color = "#664300" // rgb: 102, 67, 0 // slur_start = 25 //amount absorbed after which mob starts slurring // confused_start = 40 //amount absorbed after which mob starts confusing directions //This is quite silly - Erthilo on_mob_life(var/mob/living/M as mob) ..() M:jitteriness = max(M:jitteriness-3,0) - M:nutrition += 2 return whiskey @@ -2801,13 +2809,13 @@ datum color = "#102000" // rgb: 16, 32, 0 on_mob_life(var/mob/living/M as mob) + M:nutrition += nutriment_factor M:drowsyness = max(0,M:drowsyness-7) if(!M:sleeping_willingly) M:sleeping = max(0,M.sleeping-2) if (M.bodytemperature > 310) M.bodytemperature = max(310, M.bodytemperature-5) M.make_jittery(1) - M:nutrition += 1 return @@ -2951,9 +2959,11 @@ datum id = "doctorsdelight" description = "A gulp a day keeps the MediBot away. That's probably for the best." reagent_state = LIQUID + nutriment_factor = 1 * REAGENTS_METABOLISM color = "#664300" // rgb: 102, 67, 0 on_mob_life(var/mob/living/M as mob) + M:nutrition += nutriment_factor if(!M) M = holder.my_atom if(M:getOxyLoss() && prob(50)) M:adjustOxyLoss(-2) if(M:getBruteLoss() && prob(60)) M:heal_organ_damage(2,0) @@ -3115,6 +3125,7 @@ datum color = "#664300" // rgb: 102, 67, 0 on_mob_life(var/mob/living/M as mob) + ..() if (M.bodytemperature < 360) M.bodytemperature = min(360, M.bodytemperature+50) //310 is the normal bodytemp. 310.055 return @@ -3148,6 +3159,7 @@ datum color = "#664300" // rgb: 102, 67, 0 on_mob_life(var/mob/living/M as mob) + ..() if (M.bodytemperature < 270) M.bodytemperature = min(270, M.bodytemperature-40) //310 is the normal bodytemp. 310.055 return @@ -3195,6 +3207,7 @@ datum color = "#664300" // rgb: 102, 67, 0 on_mob_life(var/mob/living/M as mob) + ..() M.stunned = 4 return @@ -3206,6 +3219,7 @@ datum color = "#2E2E61" // rgb: 46, 46, 97 on_mob_life(var/mob/living/M as mob) + ..() if(!M) M = holder.my_atom M:adjustOxyLoss(0.5) M:adjustOxyLoss(0.5) @@ -3235,15 +3249,8 @@ datum color = "#2E6671" // rgb: 46, 102, 113 on_mob_life(var/mob/living/M as mob) - if(!data) data = 1 - data++ - M.dizziness +=5 - if(data >= 55 && data <115) - if (!M.slurring) M.slurring = 1 - M.slurring += 5 - else if(data >= 115 && prob(33)) - M.confused = max(M:confused+15,15) ..() + M.dizziness +=5 return irishcarbomb @@ -3254,15 +3261,8 @@ datum color = "#2E6671" // rgb: 46, 102, 113 on_mob_life(var/mob/living/M as mob) - if(!data) data = 1 - data++ - M.dizziness +=5 - if(data >= 55 && data <115) - if (!M.slurring) M.slurring = 1 - M.slurring += 5 - else if(data >= 115 && prob(33)) - M.confused = max(M:confused+15,15) ..() + M.dizziness +=5 return syndicatebomb @@ -3352,10 +3352,12 @@ datum id = "soy_latte" description = "A nice and tasty beverage while you are reading your hippie books." reagent_state = LIQUID + color = "#664300" // rgb: 102, 67, 0 on_mob_life(var/mob/living/M as mob) ..() + M:nutrition += nutriment_factor M.dizziness = max(0,M.dizziness-5) M:drowsyness = max(0,M:drowsyness-3) M:sleeping = 0 @@ -3363,7 +3365,6 @@ datum M.bodytemperature = min(310, M.bodytemperature+5) M.make_jittery(5) if(M:getBruteLoss() && prob(20)) M:heal_organ_damage(1,0) - M:nutrition++ ..() return @@ -3372,10 +3373,10 @@ datum id = "cafe_latte" description = "A nice, strong and tasty beverage while you are reading." reagent_state = LIQUID + nutriment_factor = 1 * REAGENTS_METABOLISM color = "#664300" // rgb: 102, 67, 0 on_mob_life(var/mob/living/M as mob) - ..() M.dizziness = max(0,M.dizziness-5) M:drowsyness = max(0,M:drowsyness-3) M:sleeping = 0 @@ -3383,8 +3384,6 @@ datum M.bodytemperature = min(310, M.bodytemperature+5) M.make_jittery(5) if(M:getBruteLoss() && prob(20)) M:heal_organ_damage(1,0) - M:nutrition++ - ..() return hippies_delight diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 3e1ea272e47..aa829b0930e 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -3,10 +3,10 @@ ..() // While I'm doing a terriblly lazy way of initalizing things, why don't I make it so people's preferences tag along with them. This could be useful in fixing the fucking cloned-as-unknown thing, making me not have to dynamically load them during tensioner, and of course, storing metadata. - - if(!src.storedpreferences) - src.storedpreferences = new - storedpreferences.savefile_load(src, 0) +//Whoever wrote this should go suck a choad. This was causing runtimes, asshat. IN ADDITION, YOU PUT IT IN THE LIFE PROC YOU ASSHAT +// if(!src.storedpreferences) +// src.storedpreferences = new +// storedpreferences.savefile_load(src, 0) @@ -281,8 +281,8 @@ density = 1 else density = !lying - - +//Bullshit ERP horseshit causing runtimes. Eat a dick. +/* /mob/living/proc/Examine_OOC() set name = "Examine Meta-Info (OOC)" set category = "OOC" @@ -300,7 +300,7 @@ else usr << "OOC Metadata is not supported by this server!" - return + return*/ /mob/living/attack_animal(mob/M) attack_paw(M) // treat it like a normal non-human attack diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index 5b9eb748fd5..a5649e336ce 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -47,15 +47,16 @@ verbs += /mob/living/silicon/ai/proc/show_laws_verb - if (istype(loc, /turf)) + if (istype(loc, /turf)) //If you add a verb here, make sure to add it to transform_procs.dm too. verbs += /mob/living/silicon/ai/proc/ai_call_shuttle + verbs += /mob/living/silicon/ai/proc/show_laws_verb verbs += /mob/living/silicon/ai/proc/ai_camera_track + verbs += /mob/living/silicon/ai/proc/ai_alerts verbs += /mob/living/silicon/ai/proc/ai_camera_list - //Added ai_network_change by Mord_Sith verbs += /mob/living/silicon/ai/proc/ai_network_change verbs += /mob/living/silicon/ai/proc/ai_statuschange - //Hologram verb./N verbs += /mob/living/silicon/ai/proc/ai_hologram_change + verbs += /mob/living/silicon/ai/proc/ai_roster if(!safety)//Only used by AIize() to successfully spawn an AI. if (!B)//If there is no player/brain inside. diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 9fa2598508c..114c569fdca 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -415,7 +415,7 @@ if ((stat != 2 || !( ticker ))) usr << "\blue You must be dead to use this!" return - if (ticker.mode.name == ("meteor" || "epidemic")) + if (ticker.mode.name == "meteor" || ticker.mode.name == "epidemic") usr << "\blue Respawn is disabled." return else diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index a7d4ec9ac9c..f23dc12c89b 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -285,13 +285,9 @@ the mob is also allowed to move without any sort of restriction. For instance, i var/digitalcamo = 0 // Can they be tracked by the AI? var/list/organs = list( ) //List of organs. - var/list/organs2 = list() +// var/list/organs2 = list() //Singularity wants you! var/grav_delay = 0 var/being_strangled = 0 - var/datum/preferences/storedpreferences = null - -// var/geaslist = list() - diff --git a/code/modules/mob/new_player/preferences.dm b/code/modules/mob/new_player/preferences.dm index 0c649035342..610e8851b8e 100644 --- a/code/modules/mob/new_player/preferences.dm +++ b/code/modules/mob/new_player/preferences.dm @@ -97,7 +97,7 @@ datum/preferences b_eyes = 0 //UI style - UI = UI_OLD + UI = UI_NEW //Mob preview icon/preview_icon = null diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm index fdaa37fb570..af4fccbc306 100644 --- a/code/modules/mob/transform_procs.dm +++ b/code/modules/mob/transform_procs.dm @@ -398,13 +398,15 @@ O << "4.) Your laws are not in preference, laws do not take preference over one another unless specifically stated in the law." O << "
    We want everyone to have a good time, so we, the admins, will try to correct you if you stray from these rules. Just try to keep it sensible." - +//If you add a verb here, make sure to add it to silicon\ai\ai.dm too. O.verbs += /mob/living/silicon/ai/proc/ai_call_shuttle O.verbs += /mob/living/silicon/ai/proc/show_laws_verb O.verbs += /mob/living/silicon/ai/proc/ai_camera_track O.verbs += /mob/living/silicon/ai/proc/ai_alerts O.verbs += /mob/living/silicon/ai/proc/ai_camera_list + O.verbs += /mob/living/silicon/ai/proc/ai_network_change O.verbs += /mob/living/silicon/ai/proc/ai_statuschange + O.verbs += /mob/living/silicon/ai/proc/ai_hologram_change O.verbs += /mob/living/silicon/ai/proc/ai_roster // O.verbs += /mob/living/silicon/ai/proc/ai_cancel_call diff --git a/code/setup.dm b/code/setup.dm index 05e8e837728..bd8d8940a97 100644 --- a/code/setup.dm +++ b/code/setup.dm @@ -32,7 +32,7 @@ #define DOOR_CRUSH_DAMAGE 10 // Factor of how fast mob nutrition decreases -#define HUNGER_FACTOR 0.1 +#define HUNGER_FACTOR 0.05 #define REAGENTS_METABOLISM 0.05 #define REAGENTS_OVERDOSE 30 diff --git a/html/changelog.html b/html/changelog.html index 914de4de9ac..b395bda5b81 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -47,10 +47,25 @@ 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. --> +
    +

    17 May 2012

    +

    Abi79 updated:

    + + +

    SkyMarshal updated:

    + +
    +

    16 May 2012

    Erthilo updated:

    diff --git a/icons/mob/mask.dmi b/icons/mob/mask.dmi index 6a9363737df..7c834f10c98 100644 Binary files a/icons/mob/mask.dmi and b/icons/mob/mask.dmi differ diff --git a/icons/obj/assemblies.dmi b/icons/obj/assemblies.dmi index e08ad8249cf..4fc3aab8721 100644 Binary files a/icons/obj/assemblies.dmi and b/icons/obj/assemblies.dmi differ diff --git a/maps/tgstation.2.0.8.dmm b/maps/tgstation.2.0.8.dmm index d8841f2034b..9e0abd9c8aa 100755 --- a/maps/tgstation.2.0.8.dmm +++ b/maps/tgstation.2.0.8.dmm @@ -667,8 +667,8 @@ "amQ" = (/obj/structure/stool/bed,/turf/simulated/floor{icon_state = "floorgrime"},/area/prison) "amR" = (/obj/structure/stool/bed,/obj/item/toy/snappop,/obj/item/weapon/bedsheet/orange,/turf/simulated/floor,/area/prison) "amS" = (/turf/simulated/floor{icon_state = "red"; dir = 4},/area/prison) -"amT" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Prison Gate"; name = "Prison Blast Door"; opacity = 0},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass/glass_security{id_tag = "permbrig2"; name = "Prison Wing Interior"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/prison) -"amU" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass/glass_security{id_tag = "permbrig"; name = "Prison Wing Exterior"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/prison) +"amT" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Prison Gate"; name = "Prison Blast Door"; opacity = 0},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass/glass_security{id_tag = "permbrig2"; name = "Prison Wing Interior"; req_access_txt = "1"},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/prison) +"amU" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Prison Gate"; name = "Prison Blast Door"; opacity = 0},/obj/machinery/door/airlock/glass/glass_security{id_tag = "permbrig"; name = "Prison Wing Exterior"; req_access_txt = "1"},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/prison) "amV" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor,/area/prison) "amW" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/prison) "amX" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/prison) @@ -728,7 +728,7 @@ "anZ" = (/obj/machinery/vending/cola,/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/prison) "aoa" = (/obj/machinery/flasher{dir = 4; id = "permflash"; pixel_x = -24; pixel_y = 0},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/prison) "aob" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/prison) -"aoc" = (/obj/machinery/door_control{desc = "A remote control-switch for the exterior doors."; id = "permbrig"; name = "Prison Exterior Airlock Control"; normaldoorcontrol = 1; pixel_x = -24; pixel_y = 6},/obj/machinery/door_control{desc = "A remote control-switch for the interior doors."; id = "permbrig2"; name = "Prison Interior Airlock Control"; normaldoorcontrol = 1; pixel_x = -24; pixel_y = -6},/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/prison) +"aoc" = (/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/prison) "aod" = (/obj/structure/closet/extinguisher{pixel_x = 27; pixel_y = 0},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/prison) "aoe" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/security/brig) "aof" = (/obj/machinery/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/turf/simulated/floor{icon_state = "white"},/area/security/brig) @@ -3953,7 +3953,7 @@ "bya" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = "90Curve"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = "90Curve"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/apmaint) "byb" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = "Streight"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/apmaint) "byc" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = "Streight"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/apmaint) -"byd" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = "Streight"},/obj/machinery/door/airlock/maintenance{name = "QM Office Maintenance"; req_combined_access_txt = "12;41"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/quartermaster/qm) +"byd" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = "Streight"},/obj/machinery/door/airlock/maintenance{name = "QM Office Maintenance"; req_access_txt = "41"; req_combined_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/quartermaster/qm) "bye" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = "Streight"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/quartermaster/qm) "byf" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = "90Curve"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/quartermaster/qm) "byg" = (/obj/structure/disposalpipe/sortjunction{dir = 8; icon_state = "pipe-j1s"; sortType = list("QM Office")},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/quartermaster/qm)