diff --git a/code/FEA/FEA_turf_tile.dm b/code/FEA/FEA_turf_tile.dm index eca82110869..f42b0719915 100644 --- a/code/FEA/FEA_turf_tile.dm +++ b/code/FEA/FEA_turf_tile.dm @@ -12,20 +12,10 @@ atom/movable/proc/experience_pressure_difference(pressure_difference, direction) turf assume_air(datum/gas_mixture/giver) //use this for machines to adjust air - //First, ensure there is no movable shuttle or what not on tile that is taking over -// var/obj/movable/floor/movable_on_me = locate(/obj/movable/floor) in src -// if(istype(movable_on_me)) -// return movable_on_me.assume_air(giver) - del(giver) return 0 return_air() - //First, ensure there is no movable shuttle or what not on tile that is taking over -// var/obj/movable/floor/movable_on_me = locate(/obj/movable/floor) in src -// if(istype(movable_on_me)) -// return movable_on_me.return_air() - //Create gas mixture to hold data for passing var/datum/gas_mixture/GM = new @@ -39,11 +29,6 @@ turf return GM remove_air(amount as num) - //First, ensure there is no movable shuttle or what not on tile that is taking over -// var/obj/movable/floor/movable_on_me = locate(/obj/movable/floor) in src -// if(istype(movable_on_me)) -// return movable_on_me.remove_air(amount) - var/datum/gas_mixture/GM = new var/sum = oxygen + carbon_dioxide + nitrogen + toxins diff --git a/code/defines/atom.dm b/code/defines/atom.dm index 6555dcca59a..7f1ae68a40c 100644 --- a/code/defines/atom.dm +++ b/code/defines/atom.dm @@ -25,7 +25,11 @@ return null proc/return_air() - return null + if(loc) + return loc.return_air() + else + return null + // Convenience proc to see if a container is open for chemistry handling diff --git a/code/defines/obj.dm b/code/defines/obj.dm index 0c122622acb..1a713a92706 100644 --- a/code/defines/obj.dm +++ b/code/defines/obj.dm @@ -10,7 +10,7 @@ var/datum/marked_datum animate_movement = 2 var/throwforce = 1 - var/infreezer = 0 + proc/handle_internal_lifeform(mob/lifeform_inside_me, breath_request) //Return: (NONSTANDARD) // null if object handles breathing logic for lifeform diff --git a/code/defines/obj/closet.dm b/code/defines/obj/closet.dm index 6692e6bd7c3..2c1aad26b48 100644 --- a/code/defines/obj/closet.dm +++ b/code/defines/obj/closet.dm @@ -10,9 +10,8 @@ var/welded = 0 var/wall_mounted = 0 //never solid (You can always pass over it) flags = FPRINT - var/health = 100 //Might be a bit much, dono can always change later //Nerfed -Pete - var/lastbang // - var/isfreezer = 0 + var/health = 100 + var/lastbang /obj/structure/closet/acloset name = "Strange closet" @@ -74,199 +73,6 @@ density = 0 wall_mounted = 1 -/obj/structure/closet/fireaxecabinet - name = "Fire Axe Cabinet" - desc = "There is small label that reads \"For Emergency use only\" along with details for safe use of the axe. As if." - var/obj/item/weapon/fireaxe/fireaxe = new/obj/item/weapon/fireaxe - icon_state = "fireaxe1000" - icon_closed = "fireaxe1000" - icon_opened = "fireaxe1100" - anchored = 1 - density = 0 - var/localopened = 0 //Setting this to keep it from behaviouring like a normal closet and obstructing movement in the map. -Agouri - opened = 1 - var/hitstaken = 0 - var/locked = 1 - var/smashed = 0 - - attackby(var/obj/item/O as obj, var/mob/user as mob) //Marker -Agouri - //..() //That's very useful, Erro - - var/hasaxe = 0 //gonna come in handy later~ - if(fireaxe) - hasaxe = 1 - - if (isrobot(usr) || src.locked) - if(istype(O, /obj/item/device/multitool)) - user << "\red Resetting circuitry..." - playsound(user, 'lockreset.ogg', 50, 1) - sleep(50) // Sleeping time~ - src.locked = 0 - user << "\blue You disable the locking modules." - update_icon() - return - if(istype(O, /obj/item/weapon)) - var/obj/item/weapon/W = O - if(src.smashed) - return - else - playsound(user, 'Glasshit.ogg', 100, 1) //We don't want this playing every time - if(W.force < 15) - user << "\blue The cabinet's protective glass glances off the hit." - else - src.hitstaken++ - if(src.hitstaken == 4) - playsound(user, 'Glassbr3.ogg', 100, 1) //Break cabinet, receive goodies. Cabinet's fucked for life after that. - src.smashed = 1 - src.locked = 0 - src.localopened = 1 - update_icon() - return - if (istype(O, /obj/item/weapon/fireaxe) && src.localopened) - if(!fireaxe) - if(O.wielded) - user << "\red Unwield the axe first." - return - fireaxe = O - user.drop_item(O) - src.contents += O - user << "\blue You place the fire axe back in the [src.name]." - update_icon() - else - if(src.smashed) - return - else - localopened = !localopened - if(localopened) - icon_state = text("fireaxe[][][][]opening",hasaxe,src.localopened,src.hitstaken,src.smashed) - spawn(10) update_icon() - else - icon_state = text("fireaxe[][][][]closing",hasaxe,src.localopened,src.hitstaken,src.smashed) - spawn(10) update_icon() - else - if(src.smashed) - return - if(istype(O, /obj/item/device/multitool)) - if(localopened) - localopened = 0 - icon_state = text("fireaxe[][][][]closing",hasaxe,src.localopened,src.hitstaken,src.smashed) - spawn(10) update_icon() - return - else - user << "\red Resetting circuitry..." - sleep(50) - src.locked = 1 - user << "\blue You re-enable the locking modules." - playsound(user, 'lockenable.ogg', 50, 1) - return - else - localopened = !localopened - if(localopened) - icon_state = text("fireaxe[][][][]opening",hasaxe,src.localopened,src.hitstaken,src.smashed) - spawn(10) update_icon() - else - icon_state = text("fireaxe[][][][]closing",hasaxe,src.localopened,src.hitstaken,src.smashed) - spawn(10) update_icon() - - - - - attack_hand(mob/user as mob) - - var/hasaxe = 0 - if(fireaxe) - hasaxe = 1 - - if(src.locked) - user <<"\red The cabinet won't budge!" - return - if(localopened) - if(fireaxe) - user.put_in_hand(fireaxe) - fireaxe = null - user << "\blue You take the fire axe from the [name]." - src.add_fingerprint(user) - update_icon() - else - if(src.smashed) - return - else - localopened = !localopened - if(localopened) - src.icon_state = text("fireaxe[][][][]opening",hasaxe,src.localopened,src.hitstaken,src.smashed) - spawn(10) update_icon() - else - src.icon_state = text("fireaxe[][][][]closing",hasaxe,src.localopened,src.hitstaken,src.smashed) - spawn(10) update_icon() - - else - localopened = !localopened //I'm pretty sure we don't need an if(src.smashed) in here. In case I'm wrong and it fucks up teh cabinet, **MARKER**. -Agouri - if(localopened) - src.icon_state = text("fireaxe[][][][]opening",hasaxe,src.localopened,src.hitstaken,src.smashed) - spawn(10) update_icon() - else - src.icon_state = text("fireaxe[][][][]closing",hasaxe,src.localopened,src.hitstaken,src.smashed) - spawn(10) update_icon() - - verb/toggle_openness() //nice name, huh? HUH?! -Erro //YEAH -Agouri - set name = "Open/Close" - set category = "Object" - - if (isrobot(usr) || src.locked || src.smashed) - if(src.locked) - usr << "\red The cabinet won't budge!" - else if(src.smashed) - usr << "\blue The protective glass is broken!" - return - - localopened = !localopened - update_icon() - - verb/remove_fire_axe() - set name = "Remove Fire Axe" - set category = "Object" - - if (isrobot(usr)) - return - - if (localopened) - if(fireaxe) - usr.put_in_hand(fireaxe) - fireaxe = null - usr << "\blue You take the Fire axe from the [name]." - else - usr << "\blue The [src.name] is empty." - else - usr << "\blue The [src.name] is closed." - update_icon() - - attack_paw(mob/user as mob) - attack_hand(user) - return - - attack_ai(mob/user as mob) - if(src.smashed) - user << "\red The security of the cabinet is compromised." - return - else - locked = !locked - if(locked) - user << "\red Cabinet locked." - else - user << "\blue Cabinet unlocked." - return - - update_icon() //Template: fireaxe[has fireaxe][is opened][hits taken][is smashed]. If you want the opening or closing animations, add "opening" or "closing" right after the numbers - var/hasaxe = 0 - if(fireaxe) - hasaxe = 1 - icon_state = text("fireaxe[][][][]",hasaxe,src.localopened,src.hitstaken,src.smashed) - - open() - return - - close() - return @@ -353,93 +159,6 @@ // Inserting the gimmick clothing stuff here for generic items, IE Tacticool stuff -/obj/structure/closet/extinguisher - name = "Extinguisher closet" - desc = "A small wall mounted cabinet designed to hold a fire extinguisher." - icon_state = "extinguisher10" - icon_opened = "extinguisher11" - icon_closed = "extinguisher10" - opened = 1 - anchored = 1 - density = 0 - var/obj/item/weapon/extinguisher/EXTINGUISHER = new/obj/item/weapon/extinguisher - var/localopened = 1 - - open() - return - - close() - return - - attackby(var/obj/item/O as obj, var/mob/user as mob) - if (isrobot(usr)) - return - if (istype(O, /obj/item/weapon/extinguisher)) - if(!EXTINGUISHER) - user.drop_item(O) - src.contents += O - EXTINGUISHER = O - user << "\blue You place the extinguisher in the [src.name]." - else - localopened = !localopened - else - localopened = !localopened - update_icon() - - attack_hand(mob/user as mob) - if(localopened) - if(EXTINGUISHER) - user.put_in_hand(EXTINGUISHER) - EXTINGUISHER = null - user << "\blue You take the extinguisher from the [name]." - else - localopened = !localopened - - else - localopened = !localopened - update_icon() - - verb/toggle_openness() //nice name, huh? HUH?! - set name = "Open/Close" - set category = "Object" - - if (isrobot(usr)) - return - - localopened = !localopened - update_icon() - - verb/remove_extinguisher() - set name = "Remove Extinguisher" - set category = "Object" - - if (isrobot(usr)) - return - - if (localopened) - if(EXTINGUISHER) - usr.put_in_hand(EXTINGUISHER) - EXTINGUISHER = null - usr << "\blue You take the extinguisher from the [name]." - else - usr << "\blue The [name] is empty." - else - usr << "\blue The [name] is closed." - update_icon() - - attack_paw(mob/user as mob) - attack_hand(user) - return - - attack_ai(mob/user as mob) - return - - update_icon() - var/hasextinguisher = 0 - if(EXTINGUISHER) - hasextinguisher = 1 - icon_state = text("extinguisher[][]",hasextinguisher,src.localopened) - /obj/structure/closet/gimmick name = "Administrative Supply Closet" @@ -581,8 +300,6 @@ icon_state = "grey" icon_closed = "grey" - - /obj/structure/closet/secure_closet desc = "An immobile card-locked storage closet." name = "Security Locker" @@ -622,44 +339,6 @@ /obj/structure/closet/secure_closet/personal/patient name = "Patient's closet" -/obj/structure/closet/secure_closet/kitchen - name = "Kitchen Cabinet" - req_access = list(access_kitchen) - -/obj/structure/closet/secure_closet/kitchen/mining - req_access = list() - -/obj/structure/closet/secure_closet/meat - name = "Meat Fridge" - icon_state = "fridge1" - icon_closed = "fridge" - icon_locked = "fridge1" - icon_opened = "fridgeopen" - icon_broken = "fridgebroken" - icon_off = "fridge1" - isfreezer = 1 - -/obj/structure/closet/secure_closet/fridge - name = "Refrigerator" - icon_state = "fridge1" - icon_closed = "fridge" - icon_locked = "fridge1" - icon_opened = "fridgeopen" - icon_broken = "fridgebroken" - icon_off = "fridge1" - isfreezer = 1 - -/obj/structure/closet/secure_closet/money_freezer - name = "Freezer" - icon_state = "fridge1" - icon_closed = "fridge" - icon_locked = "fridge1" - icon_opened = "fridgeopen" - icon_broken = "fridgebroken" - icon_off = "fridge1" - isfreezer = 1 - req_access = list(access_heads_vault) - /obj/structure/closet/secure_closet/wall name = "wall locker" req_access = list(access_security) diff --git a/code/defines/obj/machinery.dm b/code/defines/obj/machinery.dm index 049c0dc3170..f4162aaae89 100644 --- a/code/defines/obj/machinery.dm +++ b/code/defines/obj/machinery.dm @@ -27,7 +27,6 @@ var/g_amount = 0.0 var/operating = 0.0 var/opened = 0.0 - //var/temp = null anchored = 1.0 var/list/L = list() var/list/LL = list() diff --git a/code/game/objects/closets.dm b/code/game/objects/closets.dm index 50668bfc5f5..e1fd7c33405 100644 --- a/code/game/objects/closets.dm +++ b/code/game/objects/closets.dm @@ -17,13 +17,8 @@ return 1 /obj/structure/closet/proc/dump_contents() - if(src.isfreezer) - for(var/obj/item/I in src) - I.loc = src.loc - I.infreezer = 0 - else - for(var/obj/item/I in src) - I.loc = src.loc + for(var/obj/item/I in src) + I.loc = src.loc for(var/mob/M in src) M.loc = src.loc @@ -52,15 +47,9 @@ if(!src.can_close()) return 0 - if(src.isfreezer) - for(var/obj/item/I in src.loc) - if(!I.anchored) - I.loc = src - I.infreezer = 1 - else - for(var/obj/item/I in src.loc) - if(!I.anchored) - I.loc = src + for(var/obj/item/I in src.loc) + if(!I.anchored) + I.loc = src for(var/mob/M in src.loc) if(istype (M, /mob/dead/observer)) diff --git a/code/game/objects/closets/extinguisher.dm b/code/game/objects/closets/extinguisher.dm new file mode 100644 index 00000000000..dd54bc41157 --- /dev/null +++ b/code/game/objects/closets/extinguisher.dm @@ -0,0 +1,87 @@ + +/obj/structure/closet/extinguisher + name = "Extinguisher closet" + desc = "A small wall mounted cabinet designed to hold a fire extinguisher." + icon_state = "extinguisher10" + icon_opened = "extinguisher11" + icon_closed = "extinguisher10" + opened = 1 + anchored = 1 + density = 0 + var/obj/item/weapon/extinguisher/EXTINGUISHER = new/obj/item/weapon/extinguisher + var/localopened = 1 + + open() + return + + close() + return + + attackby(var/obj/item/O as obj, var/mob/user as mob) + if (isrobot(usr)) + return + if (istype(O, /obj/item/weapon/extinguisher)) + if(!EXTINGUISHER) + user.drop_item(O) + src.contents += O + EXTINGUISHER = O + user << "\blue You place the extinguisher in the [src.name]." + else + localopened = !localopened + else + localopened = !localopened + update_icon() + + attack_hand(mob/user as mob) + if(localopened) + if(EXTINGUISHER) + user.put_in_hand(EXTINGUISHER) + EXTINGUISHER = null + user << "\blue You take the extinguisher from the [name]." + else + localopened = !localopened + + else + localopened = !localopened + update_icon() + + verb/toggle_openness() //nice name, huh? HUH?! + set name = "Open/Close" + set category = "Object" + + if (isrobot(usr)) + return + + localopened = !localopened + update_icon() + + verb/remove_extinguisher() + set name = "Remove Extinguisher" + set category = "Object" + + if (isrobot(usr)) + return + + if (localopened) + if(EXTINGUISHER) + usr.put_in_hand(EXTINGUISHER) + EXTINGUISHER = null + usr << "\blue You take the extinguisher from the [name]." + else + usr << "\blue The [name] is empty." + else + usr << "\blue The [name] is closed." + update_icon() + + attack_paw(mob/user as mob) + attack_hand(user) + return + + attack_ai(mob/user as mob) + return + + update_icon() + var/hasextinguisher = 0 + if(EXTINGUISHER) + hasextinguisher = 1 + icon_state = text("extinguisher[][]",hasextinguisher,src.localopened) diff --git a/code/game/objects/closets/fireax.dm b/code/game/objects/closets/fireax.dm new file mode 100644 index 00000000000..b452eaf8e38 --- /dev/null +++ b/code/game/objects/closets/fireax.dm @@ -0,0 +1,194 @@ +//I still dont think this should be a closet but whatever +/obj/structure/closet/fireaxecabinet + name = "Fire Axe Cabinet" + desc = "There is small label that reads \"For Emergency use only\" along with details for safe use of the axe. As if." + var/obj/item/weapon/fireaxe/fireaxe = new/obj/item/weapon/fireaxe + icon_state = "fireaxe1000" + icon_closed = "fireaxe1000" + icon_opened = "fireaxe1100" + anchored = 1 + density = 0 + var/localopened = 0 //Setting this to keep it from behaviouring like a normal closet and obstructing movement in the map. -Agouri + opened = 1 + var/hitstaken = 0 + var/locked = 1 + var/smashed = 0 + + attackby(var/obj/item/O as obj, var/mob/user as mob) //Marker -Agouri + //..() //That's very useful, Erro + + var/hasaxe = 0 //gonna come in handy later~ + if(fireaxe) + hasaxe = 1 + + if (isrobot(usr) || src.locked) + if(istype(O, /obj/item/device/multitool)) + user << "\red Resetting circuitry..." + playsound(user, 'lockreset.ogg', 50, 1) + sleep(50) // Sleeping time~ + src.locked = 0 + user << "\blue You disable the locking modules." + update_icon() + return + if(istype(O, /obj/item/weapon)) + var/obj/item/weapon/W = O + if(src.smashed) + return + else + playsound(user, 'Glasshit.ogg', 100, 1) //We don't want this playing every time + if(W.force < 15) + user << "\blue The cabinet's protective glass glances off the hit." + else + src.hitstaken++ + if(src.hitstaken == 4) + playsound(user, 'Glassbr3.ogg', 100, 1) //Break cabinet, receive goodies. Cabinet's fucked for life after that. + src.smashed = 1 + src.locked = 0 + src.localopened = 1 + update_icon() + return + if (istype(O, /obj/item/weapon/fireaxe) && src.localopened) + if(!fireaxe) + if(O.wielded) + user << "\red Unwield the axe first." + return + fireaxe = O + user.drop_item(O) + src.contents += O + user << "\blue You place the fire axe back in the [src.name]." + update_icon() + else + if(src.smashed) + return + else + localopened = !localopened + if(localopened) + icon_state = text("fireaxe[][][][]opening",hasaxe,src.localopened,src.hitstaken,src.smashed) + spawn(10) update_icon() + else + icon_state = text("fireaxe[][][][]closing",hasaxe,src.localopened,src.hitstaken,src.smashed) + spawn(10) update_icon() + else + if(src.smashed) + return + if(istype(O, /obj/item/device/multitool)) + if(localopened) + localopened = 0 + icon_state = text("fireaxe[][][][]closing",hasaxe,src.localopened,src.hitstaken,src.smashed) + spawn(10) update_icon() + return + else + user << "\red Resetting circuitry..." + sleep(50) + src.locked = 1 + user << "\blue You re-enable the locking modules." + playsound(user, 'lockenable.ogg', 50, 1) + return + else + localopened = !localopened + if(localopened) + icon_state = text("fireaxe[][][][]opening",hasaxe,src.localopened,src.hitstaken,src.smashed) + spawn(10) update_icon() + else + icon_state = text("fireaxe[][][][]closing",hasaxe,src.localopened,src.hitstaken,src.smashed) + spawn(10) update_icon() + + + + + attack_hand(mob/user as mob) + + var/hasaxe = 0 + if(fireaxe) + hasaxe = 1 + + if(src.locked) + user <<"\red The cabinet won't budge!" + return + if(localopened) + if(fireaxe) + user.put_in_hand(fireaxe) + fireaxe = null + user << "\blue You take the fire axe from the [name]." + src.add_fingerprint(user) + update_icon() + else + if(src.smashed) + return + else + localopened = !localopened + if(localopened) + src.icon_state = text("fireaxe[][][][]opening",hasaxe,src.localopened,src.hitstaken,src.smashed) + spawn(10) update_icon() + else + src.icon_state = text("fireaxe[][][][]closing",hasaxe,src.localopened,src.hitstaken,src.smashed) + spawn(10) update_icon() + + else + localopened = !localopened //I'm pretty sure we don't need an if(src.smashed) in here. In case I'm wrong and it fucks up teh cabinet, **MARKER**. -Agouri + if(localopened) + src.icon_state = text("fireaxe[][][][]opening",hasaxe,src.localopened,src.hitstaken,src.smashed) + spawn(10) update_icon() + else + src.icon_state = text("fireaxe[][][][]closing",hasaxe,src.localopened,src.hitstaken,src.smashed) + spawn(10) update_icon() + + verb/toggle_openness() //nice name, huh? HUH?! -Erro //YEAH -Agouri + set name = "Open/Close" + set category = "Object" + + if (isrobot(usr) || src.locked || src.smashed) + if(src.locked) + usr << "\red The cabinet won't budge!" + else if(src.smashed) + usr << "\blue The protective glass is broken!" + return + + localopened = !localopened + update_icon() + + verb/remove_fire_axe() + set name = "Remove Fire Axe" + set category = "Object" + + if (isrobot(usr)) + return + + if (localopened) + if(fireaxe) + usr.put_in_hand(fireaxe) + fireaxe = null + usr << "\blue You take the Fire axe from the [name]." + else + usr << "\blue The [src.name] is empty." + else + usr << "\blue The [src.name] is closed." + update_icon() + + attack_paw(mob/user as mob) + attack_hand(user) + return + + attack_ai(mob/user as mob) + if(src.smashed) + user << "\red The security of the cabinet is compromised." + return + else + locked = !locked + if(locked) + user << "\red Cabinet locked." + else + user << "\blue Cabinet unlocked." + return + + update_icon() //Template: fireaxe[has fireaxe][is opened][hits taken][is smashed]. If you want the opening or closing animations, add "opening" or "closing" right after the numbers + var/hasaxe = 0 + if(fireaxe) + hasaxe = 1 + icon_state = text("fireaxe[][][][]",hasaxe,src.localopened,src.hitstaken,src.smashed) + + open() + return + + close() + return \ No newline at end of file diff --git a/code/game/objects/closets/kitchen.dm b/code/game/objects/closets/kitchen.dm index 7807495b019..882314f578b 100644 --- a/code/game/objects/closets/kitchen.dm +++ b/code/game/objects/closets/kitchen.dm @@ -1,85 +1,114 @@ -/obj/structure/closet/secure_closet/kitchen/New() - ..() - sleep(2) - /*new /obj/item/clothing/head/chefhat(src) - new /obj/item/clothing/head/chefhat(src) - new /obj/item/clothing/under/rank/chef(src) - new /obj/item/clothing/under/rank/chef(src)*/ - new /obj/item/weapon/reagent_containers/food/snacks/flour(src) - new /obj/item/weapon/reagent_containers/food/snacks/flour(src) - new /obj/item/weapon/reagent_containers/food/snacks/flour(src) - new /obj/item/weapon/reagent_containers/food/snacks/flour(src) - new /obj/item/weapon/reagent_containers/food/snacks/flour(src) - new /obj/item/weapon/reagent_containers/food/snacks/flour(src) - new /obj/item/weapon/reagent_containers/food/snacks/flour(src) - new /obj/item/weapon/reagent_containers/food/snacks/flour(src) - new /obj/item/weapon/reagent_containers/food/snacks/flour(src) - new /obj/item/weapon/reagent_containers/food/snacks/flour(src) - new /obj/item/weapon/reagent_containers/food/snacks/flour(src) - new /obj/item/weapon/reagent_containers/food/snacks/flour(src) - new /obj/item/weapon/reagent_containers/food/snacks/flour(src) - new /obj/item/weapon/reagent_containers/food/snacks/flour(src) - new /obj/item/weapon/reagent_containers/food/snacks/flour(src) - new /obj/item/weapon/reagent_containers/food/snacks/flour(src) - new /obj/item/weapon/reagent_containers/food/condiment/sugar(src) - /*new /obj/item/weapon/tray(src) - new /obj/item/weapon/tray(src) - new /obj/item/weapon/tray(src) - new /obj/item/weapon/tray(src) - new /obj/item/weapon/tray(src) - new /obj/item/weapon/tray(src) - new /obj/item/weapon/kitchenknife(src)*/ - /*new /obj/item/clothing/head/chefhat(src) - new /obj/item/clothing/head/chefhat(src) - new /obj/item/clothing/under/rank/chef(src) - new /obj/item/clothing/under/rank/chef(src) - new /obj/item/weapon/kitchen/utensil/fork(src) - new /obj/item/weapon/kitchen/utensil/knife(src) - new /obj/item/weapon/kitchen/utensil/spoon(src) - new /obj/item/weapon/kitchen/rollingpin(src)*/ +/obj/structure/closet/secure_closet/freezer + var + target_temp = T0C - 40 + cooling_power = 40 + + return_air() + var/datum/gas_mixture/gas = (..()) + if(!gas) return null + var/datum/gas_mixture/newgas = new/datum/gas_mixture() + newgas.oxygen = gas.oxygen + newgas.carbon_dioxide = gas.carbon_dioxide + newgas.nitrogen = gas.nitrogen + newgas.toxins = gas.toxins + newgas.volume = gas.volume + newgas.temperature = gas.temperature + if(newgas.temperature <= target_temp) return + + if((newgas.temperature - cooling_power) > target_temp) + newgas.temperature -= cooling_power + else + newgas.temperature = target_temp + return newgas + + + +/obj/structure/closet/secure_closet/freezer/kitchen + name = "Kitchen Cabinet" + req_access = list(access_kitchen) + + New() + ..() + sleep(2) + for(var/i = 0, i < 16, i++) + new /obj/item/weapon/reagent_containers/food/snacks/flour(src) + new /obj/item/weapon/reagent_containers/food/condiment/sugar(src) + return + + +/obj/structure/closet/secure_closet/freezer/kitchen/mining + req_access = list() + + + +/obj/structure/closet/secure_closet/freezer/meat + name = "Meat Fridge" + icon_state = "fridge1" + icon_closed = "fridge" + icon_locked = "fridge1" + icon_opened = "fridgeopen" + icon_broken = "fridgebroken" + icon_off = "fridge1" + + + New() + ..() + sleep(2) + for(var/i = 0, i < 4, i++) + new /obj/item/weapon/reagent_containers/food/snacks/meat/monkey(src) + return + + + +/obj/structure/closet/secure_closet/freezer/fridge + name = "Refrigerator" + icon_state = "fridge1" + icon_closed = "fridge" + icon_locked = "fridge1" + icon_opened = "fridgeopen" + icon_broken = "fridgebroken" + icon_off = "fridge1" + + + New() + ..() + sleep(2) + for(var/i = 0, i < 5, i++) + new /obj/item/weapon/reagent_containers/food/drinks/milk(src) + for(var/i = 0, i < 5, i++) + new /obj/item/weapon/reagent_containers/food/drinks/soymilk(src) + for(var/i = 0, i < 2, i++) + new /obj/item/kitchen/egg_box(src) + return + + + +/obj/structure/closet/secure_closet/freezer/money + name = "Freezer" + icon_state = "fridge1" + icon_closed = "fridge" + icon_locked = "fridge1" + icon_opened = "fridgeopen" + icon_broken = "fridgebroken" + icon_off = "fridge1" + req_access = list(access_heads_vault) + + + New() + ..() + sleep(2) + for(var/i = 0, i < 3, i++) + new /obj/item/weapon/spacecash/c1000(src) + for(var/i = 0, i < 5, i++) + new /obj/item/weapon/spacecash/c500(src) + for(var/i = 0, i < 6, i++) + new /obj/item/weapon/spacecash/c200(src) + return + + + + + -/obj/structure/closet/secure_closet/meat/New() - ..() - sleep(2) - var/obj/f = new /obj/item/weapon/reagent_containers/food/snacks/meat/monkey(src) - f.infreezer = 1 - f = new /obj/item/weapon/reagent_containers/food/snacks/meat/monkey(src) - f.infreezer = 1 - f = new /obj/item/weapon/reagent_containers/food/snacks/meat/monkey(src) - f.infreezer = 1 - f = new /obj/item/weapon/reagent_containers/food/snacks/meat/monkey(src) - f.infreezer = 1 -/obj/structure/closet/secure_closet/fridge/New() - ..() - sleep(2) - new /obj/item/weapon/reagent_containers/food/drinks/milk(src) - new /obj/item/weapon/reagent_containers/food/drinks/milk(src) - new /obj/item/weapon/reagent_containers/food/drinks/milk(src) - new /obj/item/weapon/reagent_containers/food/drinks/milk(src) - new /obj/item/weapon/reagent_containers/food/drinks/milk(src) - new /obj/item/weapon/reagent_containers/food/drinks/soymilk(src) - new /obj/item/weapon/reagent_containers/food/drinks/soymilk(src) - new /obj/item/weapon/reagent_containers/food/drinks/soymilk(src) - new /obj/item/weapon/reagent_containers/food/drinks/soymilk(src) - new /obj/item/weapon/reagent_containers/food/drinks/soymilk(src) - new /obj/item/kitchen/egg_box(src) - new /obj/item/kitchen/egg_box(src) -/obj/structure/closet/secure_closet/money_freezer/New() - ..() - sleep(2) - new /obj/item/weapon/spacecash/c1000(src) - new /obj/item/weapon/spacecash/c1000(src) - new /obj/item/weapon/spacecash/c1000(src) - new /obj/item/weapon/spacecash/c500(src) - new /obj/item/weapon/spacecash/c500(src) - new /obj/item/weapon/spacecash/c500(src) - new /obj/item/weapon/spacecash/c500(src) - new /obj/item/weapon/spacecash/c500(src) - new /obj/item/weapon/spacecash/c200(src) - new /obj/item/weapon/spacecash/c200(src) - new /obj/item/weapon/spacecash/c200(src) - new /obj/item/weapon/spacecash/c200(src) - new /obj/item/weapon/spacecash/c200(src) - new /obj/item/weapon/spacecash/c200(src) \ No newline at end of file diff --git a/code/game/objects/storage/crates.dm b/code/game/objects/crates.dm similarity index 90% rename from code/game/objects/storage/crates.dm rename to code/game/objects/crates.dm index 0242c78cb2a..f7a29ed57c5 100644 --- a/code/game/objects/storage/crates.dm +++ b/code/game/objects/crates.dm @@ -64,30 +64,28 @@ density = 1 icon_opened = "freezeropen" icon_closed = "freezer" + var + target_temp = T0C - 40 + cooling_power = 40 -/obj/structure/closet/crate/freezer/open() - playsound(src.loc, 'click.ogg', 15, 1, -3) + return_air() + var/datum/gas_mixture/gas = (..()) + if(!gas) return null + var/datum/gas_mixture/newgas = new/datum/gas_mixture() + newgas.oxygen = gas.oxygen + newgas.carbon_dioxide = gas.carbon_dioxide + newgas.nitrogen = gas.nitrogen + newgas.toxins = gas.toxins + newgas.volume = gas.volume + newgas.temperature = gas.temperature + if(newgas.temperature <= target_temp) return - for(var/obj/item/I in src) - I.loc = get_turf(src) - I.infreezer = 0 + if((newgas.temperature - cooling_power) > target_temp) + newgas.temperature -= cooling_power + else + newgas.temperature = target_temp + return newgas - for(var/mob/M in src) - M.loc = get_turf(src) - - icon_state = icon_opened - src.opened = 1 - -/obj/structure/closet/crate/freezer/close() - playsound(src.loc, 'click.ogg', 15, 1, -3) - - for(var/obj/item/I in get_turf(src)) - if(I.density || I.anchored || I == src) continue - I.loc = src - I.infreezer = 1 - - icon_state = icon_closed - src.opened = 0 /obj/structure/closet/crate/bin desc = "A large bin." diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index 536c01542a8..cf2a65e82ad 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -863,7 +863,7 @@ return var/mob/M = locate(href_list["traitor"]) if (!istype(M)) - player() + player_panel_new() return if(isalien(M)) alert("Is an [M.mind ? M.mind.special_role : "Alien"]!", "[M.key]") @@ -1823,328 +1823,6 @@ dat += text("[foo]") usr << browse(dat, "window=adminplayeropts;size=480x150") -/obj/admins/proc/player() - if (!usr.client.holder) - return - var/dat = "Player Panel" - - //javascript, the part that does most of the work~ - dat += {" - - - - - - - "} - - //body tag start + onload and onkeypress (onkeyup) javascript event calls - dat += "" - - //title + search bar - dat += {" - - - - - - - - -
- Player panel
- Hover over a line to see more information -

-

- Search: -
- - "} - - //player table header - dat += {" - - "} - - var/list/mobs = sortmobs() - var/i = 1 - var/show_karma = 0 - var/DBConnection/dbcon - if(config.sql_enabled) // SQL is enabled in config.txt - dbcon = new() // Setting up connection - dbcon.Connect("dbi:mysql:[sqldb]:[sqladdress]:[sqlport]","[sqllogin]","[sqlpass]") - if(dbcon.IsConnected()) - show_karma = 1 - else - usr << "\red Unable to connect to karma database. This error can occur if your host has failed to set up an SQL database or improperly configured its login credentials.
" - - for(var/mob/M in mobs) - if(M.ckey) - - var/color = "#e6e6e6" - if(i%2 == 0) - color = "#f2f2f2" - var/is_antagonist = is_special_character(M) - - var/karma = "DC" - - if(show_karma) - var/DBQuery/query = dbcon.NewQuery("SELECT karma FROM karmatotals WHERE byondkey='[M.key]'") - query.Execute() - - while(query.NextRow()) - karma = query.item[1] - - var/M_job = "" - - if(istype(M,/mob/new_player)) - M_job = "New player" - if(isliving(M)) - M_job = "Living" - if(isobserver(M)) - M_job = "Ghost" - if(isalien(M)) - M_job = "Alien" - if(islarva(M)) - M_job = "Alien larva" - if(ishuman(M)) - M_job = M.job - if(ismetroid(M)) - M_job = "Metroid" - if(ismonkey(M)) - M_job = "Moneky" - if(isAI(M)) - M_job = "AI" - if(ispAI(M)) - M_job = "pAI" - if(isrobot(M)) - M_job = "Cyborg" - if(isanimal(M)) - M_job = "Animal" - if(iscorgi(M)) - M_job = "Corgi" - - M_job = dd_replacetext(M_job, "'", "") - M_job = dd_replacetext(M_job, "\"", "") - M_job = dd_replacetext(M_job, "\\", "") - - var/M_name = M.name - M_name = dd_replacetext(M_name, "'", "") - M_name = dd_replacetext(M_name, "\"", "") - M_name = dd_replacetext(M_name, "\\", "") - var/M_rname = M.real_name - M_rname = dd_replacetext(M_rname, "'", "") - M_rname = dd_replacetext(M_rname, "\"", "") - M_rname = dd_replacetext(M_rname, "\\", "") - - var/M_key = M.key - M_key = dd_replacetext(M_key, "'", "") - M_key = dd_replacetext(M_key, "\"", "") - M_key = dd_replacetext(M_key, "\\", "") - - //output for each mob - dat += {" - - - - - - "} - - i++ - - - //player table ending - dat += {" -
- - - [M_name] - [M_rname] - [M_key] ([M_job]) - -
-
-
- - - - "} - - usr << browse(dat, "window=players;size=600x480") /obj/admins/proc/Jobbans() diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index a07403c232e..5da2ffcbdc6 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -248,6 +248,7 @@ verbs += /client/proc/admin_observe verbs += /client/proc/game_panel verbs += /client/proc/player_panel + verbs += /client/proc/player_panel_new verbs += /client/proc/unban_panel verbs += /client/proc/jobbans verbs += /client/proc/unjobban_panel @@ -393,6 +394,7 @@ verbs -= /client/proc/toggle_hear_deadcast verbs -= /client/proc/toggle_hear_radio verbs -= /client/proc/tension_report + verbs -= /client/proc/player_panel_new return @@ -447,8 +449,15 @@ /client/proc/player_panel() set name = "Player Panel" set category = "Admin" - if (holder) - holder.player() + if(holder) + holder.player_panel_old() + return + +/client/proc/player_panel_new() + set name = "Player Panel-New" + set category = "Admin" + if(holder) + holder.player_panel_new() return /client/proc/jobbans() @@ -461,14 +470,14 @@ /client/proc/unban_panel() set name = "Unban Panel" set category = "Admin" - if (holder) + if(holder) holder.unbanpanel() return /client/proc/game_panel() set name = "Game Panel" set category = "Admin" - if (holder) + if(holder) holder.Game() return diff --git a/code/modules/admin/player_panel.dm b/code/modules/admin/player_panel.dm new file mode 100644 index 00000000000..98873bac5ee --- /dev/null +++ b/code/modules/admin/player_panel.dm @@ -0,0 +1,408 @@ +/obj/admins/proc/player_panel_new()//The new one + if (!usr.client.holder) + return + var/dat = "Player Panel" + + //javascript, the part that does most of the work~ + dat += {" + + + + + + + "} + + //body tag start + onload and onkeypress (onkeyup) javascript event calls + dat += "" + + //title + search bar + dat += {" + + + + + + + + +
+ Player panel
+ Hover over a line to see more information +

+

+ Search: +
+ + "} + + //player table header + dat += {" + + "} + + var/list/mobs = sortmobs() + var/i = 1 + var/show_karma = 0 + var/DBConnection/dbcon + if(config.sql_enabled) // SQL is enabled in config.txt + dbcon = new() // Setting up connection + dbcon.Connect("dbi:mysql:[sqldb]:[sqladdress]:[sqlport]","[sqllogin]","[sqlpass]") + if(dbcon.IsConnected()) + show_karma = 1 + else + usr << "\red Unable to connect to karma database. This error can occur if your host has failed to set up an SQL database or improperly configured its login credentials.
" + + for(var/mob/M in mobs) + if(M.ckey) + + var/color = "#e6e6e6" + if(i%2 == 0) + color = "#f2f2f2" + var/is_antagonist = is_special_character(M) + + var/karma = "DC" + + if(show_karma) + var/DBQuery/query = dbcon.NewQuery("SELECT karma FROM karmatotals WHERE byondkey='[M.key]'") + query.Execute() + + while(query.NextRow()) + karma = query.item[1] + + var/M_job = "" + + if(istype(M,/mob/new_player)) + M_job = "New player" + if(isliving(M)) + M_job = "Living" + if(isobserver(M)) + M_job = "Ghost" + if(isalien(M)) + M_job = "Alien" + if(islarva(M)) + M_job = "Alien larva" + if(ishuman(M)) + M_job = M.job + if(ismetroid(M)) + M_job = "Metroid" + if(ismonkey(M)) + M_job = "Moneky" + if(isAI(M)) + M_job = "AI" + if(ispAI(M)) + M_job = "pAI" + if(isrobot(M)) + M_job = "Cyborg" + if(isanimal(M)) + M_job = "Animal" + if(iscorgi(M)) + M_job = "Corgi" + + M_job = dd_replacetext(M_job, "'", "") + M_job = dd_replacetext(M_job, "\"", "") + M_job = dd_replacetext(M_job, "\\", "") + + var/M_name = M.name + M_name = dd_replacetext(M_name, "'", "") + M_name = dd_replacetext(M_name, "\"", "") + M_name = dd_replacetext(M_name, "\\", "") + var/M_rname = M.real_name + M_rname = dd_replacetext(M_rname, "'", "") + M_rname = dd_replacetext(M_rname, "\"", "") + M_rname = dd_replacetext(M_rname, "\\", "") + + var/M_key = M.key + M_key = dd_replacetext(M_key, "'", "") + M_key = dd_replacetext(M_key, "\"", "") + M_key = dd_replacetext(M_key, "\\", "") + + //output for each mob + dat += {" + + + + + + "} + + i++ + + + //player table ending + dat += {" +
+ + + [M_name] - [M_rname] - [M_key] ([M_job]) + +
+
+
+ + + + "} + + usr << browse(dat, "window=players;size=600x480") + +//The old one +/obj/admins/proc/player_panel_old() + if (!usr.client.holder) + return + var/dat = "Player Menu" + dat += "" + //add to this if wanting to add back in IP checking + //add if you want to know their ip to the lists below + var/list/mobs = sortmobs() + var/show_karma = 0 + var/DBConnection/dbcon + + if(config.sql_enabled) // SQL is enabled in config.txt + dbcon = new() // Setting up connection + dbcon.Connect("dbi:mysql:[sqldb]:[sqladdress]:[sqlport]","[sqllogin]","[sqlpass]") + if(dbcon.IsConnected()) + show_karma = 1 + else + usr << "\red Unable to connect to karma database. This error can occur if your host has failed to set up an SQL database or improperly configured its login credentials.
" + + for(var/mob/M in mobs) + if(!M.ckey) continue + + dat += "" + if(isAI(M)) + dat += "" + else if(isrobot(M)) + dat += "" + else if(ishuman(M)) + dat += "" + else if(istype(M, /mob/living/silicon/pai)) + dat += "" + else if(istype(M, /mob/new_player)) + dat += "" + else if(isobserver(M)) + dat += "" + else if(ismonkey(M)) + dat += "" + else if(isalien(M)) + dat += "" + else + dat += "" + + + if(M.mind && M.mind.assigned_role) // Adds a column to Player Panel that shows their current job. + var/mob/living/carbon/human/H = M + if (H.wear_id) + var/obj/item/weapon/card/id/id = H.wear_id + if(M.mind.assigned_role == id.assignment) // Polymorph + dat += "" + else + dat += "" + else + dat += "" + + + dat += {" + + + "} + switch(is_special_character(M)) + if(0) + dat += {""} + if(1) + dat += {""} + if(2) + dat += {""} + + var/currentkarma = 0 + if(show_karma) + var/DBQuery/query = dbcon.NewQuery("SELECT karma FROM karmatotals WHERE byondkey='[M.key]'") + query.Execute() + while(query.NextRow()) + currentkarma = query.item[1] + + if(currentkarma) + dat += "" + else + dat += "" + + dat += "
NameReal NameAssigned JobKeyOptionsPMTraitor?Karma
IP:(IP: [M.lastKnownIP])
[M.name]AICyborg[M.real_name]pAINew PlayerGhostMonkeyAlienUnknown[M.mind.assigned_role][M.mind.assigned_role] ([id.assignment])" + else + dat += "[M.mind.assigned_role] (No ID)No Assigned Role[(M.client ? "[M.client]" : "No client")]XPMTraitor?Traitor?Traitor?[currentkarma]
0
" + + usr << browse(dat, "window=players;size=640x480") diff --git a/code/modules/food/food.dm b/code/modules/food/food.dm index 4954981b8dd..137622e8fcb 100644 --- a/code/modules/food/food.dm +++ b/code/modules/food/food.dm @@ -197,63 +197,6 @@ ..() reagents.add_reagent("nutriment", 1) -/obj/item/weapon/reagent_containers/food/snacks/meat - name = "meat" - desc = "A slab of meat" - icon_state = "meat" - health = 180 - New() - ..() - reagents.add_reagent("nutriment", 3) - src.bitesize = 3 - processing_objects.Add(src) - - Del() - processing_objects.Remove(src) - ..() - - process() - if (src.infreezer) - health = 180 - return - var/turf/location = get_turf(src.loc) - var/datum/gas_mixture/environment = location.return_air() - switch(environment.temperature) - if(0 to T0C) - health = 180 - return - if(T0C to (T0C + 100)) - health = max(0, health - 1) - if(health <= 0) - desc = "A slab of meat. It looks rotten." - icon_state = "rottenmeat" - var/toxin_amount = reagents.get_reagent_amount("nutriment") * 3 - reagents.add_reagent("toxin",toxin_amount) - processing_objects.Remove(src) - -/obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh - name = "synthetic meat" - desc = "A synthetic slab of flesh." - - process() - if (src.infreezer) - health = 180 - return - var/turf/location = get_turf(src.loc) - var/datum/gas_mixture/environment = location.return_air() - switch(environment.temperature) - if(0 to T0C) - health = 180 - return - if(T0C to (T0C + 100)) - health = max(0, health - 1) - if(health <= 0) - desc = "A slab of synthetic meat. It looks rotten." - icon_state = "rottenmeat" - var/toxin_amount = reagents.get_reagent_amount("nutriment") * 3 - reagents.add_reagent("toxin",toxin_amount) - processing_objects.Remove(src) - /obj/item/weapon/reagent_containers/food/snacks/appendix //yes, this is the same as meat. I might do something different in future name = "appendix" desc = "An appendix which looks perfectly healthy." @@ -272,34 +215,6 @@ reagents.add_reagent("nutriment", 1) src.bitesize = 1 -/obj/item/weapon/reagent_containers/food/snacks/meat/human - name = "-meat" - var/subjectname = "" - var/subjectjob = null - - process() - if (src.infreezer) - health = 180 - return - var/turf/location = get_turf(src.loc) - var/datum/gas_mixture/environment = location.return_air() - switch(environment.temperature) - if(0 to T0C) - health = 180 - return - if(T0C to (T0C + 100)) - health = max(0, health - 1) - if(health <= 0) - desc = "A slab of meat. It looks rotten." - icon_state = "rottenmeat" - var/toxin_amount = reagents.get_reagent_amount("nutriment") * 3 - reagents.add_reagent("toxin",toxin_amount) - processing_objects.Remove(src) - - -/obj/item/weapon/reagent_containers/food/snacks/meat/monkey - //same as plain meat - /obj/item/weapon/reagent_containers/food/snacks/tofu name = "Tofu" icon_state = "tofu" diff --git a/code/modules/food/meat.dm b/code/modules/food/meat.dm new file mode 100644 index 00000000000..d02f40704ee --- /dev/null +++ b/code/modules/food/meat.dm @@ -0,0 +1,47 @@ +/obj/item/weapon/reagent_containers/food/snacks/meat + name = "meat" + desc = "A slab of meat" + icon_state = "meat" + health = 180 + New() + ..() + reagents.add_reagent("nutriment", 3) + src.bitesize = 3 + processing_objects.Add(src) + + Del() + processing_objects.Remove(src) + ..() + + + process() + if(!loc) return + var/datum/gas_mixture/environment = loc.return_air() + if(!environment) return + switch(environment.temperature) + if(0 to T0C) + health = 180 + return + if(T0C to (T0C + 100)) + health = max(0, health - 1) + if(health <= 0) + desc = "A slab of synthetic meat. It looks rotten." + icon_state = "rottenmeat" + var/toxin_amount = reagents.get_reagent_amount("nutriment") * 3 + reagents.add_reagent("toxin",toxin_amount) + processing_objects.Remove(src) + + +/obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh + name = "synthetic meat" + desc = "A synthetic slab of flesh." + + +/obj/item/weapon/reagent_containers/food/snacks/meat/human + name = "-meat" + var/subjectname = "" + var/subjectjob = null + + +/obj/item/weapon/reagent_containers/food/snacks/meat/monkey + //same as plain meat \ No newline at end of file diff --git a/code/modules/power/singularity/emitter.dm b/code/modules/power/singularity/emitter.dm index 3ec515dcb3f..11635f176a1 100644 --- a/code/modules/power/singularity/emitter.dm +++ b/code/modules/power/singularity/emitter.dm @@ -62,9 +62,9 @@ return 1 - emp_act()//Emitters are hardened but still might have issues + emp_act(var/severity)//Emitters are hardened but still might have issues use_power(50) - if(prob(1)&&prob(1)) + if((severity == 1)&&prob(1)&&prob(1)) if(src.active) src.active = 0 src.use_power = 1 diff --git a/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm b/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm index ce1917197d5..ea6294511be 100644 --- a/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm +++ b/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm @@ -67,7 +67,7 @@ PE|PE|PE examine() - set src in usr + set src in oview(1) switch(src.construction_state) if(0) src.desc = text("Part of a Particle Accelerator, looks like its not attached to the flooring") @@ -161,9 +161,9 @@ PE|PE|PE if(temp_state == src.construction_state)//Nothing changed return 0 else - if(src.construction_state >= 3)//Was taken apart, update state - update_state() src.construction_state = temp_state + if(src.construction_state < 3)//Was taken apart, update state + update_state() update_icon() return 1 return 0 @@ -266,7 +266,7 @@ PE|PE|PE if(temp_state == src.construction_state)//Nothing changed return 0 else - if(src.construction_state >= 3)//Was taken apart, update state + if(src.construction_state < 3)//Was taken apart, update state update_state() if(use_power) use_power = 0 diff --git a/code/modules/power/singularity/particle_accelerator/particle_control.dm b/code/modules/power/singularity/particle_accelerator/particle_control.dm index 467739fe76e..5ef5869a9de 100644 --- a/code/modules/power/singularity/particle_accelerator/particle_control.dm +++ b/code/modules/power/singularity/particle_accelerator/particle_control.dm @@ -34,12 +34,21 @@ connected_parts = list() return if(!part_scan()) - assembled = 0 + use_power = 1 + active = 0 + connected_parts = list() + return Topic(href, href_list) ..() + //Ignore input if we are broken, !silicon guy cant touch us, or nonai controlling from super far away + if(stat & (BROKEN|NOPOWER) || (get_dist(src, usr) > 1 && !istype(usr, /mob/living/silicon)) || (get_dist(src, usr) > 8 && !istype(usr, /mob/living/silicon/ai))) + usr.machine = null + usr << browse(null, "window=pacontrol") + return + if( href_list["close"] ) usr << browse(null, "window=pacontrol") usr.machine = null @@ -57,6 +66,7 @@ if(src.strength < 0) src.strength = 0 src.updateDialog() + return power_change() @@ -68,6 +78,7 @@ use_power = 1 return + process() if(src.active) for(var/obj/structure/particle_accelerator/particle_emitter/PE in connected_parts) @@ -139,8 +150,8 @@ interact(mob/user) - if ( (get_dist(src, user) > 1 ) || (stat & (BROKEN|NOPOWER)) ) - if (!istype(user, /mob/living/silicon)) + if((get_dist(src, user) > 1) || (stat & (BROKEN|NOPOWER))) + if(!istype(user, /mob/living/silicon)) user.machine = null user << browse(null, "window=pacontrol") return @@ -166,3 +177,4 @@ user << browse(dat, "window=pacontrol;size=420x500") onclose(user, "pacontrol") + return diff --git a/maps/tgstation.2.0.8.dmm b/maps/tgstation.2.0.8.dmm index a4c3c92f09a..7c5d3a279d9 100644 --- a/maps/tgstation.2.0.8.dmm +++ b/maps/tgstation.2.0.8.dmm @@ -2858,7 +2858,7 @@ "bcX" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall/r_wall,/area/crew_quarters/heads) "bcY" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/hallway/primary/central) "bcZ" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/turf/simulated/floor/plating,/area/crew_quarters/kitchen) -"bda" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/closet/secure_closet/kitchen,/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen) +"bda" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/closet/secure_closet/freezer/kitchen,/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen) "bdb" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen) "bdc" = (/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen) "bdd" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen) @@ -3133,7 +3133,7 @@ "bim" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/hallway/primary/central) "bin" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/hallway/primary/central) "bio" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/wall,/area/crew_quarters/kitchen) -"bip" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/closet/secure_closet/fridge,/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen) +"bip" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/closet/secure_closet/freezer/fridge,/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen) "biq" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen) "bir" = (/obj/structure/table,/obj/machinery/processor,/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen) "bis" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock{name = "Kitchen"; req_access_txt = "28"},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen) @@ -3897,7 +3897,7 @@ "bwW" = (/obj/machinery/door/airlock/maintenance{name = "Quartermaster's Office"; req_access_txt = "41"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/quartermaster/qm) "bwX" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall,/area/quartermaster/qm) "bwY" = (/obj/machinery/light{dir = 4},/turf/simulated/floor,/area/quartermaster/miningdock) -"bwZ" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/closet/secure_closet/money_freezer,/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/nuke_storage) +"bwZ" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/closet/secure_closet/freezer/money,/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/nuke_storage) "bxa" = (/obj/machinery/light_switch{pixel_y = 28},/turf/simulated/floor{tag = "icon-vault (SOUTHEAST)"; icon_state = "vault"; dir = 6},/area/security/nuke_storage) "bxb" = (/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/security/nuke_storage) "bxc" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/obj/machinery/alarm{frequency = 1437; pixel_y = 23},/turf/simulated/floor{tag = "icon-vault (SOUTHWEST)"; icon_state = "vault"; dir = 10},/area/security/nuke_storage) @@ -5570,8 +5570,8 @@ "cdf" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/suit/space/rig,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/rig,/turf/simulated/floor/plating,/area/engine/engineering) "cdg" = (/obj/machinery/dispenser,/turf/simulated/floor/plating,/area/engine/engineering) "cdh" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplatecorner"; tag = "icon-warnplate (WEST)"},/area/engine/engineering) -"cdi" = (/obj/structure/particle_accelerator/particle_emitter/left{anchored = 1; construction_state = 4; dir = 8},/turf/simulated/floor/plating/airless,/area/engine/engineering) -"cdj" = (/obj/machinery/particle_accelerator/control_box{anchored = 1; construction_state = 4; dir = 8},/obj/effect/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = -32; pixel_y = 0},/turf/simulated/floor/plating/airless{dir = 5; icon_state = "warnplate"},/area/engine/engineering) +"cdi" = (/obj/structure/particle_accelerator/particle_emitter/left{anchored = 1; construction_state = 3; dir = 8},/turf/simulated/floor/plating/airless,/area/engine/engineering) +"cdj" = (/obj/machinery/particle_accelerator/control_box{anchored = 1; construction_state = 3; dir = 8},/obj/effect/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = -32; pixel_y = 0},/turf/simulated/floor/plating/airless{dir = 5; icon_state = "warnplate"},/area/engine/engineering) "cdk" = (/turf/simulated/floor/plating/airless{dir = 10; icon_state = "warnplate"},/area/engine/engineering) "cdl" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/tank/oxygen,/obj/item/weapon/tank/oxygen,/turf/simulated/floor/plating,/area/engine/engineering) "cdm" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-4"},/turf/simulated/floor/plating{tag = "icon-warnplate (EAST)"; icon_state = "warnplate"; dir = 4},/area/engine/engineering) @@ -5579,12 +5579,12 @@ "cdo" = (/obj/effect/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = 32; pixel_y = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-8"},/turf/simulated/floor/plating/airless,/area/engine/engineering) "cdp" = (/obj/item/weapon/wrench,/turf/simulated/floor/plating/airless,/area/engine/engineering) "cdq" = (/obj/machinery/the_singularitygen,/turf/simulated/floor/plating/airless,/area/engine/engineering) -"cdr" = (/obj/structure/particle_accelerator/particle_emitter/center{anchored = 1; construction_state = 4; dir = 8},/turf/simulated/floor/plating/airless,/area/engine/engineering) -"cds" = (/obj/structure/particle_accelerator/power_box{anchored = 1; construction_state = 4; dir = 8},/turf/simulated/floor/plating/airless,/area/engine/engineering) -"cdt" = (/obj/structure/particle_accelerator/fuel_chamber{anchored = 1; construction_state = 4; dir = 8},/turf/simulated/floor/plating/airless{dir = 8; icon_state = "warnplatecorner"},/area/engine/engineering) -"cdu" = (/obj/structure/particle_accelerator/end_cap{anchored = 1; construction_state = 4; dir = 8},/turf/simulated/floor/plating/airless{dir = 1; icon_state = "warnplate"},/area/engine/engineering) +"cdr" = (/obj/structure/particle_accelerator/particle_emitter/center{anchored = 1; construction_state = 3; dir = 8},/turf/simulated/floor/plating/airless,/area/engine/engineering) +"cds" = (/obj/structure/particle_accelerator/power_box{anchored = 1; construction_state = 3; dir = 8},/turf/simulated/floor/plating/airless,/area/engine/engineering) +"cdt" = (/obj/structure/particle_accelerator/fuel_chamber{anchored = 1; construction_state = 3; dir = 8},/turf/simulated/floor/plating/airless{dir = 8; icon_state = "warnplatecorner"},/area/engine/engineering) +"cdu" = (/obj/structure/particle_accelerator/end_cap{anchored = 1; construction_state = 3; dir = 8},/turf/simulated/floor/plating/airless{dir = 1; icon_state = "warnplate"},/area/engine/engineering) "cdv" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating/airless,/area/engine/engineering) -"cdw" = (/obj/structure/particle_accelerator/particle_emitter/right{anchored = 1; construction_state = 4; dir = 8},/turf/simulated/floor/plating/airless,/area/engine/engineering) +"cdw" = (/obj/structure/particle_accelerator/particle_emitter/right{anchored = 1; construction_state = 3; dir = 8},/turf/simulated/floor/plating/airless,/area/engine/engineering) "cdx" = (/obj/structure/lattice,/obj/structure/grille{density = 0; icon_state = "brokengrille"},/turf/space,/area) "cdy" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating/airless,/area/solar/starboard) "cdz" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/turf/simulated/floor/plating/airless,/area/solar/starboard) @@ -5915,7 +5915,7 @@ "cjM" = (/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration/centcom) "cjN" = (/obj/item/weapon/reagent_containers/food/condiment/saltshaker,/obj/structure/table,/turf/unsimulated/floor{tag = "icon-redyellowfull"; icon_state = "redyellowfull"},/area/centcom/living) "cjO" = (/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/living) -"cjP" = (/obj/structure/closet/secure_closet/meat,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/living) +"cjP" = (/obj/structure/closet/secure_closet/freezer/meat,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/living) "cjQ" = (/obj/machinery/chem_master/condimaster{name = "CondiMaster Neo"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/living) "cjR" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/shuttle/floor,/area/supply/dock) "cjS" = (/obj/structure/closet/crate/medical,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/syndicate_station/start) @@ -6170,7 +6170,7 @@ "coH" = (/turf/unsimulated/floor{icon_state = "whiteshiny"},/area/centcom/control) "coI" = (/obj/structure/stool/chair,/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/control) "coJ" = (/turf/unsimulated/wall,/area/centcom/evac) -"coK" = (/obj/structure/closet/secure_closet/meat,/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/evac) +"coK" = (/obj/structure/closet/secure_closet/freezer/meat,/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/evac) "coL" = (/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/evac) "coM" = (/obj/structure/table,/obj/machinery/processor{pixel_x = 0; pixel_y = 10},/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/evac) "coN" = (/obj/structure/stool/chair,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/control) @@ -6199,7 +6199,7 @@ "cpk" = (/obj/machinery/door/airlock/external,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "NTrasen"; name = "Outer Airlock"; opacity = 0},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom) "cpl" = (/turf/space,/turf/simulated/shuttle/wall{dir = 1; icon_state = "diagonalWall3"},/area/shuttle/specops/centcom) "cpm" = (/obj/machinery/door/airlock/centcom{name = "General Access"; opacity = 1; req_access_txt = "101"},/turf/unsimulated/floor{icon_state = "delivery"},/area/centcom/control) -"cpn" = (/obj/structure/table,/obj/item/assembly/shock_kit{icon = 'assemblies.dmi'},/obj/item/device/assembly/signaler,/obj/item/weapon/handcuffs,/obj/item/weapon/melee/classic_baton,/turf/unsimulated/floor{icon_state = "whiteshiny"},/area/centcom/control) +"cpn" = (/obj/structure/table,/obj/item/assembly/shock_kit{icon = 'icons/obj/assemblies.dmi'},/obj/item/device/assembly/signaler,/obj/item/weapon/handcuffs,/obj/item/weapon/melee/classic_baton,/turf/unsimulated/floor{icon_state = "whiteshiny"},/area/centcom/control) "cpo" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion (EAST)"; icon_state = "propulsion"; dir = 4},/turf/space,/area/shuttle/specops/centcom) "cpp" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/shuttle/engine/heater{tag = "icon-heater (WEST)"; icon_state = "heater"; dir = 8},/turf/unsimulated/floor,/area/shuttle/specops/centcom) "cpq" = (/obj/effect/landmark{name = "Commando-Bomb"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom) @@ -6428,8 +6428,8 @@ "ctF" = (/obj/structure/reagent_dispensers/beerkeg,/turf/unsimulated/floor{tag = "icon-redbluefull (WEST)"; icon_state = "redbluefull"; dir = 8},/area/tdome/tdomeobserve) "ctG" = (/turf/unsimulated/floor{tag = "icon-redbluefull (WEST)"; icon_state = "redbluefull"; dir = 8},/area/tdome/tdomeobserve) "ctH" = (/obj/machinery/vending/coffee,/turf/unsimulated/floor{tag = "icon-redbluefull (WEST)"; icon_state = "redbluefull"; dir = 8},/area/tdome/tdomeobserve) -"ctI" = (/obj/structure/closet/secure_closet/meat,/turf/unsimulated/floor{icon_state = "white"},/area/tdome) -"ctJ" = (/obj/structure/closet/secure_closet/fridge,/turf/unsimulated/floor{icon_state = "white"},/area/tdome) +"ctI" = (/obj/structure/closet/secure_closet/freezer/meat,/turf/unsimulated/floor{icon_state = "white"},/area/tdome) +"ctJ" = (/obj/structure/closet/secure_closet/freezer/fridge,/turf/unsimulated/floor{icon_state = "white"},/area/tdome) "ctK" = (/obj/structure/stool/chair,/obj/effect/landmark{name = "tdomeobserve"},/turf/unsimulated/floor{tag = "icon-redbluefull (WEST)"; icon_state = "redbluefull"; dir = 8},/area/tdome/tdomeobserve) "ctL" = (/obj/structure/disposalpipe/trunk,/obj/structure/disposaloutlet,/turf/unsimulated/floor{tag = "icon-redbluefull (WEST)"; icon_state = "redbluefull"; dir = 8},/area/tdome/tdomeobserve) "ctM" = (/obj/machinery/vending/snack,/turf/unsimulated/floor{tag = "icon-redbluefull (WEST)"; icon_state = "redbluefull"; dir = 8},/area/tdome/tdomeobserve) diff --git a/tgstation.dme b/tgstation.dme index 27a5c29e9a9..0baead61518 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -547,6 +547,7 @@ #include "code\game\objects\bombspawner.dm" #include "code\game\objects\cleaner.dm" #include "code\game\objects\closets.dm" +#include "code\game\objects\crates.dm" #include "code\game\objects\displaycase.dm" #include "code\game\objects\door_assembly.dm" #include "code\game\objects\effect_system.dm" @@ -582,6 +583,8 @@ #include "code\game\objects\alien\weeds.dm" #include "code\game\objects\closets\bombsuit.dm" #include "code\game\objects\closets\emergency.dm" +#include "code\game\objects\closets\extinguisher.dm" +#include "code\game\objects\closets\fireax.dm" #include "code\game\objects\closets\firecloset.dm" #include "code\game\objects\closets\gimmick.dm" #include "code\game\objects\closets\gmcloset.dm" @@ -683,7 +686,6 @@ #include "code\game\objects\storage\belt.dm" #include "code\game\objects\storage\bible.dm" #include "code\game\objects\storage\briefcase.dm" -#include "code\game\objects\storage\crates.dm" #include "code\game\objects\storage\firstaid.dm" #include "code\game\objects\storage\kit.dm" #include "code\game\objects\storage\lockbox.dm" @@ -710,6 +712,7 @@ #include "code\modules\admin\create_turf.dm" #include "code\modules\admin\NewBan.dm" #include "code\modules\admin\newbanjob.dm" +#include "code\modules\admin\player_panel.dm" #include "code\modules\admin\verbs\adminhelp.dm" #include "code\modules\admin\verbs\adminjump.dm" #include "code\modules\admin\verbs\adminsay.dm" @@ -771,6 +774,7 @@ #include "code\modules\critters\critters.dm" #include "code\modules\critters\hivebots\hivebot.dm" #include "code\modules\food\food.dm" +#include "code\modules\food\meat.dm" #include "code\modules\food\recipes_microwave.dm" #include "code\modules\mining\datum_processing_recipe.dm" #include "code\modules\mining\machine_input_output_plates.dm"