From 59762d4207a4eff0e453614a20450ae4c557ec6d Mon Sep 17 00:00:00 2001 From: Ren Erthilo Date: Wed, 2 May 2012 21:39:41 +0100 Subject: [PATCH 01/19] TG: An attempt to make the master controller more robust. This shouldn't cause terrible additional lag, given that the master controller doesn't actually fire that often, and can also give us a clue as to what part of the controller has died in case of failure Modifies do_after to something that fires a lot less, and is hopefully more robust against infinite loops. It is now theoretically possible to run around and then come back to the same place and have it complete, but that's only really valid for extremely long times (like handcuff removal) and if you get lucky and dodge one of the timed checks. Revision: r3421 Author: VivianFoxfoot --- code/game/cellautomata.dm | 3 +- code/game/master_controller.dm | 148 +++++++++++++++++++++++++----- code/modules/admin/admin_verbs.dm | 3 +- code/modules/admin/verbs/MC.dm | 12 +++ code/modules/mob/mob.dm | 4 +- 5 files changed, 143 insertions(+), 27 deletions(-) diff --git a/code/game/cellautomata.dm b/code/game/cellautomata.dm index 3f878ecdfae..5bf3b888a55 100644 --- a/code/game/cellautomata.dm +++ b/code/game/cellautomata.dm @@ -125,7 +125,8 @@ src.update_status() master_controller = new /datum/controller/game_controller() - spawn(-1) master_controller.setup() + spawn(-1) + master_controller.setup() return //Crispy fullban diff --git a/code/game/master_controller.dm b/code/game/master_controller.dm index 8128b4c7a98..175bbc62aa0 100644 --- a/code/game/master_controller.dm +++ b/code/game/master_controller.dm @@ -1,9 +1,26 @@ var/global/datum/controller/game_controller/master_controller //Set in world.New() +var/global/datum/failsafe/Failsafe var/global/controllernum = "no" +var/global/controller_iteration = 0 + + + + datum/controller/game_controller var/processing = 1 + var/global/air_master_ready = 0 + var/global/tension_master_ready = 0 + var/global/sun_ready = 0 + var/global/mobs_ready = 0 + var/global/diseases_ready = 0 + var/global/machines_ready = 0 + var/global/objects_ready = 0 + var/global/networks_ready = 0 + var/global/powernets_ready = 0 + var/global/ticker_ready = 0 + proc setup() setup_objects() @@ -80,57 +97,142 @@ datum/controller/game_controller process() + if(!Failsafe) + Failsafe = new /datum/failsafe + spawn(0) + Failsafe.spin() + + if(!processing) return 0 controllernum = "yes" - spawn (100) controllernum = "no" + spawn (100) + controllernum = "no" + + controller_iteration++ var/start_time = world.timeofday - air_master.process() + air_master_ready = 0 + tension_master_ready = 0 + sun_ready = 0 + mobs_ready = 0 + diseases_ready = 0 + machines_ready = 0 + objects_ready = 0 + networks_ready = 0 + powernets_ready = 0 + ticker_ready = 0 - tension_master.process() + + + + + spawn(0) + air_master.process() + air_master_ready = 1 + spawn(0) + tension_master.process() + tension_master_ready = 1 sleep(1) - sun.calc_position() + spawn(0) + sun.calc_position() + sun_ready = 1 sleep(-1) - for(var/mob/M in world) - M.Life() + spawn(0) + for(var/mob/M in world) + M.Life() + mobs_ready = 1 + + sleep(-1) - for(var/datum/disease/D in active_diseases) - D.process() + spawn(0) + for(var/datum/disease/D in active_diseases) + D.process() + diseases_ready = 1 - for(var/obj/machinery/machine in machines) - if(machine) - machine.process() - if(machine && machine.use_power) - machine.auto_use_power() + spawn(0) + for(var/obj/machinery/machine in machines) + if(machine) + machine.process() + if(machine && machine.use_power) + machine.auto_use_power() + machines_ready = 1 sleep(-1) sleep(1) - for(var/obj/object in processing_objects) - object.process() + spawn(0) + for(var/obj/object in processing_objects) + object.process() + objects_ready = 1 - for(var/datum/pipe_network/network in pipe_networks) - network.process() + spawn(0) + for(var/datum/pipe_network/network in pipe_networks) + network.process() + networks_ready = 1 - for(var/datum/powernet/P in powernets) - P.reset() + spawn(0) + for(var/datum/powernet/P in powernets) + P.reset() + powernets_ready = 1 sleep(-1) - ticker.process() + spawn(0) + ticker.process() + ticker_ready = 1 - sleep(world.timeofday+10-start_time) // This is fine for our tick lag. DMTG + sleep(world.timeofday+10-start_time)// Don't touch this. DMTG - spawn process() + while(!air_master_ready || !tension_master_ready || !sun_ready || !mobs_ready || !diseases_ready || !machines_ready || !objects_ready || !networks_ready || !powernets_ready || !ticker_ready) + sleep(1) + + spawn + process() - return 1 \ No newline at end of file + return 1 + + + +/datum/failsafe // This thing pretty much just keeps poking the master controller + var/spinning = 1 + var/current_iteration = 0 + +/datum/failsafe/proc/spin() + if(!master_controller) // Well fuck. How did this happen? + sleep(50) + if(!master_controller) + master_controller = new /datum/controller/game_controller() + spawn(-1) + master_controller.setup() + + else + while(spinning) + current_iteration = controller_iteration + sleep(600) // Wait 15 seconds + if(current_iteration == controller_iteration) // Mm. The master controller hasn't ticked yet. + + for (var/mob/M in world) + if (M.client && M.client.holder) + M << " Warning. The Master Controller has not fired in the last 60 seconds. Restart recommended. Automatic restart in 60 seconds." + + sleep(600) + if(current_iteration == controller_iteration) + for (var/mob/M in world) + if (M.client && M.client.holder) + M << " Warning. The Master Controller has not fired in the last 2 minutes. Automatic restart beginning." + master_controller.process() + sleep(150) + else + for (var/mob/M in world) + if (M.client && M.client.holder) + M << " The Master Controller has fired. Automatic restart aborted." \ No newline at end of file diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index ae551810a05..38e63dea1b0 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -227,7 +227,7 @@ //verbs += /proc/togglebuildmode --Merged with view variables //verbs += /client/proc/cmd_modify_object_variables --Merged with view variables verbs += /client/proc/togglebuildmodeself - + verbs += /client/proc/debug_master_controller else return //Game Admin @@ -445,6 +445,7 @@ //verbs -= /client/proc/cmd_switch_radio --removed because tcommsat is staying verbs -= /client/proc/togglebuildmodeself verbs -= /client/proc/kill_airgroup + verbs -= /client/proc/debug_master_controller verbs -= /client/proc/admin_deny_shuttle verbs -= /client/proc/cmd_admin_christmas verbs -= /client/proc/editappear diff --git a/code/modules/admin/verbs/MC.dm b/code/modules/admin/verbs/MC.dm index ded7740c2c1..a9481f7f348 100644 --- a/code/modules/admin/verbs/MC.dm +++ b/code/modules/admin/verbs/MC.dm @@ -7,4 +7,16 @@ master_controller.process() if("No") return 0 + //feedback_add_details("admin_verb","RMC") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + return + +/client/proc/debug_master_controller() + set category = "Debug" + set name = "Debug Master Controller" + switch(alert("Debug Master Controller or Failsafe?" ,, "Master Controller" , "Failsafe")) + if("Master Controller") + debug_variables(master_controller) + if("Failsafe") + debug_variables(Failsafe) + //feedback_add_details("admin_verb","DMC") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! return \ No newline at end of file diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index f3355dba7f7..ca7176b713d 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -1038,8 +1038,8 @@ note dizziness decrements automatically in the mob's Life() proc. stat(null, "([x], [y], [z])") stat(null, "CPU: [world.cpu]") stat(null, "Controller: [controllernum]") - //if (master_controller) - // stat(null, "Loop: [master_controller.loop_freq]") + if (master_controller) + stat(null, "Current Iteration: [controller_iteration]") if (spell_list.len) From 396caaa2608375d4043d5f2d7ba7367f8379cf24 Mon Sep 17 00:00:00 2001 From: Ren Erthilo Date: Wed, 2 May 2012 22:14:59 +0100 Subject: [PATCH 02/19] TG: Late-join features and bug fixes: - Merged 'Game' and 'Lobby' tabs during pre-game into one tab. - Late-joiners now see round duration. - Late-joiners are warned if the shuttle is not recallable or has already left to Centcomm. - Added the little red X to the top corner of the late-join job list window - Supply shuttle derp fix - Removed duplicate mining shuttle code that was inside atmos computer stuff - - This should fix the player seeing both the 'Shuttle has been sent' and 'The shuttle is already moving' messages. - Updated changelog Revision: r3433 Author: johnsonmt88 --- code/defines/obj/supplypacks.dm | 16 ++++++++ .../atmoalter/area_atmos_computer.dm | 29 +------------- .../game/machinery/computer/buildandrepair.dm | 29 +++++++++++++- code/game/objects/storage/crates.dm | 9 +++++ code/game/supplyshuttle.dm | 7 +++- code/game/turf.dm | 18 +++++++++ code/modules/mob/new_player/new_player.dm | 38 ++++++++++++++----- 7 files changed, 106 insertions(+), 40 deletions(-) diff --git a/code/defines/obj/supplypacks.dm b/code/defines/obj/supplypacks.dm index 2db7cbc9fcb..1fa6ff86658 100755 --- a/code/defines/obj/supplypacks.dm +++ b/code/defines/obj/supplypacks.dm @@ -1,6 +1,7 @@ //SUPPLY PACKS //NOTE: only secure crate types use the access var (and are lockable) //NOTE: hidden packs only show up when the computer has been hacked. +//ANOTER NOTE: Contraband is obtainable through modified supplycomp circuitboards. //BIG NOTE: Don't add living things to crates, that's bad, it will break the shuttle. /datum/supply_packs/specialops name = "Special Ops supplies" @@ -793,5 +794,20 @@ ..() +/datum/supply_packs/contraband + contains = list("/obj/item/weapon/contraband/poster",) //We randomly pick 5 items from this list through the constructor, look below + name = "Contraband Crate" + cost = 30 + containertype = "/obj/structure/closet/crate/contraband" + containername = "Contraband crate" + group = "ERROR" + contraband = 1 + +/datum/supply_packs/contraband/New() + var/list/tempContains = list() + for(var/i = 0,i<5,i++) + tempContains += pick(contains) + src.contains = tempContains + ..() //SUPPLY PACKS \ No newline at end of file diff --git a/code/game/machinery/atmoalter/area_atmos_computer.dm b/code/game/machinery/atmoalter/area_atmos_computer.dm index 8a6853cf32b..fb0245f02af 100644 --- a/code/game/machinery/atmoalter/area_atmos_computer.dm +++ b/code/game/machinery/atmoalter/area_atmos_computer.dm @@ -39,31 +39,4 @@ var/area/A2 = T2.loc if ( istype(A2) && A2.master && A2.master == A ) SCRUBBER.on = scrubber_state - SCRUBBER.update_icon() - - - - -/obj/machinery/computer/mining_shuttle/attack_hand(user as mob) - src.add_fingerprint(usr) - var/dat - dat = text("
Mining shuttle:
Send
") - user << browse("[dat]", "window=miningshuttle;size=200x100") - -/obj/machinery/computer/mining_shuttle/Topic(href, href_list) - if(..()) - return - usr.machine = src - src.add_fingerprint(usr) - if(href_list["move"]) - if(ticker.mode.name == "blob") - if(ticker.mode:declared) - usr << "Under directive 7-10, [station_name()] is quarantined until further notice." - return - - if (!mining_shuttle_moving) - usr << "\blue Shuttle recieved message and will be sent shortly." - move_mining_shuttle() - else - usr << "\blue Shuttle is already moving." - + SCRUBBER.update_icon() \ No newline at end of file diff --git a/code/game/machinery/computer/buildandrepair.dm b/code/game/machinery/computer/buildandrepair.dm index 0fd688bed81..dfd1390958e 100644 --- a/code/game/machinery/computer/buildandrepair.dm +++ b/code/game/machinery/computer/buildandrepair.dm @@ -48,7 +48,7 @@ origin_tech = "programming=2;biotech=2" /obj/item/weapon/circuitboard/scan_consolenew name = "Circuit board (DNA Machine)" - build_path = "/obj/machinery/scan_consolenew" + build_path = "/obj/machinery/computer/scan_consolenew" origin_tech = "programming=2;biotech=2" /obj/item/weapon/circuitboard/communications name = "Circuit board (Communications)" @@ -147,6 +147,7 @@ name = "Circuit board (Supply shuttle console)" build_path = "/obj/machinery/computer/supplycomp" origin_tech = "programming=3" + var/contraband_enabled = 0 /obj/item/weapon/circuitboard/operating name = "Circuit board (Operating Computer)" build_path = "/obj/machinery/computer/operating" @@ -207,6 +208,28 @@ +/obj/item/weapon/circuitboard/supplycomp/attackby(obj/item/I as obj, mob/user as mob) + if(istype(I,/obj/item/device/multitool)) + var/catastasis = src.contraband_enabled + var/opposite_catastasis + if(catastasis) + opposite_catastasis = "STANDARD" + catastasis = "BROAD" + else + opposite_catastasis = "BROAD" + catastasis = "STANDARD" + + switch( alert("Current receiver spectrum is set to: [catastasis]","Multitool-Circuitboard interface","Switch to [opposite_catastasis]","Cancel") ) + //switch( alert("Current receiver spectrum is set to: " {(src.contraband_enabled) ? ("BROAD") : ("STANDARD")} , "Multitool-Circuitboard interface" , "Switch to " {(src.contraband_enabled) ? ("STANDARD") : ("BROAD")}, "Cancel") ) + if("Switch to STANDARD","Switch to BROAD") + src.contraband_enabled = !src.contraband_enabled + + if("Cancel") + return + else + user << "DERP! BUG! Report this (And what you were doing to cause it) to Agouri" + return + /obj/structure/computerframe/attackby(obj/item/P as obj, mob/user as mob) switch(state) if(0) @@ -306,4 +329,8 @@ if(circuit.id) B:id = circuit.id if(circuit.records) B:records = circuit.records if(circuit.frequency) B:frequency = circuit.frequency + if(istype(circuit,/obj/item/weapon/circuitboard/supplycomp)) + var/obj/machinery/computer/supplycomp/SC = B + var/obj/item/weapon/circuitboard/supplycomp/C = circuit + SC.can_order_contraband = C.contraband_enabled del(src) diff --git a/code/game/objects/storage/crates.dm b/code/game/objects/storage/crates.dm index 39689a3eaae..cb33970a13b 100644 --- a/code/game/objects/storage/crates.dm +++ b/code/game/objects/storage/crates.dm @@ -38,6 +38,15 @@ icon_opened = "crateopen" icon_closed = "crate" +/obj/structure/closet/crate/contraband + name = "Contraband crate" + desc = "A random assortment of items manufactured by providers NOT listed under Nanotrasen's whitelist." + icon = 'storage.dmi' + icon_state = "crate" + density = 1 + icon_opened = "crateopen" + icon_closed = "crate" + /obj/structure/closet/crate/medical desc = "A medical crate." name = "Medical crate" diff --git a/code/game/supplyshuttle.dm b/code/game/supplyshuttle.dm index 440cc680403..f481fe8f58f 100644 --- a/code/game/supplyshuttle.dm +++ b/code/game/supplyshuttle.dm @@ -95,6 +95,7 @@ var/list/supply_groups = new() circuit = "/obj/item/weapon/circuitboard/supplycomp" var/temp = null var/hacked = 0 + var/can_order_contraband = 0 /obj/machinery/computer/supplycomp/New() // add the supply pack groups, if they haven't already been added @@ -141,6 +142,7 @@ var/list/supply_groups = new() var/containername = null var/access = null var/hidden = 0 + var/contraband = 0 var/group = "Miscellaneous" /proc/supply_ticker() @@ -348,7 +350,7 @@ This method wont take into account storage items developed in the future and doe src.temp = "Supply points: [supply_shuttle_points]


Request what?

" for(var/S in (typesof(/datum/supply_packs) - /datum/supply_packs - /datum/supply_packs/charge) ) var/datum/supply_packs/N = new S() - if(N.hidden) continue //Have to send the type instead of a reference to + if(N.hidden || N.contraband) continue //Have to send the type instead of a reference to if(N.group != G) continue //correct group? src.temp += "[N.name] Cost: [N.cost] " //the obj because it would get caught by the garbage src.temp += "Print Requisition
" //collector. oh well. @@ -490,6 +492,8 @@ This method wont take into account storage items developed in the future and doe user << "\blue You disconnect the monitor." var/obj/structure/computerframe/A = new /obj/structure/computerframe( src.loc ) var/obj/item/weapon/circuitboard/supplycomp/M = new /obj/item/weapon/circuitboard/supplycomp( A ) + if(src.can_order_contraband) + M.contraband_enabled = 1 for (var/obj/C in src) C.loc = src.loc A.circuit = M @@ -567,6 +571,7 @@ This method wont take into account storage items developed in the future and doe for(var/S in (typesof(/datum/supply_packs) - /datum/supply_packs - /datum/supply_packs/charge) ) var/datum/supply_packs/N = new S() if(N.hidden && !src.hacked) continue //Have to send the type instead of a reference to + if(N.contraband && !src.can_order_contraband){continue;} //Agouri -Kavalamarker if(N.group != G) continue //correct group? src.temp += "[N.name] Cost: [N.cost]
" //the obj because it would get caught by the garbage src.temp += "
Back" //collector. oh well. diff --git a/code/game/turf.dm b/code/game/turf.dm index 7e195556311..564f174fd22 100644 --- a/code/game/turf.dm +++ b/code/game/turf.dm @@ -215,6 +215,7 @@ playsound(src, "clownstep", 50, 1) // this will get annoying very fast. else playsound(src, "clownstep", 20, 1) + switch (src.wet) if(1) if(istype(M, /mob/living/carbon/human)) // Added check since monkeys don't have shoes @@ -322,6 +323,12 @@ new /obj/item/stack/sheet/metal( src ) new /obj/item/stack/sheet/metal( src ) + for(var/obj/O in src.contents) //Eject contents! + if(istype(O,/obj/effect/decal/poster)) + var/obj/effect/decal/poster/P = O + P.roll_and_drop(src) + else + O.loc = src ReplaceWithPlating(explode) /turf/simulated/wall/examine() @@ -509,6 +516,12 @@ var/obj/item/apc_frame/AH = W AH.try_build(src) return + + //Poster stuff + else if(istype(W,/obj/item/weapon/contraband/poster)) + place_poster(W,user) + return + else return attack_hand(user) return @@ -744,6 +757,11 @@ var/obj/item/apc_frame/AH = W AH.try_build(src) + //Poster stuff + else if(istype(W,/obj/item/weapon/contraband/poster)) + place_poster(W,user) + return + //Finally, CHECKING FOR FALSE WALLS if it isn't damaged else if(!d_state) return attack_hand(user) diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index cbbb5505e8d..dc3f193c4de 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -3,6 +3,8 @@ datum/preferences/preferences = null ready = 0 spawning = 0//Referenced when you want to delete the new_player later on in the code. + totalPlayers = 0 //Player counts for the Lobby tab + totalPlayersReady = 0 invisibility = 101 @@ -157,8 +159,8 @@ Stat() ..() - statpanel("Game") - if(client.statpanel=="Game" && ticker) + statpanel("Lobby") + if(client.statpanel=="Lobby" && ticker) if(ticker.hide_mode) stat("Game Mode:", "Secret") else @@ -168,14 +170,15 @@ stat("Time To Start:", ticker.pregame_timeleft) if((ticker.current_state == GAME_STATE_PREGAME) && !going) stat("Time To Start:", "DELAYED") - if((ticker.current_state == GAME_STATE_PLAYING) && going) - stat("Round Duration:", "[round(world.time / 36000)]:[(((world.time / 600 % 60)/10) > 1 ? world.time / 600 % 60 : add_zero(world.time / 600 % 60, 2))]:[world.time / 100 % 6][world.time / 100 % 10]") - statpanel("Lobby") - if(client.statpanel=="Lobby" && ticker) if(ticker.current_state == GAME_STATE_PREGAME) + stat("Players: [totalPlayers]", "Players Ready: [totalPlayersReady]") + totalPlayers = 0 + totalPlayersReady = 0 for(var/mob/new_player/player in world) stat("[player.key]", (player.ready)?("(Playing)"):(null)) + totalPlayers++ + if(player.ready)totalPlayersReady++ Topic(href, href_list[]) if(!client) return 0 @@ -185,7 +188,6 @@ return 1 if(href_list["ready"]) - if(!ready) ready = 1 else @@ -249,6 +251,9 @@ else if(!href_list["late_join"]) new_player_panel() + if(href_list["priv_msg"]) + ..() //pass PM calls along to /mob/Topic + return proc/IsJobAvailable(rank) var/datum/job/job = job_master.GetJob(rank) @@ -362,13 +367,27 @@ proc/LateChoices() - var/dat = "" + var/mills = world.time // 1/10 of a second, not real milliseconds but whatever + //var/secs = ((mills % 36000) % 600) / 10 //Not really needed, but I'll leave it here for refrence.. or something + var/mins = (mills % 36000) / 600 + var/hours = mills / 36000 + + var/dat = "
" + dat += "Round Duration: [round(hours)]h [round(mins)]m
" + + if(emergency_shuttle) //In case Nanotrasen decides reposess CentComm's shuttles. + if(emergency_shuttle.direction == 2) //Shuttle is going to centcomm, not recalled + dat += "The station has been evacuated.
" + if(emergency_shuttle.direction == 1 && emergency_shuttle.timeleft() < 300) //Shuttle is past the point of no recall + dat += "The station is currently undergoing evacuation procedures.
" + dat += "Choose from the following open positions:
" for(var/datum/job/job in job_master.occupations) if(job && IsJobAvailable(job.title)) dat += "[job.title]
" - src << browse(dat, "window=latechoices;size=300x640;can_close=0") + dat += "
" + src << browse(dat, "window=latechoices;size=300x640;can_close=1") proc/create_character() @@ -387,7 +406,6 @@ src << sound(null, repeat = 0, wait = 0, volume = 85, channel = 1) // MAD JAMS cant last forever yo - new_character.dna.ready_dna(new_character) preferences.copydisabilities(new_character) if(mind) From 2d7e329aeb833a6696fefb72dc70222bfb6e07ed Mon Sep 17 00:00:00 2001 From: Ren Erthilo Date: Wed, 2 May 2012 22:20:46 +0100 Subject: [PATCH 03/19] TG: Sieve committed: Adds disabled variables to borg and mech RCD RCDs are disabled if they are used on the escape shuttle or hyperspace around it This applies to what they are used on, not where the user is, so it is immune to teleporting issues Revision: r3434 Author: petethegoat --- code/game/mecha/equipment/tools/tools.dm | 4 ++++ code/game/objects/items/robot_items.dm | 2 +- code/game/objects/items/weapons/RCD.dm | 4 ++++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/code/game/mecha/equipment/tools/tools.dm b/code/game/mecha/equipment/tools/tools.dm index c0bc4e827a1..532aea59a36 100644 --- a/code/game/mecha/equipment/tools/tools.dm +++ b/code/game/mecha/equipment/tools/tools.dm @@ -200,6 +200,10 @@ var/disabled = 0 //malf action(atom/target) + if(istype(target,/area/shuttle)||istype(target, /turf/space/transit))//>implying these are ever made -Sieve + disabled = 1 + else + disabled = 0 if(!istype(target, /turf) && !istype(target, /obj/machinery/door/airlock)) target = get_turf(target) if(!action_checks(target) || disabled || get_dist(chassis, target)>3) return diff --git a/code/game/objects/items/robot_items.dm b/code/game/objects/items/robot_items.dm index 36001689c58..e1a7ac7b123 100644 --- a/code/game/objects/items/robot_items.dm +++ b/code/game/objects/items/robot_items.dm @@ -227,7 +227,7 @@ afterattack(atom/A, mob/user as mob) - if(istype(A,/area/shuttle))//||istype(A,/turf/space/transit))//No RCDs on the shuttles -Sieve + if(istype(A,/area/shuttle)||istype(A,/turf/space/transit))//No RCDs on the shuttles -Sieve disabled = 1 else disabled = 0 diff --git a/code/game/objects/items/weapons/RCD.dm b/code/game/objects/items/weapons/RCD.dm index 9df99a58173..25f32a39343 100644 --- a/code/game/objects/items/weapons/RCD.dm +++ b/code/game/objects/items/weapons/RCD.dm @@ -71,6 +71,10 @@ RCD afterattack(atom/A, mob/user as mob) + if(istype(A,/area/shuttle)||istype(A,/turf/space/transit))//Nanotrasen Matter Jammer TM -Sieve + disabled = 1 + else + disabled = 0 if(!(istype(A, /turf) || istype(A, /obj/machinery/door/airlock))) return From a4e04d2915ea886e7b9c502966ae574cb3503627 Mon Sep 17 00:00:00 2001 From: Ren Erthilo Date: Wed, 2 May 2012 23:09:19 +0100 Subject: [PATCH 04/19] TG: Runtime fixes for: runtime error: Cannot modify null.layer. proc name: done (/obj/effect/equip_e/human/done) usr: Ramona Fawkes (/mob/living/carbon/human) src: the human (/obj/effect/equip_e/human) call stack: the human (/obj/effect/equip_e/human): done() the human (/obj/effect/equip_e/human): process() runtime error: Cannot execute null.use(). proc name: attackby (/obj/structure/barricade/wooden/attackby) usr: Jeffery Long (/mob/living/carbon/human) src: the wooden barricade (/obj/structure/barricade/wooden) call stack: the wooden barricade (/obj/structure/barricade/wooden): attackby(null, Jeffery Long (/mob/living/carbon/human)) the wooden barricade (/obj/structure/barricade/wooden): DblClick(the floor (159,129,1) (/turf/simulated/floor), "mapwindow.map", "icon-x=15;icon-y=12;left=1;scr...") Rewrote wielded weapons to be their own weapon subclass. There was no point having a var/wielded var/twohanded var/force_unwielded var/force_wielded for every damn item when there is only 1 wield-able weapon anyway. All the wield- able stuff is now in twohanded.dm Changed the adminhelpsound to some creative commons sound I pinched. Until somebody can get a better one. I'm sick of MAAAAAAAAOOOOOOW. All PMs trigger the adminhelp sound. That means when you OM a player they get the sound, if a admin is PMed they only hear it if their adminhelp sounds are enabled. This should allow people to get eachother's attention when t he chat is busy. Fixed some bad code with poddoors (which is used for the shutters in QM) Revision: r3435 Author: elly1...@rocketmail.com --- code/defines/obj.dm | 4 - code/defines/obj/hydro.dm | 2 +- code/defines/obj/weapon.dm | 17 - code/game/events/EventProcs/spacevines.dm | 2 +- code/game/machinery/deployable.dm | 10 +- code/game/machinery/doors/airlock.dm | 12 +- code/game/machinery/doors/firedoor.dm | 5 +- code/game/machinery/doors/poddoor.dm | 2 +- code/game/machinery/doors/shutters.dm | 2 +- code/game/objects/closets/fireaxe.dm | 6 +- code/game/objects/items/item.dm | 46 --- .../game/objects/items/weapons/hydroponics.dm | 2 +- code/game/objects/items/weapons/twohanded.dm | 114 ++++++- code/game/objects/weapons.dm | 14 - code/game/throwing.dm | 13 - code/modules/admin/verbs/debug.dm | 6 +- .../living/carbon/alien/humanoid/humanoid.dm | 2 +- code/modules/mob/living/carbon/carbon.dm | 6 +- code/modules/mob/living/carbon/human/human.dm | 314 ++++++------------ code/modules/mob/mob.dm | 16 +- 20 files changed, 238 insertions(+), 357 deletions(-) diff --git a/code/defines/obj.dm b/code/defines/obj.dm index 292b3496ee1..e2b975d4d50 100644 --- a/code/defines/obj.dm +++ b/code/defines/obj.dm @@ -418,10 +418,6 @@ var/burning = null var/hitsound = null var/w_class = 3.0 - var/wielded = 0 // 1 if item is two handed and grabbed with two hands - var/twohanded = 0 // Two handed and wielded off by default, nyoro~n -Agouri - var/force_unwielded = 0 - var/force_wielded = 0 var/protective_temperature = 0 // Placing this here to avoid runtime errors, due to tiny items being allowed on ears and being queried for this variable flags = FPRINT | TABLEPASS pass_flags = PASSTABLE diff --git a/code/defines/obj/hydro.dm b/code/defines/obj/hydro.dm index 3fb16ec45b2..456ceddb6ec 100644 --- a/code/defines/obj/hydro.dm +++ b/code/defines/obj/hydro.dm @@ -1707,7 +1707,7 @@ seed = "/obj/item/seeds/towermycelium" attackby(obj/item/weapon/W as obj, mob/user as mob) - if(istype(W, /obj/item/weapon/circular_saw) || istype(W, /obj/item/weapon/hatchet) || (istype(W, /obj/item/weapon/fireaxe) && W:wielded) || istype(W, /obj/item/weapon/melee/energy)) + if(istype(W, /obj/item/weapon/circular_saw) || istype(W, /obj/item/weapon/hatchet) || (istype(W, /obj/item/weapon/twohanded/fireaxe) && W:wielded) || istype(W, /obj/item/weapon/melee/energy)) user.show_message("You make planks out of the [src]!", 1) for(var/i=0,i<2,i++) new /obj/item/stack/sheet/wood (src.loc) diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm index 67ae76a5e67..0803841d5ef 100644 --- a/code/defines/obj/weapon.dm +++ b/code/defines/obj/weapon.dm @@ -2,12 +2,6 @@ name = "weapon" icon = 'weapons.dmi' -/obj/item/weapon/offhand - name = "offhand" - var/linked_weapon_name = "" - w_class = 5.0 - icon_state = "offhand" - /obj/item/weapon/shield name = "shield" @@ -711,17 +705,6 @@ icon = 'items.dmi' icon_state = "red_crowbar" -/obj/item/weapon/fireaxe // DEM AXES MAN, marker -Agouri - icon_state = "fireaxe0" - name = "fire axe" - desc = "A tool for breaking down those obstructions that stop you from fighting that fire." //Less ROBUST. --SkyMarshal - force = 5 - w_class = 4.0 - flags = ONBACK - twohanded = 1 - force_unwielded = 5 - force_wielded = 18 - /obj/item/weapon/cane name = "cane" desc = "A cane used by a true gentlemen." diff --git a/code/game/events/EventProcs/spacevines.dm b/code/game/events/EventProcs/spacevines.dm index a53210ac88f..b372981383a 100644 --- a/code/game/events/EventProcs/spacevines.dm +++ b/code/game/events/EventProcs/spacevines.dm @@ -25,7 +25,7 @@ if(/obj/item/weapon/circular_saw) del src if(/obj/item/weapon/kitchen/utensil/knife) del src if(/obj/item/weapon/scalpel) del src - if(/obj/item/weapon/fireaxe) del src + if(/obj/item/weapon/twohanded/fireaxe) del src if(/obj/item/weapon/hatchet) del src if(/obj/item/weapon/melee/energy) del src diff --git a/code/game/machinery/deployable.dm b/code/game/machinery/deployable.dm index 46f8872c8c6..9e45fd44242 100644 --- a/code/game/machinery/deployable.dm +++ b/code/game/machinery/deployable.dm @@ -65,7 +65,7 @@ for reference: var/health = 100.0 var/maxhealth = 100.0 - attackby(obj/item/weapon/W as obj, mob/user as mob) + attackby(obj/item/W as obj, mob/user as mob) if (istype(W, /obj/item/stack/sheet/wood)) if (src.health < src.maxhealth) for(var/mob/O in viewers(src, null)) @@ -88,7 +88,7 @@ for reference: else if (src.health <= 0) for(var/mob/O in viewers(src, null)) - O << "\red The barricade is smashed appart!" + O << "\red The barricade is smashed apart!" new /obj/item/stack/sheet/wood(get_turf(src)) new /obj/item/stack/sheet/wood(get_turf(src)) new /obj/item/stack/sheet/wood(get_turf(src)) @@ -99,14 +99,14 @@ for reference: switch(severity) if(1.0) for(var/mob/O in viewers(src, null)) - O << "\red The barricade is blown appart!" + O << "\red The barricade is blown apart!" del(src) return if(2.0) src.health -= 25 if (src.health <= 0) for(var/mob/O in viewers(src, null)) - O << "\red The barricade is blown appart!" + O << "\red The barricade is blown apart!" new /obj/item/stack/sheet/wood(get_turf(src)) new /obj/item/stack/sheet/wood(get_turf(src)) new /obj/item/stack/sheet/wood(get_turf(src)) @@ -115,7 +115,7 @@ for reference: meteorhit() for(var/mob/O in viewers(src, null)) - O << "\red The barricade is smashed appart!" + O << "\red The barricade is smashed apart!" new /obj/item/stack/sheet/wood(get_turf(src)) new /obj/item/stack/sheet/wood(get_turf(src)) new /obj/item/stack/sheet/wood(get_turf(src)) diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index cf99493deb5..9d4dc815730 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -395,13 +395,13 @@ Airlock index -> wire color are { 9, 4, 6, 7, 5, 8, 1, 2, 3 }. else if (istype(C, /obj/item/weapon/pai_cable)) // -- TLE var/obj/item/weapon/pai_cable/cable = C cable.plugin(src, user) - else if (istype(C, /obj/item/weapon/crowbar) || istype(C, /obj/item/weapon/fireaxe) ) + else if (istype(C, /obj/item/weapon/crowbar) || istype(C, /obj/item/weapon/twohanded/fireaxe) ) var/beingcrowbarred = null if(istype(C, /obj/item/weapon/crowbar) ) beingcrowbarred = 1 //derp, Agouri else beingcrowbarred = 0 - if ( ((src.density) && ( src.welded ) && !( src.operating ) && src.p_open && (!src.arePowerSystemsOn() || (stat & NOPOWER)) && !src.locked) && beingcrowbarred == 1 ) + if( beingcrowbarred && (density && welded && !operating && src.p_open && (!src.arePowerSystemsOn() || stat & NOPOWER) && !src.locked) ) playsound(src.loc, 'Crowbar.ogg', 100, 1) user.visible_message("[user] removes the electronics from the airlock assembly.", "You start to remove electronics into the airlock assembly.") if(do_after(user,40)) @@ -433,8 +433,8 @@ Airlock index -> wire color are { 9, 4, 6, 7, 5, 8, 1, 2, 3 }. if ((src.density) && (!( src.welded ) && !( src.operating ) && ((!src.arePowerSystemsOn()) || (stat & NOPOWER)) && !( src.locked ))) if(beingcrowbarred == 0) //being fireaxe'd - var/obj/item/weapon/fireaxe/F = C - if(F.wielded == 1) + var/obj/item/weapon/twohanded/fireaxe/F = C + if(F:wielded) spawn( 0 ) src.operating = 1 animate("opening") @@ -470,8 +470,8 @@ Airlock index -> wire color are { 9, 4, 6, 7, 5, 8, 1, 2, 3 }. else if ((!src.density) && (!( src.welded ) && !( src.operating ) && !( src.locked ))) if(beingcrowbarred == 0) - var/obj/item/weapon/fireaxe/F = C - if(F.wielded == 1) + var/obj/item/weapon/twohanded/fireaxe/F = C + if(F:wielded) spawn( 0 ) src.operating = 1 animate("closing") diff --git a/code/game/machinery/doors/firedoor.dm b/code/game/machinery/doors/firedoor.dm index 87c8051ec8d..7a23377dfe0 100644 --- a/code/game/machinery/doors/firedoor.dm +++ b/code/game/machinery/doors/firedoor.dm @@ -38,7 +38,7 @@ update_icon() return - if (istype(C, /obj/item/weapon/crowbar) || (istype(C,/obj/item/weapon/fireaxe) && C.wielded == 1)) + if (istype(C, /obj/item/weapon/crowbar) || (istype(C,/obj/item/weapon/twohanded/fireaxe) && C:wielded == 1)) if(blocked || operating) return if(src.density) spawn(0) @@ -52,7 +52,8 @@ process() - if(operating || stat & NOPOWER || !nextstate) return + if(operating || stat & NOPOWER || !nextstate) + return switch(nextstate) if(OPEN) spawn() diff --git a/code/game/machinery/doors/poddoor.dm b/code/game/machinery/doors/poddoor.dm index 5aacc6f1f92..793eab765a1 100644 --- a/code/game/machinery/doors/poddoor.dm +++ b/code/game/machinery/doors/poddoor.dm @@ -14,7 +14,7 @@ /obj/machinery/door/poddoor/attackby(obj/item/weapon/C as obj, mob/user as mob) src.add_fingerprint(user) - if (!( istype(C, /obj/item/weapon/crowbar || istype(C, /obj/item/weapon/fireaxe) && C.wielded == 1) )) + if (!( istype(C, /obj/item/weapon/crowbar) || (istype(C, /obj/item/weapon/twohanded/fireaxe) && C:wielded == 1) )) return if ((src.density && (stat & NOPOWER) && !( src.operating ))) spawn( 0 ) diff --git a/code/game/machinery/doors/shutters.dm b/code/game/machinery/doors/shutters.dm index 7ac0ec41fa2..8e1b9a8cae9 100644 --- a/code/game/machinery/doors/shutters.dm +++ b/code/game/machinery/doors/shutters.dm @@ -9,7 +9,7 @@ /obj/machinery/door/poddoor/shutters/attackby(obj/item/weapon/C as obj, mob/user as mob) src.add_fingerprint(user) - if (!( istype(C, /obj/item/weapon/crowbar || istype(C, /obj/item/weapon/fireaxe) && C.wielded == 1) )) + if (!( istype(C, /obj/item/weapon/crowbar) || (istype(C, /obj/item/weapon/twohanded/fireaxe) && C:wielded == 1) )) return if ((src.density && (stat & NOPOWER) && !( src.operating ))) spawn( 0 ) diff --git a/code/game/objects/closets/fireaxe.dm b/code/game/objects/closets/fireaxe.dm index 649f2e22406..6847bf14ef8 100644 --- a/code/game/objects/closets/fireaxe.dm +++ b/code/game/objects/closets/fireaxe.dm @@ -2,7 +2,7 @@ /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 + var/obj/item/weapon/twohanded/fireaxe/fireaxe = new/obj/item/weapon/twohanded/fireaxe icon_state = "fireaxe1000" icon_closed = "fireaxe1000" icon_opened = "fireaxe1100" @@ -51,9 +51,9 @@ src.localopened = 1 update_icon() return - if (istype(O, /obj/item/weapon/fireaxe) && src.localopened) + if (istype(O, /obj/item/weapon/twohanded/fireaxe) && src.localopened) if(!fireaxe) - if(O.wielded) + if(O:wielded) user << "\red Unwield the axe first." return fireaxe = O diff --git a/code/game/objects/items/item.dm b/code/game/objects/items/item.dm index 267feb8b3ef..c9b74bd6d40 100755 --- a/code/game/objects/items/item.dm +++ b/code/game/objects/items/item.dm @@ -12,20 +12,6 @@ ..() user.update_clothing() - // So you can't drop the Offhand - if(istype(src, /obj/item/weapon/offhand)) - user.drop_item(src) - - var/obj/item/O_r = user.r_hand - var/obj/item/O_l = user.l_hand - if(O_r.twohanded) - if(O_r.wielded) - user.drop_item(O_r) - if(O_l.twohanded) - if(O_l.wielded) - user.drop_item(O_l) - del(src) - // called just as an item is picked up (loc is not yet changed) /obj/item/proc/pickup(mob/user) return @@ -231,38 +217,6 @@ if(istype(W, /obj/item/device/detective_scanner)) return -/obj/item/attack_self(mob/user as mob) - ..() - if(twohanded) - if(wielded) //Trying to unwield it - wielded = 0 - force = force_unwielded - src.name = "[initial(name)] (Unwielded)" - src.update_icon() //If needed by the particular item - user << "\blue You are now carrying the [initial(name)] with one hand." - - if(istype(user.get_inactive_hand(),/obj/item/weapon/offhand)) - del user.get_inactive_hand() - return - else //Trying to wield it - if(user.get_inactive_hand()) - user << "\red You need your other hand to be empty" - return - wielded = 1 - force = force_wielded - src.name = "[initial(name)] (Wielded)" - src.update_icon() //If needed by the particular item - user << "\blue You grab the [initial(name)] with both hands." - - var/obj/item/weapon/offhand/O = new /obj/item/weapon/offhand(user) ////Let's reserve his other hand~ - O.name = text("[initial(src.name)] - Offhand") - O.desc = "Your second grip on the [initial(src.name)]" - if(user.hand) - user.r_hand = O ///Place dat offhand in the opposite hand - else - user.l_hand = O - O.layer = 20 - return mob/proc/flash_weak_pain() flick("weak_pain",pain) diff --git a/code/game/objects/items/weapons/hydroponics.dm b/code/game/objects/items/weapons/hydroponics.dm index b80abcc2e8f..cce4a6efc76 100644 --- a/code/game/objects/items/weapons/hydroponics.dm +++ b/code/game/objects/items/weapons/hydroponics.dm @@ -149,7 +149,7 @@ Craftables (Cob pipes, potato batteries, pumpkinheads) /obj/item/weapon/reagent_containers/food/snacks/grown/pumpkin/attackby(obj/item/weapon/W as obj, mob/user as mob) ..() - if(istype(W, /obj/item/weapon/circular_saw) || istype(W, /obj/item/weapon/hatchet) || istype(W, /obj/item/weapon/fireaxe) || istype(W, /obj/item/weapon/kitchen/utensil/knife) || istype(W, /obj/item/weapon/melee/energy)) + if(istype(W, /obj/item/weapon/circular_saw) || istype(W, /obj/item/weapon/hatchet) || istype(W, /obj/item/weapon/twohanded/fireaxe) || istype(W, /obj/item/weapon/kitchen/utensil/knife) || istype(W, /obj/item/weapon/melee/energy)) user.show_message("You carve a face into [src]!", 1) new /obj/item/clothing/head/helmet/hardhat/pumpkinhead (user.loc) del(src) diff --git a/code/game/objects/items/weapons/twohanded.dm b/code/game/objects/items/weapons/twohanded.dm index 8350cbcf524..b39e32a55b9 100644 --- a/code/game/objects/items/weapons/twohanded.dm +++ b/code/game/objects/items/weapons/twohanded.dm @@ -2,27 +2,115 @@ ##################### TWO HANDED WEAPONS BE HERE~ -Agouri :3 ######## ####################################################################*/ -///General Offhand object properties/// +//Rewrote TwoHanded weapons stuff and put it all here. Just copypasta fireaxe to make new ones ~Carn +//This rewrite means we don't have two variables for EVERY item which are used only by a few weapons. +//It also tidies stuff up elsewhere. -////////////FIREAXE!////////////// +/obj/item/weapon/twohanded + var/wielded = 0 + var/force_unwielded = 0 + var/force_wielded = 0 +/obj/item/weapon/twohanded/proc/unwield() + wielded = 0 + force = force_unwielded + name = "[initial(name)]" + update_icon() -/obj/item/weapon/fireaxe/update_icon() //Currently only here to fuck with the on-mob icons. - icon_state = text("fireaxe[]",wielded) +/obj/item/weapon/twohanded/proc/wield() + wielded = 1 + force = force_wielded + name = "[initial(name)] (Wielded)" + update_icon() + +/obj/item/weapon/twohanded/dropped(mob/user as mob) + //handles unwielding a twohanded weapon when dropped as well as clearing up the offhand + //bit of a hack but it keeps other code pretty neat and with fewer conditionals + var/obj/item/weapon/twohanded/O + if(user) + if(user.l_hand) + O = user.l_hand + else + O = user.r_hand + if(O && istype(O)) + O.unwield() + return unwield() + +/obj/item/weapon/twohanded/update_icon() return -/obj/item/weapon/fireaxe/pickup(mob/user) - wielded = 0 - name = "Fire Axe (Unwielded)" +/obj/item/weapon/twohanded/pickup(mob/user) + unwield() -/obj/item/weapon/fireaxe/attack_self(mob/user as mob) +/obj/item/weapon/twohanded/attack_self(mob/user as mob) if( istype(user,/mob/living/carbon/monkey) ) - user << "\red It's too heavy for you to fully wield" + user << "It's too heavy for you to wield fully." return -//welp, all is good, now to see if he's trying do twohandedly wield it or unwield it - ..() + if(wielded) //Trying to unwield it + unwield() + user << "You are now carrying the [name] with one hand." -/obj/item/weapon/offhand/dropped(mob/user as mob) - del(src) \ No newline at end of file + var/obj/item/weapon/twohanded/offhand/O = user.get_inactive_hand() + if(O && istype(O)) + O.unwield() + return + + else //Trying to wield it + if(user.get_inactive_hand()) + user << "You need your other hand to be empty" + return + wield() + user << "You grab the [initial(name)] with both hands." + + var/obj/item/weapon/twohanded/offhand/O = new(user) ////Let's reserve his other hand~ + O.name = "[initial(name)] - offhand" + O.desc = "Your second grip on the [initial(name)]" + if(user.hand) + user.r_hand = O ///Place dat offhand in the opposite hand + else + user.l_hand = O + O.layer = 20 + return + +///////////OFFHAND/////////////// +/obj/item/weapon/twohanded/offhand + w_class = 5.0 + icon_state = "offhand" + name = "offhand" + + unwield() + del(src) + + wield() + del(src) + +////////////FIREAXE!////////////// +/obj/item/weapon/twohanded/fireaxe // DEM AXES MAN, marker -Agouri + icon_state = "fireaxe0" + name = "fire axe" + desc = "Truly, the weapon of a madman. Who would think to fight fire with an axe?" + force = 5 + w_class = 4.0 + flags = ONBACK + force_unwielded = 5 + force_wielded = 18 + +/obj/item/weapon/twohanded/fireaxe/update_icon() //Currently only here to fuck with the on-mob icons. + icon_state = "fireaxe[wielded]" + return + +/obj/item/weapon/twohanded/fireaxe/afterattack(atom/A as mob|obj|turf|area, mob/user as mob) + ..() + if(A && wielded && (istype(A,/obj/structure/window) || istype(A,/obj/structure/grille))) //destroys windows and grilles in one hit + if(istype(A,/obj/structure/window)) //should just make a window.Break() proc but couldn't bother with it + var/obj/structure/window/W = A + + new /obj/item/weapon/shard( W.loc ) + if(W.reinf) new /obj/item/stack/rods( W.loc) + + if (W.dir == SOUTHWEST) + new /obj/item/weapon/shard( W.loc ) + if(W.reinf) new /obj/item/stack/rods( W.loc) + del(A) \ No newline at end of file diff --git a/code/game/objects/weapons.dm b/code/game/objects/weapons.dm index c84aa9aa2fb..15c395310b6 100644 --- a/code/game/objects/weapons.dm +++ b/code/game/objects/weapons.dm @@ -203,17 +203,3 @@ for(var/mob/O in viewers(src, null)) O.show_message(text("\red The mousetrap is triggered by [A]."), 1) src.triggered(null) - -/obj/item/weapon/fireaxe/afterattack(atom/A as mob|obj|turf|area, mob/user as mob) - ..() - if(A && wielded && (istype(A,/obj/structure/window) || istype(A,/obj/structure/grille))) //destroys windows and grilles in one hit - if(istype(A,/obj/structure/window)) //should just make a window.Break() proc but couldn't bother with it - var/obj/structure/window/W = A - - new /obj/item/weapon/shard( W.loc ) - if(W.reinf) new /obj/item/stack/rods( W.loc) - - if (W.dir == SOUTHWEST) - new /obj/item/weapon/shard( W.loc ) - if(W.reinf) new /obj/item/stack/rods( W.loc) - del(A) \ No newline at end of file diff --git a/code/game/throwing.dm b/code/game/throwing.dm index 9560bed0efd..a879f031c3c 100644 --- a/code/game/throwing.dm +++ b/code/game/throwing.dm @@ -33,19 +33,6 @@ if(!item) return - if(istype(item,/obj/item)) - var/obj/item/IT = item - if(IT.twohanded) - if(IT.wielded) - if(hand) - var/obj/item/weapon/offhand/O = r_hand - del O - else - var/obj/item/weapon/offhand/O = l_hand - del O - - IT.wielded = 0 - IT.name = initial(IT.name) u_equip(item) diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index b8f1f19aa71..b12ab65dec4 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -663,8 +663,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that W.registered_name = M.real_name M.equip_if_possible(W, M.slot_wear_id) - var/obj/item/weapon/fireaxe/fire_axe = new(M) - fire_axe.name = "Fire Axe (Unwielded)" + var/obj/item/weapon/twohanded/fireaxe/fire_axe = new(M) M.equip_if_possible(fire_axe, M.slot_r_hand) if("masked killer") @@ -679,8 +678,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that M.equip_if_possible(new /obj/item/weapon/kitchenknife(M), M.slot_l_store) M.equip_if_possible(new /obj/item/weapon/scalpel(M), M.slot_r_store) - var/obj/item/weapon/fireaxe/fire_axe = new(M) - fire_axe.name = "Fire Axe (Unwielded)" + var/obj/item/weapon/twohanded/fireaxe/fire_axe = new(M) M.equip_if_possible(fire_axe, M.slot_r_hand) for(var/obj/item/carried_item in M.contents) diff --git a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm index 52e422c6285..d7588011af1 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm @@ -783,7 +783,7 @@ In all, this is a lot like the monkey code. /N
Right Hand: [(r_hand ? text("[]", r_hand) : "Nothing")]
Head: [(head ? text("[]", head) : "Nothing")]
(Exo)Suit: [(wear_suit ? text("[]", wear_suit) : "Nothing")] -
Empty Pockets +
Empty Pouches
Close
"} user << browse(dat, text("window=mob[name];size=340x480")) diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 4ca82ab7435..cb42ba9b436 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -168,9 +168,9 @@ /mob/living/carbon/proc/swap_hand() var/obj/item/item_in_hand = src.get_active_hand() if(item_in_hand) //this segment checks if the item in your hand is twohanded. - if(item_in_hand.twohanded == 1) - if(item_in_hand.wielded == 1) - usr << text("Your other hand is too busy holding the []",item_in_hand.name) + if(istype(item_in_hand,/obj/item/weapon/twohanded)) + if(item_in_hand:wielded == 1) + usr << "Your other hand is too busy holding the [item_in_hand.name]" return src.hand = !( src.hand ) if (!( src.hand )) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 88191e94021..fceb3cce172 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -555,8 +555,8 @@ return if (!( W.flags & ONBACK )) return - if(W.twohanded && W.wielded) - usr << "Unwield the [initial(W.name)] first!" + if(istype(W,/obj/item/weapon/twohanded) && W:wielded) + usr << "Unwield the [initial(W.name)] first!" return u_equip(W) back = W @@ -1552,7 +1552,6 @@ /obj/effect/equip_e/human/process() if (item) item.add_fingerprint(source) - var/item_loc = 0 if (!item) switch(place) if("mask") @@ -1615,218 +1614,119 @@ //SN src = null del(src) return - else - switch(place) - if("mask") - if(target.wear_mask) - item_loc = 1 - if("l_hand") - if(target.l_hand) - item_loc = 1 - if("r_hand") - if(target.r_hand) - item_loc = 1 - if("gloves") - if(target.gloves) - item_loc = 1 - if("eyes") - if(target.glasses) - item_loc = 1 - if("l_ear") - if(target.l_ear) - item_loc = 1 - if("r_ear") - if(target.r_ear) - item_loc = 1 - if("head") - if(target.head) - item_loc = 1 - if("shoes") - if(target.shoes) - item_loc = 1 - if("belt") - if(target.belt) - item_loc = 1 - if("suit") - if(target.wear_suit) - item_loc = 1 - if("back") - if(target.back) - item_loc = 1 - if("uniform") - if(target.w_uniform) - item_loc = 1 - if("s_store") - if(target.s_store) - item_loc = 1 - if("h_store") - if(target.h_store) - item_loc = 1 - if("id") - if(target.wear_id) - item_loc = 1 - if("internal") - if (target.internal) - item_loc = 1 - if("handcuff") - if (target.handcuffed) - item_loc = 1 var/list/L = list( "syringe", "pill", "drink", "dnainjector", "fuel") - if (item && !L.Find(place) && !item_loc) + if ((item && !( L.Find(place) ))) if(isrobot(source) && place != "handcuff") del(src) return for(var/mob/O in viewers(target, null)) O.show_message(text("\red [] is trying to put \a [] on []", source, item, target), 1) else - if (place == "syringe") - for(var/mob/O in viewers(target, null)) - O.show_message(text("\red [] is trying to inject []!", source, target), 1) - else - if (place == "pill") - for(var/mob/O in viewers(target, null)) - O.show_message(text("\red [] is trying to force [] to swallow []!", source, target, item), 1) - else - if(place == "fuel") - for(var/mob/O in viewers(target, null)) - O.show_message(text("\red [source] is trying to force [target] to eat the [item:content]!"), 1) + var/message=null + switch(place) + if("syringe") + message = text("\red [] is trying to inject []!", source, target) + if("pill") + message = text("\red [] is trying to force [] to swallow []!", source, target, item) + if("fuel") + message = text("\red [source] is trying to force [target] to eat the [item:content]!") + if("drink") + message = text("\red [] is trying to force [] to swallow a gulp of []!", source, target, item) + if("dnainjector") + message = text("\red [] is trying to inject [] with the []!", source, target, item) + if("mask") + if(istype(target.wear_mask, /obj/item/clothing)&&!target.wear_mask:canremove) + message = text("\red [] fails to take off \a [] from []'s body!", source, target.wear_mask, target) else - if (place == "drink") + message = text("\red [] is trying to take off \a [] from []'s head!", source, target.wear_mask, target) +/* if("headset") + message = text("\red [] is trying to take off \a [] from []'s face!", source, target.w_radio, target) */ + if("l_hand") + message = text("\red [] is trying to take off \a [] from []'s left hand!", source, target.l_hand, target) + if("r_hand") + message = text("\red [] is trying to take off \a [] from []'s right hand!", source, target.r_hand, target) + if("gloves") + if(istype(target.gloves, /obj/item/clothing)&&!target.gloves:canremove) + message = text("\red [] fails to take off \a [] from []'s body!", source, target.gloves, target) + else + message = text("\red [] is trying to take off the [] from []'s hands!", source, target.gloves, target) + if("eyes") + if(istype(target.glasses, /obj/item/clothing)&&!target.glasses:canremove) + message = text("\red [] fails to take off \a [] from []'s body!", source, target.glasses, target) + else + message = text("\red [] is trying to take off the [] from []'s eyes!", source, target.glasses, target) + if("l_ear") + if(istype(target.l_ear, /obj/item/clothing)&&!target.l_ear:canremove) + message = text("\red [] fails to take off \a [] from []'s body!", source, target.l_ear, target) + else + message = text("\red [] is trying to take off the [] from []'s left ear!", source, target.l_ear, target) + if("r_ear") + if(istype(target.r_ear, /obj/item/clothing)&&!target.r_ear:canremove) + message = text("\red [] fails to take off \a [] from []'s body!", source, target.r_ear, target) + else + message = text("\red [] is trying to take off the [] from []'s right ear!", source, target.r_ear, target) + if("head") + if(istype(target.head, /obj/item/clothing)&&!target.head:canremove) + message = text("\red [] fails to take off \a [] from []'s body!", source, target.head, target) + else + message = text("\red [] is trying to take off the [] from []'s head!", source, target.head, target) + if("shoes") + if(istype(target.shoes, /obj/item/clothing)&&!target.shoes:canremove) + message = text("\red [] fails to take off \a [] from []'s body!", source, target.shoes, target) + else + message = text("\red [] is trying to take off the [] from []'s feet!", source, target.shoes, target) + if("belt") + message = text("\red [] is trying to take off the [] from []'s belt!", source, target.belt, target) + if("suit") + if(istype(target.wear_suit, /obj/item/clothing)&&!target.wear_suit:canremove) + message = text("\red [] fails to take off \a [] from []'s body!", source, target.wear_suit, target) + else + message = text("\red [] is trying to take off \a [] from []'s body!", source, target.wear_suit, target) + if("back") + message = text("\red [] is trying to take off \a [] from []'s back!", source, target.back, target) + if("handcuff") + message = text("\red [] is trying to unhandcuff []!", source, target) + if("uniform") + if(istype(target.w_uniform, /obj/item/clothing)&&!target.w_uniform:canremove) + message = text("\red [] fails to take off \a [] from []'s body!", source, target.w_uniform, target) + else + message = text("\red [] is trying to take off \a [] from []'s body!", source, target.w_uniform, target) + if("s_store") + message = text("\red [] is trying to take off \a [] from []'s suit!", source, target.s_store, target) + if("h_store") + message = text("\red [] is trying to empty []'s hat!", source, target) + if("pockets") + for(var/obj/item/weapon/mousetrap/MT in list(target.l_store, target.r_store)) + if(MT.armed) for(var/mob/O in viewers(target, null)) - O.show_message(text("\red [] is trying to force [] to swallow a gulp of []!", source, target, item), 1) - else - if (place == "dnainjector") - for(var/mob/O in viewers(target, null)) - O.show_message(text("\red [] is trying to inject [] with the []!", source, target, item), 1) - else - var/message = null - switch(place) - if("mask") - target.attack_log += text("\[[time_stamp()]\] Has had their mask removed by [source.name] ([source.ckey])") - source.attack_log += text("\[[time_stamp()]\] Attempted to remove [target.name]'s ([target.ckey]) mask") - if(istype(target.wear_mask, /obj/item/clothing)&&!target.wear_mask:canremove) - message = text("\red [] fails to take off \a [] from []'s body!", source, target.wear_mask, target) - else - message = text("\red [] is trying to take off \a [] from []'s head!", source, target.wear_mask, target) -/* if("headset") - message = text("\red [] is trying to take off \a [] from []'s face!", source, target.w_radio, target) */ - if("l_hand") - target.attack_log += text("\[[time_stamp()]\] Has had their left hand item removed by [source.name] ([source.ckey])") - source.attack_log += text("\[[time_stamp()]\] Attempted to remove [target.name]'s ([target.ckey]) left hand item") - message = text("\red [] is trying to take off \a [] from []'s left hand!", source, target.l_hand, target) - if("r_hand") - target.attack_log += text("\[[time_stamp()]\] Has had their right hand item removed by [source.name] ([source.ckey])") - source.attack_log += text("\[[time_stamp()]\] Attempted to remove [target.name]'s ([target.ckey]) right hand item") - message = text("\red [] is trying to take off \a [] from []'s right hand!", source, target.r_hand, target) - if("gloves") - target.attack_log += text("\[[time_stamp()]\] Has had their gloves removed by [source.name] ([source.ckey])") - source.attack_log += text("\[[time_stamp()]\] Attempted to remove [target.name]'s ([target.ckey]) gloves") - if(istype(target.gloves, /obj/item/clothing)&&!target.gloves:canremove) - message = text("\red [] fails to take off \a [] from []'s body!", source, target.gloves, target) - else - message = text("\red [] is trying to take off the [] from []'s hands!", source, target.gloves, target) - if("eyes") - target.attack_log += text("\[[time_stamp()]\] Has had their eyewear removed by [source.name] ([source.ckey])") - source.attack_log += text("\[[time_stamp()]\] Attempted to remove [target.name]'s ([target.ckey]) eyewear") - if(istype(target.glasses, /obj/item/clothing)&&!target.glasses:canremove) - message = text("\red [] fails to take off \a [] from []'s body!", source, target.glasses, target) - else - message = text("\red [] is trying to take off the [] from []'s eyes!", source, target.glasses, target) - if("l_ear") - target.attack_log += text("\[[time_stamp()]\] Has had their left ear item removed by [source.name] ([source.ckey])") - source.attack_log += text("\[[time_stamp()]\] Attempted to remove [target.name]'s ([target.ckey]) left ear item") - if(istype(target.l_ear, /obj/item/clothing)&&!target.l_ear:canremove) - message = text("\red [] fails to take off \a [] from []'s body!", source, target.l_ear, target) - else - message = text("\red [] is trying to take off the [] from []'s left ear!", source, target.l_ear, target) - if("r_ear") - target.attack_log += text("\[[time_stamp()]\] Has had their right ear item removed by [source.name] ([source.ckey])") - source.attack_log += text("\[[time_stamp()]\] Attempted to remove [target.name]'s ([target.ckey]) right ear item") - if(istype(target.r_ear, /obj/item/clothing)&&!target.r_ear:canremove) - message = text("\red [] fails to take off \a [] from []'s body!", source, target.r_ear, target) - else - message = text("\red [] is trying to take off the [] from []'s right ear!", source, target.r_ear, target) - if("head") - target.attack_log += text("\[[time_stamp()]\] Has had their hat removed by [source.name] ([source.ckey])") - source.attack_log += text("\[[time_stamp()]\] Attempted to remove [target.name]'s ([target.ckey]) hat") - if(istype(target.head, /obj/item/clothing)&&!target.head:canremove) - message = text("\red [] fails to take off \a [] from []'s body!", source, target.head, target) - else - message = text("\red [] is trying to take off the [] from []'s head!", source, target.head, target) - if("shoes") - target.attack_log += text("\[[time_stamp()]\] Has had their shoes removed by [source.name] ([source.ckey])") - source.attack_log += text("\[[time_stamp()]\] Attempted to remove [target.name]'s ([target.ckey]) shoes") - if(istype(target.shoes, /obj/item/clothing)&&!target.shoes:canremove) - message = text("\red [] fails to take off \a [] from []'s body!", source, target.shoes, target) - else - message = text("\red [] is trying to take off the [] from []'s feet!", source, target.shoes, target) - if("belt") - target.attack_log += text("\[[time_stamp()]\] Has had their belt item removed by [source.name] ([source.ckey])") - source.attack_log += text("\[[time_stamp()]\] Attempted to remove [target.name]'s ([target.ckey]) belt item") - message = text("\red [] is trying to take off the [] from []'s belt!", source, target.belt, target) - if("suit") - target.attack_log += text("\[[time_stamp()]\] Has had their suit removed by [source.name] ([source.ckey])") - source.attack_log += text("\[[time_stamp()]\] Attempted to remove [target.name]'s ([target.ckey]) suit") - if(istype(target.wear_suit, /obj/item/clothing)&&!target.wear_suit:canremove) - message = text("\red [] fails to take off \a [] from []'s body!", source, target.wear_suit, target) - else - message = text("\red [] is trying to take off \a [] from []'s body!", source, target.wear_suit, target) - if("back") - target.attack_log += text("\[[time_stamp()]\] Has had their back item removed by [source.name] ([source.ckey])") - source.attack_log += text("\[[time_stamp()]\] Attempted to remove [target.name]'s ([target.ckey]) back item") - message = text("\red [] is trying to take off \a [] from []'s back!", source, target.back, target) - if("handcuff") - message = text("\red [] is trying to unhandcuff []!", source, target) - if("uniform") - target.attack_log += text("\[[time_stamp()]\] Has had their uniform removed by [source.name] ([source.ckey])") - source.attack_log += text("\[[time_stamp()]\] Attempted to remove [target.name]'s ([target.ckey]) uniform") - if(istype(target.w_uniform, /obj/item/clothing)&&!target.w_uniform:canremove) - message = text("\red [] fails to take off \a [] from []'s body!", source, target.w_uniform, target) - else - message = text("\red [] is trying to take off \a [] from []'s body!", source, target.w_uniform, target) - if("s_store") - message = text("\red [] is trying to take off \a [] from []'s suit!", source, target.s_store, target) - if("h_store") - message = text("\red [] is trying to empty []'s hat!", source, target) - if("pockets") - target.attack_log += text("\[[time_stamp()]\] Has had their pockets emptied by [source.name] ([source.ckey])") - source.attack_log += text("\[[time_stamp()]\] Attempted to empty [target.name]'s ([target.ckey]) pockets") - for(var/obj/item/weapon/mousetrap/MT in list(target.l_store, target.r_store)) - if(MT.armed) - for(var/mob/O in viewers(target, null)) - if(O == source) - O.show_message(text("\red You reach into the [target]'s pockets, but there was a live mousetrap in there!"), 1) - else - O.show_message(text("\red [source] reaches into [target]'s pockets and sets off a hidden mousetrap!"), 1) - target.u_equip(MT) - if (target.client) - target.client.screen -= MT - MT.loc = source.loc - MT.triggered(source, source.hand ? "l_hand" : "r_hand") - MT.layer = OBJ_LAYER - return - message = text("\red [] is trying to empty []'s pockets!!", source, target) - if("CPR") - if (target.cpr_time + 3 >= world.time) - //SN src = null - del(src) - return - message = text("\red [] is trying perform CPR on []!", source, target) - if("id") - target.attack_log += text("\[[time_stamp()]\] Has had their ID removed by [source.name] ([source.ckey])") - source.attack_log += text("\[[time_stamp()]\] Attempted to remove [target.name]'s ([target.ckey]) ID") - message = text("\red [] is trying to take off [] from []'s uniform!", source, target.wear_id, target) - if("internal") - target.attack_log += text("\[[time_stamp()]\] Has had their internals toggled by [source.name] ([source.ckey])") - source.attack_log += text("\[[time_stamp()]\] Attempted to toggle [target.name]'s ([target.ckey]) internals") - if (target.internal) - message = text("\red [] is trying to remove []'s internals", source, target) - else - message = text("\red [] is trying to set on []'s internals.", source, target) - else - for(var/mob/M in viewers(target, null)) - M.show_message(message, 1) + if(O == source) + O.show_message(text("\red You reach into the [target]'s pockets, but there was a live mousetrap in there!"), 1) + else + O.show_message(text("\red [source] reaches into [target]'s pockets and sets off a hidden mousetrap!"), 1) + target.u_equip(MT) + if (target.client) + target.client.screen -= MT + MT.loc = source.loc + MT.triggered(source, source.hand ? "l_hand" : "r_hand") + MT.layer = OBJ_LAYER + return + message = text("\red [] is trying to empty []'s pockets!!", source, target) + if("CPR") + if (target.cpr_time >= world.time + 3) + //SN src = null + del(src) + return + message = text("\red [] is trying perform CPR on []!", source, target) + if("id") + message = text("\red [] is trying to take off [] from []'s uniform!", source, target.wear_id, target) + if("internal") + if (target.internal) + message = text("\red [] is trying to remove []'s internals", source, target) + else + message = text("\red [] is trying to set on []'s internals.", source, target) + for(var/mob/M in viewers(target, null)) + M.show_message(message, 1) spawn( 40 ) done() return @@ -1846,7 +1746,7 @@ It can still be worn/put on as normal. if(source.loc != s_loc) return if(target.loc != t_loc) return if(LinkBlocked(s_loc,t_loc)) return - if(item && source.equipped() != item) return + if(item && source.equipped() != item) return if ((source.restrained() || source.stat)) return switch(place) if("mask") @@ -2856,4 +2756,4 @@ It can still be worn/put on as normal. else reset_view(0) remoteobserve = null - src.tkdisable = 0 + src.tkdisable = 0 diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index ca7176b713d..13c0be55400 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -191,28 +191,16 @@ var/obj/item/W = equipped() if (W) - if(W.twohanded) - if(W.wielded) - if(hand) - var/obj/item/weapon/offhand/O = r_hand - del O - else - var/obj/item/weapon/offhand/O = l_hand - del O - W.wielded = 0 //Kinda crude, but gets the job done with minimal pain -Agouri - W.name = "[initial(W.name)]" //name reset so people don't see world fireaxes with (unwielded) or (wielded) tags - W.update_icon() u_equip(W) if (client) client.screen -= W if (W) + W.layer = initial(W.layer) if(target) W.loc = target.loc else W.loc = loc W.dropped(src) - if (W) - W.layer = initial(W.layer) var/turf/T = get_turf(loc) if (istype(T)) T.Entered(W) @@ -235,7 +223,7 @@ return r_hand /mob/proc/get_inactive_hand() - if ( ! hand) + if (!hand) return l_hand else return r_hand From 9c40ed3e9f6f83f1c92029a3976b550605758b96 Mon Sep 17 00:00:00 2001 From: Ren Erthilo Date: Wed, 2 May 2012 23:58:53 +0100 Subject: [PATCH 05/19] TG: Fixing dem runtimes: Temp-fix for mob/say.dm It's being sent null from Tcomms, so I'll leave it to somebody with experience with that. Fix for items bein in your inventory and on the floor Fix to stop people pulling themselves and causing runtimes (lol) Fixes a bunch of stuff in the flash code. EMPs will now cause flashes to flash their holder. They don't runtime when flashing cadavers. They don't runtime when being EMPed. They will (hopefully) rev those select few buggy people who weren't getting reved previously. (I can't fix that totally without playing with a bunch of mind stuff) Fix for throwing nothing. :P Fix for removing tanks that don't exist from transfer valves. Revision: r3441 Author: elly1...@rocketmail.com --- code/defines/obj/storage.dm | 2 +- code/game/objects/items/robot_items.dm | 39 ++++++++++++++++++++++++-- code/game/objects/transfer_valve.dm | 36 ++++++++++++------------ code/game/throwing.dm | 2 +- code/modules/mob/mob.dm | 2 +- 5 files changed, 58 insertions(+), 23 deletions(-) diff --git a/code/defines/obj/storage.dm b/code/defines/obj/storage.dm index a6f20a1ba69..1c10c5abddc 100644 --- a/code/defines/obj/storage.dm +++ b/code/defines/obj/storage.dm @@ -601,7 +601,7 @@ /obj/item/stack/sheet/plasma, /obj/item/stack/sheet/uranium, /obj/item/stack/sheet/diamond, - /obj/item/stack/sheet/clown, +// /obj/item/stack/sheet/clown, /obj/item/stack/sheet/plasteel, /obj/item/stack/rods diff --git a/code/game/objects/items/robot_items.dm b/code/game/objects/items/robot_items.dm index e1a7ac7b123..30e18dc1777 100644 --- a/code/game/objects/items/robot_items.dm +++ b/code/game/objects/items/robot_items.dm @@ -144,12 +144,47 @@ user << "\red You cannot directly fill this object." return + + var/trans = 0 + if(ismob(target)) + if(istype(target , /mob/living/carbon/human)) + var/mob/living/carbon/human/victim = target + + var/obj/item/safe_thing = null + if( victim.wear_mask ) + if ( victim.wear_mask.flags & MASKCOVERSEYES ) + safe_thing = victim.wear_mask + if( victim.head ) + if ( victim.head.flags & MASKCOVERSEYES ) + safe_thing = victim.head + if(victim.glasses) + if ( !safe_thing ) + safe_thing = victim.glasses + + if(safe_thing) + if(!safe_thing.reagents) + safe_thing.create_reagents(100) + trans = src.reagents.trans_to(safe_thing, amount_per_transfer_from_this) + + for(var/mob/O in viewers(world.view, user)) + O.show_message(text("\red [] tries to squirt something into []'s eyes, but fails!", user, target), 1) + spawn(5) + src.reagents.reaction(safe_thing, TOUCH) + + + user << "\blue You transfer [trans] units of the solution." + if (src.reagents.total_volume<=0) + filled = 0 + icon_state = "dropper[filled]" + return + + for(var/mob/O in viewers(world.view, user)) - O.show_message(text("\red [] drips something onto []!", user, target), 1) + O.show_message(text("\red [] squirts something into []'s eyes!", user, target), 1) src.reagents.reaction(target, TOUCH) - var/trans = src.reagents.trans_to(target, amount_per_transfer_from_this) + trans = src.reagents.trans_to(target, amount_per_transfer_from_this) user << "\blue You transfer [trans] units of the solution." if (src.reagents.total_volume<=0) filled = 0 diff --git a/code/game/objects/transfer_valve.dm b/code/game/objects/transfer_valve.dm index 02619098249..39660bbbe6f 100644 --- a/code/game/objects/transfer_valve.dm +++ b/code/game/objects/transfer_valve.dm @@ -1,6 +1,6 @@ /obj/item/device/transfer_valve icon = 'assemblies.dmi' - name = "Tank transfer valve" // because that's what it is exadv1 and don't you dare change it + name = "tank transfer valve" icon_state = "valve_1" desc = "Regulates the transfer of air between two tanks" var/obj/item/weapon/tank/tank_one @@ -19,34 +19,34 @@ attackby(obj/item/item, mob/user) if(istype(item, /obj/item/weapon/tank)) if(tank_one && tank_two) - user << "\red There are already two tanks attached, remove one first!" + user << "There are already two tanks attached, remove one first." return if(!tank_one) tank_one = item user.drop_item() item.loc = src - user << "\blue You attach the tank to the transfer valve" + user << "You attach the tank to the transfer valve." else if(!tank_two) tank_two = item user.drop_item() item.loc = src - user << "\blue You attach the tank to the transfer valve!" + user << "You attach the tank to the transfer valve." update_icon() //TODO: Have this take an assemblyholder else if(isassembly(item)) var/obj/item/device/assembly/A = item if(A.secured) - user << "\red The device is secured!" + user << "The device is secured." return if(attached_device) - user << "\red There is already an device attached to the valve, remove it first!" + user << "There is already an device attached to the valve, remove it first." return user.remove_from_mob(item) attached_device = A A.loc = src - user << "\blue You attach the [item] to the valve controls and secure it!" + user << "You attach the [item] to the valve controls and secure it." A.holder = src A.toggle_secure() @@ -75,39 +75,39 @@ onclose(user, "trans_valve") return - + //CARN: MARKER Topic(href, href_list) ..() - if (usr.stat|| usr.restrained()) + if ( usr.stat || usr.restrained() ) return if (src.loc == usr) - if(href_list["tankone"]) + if(tank_one && href_list["tankone"]) split_gases() valve_open = 0 tank_one.loc = get_turf(src) tank_one = null update_icon() - if(href_list["tanktwo"]) + else if(tank_two && href_list["tanktwo"]) split_gases() valve_open = 0 tank_two.loc = get_turf(src) tank_two = null update_icon() - if(href_list["open"]) + else if(href_list["open"]) toggle_valve() - if(href_list["rem_device"]) - if(attached_device) + else if(attached_device) + if(href_list["rem_device"]) attached_device.loc = get_turf(src) attached_device:holder = null attached_device = null - update_icon() - if(href_list["device"]) - attached_device.attack_self(usr) + update_icon() + if(href_list["device"]) + attached_device.attack_self(usr) src.attack_self(usr) - src.add_fingerprint(usr) return + return process_activation(var/obj/item/device/D) if(toggle) diff --git a/code/game/throwing.dm b/code/game/throwing.dm index a879f031c3c..a4bd5323e4f 100644 --- a/code/game/throwing.dm +++ b/code/game/throwing.dm @@ -25,7 +25,7 @@ /mob/living/carbon/proc/throw_item(atom/target) src.throw_mode_off() - if(usr.stat) + if(usr.stat || !target) return if(target.type == /obj/screen) return diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 13c0be55400..07480addce1 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -742,7 +742,7 @@ set category = "IC" set src in oview(1) - if (!( usr )) + if ( !usr || usr==src || !istype(src.loc,/turf) ) //if there's no person pulling OR the person is pulling themself OR the object being pulled is inside something: abort! return if (!( anchored )) usr.pulling = src From 4fccc3506766cee088a9cd9d5fde45e4180db19e Mon Sep 17 00:00:00 2001 From: Ren Erthilo Date: Thu, 3 May 2012 00:40:47 +0100 Subject: [PATCH 06/19] =?UTF-8?q?TG:=20=E2=97=98The=20problem:=20People=20?= =?UTF-8?q?being=20able=20to=20move=20while=20resting/lying?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit â—˜What caused it: When a user decided to press "rest", a single variable, resting, was switched from 0 to 1. Through life.dm procs, when the handle_regular_status() proc saw the mob resting && his weakness being 0 or less, it would just give him 2 seconds of being-weak, through Weaken(2). Later on, the proc called update_canmove() to see if the guy had the ability to move due to weakness but also due to reagents/drugs/sleep etc. At every tick, this proc also reduced mob.weakness by 1. The chain that led to the problem was: â—‹User decides to rest â—‹resting is set to 1, handle_regular_status_updates() runs â—‹Proc sees that the user's resting var == 1. Does mob.weakness = 2 â—‹Proc handles weakness. mob.weakness -= 1. It is now 1. â—‹update_canmove() is blind to resting, though sees that there's weakness. Sets canmove to 0 â—‹Proc runs again the following second â—‹Proc sees user is resting. â—‹mob.weakness <= 0 fails, since it's 1 from the last run. Weakness stays at 1. â—‹Proc handles weakness, mob.weakness-=1. It is now 0. â—‹update_canmove() now sees that there's no weakness, and sets canmove to 1, even though the user is still resting & lying â—‹For a second, the user is able to roll around on his lying butt â—‹Proc runs again, giving Weaken(2) and disables movement again, and the circle repeats. â—˜How it got fixed: Made update_canmove() not blind to resting. I don't like this solution, as resting still equals weakening and there's wasted processing, albeit miniscule. I will try to work on something better. â—˜Sleep can now go over 1 again, some dumb shit did not realise this and led to sleep being weak as hell. You can now put people to permanent sleep through anaesthetic gasses and toxins. Deciding to sleep will put you out for 20. Deciding to faint will put you out for 10. Revision: r3442 Author: polyxenitopalidou --- code/modules/chemical/Chemistry-Reagents.dm | 20 +++++++++---------- .../living/carbon/alien/humanoid/humanoid.dm | 2 +- .../mob/living/carbon/alien/humanoid/life.dm | 2 +- .../mob/living/carbon/alien/larva/larva.dm | 2 +- .../mob/living/carbon/alien/larva/life.dm | 2 +- code/modules/mob/living/carbon/brain/life.dm | 2 +- code/modules/mob/living/carbon/carbon.dm | 6 +++--- code/modules/mob/living/carbon/human/emote.dm | 4 +++- code/modules/mob/living/carbon/human/life.dm | 4 ++-- code/modules/mob/living/carbon/monkey/life.dm | 2 +- code/modules/mob/say.dm | 4 +++- code/modules/mob/screen.dm | 8 ++++---- 12 files changed, 31 insertions(+), 27 deletions(-) diff --git a/code/modules/chemical/Chemistry-Reagents.dm b/code/modules/chemical/Chemistry-Reagents.dm index dbe506380c2..6a9bb90d841 100644 --- a/code/modules/chemical/Chemistry-Reagents.dm +++ b/code/modules/chemical/Chemistry-Reagents.dm @@ -436,7 +436,7 @@ datum if(15 to 25) M:drowsyness = max(M:drowsyness, 20) if(25 to INFINITY) - M.sleeping = 1 + M.sleeping += 1 M.adjustOxyLoss(-M.getOxyLoss()) M.SetWeakened(0) M.SetStunned(0) @@ -2446,7 +2446,7 @@ datum M:drowsyness = max(0,M:drowsyness-3) M:slurring = max(0, M:slurring-3) if(!M:sleeping_willingly) - M:sleeping = 0 + M:sleeping = max(0,M.sleeping - 2) if (M.bodytemperature < 310)//310 is the normal bodytemp. 310.055 M.bodytemperature = min(310, M.bodytemperature+5) M.make_jittery(1) @@ -2488,7 +2488,7 @@ datum M:drowsyness = max(0,M:drowsyness-3) M:slurring = max(0, M:slurring-3) if(!M:sleeping_willingly) - M:sleeping = 0 + M:sleeping = max(0,M.sleeping-2) if (M.bodytemperature > 310)//310 is the normal bodytemp. 310.055 M.bodytemperature = min(310, M.bodytemperature-5) M.make_jittery(1) @@ -2507,7 +2507,7 @@ datum M.dizziness = max(0,M.dizziness-2) M:drowsyness = max(0,M:drowsyness-1) if(!M:sleeping_willingly) - M:sleeping = 0 + M.sleeping = max(0,M.sleeping-2) if(M:getToxLoss() && prob(20)) M:adjustToxLoss(-1) if (M.bodytemperature > 310)//310 is the normal bodytemp. 310.055 @@ -2542,7 +2542,7 @@ datum M.dizziness +=5 M:drowsyness = 0 if(!M:sleeping_willingly) - M:sleeping = 0 + 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 @@ -2559,7 +2559,7 @@ datum on_mob_life(var/mob/living/M as mob) M:drowsyness = max(0,M:drowsyness-7) if(!M:sleeping_willingly) - M:sleeping = 0 + M:sleeping = max(0,M.sleeping-1) if (M.bodytemperature > 310) M.bodytemperature = max(310, M.bodytemperature-5) M.make_jittery(1) @@ -2779,7 +2779,7 @@ datum on_mob_life(var/mob/living/M as mob) M:drowsyness = max(0,M:drowsyness-7) if(!M:sleeping_willingly) - M:sleeping = 0 + M:sleeping = max(0,M.sleeping-2) if (M.bodytemperature > 310) M.bodytemperature = max(310, M.bodytemperature-5) M.make_jittery(1) @@ -3095,7 +3095,7 @@ datum M.dizziness = max(0,M.dizziness-5) M:drowsyness = max(0,M:drowsyness-3) if(!M:sleeping_willingly) - M:sleeping = 0 + M:sleeping = max(0,M.sleeping-2) if (M.bodytemperature > 310) M.bodytemperature = max(310, M.bodytemperature-5) ..() @@ -3112,7 +3112,7 @@ datum M.dizziness = max(0,M.dizziness-5) M:drowsyness = max(0,M:drowsyness-3) if(!M:sleeping_willingly) - M:sleeping = 0 + M:sleeping = max(0,M.sleeping-2) M.make_jittery(1) ..() return @@ -3128,7 +3128,7 @@ datum M.dizziness = max(0,M.dizziness-5) M:drowsyness = max(0,M:drowsyness-3) if(!M:sleeping_willingly) - M:sleeping = 0 + M:sleeping = max(0,M.sleeping - 2) if (M.bodytemperature > 310) M.bodytemperature = max(310, M.bodytemperature-5) ..() diff --git a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm index d7588011af1..e44e5937a06 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm @@ -741,7 +741,7 @@ In all, this is a lot like the monkey code. /N if ("help") if(!sleeping_willingly) - sleeping = 0 + sleeping = max(0,sleeping-5) resting = 0 AdjustParalysis(-3) AdjustStunned(-3) diff --git a/code/modules/mob/living/carbon/alien/humanoid/life.dm b/code/modules/mob/living/carbon/alien/humanoid/life.dm index 1388a1314c1..6356a385efe 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/life.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/life.dm @@ -380,7 +380,7 @@ src.drowsyness-- src.eye_blurry = max(2, src.eye_blurry) if (prob(5)) - src.sleeping = 1 + src.sleeping += 1 src.Paralyse(5) confused = max(0, confused - 1) diff --git a/code/modules/mob/living/carbon/alien/larva/larva.dm b/code/modules/mob/living/carbon/alien/larva/larva.dm index 252dc6349e7..3388ae322c6 100644 --- a/code/modules/mob/living/carbon/alien/larva/larva.dm +++ b/code/modules/mob/living/carbon/alien/larva/larva.dm @@ -490,7 +490,7 @@ if ("help") if(!sleeping_willingly) - sleeping = 0 + sleeping = max(0,sleeping-5) resting = 0 AdjustParalysis(-3) AdjustStunned(-3) diff --git a/code/modules/mob/living/carbon/alien/larva/life.dm b/code/modules/mob/living/carbon/alien/larva/life.dm index b975d969cbe..334676870a8 100644 --- a/code/modules/mob/living/carbon/alien/larva/life.dm +++ b/code/modules/mob/living/carbon/alien/larva/life.dm @@ -303,7 +303,7 @@ drowsyness-- eye_blurry = max(2, eye_blurry) if (prob(5)) - sleeping = 1 + sleeping += 1 Paralyse(5) confused = max(0, confused - 1) diff --git a/code/modules/mob/living/carbon/brain/life.dm b/code/modules/mob/living/carbon/brain/life.dm index 4106a1b0144..ac1fe5e7276 100644 --- a/code/modules/mob/living/carbon/brain/life.dm +++ b/code/modules/mob/living/carbon/brain/life.dm @@ -141,7 +141,7 @@ drowsyness-- eye_blurry = max(2, eye_blurry) if (prob(5)) - sleeping = 1 + sleeping += 1 Paralyse(5) confused = max(0, confused - 1) diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index cb42ba9b436..12af315a253 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -228,10 +228,10 @@ if (istype(src,/mob/living/carbon/human) && src:w_uniform) var/mob/living/carbon/human/H = src H.w_uniform.add_fingerprint(M) - src.sleeping = max(0,src.sleeping-5) if(!src.sleeping_willingly) - src.sleeping = 0 - src.resting = 0 + src.sleeping = max(0,src.sleeping-5) + if(src.sleeping == 0) + src.resting = 0 AdjustParalysis(-3) AdjustStunned(-3) AdjustWeakened(-3) diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm index 0eae0dd45d8..fc6980a7891 100644 --- a/code/modules/mob/living/carbon/human/emote.dm +++ b/code/modules/mob/living/carbon/human/emote.dm @@ -164,7 +164,9 @@ if ("faint") message = "[src] faints." - src.sleeping = 1 + if(src.sleeping) + return //Can't faint while asleep + src.sleeping += 10 //Short-short nap m_type = 1 if ("cough") diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 317e9824c8e..4d4b9e923c0 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -545,7 +545,7 @@ if(SA_pp > SA_para_min) // Enough to make us paralysed for a bit Paralyse(3) // 3 gives them one second to wake up and run away a bit! if(SA_pp > SA_sleep_min) // Enough to make us sleep as well - sleeping = max(sleeping, 4) + sleeping = max(src.sleeping+2, 10) else if(SA_pp > 0.01) // There is sleeping gas in their lungs, but only a little, so give them a bit of a warning if(prob(20) && isbreathing) spawn(0) emote(pick("giggle", "laugh")) @@ -819,7 +819,7 @@ drowsyness-- eye_blurry = max(2, eye_blurry) if (prob(5)) - sleeping = 1 + sleeping += 1 Paralyse(5) confused = max(0, confused - 1) diff --git a/code/modules/mob/living/carbon/monkey/life.dm b/code/modules/mob/living/carbon/monkey/life.dm index ab616822cee..64bad12d893 100644 --- a/code/modules/mob/living/carbon/monkey/life.dm +++ b/code/modules/mob/living/carbon/monkey/life.dm @@ -333,7 +333,7 @@ if(SA_pp > SA_para_min) // Enough to make us paralysed for a bit Paralyse(3) // 3 gives them one second to wake up and run away a bit! if(SA_pp > SA_sleep_min) // Enough to make us sleep as well - src.sleeping = max(src.sleeping, 2) + src.sleeping = max(src.sleeping+2, 10) else if(SA_pp > 0.01) // There is sleeping gas in their lungs, but only a little, so give them a bit of a warning if(prob(20)) spawn(0) emote(pick("giggle", "laugh")) diff --git a/code/modules/mob/say.dm b/code/modules/mob/say.dm index f036910eef8..f8e9fb94320 100644 --- a/code/modules/mob/say.dm +++ b/code/modules/mob/say.dm @@ -52,6 +52,8 @@ return 0 /mob/proc/say_quote(var/text) + if(!text) + return "says, \"...\""; //not the best solution, but it will stop a large number of runtimes. The cause is somewhere in the Tcomms code var/ending = copytext(text, length(text)) if (src.disease_symptoms & DISEASE_HOARSE) return "rasps, \"[text]\""; @@ -63,7 +65,7 @@ return "gibbers, \"[text]\""; if (ending == "?") return "asks, \"[text]\""; - else if (ending == "!") + if (ending == "!") return "exclaims, \"[text]\""; return "says, \"[text]\""; diff --git a/code/modules/mob/screen.dm b/code/modules/mob/screen.dm index 07343b0c6c8..4cc9c33b0a5 100644 --- a/code/modules/mob/screen.dm +++ b/code/modules/mob/screen.dm @@ -439,13 +439,13 @@ usr.pulling = null if("sleep") if(usr.sleeping && usr.sleeping_willingly) - usr.sleeping = 0 - usr.sleeping_willingly = 0 + return else if(!usr.sleeping) - usr.sleeping = 1 + usr.sleeping = 20 //Short nap usr.sleeping_willingly = 1 if("rest") - usr.resting = !usr.resting + usr.resting = !( usr.resting ) + //kavala2 if("throw") if (!usr.stat && isturf(usr.loc) && !usr.restrained()) usr:toggle_throw_mode() From 2dfa1277601972c3e6d7eef02ba9fbbaa791344f Mon Sep 17 00:00:00 2001 From: Ren Erthilo Date: Thu, 3 May 2012 01:43:10 +0100 Subject: [PATCH 07/19] TG: Fixed a syringe gun runtime. Added WJohnston's silver head ID, and his new asteroid floor sprites. Revision: r3443 Author: petethegoat --- code/game/jobs/job_controller.dm | 4 +++- code/game/machinery/doors/airlock.dm | 6 +++++- code/modules/mining/mine_turfs.dm | 2 +- icons/mob/items_lefthand.dmi | Bin 121904 -> 122012 bytes icons/mob/items_righthand.dmi | Bin 122710 -> 123349 bytes icons/obj/card.dmi | Bin 4638 -> 5520 bytes 6 files changed, 9 insertions(+), 3 deletions(-) diff --git a/code/game/jobs/job_controller.dm b/code/game/jobs/job_controller.dm index 865baeee72d..baddec7c9c1 100644 --- a/code/game/jobs/job_controller.dm +++ b/code/game/jobs/job_controller.dm @@ -288,7 +288,9 @@ var/global/datum/controller/occupations/job_master switch(rank) if("Cyborg") return - if("Captain") + if( "Head of Personnel" || "Head of Security" || "Chief Engineer" || "Research Director" || "Chief Medical Officer") + C = new /obj/item/weapon/card/id/silver(H) + else if("Captain") C = new /obj/item/weapon/card/id/gold(H) else C = new /obj/item/weapon/card/id(H) diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 9d4dc815730..43efffddfd6 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -403,7 +403,7 @@ Airlock index -> wire color are { 9, 4, 6, 7, 5, 8, 1, 2, 3 }. beingcrowbarred = 0 if( beingcrowbarred && (density && welded && !operating && src.p_open && (!src.arePowerSystemsOn() || stat & NOPOWER) && !src.locked) ) playsound(src.loc, 'Crowbar.ogg', 100, 1) - user.visible_message("[user] removes the electronics from the airlock assembly.", "You start to remove electronics into the airlock assembly.") + user.visible_message("[user] removes the electronics from the airlock assembly.", "You start to remove electronics from the airlock assembly.") if(do_after(user,40)) user << "\blue You removed the airlock electronics!" switch(src.doortype) @@ -415,6 +415,10 @@ Airlock index -> wire color are { 9, 4, 6, 7, 5, 8, 1, 2, 3 }. if(5) new/obj/structure/door_assembly/door_assembly_mai( src.loc ) if(6) new/obj/structure/door_assembly/door_assembly_ext( src.loc ) if(7) new/obj/structure/door_assembly/door_assembly_g( src.loc ) + if(14) new/obj/structure/door_assembly/door_assembly_com/glass( src.loc ) + if(15) new/obj/structure/door_assembly/door_assembly_eng/glass( src.loc ) //issue 301 -mysthic + if(16) new/obj/structure/door_assembly/door_assembly_sec/glass( src.loc ) + if(17) new/obj/structure/door_assembly/door_assembly_med/glass( src.loc ) var/obj/item/weapon/airlock_electronics/ae if (!electronics) ae = new/obj/item/weapon/airlock_electronics( src.loc ) diff --git a/code/modules/mining/mine_turfs.dm b/code/modules/mining/mine_turfs.dm index 08755336fd5..c06fd1cd656 100644 --- a/code/modules/mining/mine_turfs.dm +++ b/code/modules/mining/mine_turfs.dm @@ -284,7 +284,7 @@ // seedName = pick(list("1","2","3","4")) // seedAmt = rand(1,4) if(prob(20)) - icon_state = "asteroid[rand(0,8)]" + icon_state = "asteroid[rand(0,12)]" spawn(2) updateMineralOverlays() diff --git a/icons/mob/items_lefthand.dmi b/icons/mob/items_lefthand.dmi index c6dc652a5c68350ab9ee1e35f963b80940d22979..6752e147da9460d0c0159334b38eed7cde27be3c 100644 GIT binary patch delta 23938 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 diff --git a/icons/mob/items_righthand.dmi b/icons/mob/items_righthand.dmi index b1a1f0b1b60cfa10dd69a9ed2845ad9e4a49e319..56e463931249c9d67197d39b2db3bd097d0e07a9 100644 GIT binary patch delta 23449 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 delta 23855 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 diff --git a/icons/obj/card.dmi b/icons/obj/card.dmi index 7435036350c09438e5c53ee6ab553a0464e5be42..8660aeb3414d3751bb7d6414475e4b88ffcdd63c 100644 GIT binary patch literal 5520 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 literal 4638 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 Date: Thu, 3 May 2012 02:22:25 +0100 Subject: [PATCH 08/19] TG: Rewrote blackholes (gravitational anomalies) and wormholes to try and optimise them a little. If you have any concerns about how I've done so just give me a shout and I'll either rework them or revert my changes back. Wormholes especially seem a bit faster on my laptop. Smoke has temporarily been removed from the blackhole event until I get time to investigate why the hell effect_systems are using so much memory ( spark effects were using 40% of my processor a second ago D: ). To compensate this I made them a new sprite. Commented out the authentication system. It was the remnants of the old goon authentication stuff (or maybe even older) and wasn't actually used in our code at all (at least not in any useful way, it was merely called and short-circuited to 1, so all those if(authenticated) were totally pointless. This has removed 3 unused variables from every client, a bunch of unused variables from the config and two empty text files! Committed (as a config option) a feature requested by Apoc station. It causes a 'reply to' window to popup when an admin PMs a non-admin player. It's meant to grab their attention so they can't say "I didn't see your PM". It defaults to off. To turn it on just uncomment the #POPUP_ADMIN_PM line in config/config.txt Fixed a derp in isday where it was fetching the month instead of the day. Removed medal references from Gib() Removed the medal_hub global variables because they aren't used in any way shape or form. Revision: r3444 Author: elly1...@rocketmail.com Date: Apr 12, 2012 --- baystation12.dme | 1 + code/datums/configuration.dm | 17 +-- code/defines/client.dm | 5 + code/defines/global.dm | 2 - code/defines/obj/storage.dm | 2 +- code/game/cellautomata.dm | 2 - code/game/events/EventProcs/black_hole.dm | 141 +++++++++--------- code/game/events/EventProcs/wormholes.dm | 63 ++++++++ code/game/machinery/bots/mulebot.dm | 9 -- code/game/verbs/authorize.dm | 8 +- code/game/verbs/ooc.dm | 14 +- code/game/vote.dm | 2 +- code/modules/admin/admin.dm | 46 +++--- code/modules/admin/verbs/adminsay.dm | 4 +- code/modules/admin/verbs/atmosdebug.dm | 1 + code/modules/admin/verbs/deadsay.dm | 4 +- code/modules/admin/verbs/playsound.dm | 4 +- code/modules/admin/verbs/randomverbs.dm | 2 +- .../admin/verbs/striketeam_syndicate.dm | 3 +- .../living/carbon/alien/humanoid/humanoid.dm | 4 +- .../mob/living/carbon/alien/larva/larva.dm | 4 +- code/modules/mob/living/carbon/carbon.dm | 4 +- code/modules/mob/living/carbon/human/human.dm | 4 +- .../mob/living/carbon/monkey/monkey.dm | 8 + code/modules/mob/mob.dm | 8 +- code/modules/power/antimatter/fuel.dm | 2 +- 26 files changed, 208 insertions(+), 156 deletions(-) create mode 100644 code/game/events/EventProcs/wormholes.dm diff --git a/baystation12.dme b/baystation12.dme index 8eac216fe68..cc4c98ac73f 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -404,6 +404,7 @@ #include "code\game\events\EventProcs\ninja_equipment.dm" #include "code\game\events\EventProcs\space_ninja.dm" #include "code\game\events\EventProcs\spacevines.dm" +#include "code\game\events\EventProcs\wormholes.dm" #include "code\game\events\Events\AlienInfestation.dm" #include "code\game\events\Events\Appendicitis.dm" #include "code\game\events\Events\ElectricalStorm.dm" diff --git a/code/datums/configuration.dm b/code/datums/configuration.dm index 3cef703980d..59c5c6543d9 100644 --- a/code/datums/configuration.dm +++ b/code/datums/configuration.dm @@ -2,9 +2,6 @@ var/server_name = null // server name (for world name / status) var/server_suffix = 0 // generate numeric suffix based on server port - var/medal_hub = null // medal hub name - var/medal_password = null // medal hub password - var/log_ooc = 0 // log OOC channek var/log_access = 0 // log login/logout var/log_say = 0 // log client say @@ -211,12 +208,6 @@ if ("serversuffix") config.server_suffix = 1 - if ("medalhub") - config.medal_hub = value - - if ("medalpass") - config.medal_password = value - if ("hostedby") config.hostedby = value @@ -381,8 +372,8 @@ sqllogging = 1 else diary << "Unknown setting in configuration: '[name]'" - -/*/datum/configuration/proc/loadforumsql(filename) // -- TLE +/* +/datum/configuration/proc/loadforumsql(filename) // -- TLE var/text = file2text(filename) if (!text) @@ -433,8 +424,8 @@ if ("authenticatedgroup") forum_authenticated_group = value else - diary << "Unknown setting in configuration: '[name]'"*/ - + diary << "Unknown setting in configuration: '[name]'" +*/ /datum/configuration/proc/pick_mode(mode_name) // I wish I didn't have to instance the game modes in order to look up // their information, but it is the only way (at least that I know of). diff --git a/code/defines/client.dm b/code/defines/client.dm index d803c6a9e4a..499e7b3dbf4 100644 --- a/code/defines/client.dm +++ b/code/defines/client.dm @@ -14,6 +14,11 @@ //END Admin Things + //Key auth things +// authenticate = 0 +// var/authenticated = 0 +// var/authenticating = 0 + var/listen_ooc = 1 var/move_delay = 1 var/moving = null diff --git a/code/defines/global.dm b/code/defines/global.dm index 1fa0b55e9fe..24e128d0f9d 100644 --- a/code/defines/global.dm +++ b/code/defines/global.dm @@ -151,9 +151,7 @@ var shuttlecoming = 0 join_motd = null - auth_motd = null rules = null - no_auth_motd = null forceblob = 0 custom_event_msg = null diff --git a/code/defines/obj/storage.dm b/code/defines/obj/storage.dm index 1c10c5abddc..be2e9bc8bda 100644 --- a/code/defines/obj/storage.dm +++ b/code/defines/obj/storage.dm @@ -332,7 +332,7 @@ /obj/item/weapon/storage/flashbang_kit name = "flashbangs (WARNING)" - desc = "WARNING: Do not use without reading these preautions!\nThese devices are extremely dangerous and can cause blindness or deafness if used incorrectly.\nThe chemicals contained in these devices have been tuned for maximal effectiveness and due to\nextreme safety precuaiotn shave been incased in a tamper-proof pack. DO NOT ATTEMPT TO OPEN\nFLASH WARNING: Do not use continually. Excercise extreme care when detonating in closed spaces.\n\tMake attemtps not to detonate withing range of 2 meters of the intended target. It is imperative\n\tthat the targets visit a medical professional after usage. Damage to eyes increases extremely per\n\tuse and according to range. Glasses with flash resistant filters DO NOT always work on high powered\n\tflash devices such as this. EXERCISE CAUTION REGARDLESS OF CIRCUMSTANCES\nSOUND WARNING: Do not use continually. Visit a medical professional if hearing is lost.\n\tThere is a slight chance per use of complete deafness. Exercise caution and restraint.\nSTUN WARNING: If the intended or unintended target is too close to detonation the resulting sound\n\tand flash have been known to cause extreme sensory overload resulting in temporary\n\tincapacitation.\nDO NOT USE CONTINUALLY\nOperating Directions:\n\t1. Pull detonnation pin. ONCE THE PIN IS PULLED THE GRENADE CAN NOT BE DISARMED!\n\t2. Throw grenade. NEVER HOLD A LIVE FLASHBANG\n\t3. The grenade will detonste 10 seconds hafter being primed. EXCERCISE CAUTION\n\t-Never prime another grenade until after the first is detonated\nNote: Usage of this pyrotechnic device without authorization is an extreme offense and can\nresult in severe punishment upwards of 10 years in prison per use.\n\nDefault 3 second wait till from prime to detonation. This can be switched with a screwdriver\nto 10 seconds.\n\nCopyright of Nanotrasen Industries- Military Armnaments Division\nThis device was created by Nanotrasen Labs a member of the Expert Advisor Corporation" + desc = "" icon_state = "flashbang" item_state = "syringe_kit" foldable = /obj/item/stack/sheet/cardboard //BubbleWrap diff --git a/code/game/cellautomata.dm b/code/game/cellautomata.dm index 5bf3b888a55..b05d22e526d 100644 --- a/code/game/cellautomata.dm +++ b/code/game/cellautomata.dm @@ -19,8 +19,6 @@ /world/proc/load_motd() join_motd = file2text("config/motd.txt") - auth_motd = file2text("config/motd-auth.txt") - no_auth_motd = file2text("config/motd-noauth.txt") /world/proc/load_rules() rules = file2text("config/rules.html") diff --git a/code/game/events/EventProcs/black_hole.dm b/code/game/events/EventProcs/black_hole.dm index 12d0a20f7df..bc69352df5c 100644 --- a/code/game/events/EventProcs/black_hole.dm +++ b/code/game/events/EventProcs/black_hole.dm @@ -2,86 +2,87 @@ name = "black hole" icon = 'objects.dmi' desc = "FUCK FUCK FUCK AAAHHH" - icon_state = "bhole2" - opacity = 0 + icon_state = "bhole3" + opacity = 1 unacidable = 1 density = 0 anchored = 1 - var/datum/effect/effect/system/harmless_smoke_spread/smoke - /obj/effect/bhole/New() - src.smoke = new /datum/effect/effect/system/harmless_smoke_spread() - src.smoke.set_up(5, 0, src) - src.smoke.attach(src) - src:life() + spawn(4) + controller() + +/obj/effect/bhole/proc/controller() + while(src) + + if(!isturf(loc)) + del(src) + return + + //DESTROYING STUFF AT THE EPICENTER + for(var/mob/living/M in orange(1,src)) + del(M) + for(var/obj/O in orange(1,src)) + del(O) + for(var/turf/simulated/ST in orange(1,src)) + ST.ReplaceWithSpace() + + sleep(6) + grav(10, 4, 10, 0 ) + sleep(6) + grav( 8, 4, 10, 0 ) + sleep(6) + grav( 9, 4, 10, 0 ) + sleep(6) + grav( 7, 3, 40, 1 ) + sleep(6) + grav( 5, 3, 40, 1 ) + sleep(6) + grav( 6, 3, 40, 1 ) + sleep(6) + grav( 4, 2, 50, 6 ) + sleep(6) + grav( 3, 2, 50, 6 ) + sleep(6) + grav( 2, 2, 75,25 ) + sleep(6) -/obj/effect/bhole/Bumped(atom/A) - if (istype(A,/mob/living)) - del(A) - else - A:ex_act(1.0) - -/obj/effect/bhole/proc/life() //Oh man , this will LAG - - if (prob(10)) - src.anchored = 0 - step(src,pick(alldirs)) - if (prob(30)) + //MOVEMENT + if( prob(50) ) + src.anchored = 0 step(src,pick(alldirs)) - src.anchored = 1 + src.anchored = 1 - for (var/atom/X in orange(9,src)) - if ((istype(X,/obj) || istype(X,/mob/living)) && prob(7)) - if (!X:anchored) - step_towards(X,src) +/obj/effect/bhole/proc/grav(var/r, var/ex_act_force, var/pull_chance, var/turf_removal_chance) + if(!isturf(loc)) //blackhole cannot be contained inside anything. Weird stuff might happen + del(src) + return + for(var/t = -r, t < r, t++) + affect_coord(x+t, y-r, ex_act_force, pull_chance, turf_removal_chance) + affect_coord(x-t, y+r, ex_act_force, pull_chance, turf_removal_chance) + affect_coord(x+r, y+t, ex_act_force, pull_chance, turf_removal_chance) + affect_coord(x-r, y-t, ex_act_force, pull_chance, turf_removal_chance) + return - for (var/atom/B in orange(7,src)) - if (istype(B,/obj)) - if (!B:anchored && prob(50)) - step_towards(B,src) - if(prob(10)) B:ex_act(3.0) +/obj/effect/bhole/proc/affect_coord(var/x, var/y, var/ex_act_force, var/pull_chance, var/turf_removal_chance) + //Get turf at coordinate + var/turf/T = locate(x, y, z) + if(isnull(T)) return + + //Pulling and/or ex_act-ing movable atoms in that turf + if( prob(pull_chance) ) + for(var/obj/O in T.contents) + if(O.anchored) + O.ex_act(ex_act_force) else - B:anchored = 0 - //step_towards(B,src) - //B:anchored = 1 - if(prob(10)) B:ex_act(3.0) - else if (istype(B,/turf)) - if (istype(B,/turf/simulated) && (prob(1) && prob(75))) - src.smoke.start() - B:ReplaceWithSpace() - else if (istype(B,/mob/living)) - step_towards(B,src) + step_towards(O,src) + for(var/mob/living/M in T.contents) + step_towards(M,src) - - for (var/atom/A in orange(4,src)) - if (istype(A,/obj)) - if (!A:anchored && prob(90)) - step_towards(A,src) - if(prob(30)) A:ex_act(2.0) - else - A:anchored = 0 - //step_towards(A,src) - //A:anchored = 1 - if(prob(30)) A:ex_act(2.0) - else if (istype(A,/turf)) - if (istype(A,/turf/simulated) && prob(1)) - src.smoke.start() - A:ReplaceWithSpace() - else if (istype(A,/mob/living)) - step_towards(A,src) - - - for (var/atom/D in orange(1,src)) - //if (hascall(D,"blackholed")) - // call(D,"blackholed")(null) - // continue - if (istype(D,/mob/living)) - del(D) - else - D:ex_act(1.0) - - spawn(17) - life() \ No newline at end of file + //Destroying the turf + if( T && istype(T,/turf/simulated) && prob(turf_removal_chance) ) + var/turf/simulated/ST = T + ST.ReplaceWithSpace() + return \ No newline at end of file diff --git a/code/game/events/EventProcs/wormholes.dm b/code/game/events/EventProcs/wormholes.dm new file mode 100644 index 00000000000..31a9b282005 --- /dev/null +++ b/code/game/events/EventProcs/wormholes.dm @@ -0,0 +1,63 @@ +/proc/wormhole_event() + spawn() + var/list/pick_turfs = list() + for(var/turf/simulated/floor/T in world) + if(T.z == 1) + pick_turfs += T + + if(pick_turfs.len) + //All ready. Announce that bad juju is afoot. + command_alert("Space-time anomalies detected on the station. There is no additional data.", "Anomaly Alert") + world << sound('spanomalies.ogg') + + //prob(20) can be approximated to 1 wormhole every 5 turfs! + //admittedly less random but totally worth it >_< + var/event_duration = 3000 //~5 minutes in ticks + var/number_of_selections = (pick_turfs.len/5)+1 //+1 to avoid division by zero! + var/sleep_duration = round( event_duration / number_of_selections ) + var/end_time = world.time + event_duration //the time by which the event should have ended + + var/increment = max(1,round(number_of_selections/50)) +// world << "DEBUG: number_of_selections: [number_of_selections] | sleep_duration: [sleep_duration]" + + var/i = 1 + while( 1 ) + + //we've run into overtime. End the event + if( end_time < world.time ) +// world << "DEBUG: we've run into overtime. End the event" + return + if( !pick_turfs.len ) +// world << "DEBUG: we've run out of turfs to pick. End the event" + return + + //loop it round + i += increment + i %= pick_turfs.len + i++ + + //get our enter and exit locations + var/turf/simulated/floor/enter = pick_turfs[i] + pick_turfs -= enter //remove it from pickable turfs list + if( !enter || !istype(enter) ) continue //sanity + + var/turf/simulated/floor/exit = pick(pick_turfs) + pick_turfs -= exit + if( !exit || !istype(exit) ) continue //sanity + + create_wormhole(enter,exit) + + sleep(sleep_duration) //have a well deserved nap! + + +//maybe this proc can even be used as an admin tool for teleporting players without ruining immulsions? +/proc/create_wormhole(var/turf/enter as turf, var/turf/exit as turf) + var/obj/effect/portal/P = new /obj/effect/portal( enter ) + P.target = exit + P.creator = null + P.icon = 'objects.dmi' + P.failchance = 0 + P.icon_state = "anom" + P.name = "wormhole" + spawn(rand(300,600)) + del(P) \ No newline at end of file diff --git a/code/game/machinery/bots/mulebot.dm b/code/game/machinery/bots/mulebot.dm index eb4135f4104..8db9eabe4a1 100644 --- a/code/game/machinery/bots/mulebot.dm +++ b/code/game/machinery/bots/mulebot.dm @@ -792,15 +792,6 @@ src.visible_message("\red [src] drives over [H]!") playsound(src.loc, 'splat.ogg', 50, 1) - /* - if(ismob(load)) - var/mob/M = load - if(M.reagents.has_reagent("beer")) - M.unlock_medal("DUI", 1) - if(M.reagents.has_reagent("space_drugs") && istype(H) && H.wear_id.assignment == "Security Officer") - M.unlock_medel("Ridin' Dirty",1) - */ - var/damage = rand(5,15) H.apply_damage(2*damage, BRUTE, "head") H.apply_damage(2*damage, BRUTE, "chest") diff --git a/code/game/verbs/authorize.dm b/code/game/verbs/authorize.dm index 5e2d59a6035..2129eb67d45 100644 --- a/code/game/verbs/authorize.dm +++ b/code/game/verbs/authorize.dm @@ -1,7 +1,4 @@ /* - -The old goon auth/beta code is here: - /client/proc/authorize() set name = "Authorize" @@ -45,8 +42,9 @@ The old goon auth/beta code is here: src << "Try again using the Authorize command, sometimes the server will hiccup and not correctly authorize." src << "\blue[no_auth_motd]" src.authenticating = 0 +*/ - +/* The old goon auth/beta code is here /client/proc/beta_tester_auth() set name = "Tester?" /*if(istester(src)) @@ -167,4 +165,4 @@ var/list/beta_tester_keylist goon_savefile() return 1 return 0 -*/ +*/ \ No newline at end of file diff --git a/code/game/verbs/ooc.dm b/code/game/verbs/ooc.dm index 4f8a60a2f93..9060defb328 100644 --- a/code/game/verbs/ooc.dm +++ b/code/game/verbs/ooc.dm @@ -12,7 +12,9 @@ /mob/verb/ooc(msg as text) set name = "OOC" //Gave this shit a shorter name so you only have to time out "ooc" rather than "ooc message" to use it --NeoFite set category = "OOC" - + if (IsGuestKey(src.key)) + src << "You are not authorized to communicate over these channels." + return msg = copytext(sanitize(msg), 1, MAX_MESSAGE_LEN) if(!msg) return @@ -36,17 +38,15 @@ for (var/client/C) if (src.client.holder && (!src.client.stealth || C.holder)) -// C << "OOC: [src.key]: [msg]" if (src.client.holder.rank == "Admin Observer") - C << "OOC: [src.key][src.client.stealth ? "/([src.client.fakekey])" : ""]: [msg]" + C << "OOC: [src.key][src.client.stealth ? "/([src.client.fakekey])" : ""]: [msg]" else if (src.client.holder.rank == "Retired Admin") - C << "OOC: [src.key][src.client.stealth ? "/([src.client.fakekey])" : ""]: [msg]" + C << "OOC: [src.key][src.client.stealth ? "/([src.client.fakekey])" : ""]: [msg]" else - C << "OOC: [src.key][src.client.stealth ? "/([src.client.fakekey])" : ""]: [msg]" + C << "OOC: [src.key][src.client.stealth ? "/([src.client.fakekey])" : ""]: [msg]" else if (C.listen_ooc) - C << "OOC: [src.client.stealth ? src.client.fakekey : src.key]: [msg]" - + C << "OOC: [src.client.stealth ? src.client.fakekey : src.key]: [msg]" /* /mob/verb/goonsay(msg as text) set name = "Goonsay" diff --git a/code/game/vote.dm b/code/game/vote.dm index f475c37f7a7..0c87858e845 100644 --- a/code/game/vote.dm +++ b/code/game/vote.dm @@ -408,7 +408,7 @@ for(var/mob/CM in world) if(CM.client) - if(config.vote_no_default || (config.vote_no_dead && CM.stat == 2)) + if( config.vote_no_default || (config.vote_no_dead && CM.stat == 2) ) CM.client.vote = "none" else CM.client.vote = "default" diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index 71811b312da..5897f2cded8 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -1049,6 +1049,16 @@ var/global/BSACooldown = 0 log_admin("[key_name(usr)] has sent [key_name(M)] to the thunderdome. (Observer.)") message_admins("[key_name_admin(usr)] has sent [key_name_admin(M)] to the thunderdome. (Observer.)", 1) +// if (href_list["adminauth"]) +// if ((src.rank in list( "Admin Candidate", "Temporary Admin", "Trial Admin", "Badmin", "Game Admin", "Game Master" ))) +// var/mob/M = locate(href_list["adminauth"]) +// if (ismob(M) && !M.client.authenticated && !M.client.authenticating) +// M.client.verbs -= /client/proc/authorize +// M.client.authenticated = text("admin/[]", usr.client.authenticated) +// log_admin("[key_name(usr)] authorized [key_name(M)]") +// message_admins("\blue [key_name_admin(usr)] authorized [key_name_admin(M)]", 1) +// M.client << text("You have been authorized by []", usr.key) + if (href_list["revive"]) if ((src.rank in list( "Trial Admin", "Badmin", "Game Admin", "Game Master" ))) var/mob/living/M = locate(href_list["revive"]) @@ -1904,30 +1914,16 @@ var/global/BSACooldown = 0 world << sound('granomalies.ogg') var/turf/T = pick(blobstart) var/obj/effect/bhole/bh = new /obj/effect/bhole( T.loc, 30 ) - spawn(rand(50, 300)) + spawn(rand(100, 600)) del(bh) - if("timeanomalies") - command_alert("Space-time anomalies detected on the station. There is no additional data.", "Anomaly Alert") - world << sound('spanomalies.ogg') - var/list/turfs = list( ) - var/turf/picked - for(var/turf/T in world) - if(T.z == 1 && istype(T,/turf/simulated/floor) && !istype(T,/turf/space)) - turfs += T - for(var/turf/T in world) - set background = 1 - if(prob(20) && T.z == 1 && istype(T,/turf/simulated/floor)) - spawn(50+rand(0,3000)) - picked = pick(turfs) - var/obj/effect/portal/P = new /obj/effect/portal( T ) - P.target = picked - P.creator = null - P.icon = 'objects.dmi' - P.failchance = 0 - P.icon_state = "anom" - P.name = "wormhole" - spawn(rand(300,600)) - del(P) + + if("timeanomalies") //dear god this code was awful :P Still needs further optimisation + feedback_inc("admin_secrets_fun_used",1) + feedback_add_details("admin_secrets_fun_used","STA") + //moved to its own dm so I could split it up and prevent the spawns copying variables over and over + //can be found in code\game\game_modes\events\wormholes.dm + wormhole_event() + if("goblob") //feedback_inc("admin_secrets_fun_used",1) //feedback_add_details("admin_secrets_fun_used","BL") @@ -2354,6 +2350,10 @@ var/global/BSACooldown = 0 var/dat = "Options for [M.key]" var/foo = " " if (ismob(M) && M.client) +// if(!M.client.authenticated && !M.client.authenticating) +// foo += text("Authorize | ") +// else +// foo += text("Authorized | ") foo += text("Promote/Demote | ") if(!istype(M, /mob/new_player)) if(!ismonkey(M)) diff --git a/code/modules/admin/verbs/adminsay.dm b/code/modules/admin/verbs/adminsay.dm index cff3f989427..92165d06a2f 100644 --- a/code/modules/admin/verbs/adminsay.dm +++ b/code/modules/admin/verbs/adminsay.dm @@ -3,8 +3,6 @@ set name = "Asay" //Gave this shit a shorter name so you only have to time out "asay" rather than "admin say" to use it --NeoFite set hidden = 1 - // All admins should be authenticated, but... what if? - if (!src.holder) src << "Only administrators may use this command." return @@ -24,7 +22,7 @@ for (var/mob/M in world) if (M.client && M.client.holder) if (src.holder.rank == "Admin Observer") - M << "ADMIN: [key_name(usr, M)]: [msg]" + M << "ADMIN: [key_name(usr, M)]: [msg]" else M << "ADMIN: [key_name(usr, M)] (JMP): [msg]" diff --git a/code/modules/admin/verbs/atmosdebug.dm b/code/modules/admin/verbs/atmosdebug.dm index 84910af33cb..7e4cb2efaaa 100644 --- a/code/modules/admin/verbs/atmosdebug.dm +++ b/code/modules/admin/verbs/atmosdebug.dm @@ -4,6 +4,7 @@ if(!src.holder) src << "Only administrators may use this command." return + //feedback_add_details("admin_verb","CP") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! for (var/obj/machinery/atmospherics/plumbing in world) if (plumbing.nodealert) diff --git a/code/modules/admin/verbs/deadsay.dm b/code/modules/admin/verbs/deadsay.dm index 3d76105f862..6fc867c966e 100644 --- a/code/modules/admin/verbs/deadsay.dm +++ b/code/modules/admin/verbs/deadsay.dm @@ -23,4 +23,6 @@ if (istype(M, /mob/new_player)) continue if (M.stat == 2 || (M.client && M.client.holder && M.client.deadchat)) //admins can toggle deadchat on and off. This is a proc in admin.dm and is only give to Administrators and above - M.show_message(rendered, 2) \ No newline at end of file + M.show_message(rendered, 2) + + //feedback_add_details("admin_verb","D") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! \ No newline at end of file diff --git a/code/modules/admin/verbs/playsound.dm b/code/modules/admin/verbs/playsound.dm index 48210e226a7..4ca0125f63a 100644 --- a/code/modules/admin/verbs/playsound.dm +++ b/code/modules/admin/verbs/playsound.dm @@ -31,6 +31,7 @@ else usr << "You already used up your jukebox monies this round!" del(uploaded_sound) + //feedback_add_details("admin_verb","PGS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/play_local_sound(S as sound) @@ -46,6 +47,7 @@ message_admins("[key_name_admin(src)] played a local sound [S]", 1) playsound(get_turf_loc(src.mob), S, 50, 0, 0) return + //feedback_add_details("admin_verb","PLS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /* @@ -62,7 +64,7 @@ for(var/mob/living/carbon/human/CP in world) if(CP.real_name=="Cuban Pete" && CP.key!="Rosham") CP << "Your body can't contain the rhumba beat" - CP.gib(1) + CP.gib() /client/proc/bananaphone() diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index d16e9aa2a84..25d225bb920 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -907,7 +907,7 @@ Traitors and the like can also be revived with the previous role mostly intact. config.allow_random_events = 0 usr << "Random events disabled" message_admins("Admin [key_name_admin(usr)] has disabled random events.", 1) - feedback_add_details("admin_verb","TRE") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + //feedback_add_details("admin_verb","TRE") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/rnd_check_designs() set category = "Debug" diff --git a/code/modules/admin/verbs/striketeam_syndicate.dm b/code/modules/admin/verbs/striketeam_syndicate.dm index a07c3860937..8f4a15d6f72 100644 --- a/code/modules/admin/verbs/striketeam_syndicate.dm +++ b/code/modules/admin/verbs/striketeam_syndicate.dm @@ -37,7 +37,6 @@ var/global/sent_syndicate_strike_team = 0 if (emergency_shuttle.direction == 1 && emergency_shuttle.online == 1) emergency_shuttle.recall() - world << "\blue Alert: The shuttle is going back!" var/syndicate_commando_number = syndicate_commandos_possible //for selecting a leader var/syndicate_leader_selected = 0 //when the leader is chosen. The last person spawned. @@ -145,7 +144,7 @@ var/global/sent_syndicate_strike_team = 0 camera.c_tag = real_name var/obj/item/device/radio/R = new /obj/item/device/radio/headset(src) - R.set_frequency(NUKE_FREQ) //Same frequency as the syndicate team in Nuke mode. + R.set_frequency(NUKE_FREQ) //Same frequency as the syndicate team in Nuke mode. DMTG equip_if_possible(R, slot_ears) equip_if_possible(new /obj/item/clothing/under/syndicate(src), slot_w_uniform) equip_if_possible(new /obj/item/clothing/shoes/swat(src), slot_shoes) diff --git a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm index e44e5937a06..52fd1b1ac25 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm @@ -90,7 +90,7 @@ flick("flash", flash) // if (stat == 2 && client) -// gib(1) +// gib() // return // else if (stat == 2 && !client) @@ -105,7 +105,7 @@ switch (severity) if (1.0) b_loss += 500 - gib(1) + gib() return if (2.0) diff --git a/code/modules/mob/living/carbon/alien/larva/larva.dm b/code/modules/mob/living/carbon/alien/larva/larva.dm index 3388ae322c6..5e0a8156a7b 100644 --- a/code/modules/mob/living/carbon/alien/larva/larva.dm +++ b/code/modules/mob/living/carbon/alien/larva/larva.dm @@ -80,7 +80,7 @@ flick("flash", flash) /* if (stat == 2 && client) - gib(1) + gib() return else if (stat == 2 && !client) @@ -93,7 +93,7 @@ switch (severity) if (1.0) b_loss += 500 - gib(1) + gib() return if (2.0) diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 12af315a253..d61d24d29bf 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -35,7 +35,7 @@ if(prob(src.getBruteLoss() - 50)) src.gib() -/mob/living/carbon/gib(give_medal,ex_act) +/mob/living/carbon/gib() for(var/mob/M in src) if(M in src.stomach_contents) src.stomach_contents.Remove(M) @@ -43,7 +43,7 @@ for(var/mob/N in viewers(src, null)) if(N.client) N.show_message(text("\red [M] bursts out of [src]!"), 2) - . = ..(ex_act) + . = ..() /mob/living/carbon/attack_hand(mob/M as mob) if (M.hand) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index fceb3cce172..f6a90249965 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -335,7 +335,7 @@ // /obj/item/clothing/head/bomb_hood(src) /* if (stat == 2 && client) - gib(1) + gib() return else if (stat == 2 && !client) @@ -350,7 +350,7 @@ if (1.0) b_loss += 500 if (!prob(getarmor(null, "bomb"))) - gib(1,1) + gib() return else var/atom/target = get_edge_target_turf(src, get_dir(src, get_step_away(src, src))) diff --git a/code/modules/mob/living/carbon/monkey/monkey.dm b/code/modules/mob/living/carbon/monkey/monkey.dm index c3356f4d644..a39ff6a39d0 100644 --- a/code/modules/mob/living/carbon/monkey/monkey.dm +++ b/code/modules/mob/living/carbon/monkey/monkey.dm @@ -677,6 +677,14 @@ /mob/living/carbon/monkey/ex_act(severity) flick("flash", flash) +/* if (stat == 2 && client) + gib() + return + + if (stat == 2 && !client) + gibs(loc, viruses) + del(src) + return*/ switch(severity) if(1.0) if (stat != 2) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 07480addce1..346a318d3e2 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -840,9 +840,9 @@ for(var/mob/M in viewers()) M.see(message) -//This is the proc for gibbing a mob. Cannot gib ghosts. Removed the medal reference, +//This is the proc for gibbing a mob. Cannot gib ghosts. //added different sort of gibs and animations. N -/mob/proc/gib(var/ex_act = 0) +/mob/proc/gib() if (istype(src, /mob/dead/observer)) gibs(loc, viruses) @@ -901,10 +901,6 @@ Currently doesn't work, but should be useful later or at least as a template else gibs(loc, viruses, dna) sleep(15) - for(var/obj/item/I in contents) - I.loc = get_turf(src) - if(ex_act) - I.ex_act(ex_act) del(src) /* diff --git a/code/modules/power/antimatter/fuel.dm b/code/modules/power/antimatter/fuel.dm index 2d6b279812b..71b22d32647 100644 --- a/code/modules/power/antimatter/fuel.dm +++ b/code/modules/power/antimatter/fuel.dm @@ -75,7 +75,7 @@ /obj/item/weapon/fuel/proc/injest(mob/M as mob) switch(content) if("Anti-Hydrogen") - M.gib(1) + M.gib() if("Hydrogen") M << "\blue You feel very light, as if you might just float away..." del(src) From 28df960bf1bd42aac6ade3a6c3b08f59561002a4 Mon Sep 17 00:00:00 2001 From: Ren Erthilo Date: Thu, 3 May 2012 02:28:43 +0100 Subject: [PATCH 09/19] TG: - pAI names now have a character limit and are sanitized - Removed duplicate drink checks Revision: r3446 Author: johnsonmt88 --- code/modules/chemical/Chemistry-Tools.dm | 8 ----- .../modules/mob/living/silicon/pai/recruit.dm | 31 ++++++++++++++++--- 2 files changed, 26 insertions(+), 13 deletions(-) diff --git a/code/modules/chemical/Chemistry-Tools.dm b/code/modules/chemical/Chemistry-Tools.dm index c19380ddd5d..bede9c678fe 100644 --- a/code/modules/chemical/Chemistry-Tools.dm +++ b/code/modules/chemical/Chemistry-Tools.dm @@ -3350,14 +3350,6 @@ icon_state = "cubalibreglass" name = "Cuba Libre" desc = "A classic mix of rum and cola." - if("irishcream") - icon_state = "irishcreamglass" - name = "Irish Cream" - desc = "It's cream, mixed with whiskey. What else would you expect from the Irish?" - if("cubalibre") - icon_state = "cubalibreglass" - name = "Cuba Libre" - desc = "A classic mix of rum and cola." if("b52") icon_state = "b52glass" name = "B-52" diff --git a/code/modules/mob/living/silicon/pai/recruit.dm b/code/modules/mob/living/silicon/pai/recruit.dm index 593a65f7686..32aa0cc312d 100644 --- a/code/modules/mob/living/silicon/pai/recruit.dm +++ b/code/modules/mob/living/silicon/pai/recruit.dm @@ -11,6 +11,8 @@ var/datum/paiController/paiController // Global handler for pAI candidates comments ready = 0 + + /datum/paiController var/list/pai_candidates = list() var/list/asked = list() @@ -42,20 +44,39 @@ var/datum/paiController/paiController // Global handler for pAI candidates if(href_list["new"]) var/datum/paiCandidate/candidate = locate(href_list["candidate"]) var/option = href_list["option"] + var/t = "" + var/maxNameLen = 26 + switch(option) if("name") - candidate.name = input("Enter a name for your pAI", "pAI Name", candidate.name) as text + t = input("Enter a name for your pAI", "pAI Name", candidate.name) as text + if(t) + candidate.name = copytext(sanitize(t),1,maxNameLen) if("desc") - candidate.description = input("Enter a description for your pAI", "pAI Description", candidate.description) as message + t = input("Enter a description for your pAI", "pAI Description", candidate.description) as message + if(t) + candidate.description = copytext(sanitize(t),1,MAX_MESSAGE_LEN) if("role") - candidate.role = input("Enter a role for your pAI", "pAI Role", candidate.role) as text + t = input("Enter a role for your pAI", "pAI Role", candidate.role) as text + if(t) + candidate.role = copytext(sanitize(t),1,MAX_MESSAGE_LEN) if("ooc") - candidate.comments = input("Enter any OOC comments", "pAI OOC Comments", candidate.comments) as message - + t = input("Enter any OOC comments", "pAI OOC Comments", candidate.comments) as message + if(t) + candidate.comments = copytext(sanitize(t),1,MAX_MESSAGE_LEN) if("save") candidate.savefile_save(usr) if("load") candidate.savefile_load(usr) + //In case people have saved unsanitized stuff. + if(candidate.name) + candidate.name = copytext(sanitize(candidate.name),1,maxNameLen) + if(candidate.description) + candidate.description = copytext(sanitize(candidate.description),1,MAX_MESSAGE_LEN) + if(candidate.role) + candidate.role = copytext(sanitize(candidate.role),1,MAX_MESSAGE_LEN) + if(candidate.comments) + candidate.comments = copytext(sanitize(candidate.comments),1,MAX_MESSAGE_LEN) if("submit") if(candidate) From 79c23b33c5c1a33781d3bb7e2dde9dbce17444a2 Mon Sep 17 00:00:00 2001 From: Ren Erthilo Date: Thu, 3 May 2012 02:52:03 +0100 Subject: [PATCH 10/19] TG: Fix to DNA so that if a power block lands on block 11, not all clones come out male. Change to robot restart module to make it clear the cyborg has to be healed before use. Revision: r3447 Author: VivianFoxfoot --- code/game/dna.dm | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/code/game/dna.dm b/code/game/dna.dm index f5339294fa8..25e0cd8ffa3 100644 --- a/code/game/dna.dm +++ b/code/game/dna.dm @@ -221,9 +221,17 @@ if (!output) output = "5" return output -/proc/isblockon(hnumber, bnumber) +/proc/isblockon(hnumber, bnumber , var/UI = 0) + var/temp2 temp2 = hex2num(hnumber) + + if(UI) + if(temp2 >= 2050) + return 1 + else + return 0 + if (bnumber == HULKBLOCK || bnumber == TELEBLOCK) if (temp2 >= 3500 + BLOCKADD) return 1 @@ -313,7 +321,7 @@ H.g_eyes = hex2num(getblock(structure,9,3)) H.b_eyes = hex2num(getblock(structure,10,3)) - if (isblockon(getblock(structure, 11,3),11)) + if (isblockon(getblock(structure, 11,3),11 , 1)) H.gender = FEMALE else H.gender = MALE From 18dcf1c0264a6120a2918de3c3e576af9f7e7f59 Mon Sep 17 00:00:00 2001 From: Ren Erthilo Date: Thu, 3 May 2012 02:54:13 +0100 Subject: [PATCH 11/19] TG: -Blenders can now be filled directly from plant bags. Chefs rejoice. -Couple of minor grammar fixes, so people aren't carving faces into "the the pumpkin" any longer. Revision: r3449 Author: VivianFoxfoot --- code/game/machinery/kitchen/blender.dm | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/code/game/machinery/kitchen/blender.dm b/code/game/machinery/kitchen/blender.dm index dc3c11d5c2d..db8aea9d7ab 100644 --- a/code/game/machinery/kitchen/blender.dm +++ b/code/game/machinery/kitchen/blender.dm @@ -65,10 +65,21 @@ the blender or the processor: Processor items are solid objects and Blender resu if(istype(O, /obj/item/weapon/reagent_containers/food/snacks)) //Will only blend food items. Add others in this else clause. user.drop_item() O.loc = src + user << "You drop the [O] into the blender." + else if (istype(O, /obj/item/weapon/plantbag)) //Allows plant bags to empty into the blender. + for (var/obj/item/weapon/reagent_containers/food/snacks/grown/G in O.contents) + O.contents -= G + G.loc = src + if(src.contents.len >= 10 || src.reagents.total_volume >= 80) //Sanity checking so the blender doesn't overfill + user << "You fill the blender to the brim." + break + if(src.contents.len < 10 && src.reagents.total_volume < 80) + user << "You empty the plant bag into the blender." else user << "That probably won't blend." return 0 + /obj/machinery/blender/verb/blend() //Blend shit. Note: In the actual blending loop, make sure it can't include the jug. set category = "Object" set name = "Turn Blender On" From e3229758efb726d9cf2fec567d5393ab40045d27 Mon Sep 17 00:00:00 2001 From: Ren Erthilo Date: Thu, 3 May 2012 02:56:55 +0100 Subject: [PATCH 12/19] TG: Adds an adminverb to quickly take control of a mob, mostly for testing Mech fabricator can no longer sync while it has a queue Fixes resisting out of cuffbuckling. Revision: r3449 Author: VivianFoxfoo --- code/modules/admin/verbs/debug.dm | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index b12ab65dec4..05a6c03c3f3 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -505,6 +505,24 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that H.update_clothing() else alert("Invalid mob") + //feedback_add_details("admin_verb","GFA") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + +/client/proc/cmd_assume_direct_control(var/mob/M in world) + set category = "Admin" + set name = "Assume direct control" + set desc = "Direct intervention" + + if(M.ckey) + if(alert("This mob is being controlled by [M.ckey]. Are you sure you wish to assume control of it? [M.ckey] will be made a ghost.",,"Yes","No") != "Yes") + return + else + var/mob/dead/observer/ghost = new/mob/dead/observer() + ghost.ckey = M.ckey; + var/mob/adminmob = src.mob + M.ckey = src.ckey; + if( isobserver(adminmob) ) + del(adminmob) + //feedback_add_details("admin_verb","ADC") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/cmd_admin_dress(var/mob/living/carbon/human/M in world) From d92495a2b06dc50d02e506e3066c1f8e7c01de87 Mon Sep 17 00:00:00 2001 From: Ren Erthilo Date: Thu, 3 May 2012 03:17:00 +0100 Subject: [PATCH 13/19] TG: Added the foundations of a special-day events system. It's a bit more robust, tidy and efficient than calling isDay everywhere. It defaults to disabled. It can be enabled by uncommenting ALLOW_HOLIDAYS in config/config.txt I've added no content just the foundations. All it does is give the station a holiday themed name and say "Happy [Holiday] Everybody!" at the round-start. Added a .Set Holiday verb for GM and GA Admins. I'd rather people didn't use it for now (there's not much point as there's no content yet anyway). It's mainly for bugtesting. Foundations are there to create holiday random events and round-start stuff so we can keep everything together. Check out code/game/gamemodes/events/holidays ! NOTE: This is intended for easter eggs! Little trinkets and such to make these days special. It IS NOT for spawning grief items and game-changing stuff. If you REALLY want to add stuff like that, please speak to the project heads. If it's used for spawning bullshit like poop or grief items I'll just remove my code. Thanks. Happy Friday 13th :) Other Fixes: Oxygen tanks no longer spam BEEPBEEPBEEPBEEP at everybody nearby. That only happens for the person holding them. Revision: r3450 Author: elly1...@rocketmail.com Date: Apr 13, 2012 --- baystation12.dme | 2 + code/datums/configuration.dm | 4 + code/defines/procs/station_name.dm | 49 ++++- code/game/cellautomata.dm | 1 + .../events/EventProcs/holidays/AprilFools.dm | 1 + .../events/EventProcs/holidays/Christmas.dm | 1 + .../game/events/EventProcs/holidays/Easter.dm | 1 + .../events/EventProcs/holidays/Holidays.dm | 178 ++++++++++++++++++ code/game/gamemodes/gameticker.dm | 2 + code/game/objects/tank.dm | 4 +- code/game/objects/tanks/emergency.dm | 5 +- code/modules/admin/admin_verbs.dm | 2 + config/config.txt | 3 + 13 files changed, 246 insertions(+), 7 deletions(-) create mode 100644 code/game/events/EventProcs/holidays/AprilFools.dm create mode 100644 code/game/events/EventProcs/holidays/Christmas.dm create mode 100644 code/game/events/EventProcs/holidays/Easter.dm create mode 100644 code/game/events/EventProcs/holidays/Holidays.dm diff --git a/baystation12.dme b/baystation12.dme index cc4c98ac73f..b6f36cb6811 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -31,6 +31,7 @@ #define FILE_DIR "code/game/asteroid" #define FILE_DIR "code/game/events" #define FILE_DIR "code/game/events/EventProcs" +#define FILE_DIR "code/game/events/EventProcs/holidays" #define FILE_DIR "code/game/events/Events" #define FILE_DIR "code/game/gamemodes" #define FILE_DIR "code/game/gamemodes/autotraitor" @@ -405,6 +406,7 @@ #include "code\game\events\EventProcs\space_ninja.dm" #include "code\game\events\EventProcs\spacevines.dm" #include "code\game\events\EventProcs\wormholes.dm" +#include "code\game\events\EventProcs\holidays\Holidays.dm" #include "code\game\events\Events\AlienInfestation.dm" #include "code\game\events\Events\Appendicitis.dm" #include "code\game\events\Events\ElectricalStorm.dm" diff --git a/code/datums/configuration.dm b/code/datums/configuration.dm index 59c5c6543d9..733fd925b41 100644 --- a/code/datums/configuration.dm +++ b/code/datums/configuration.dm @@ -285,6 +285,10 @@ if("popup_admin_pm") config.popup_admin_pm = 1 + + if("allow_holidays") + Holiday = 1 + if("useircbot") useircbot = 1 diff --git a/code/defines/procs/station_name.dm b/code/defines/procs/station_name.dm index 4e230f315e3..5b9fab8d86b 100644 --- a/code/defines/procs/station_name.dm +++ b/code/defines/procs/station_name.dm @@ -3,15 +3,60 @@ return station_name var/name = "NSS Exodus" +/* + var/random = rand(1,5) + var/name = "" - station_name = name + //Rare: Pre-Prefix + if (prob(10)) + name = pick("Imperium", "Heretical", "Cuban", "Psychic", "Elegant", "Common", "Uncommon", "Rare", "Unique", "Houseruled", "Religious", "Atheist", "Traditional", "Houseruled", "Mad", "Super", "Ultra", "Secret", "Top Secret", "Deep", "Death", "Zybourne", "Central", "Main", "Government", "Uoi", "Fat", "Automated", "Experimental", "Augmented") + station_name = name + " " + + // Prefix + switch(Holiday) + //get normal name + if(null,"",0) + name = pick("", "Stanford", "Dorf", "Alium", "Prefix", "Clowning", "Aegis", "Ishimura", "Scaredy", "Death-World", "Mime", "Honk", "Rogue", "MacRagge", "Ultrameens", "Safety", "Paranoia", "Explosive", "Neckbear", "Donk", "Muppet", "North", "West", "East", "South", "Slant-ways", "Widdershins", "Rimward", "Expensive", "Procreatory", "Imperial", "Unidentified", "Immoral", "Carp", "Ork", "Pete", "Control", "Nettle", "Aspie", "Class", "Crab", "Fist","Corrogated","Skeleton","Race", "Fatguy", "Gentleman", "Capitalist", "Communist", "Bear", "Beard", "Derp", "Space", "Spess", "Star", "Moon", "System", "Mining", "Neckbeard", "Research", "Supply", "Military", "Orbital", "Battle", "Science", "Asteroid", "Home", "Production", "Transport", "Delivery", "Extraplanetary", "Orbital", "Correctional", "Robot", "Hats", "Pizza") + if(name) + station_name += name + " " + + //For special days like christmas, easter, new-years etc ~Carn + if("Friday the 13th") + name = pick("Mike","Friday","Evil","Myers","Murder","Deathly","Stabby") + station_name += name + " " + random = 13 + else + //get the first word of the Holiday and use that + var/i = findtext(Holiday," ",1,0) + name = copytext(Holiday,1,i) + station_name += name + " " + + // Suffix + name = pick("Station", "Fortress", "Frontier", "Suffix", "Death-trap", "Space-hulk", "Lab", "Hazard","Spess Junk", "Fishery", "No-Moon", "Tomb", "Crypt", "Hut", "Monkey", "Bomb", "Trade Post", "Fortress", "Village", "Town", "City", "Edition", "Hive", "Complex", "Base", "Facility", "Depot", "Outpost", "Installation", "Drydock", "Observatory", "Array", "Relay", "Monitor", "Platform", "Construct", "Hangar", "Prison", "Center", "Port", "Waystation", "Factory", "Waypoint", "Stopover", "Hub", "HQ", "Office", "Object", "Fortification", "Colony", "Planet-Cracker", "Roost", "Fat Camp") + station_name += name + " " + + // ID Number + switch(random) + if(1) + station_name += "[rand(1, 99)]" + if(2) + station_name += pick("Alpha", "Beta", "Gamma", "Delta", "Epsilon", "Zeta", "Eta", "Theta", "Iota", "Kappa", "Lambda", "Mu", "Nu", "Xi", "Omicron", "Pi", "Rho", "Sigma", "Tau", "Upsilon", "Phi", "Chi", "Psi", "Omega") + if(3) + station_name += pick("II", "III", "IV", "V", "VI", "VII", "VIII", "IX", "X", "XI", "XII", "XIII", "XIV", "XV", "XVI", "XVII", "XVIII", "XIX", "XX") + if(4) + station_name += pick("Alpha", "Bravo", "Charlie", "Delta", "Echo", "Foxtrot", "Golf", "Hotel", "India", "Juliet", "Kilo", "Lima", "Mike", "November", "Oscar", "Papa", "Quebec", "Romeo", "Sierra", "Tango", "Uniform", "Victor", "Whiskey", "X-ray", "Yankee", "Zulu") + if(5) + station_name += pick("One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen") + if(13) + station_name += pick("13","XIII","Thirteen") +*/ if (config && config.server_name) world.name = "[config.server_name]: [name]" else world.name = "Baystation12" - return name + return station_name /proc/world_name(var/name) diff --git a/code/game/cellautomata.dm b/code/game/cellautomata.dm index b05d22e526d..5d5bbcc4d8a 100644 --- a/code/game/cellautomata.dm +++ b/code/game/cellautomata.dm @@ -88,6 +88,7 @@ if (config.usewhitelist) load_whitelist() LoadBansjob() + Get_Holiday() //~Carn, needs to be here when the station is named so :P src.update_status() makepowernets() diff --git a/code/game/events/EventProcs/holidays/AprilFools.dm b/code/game/events/EventProcs/holidays/AprilFools.dm new file mode 100644 index 00000000000..2b4a1008ff1 --- /dev/null +++ b/code/game/events/EventProcs/holidays/AprilFools.dm @@ -0,0 +1 @@ +//placeholder for holiday stuff \ No newline at end of file diff --git a/code/game/events/EventProcs/holidays/Christmas.dm b/code/game/events/EventProcs/holidays/Christmas.dm new file mode 100644 index 00000000000..2b4a1008ff1 --- /dev/null +++ b/code/game/events/EventProcs/holidays/Christmas.dm @@ -0,0 +1 @@ +//placeholder for holiday stuff \ No newline at end of file diff --git a/code/game/events/EventProcs/holidays/Easter.dm b/code/game/events/EventProcs/holidays/Easter.dm new file mode 100644 index 00000000000..2b4a1008ff1 --- /dev/null +++ b/code/game/events/EventProcs/holidays/Easter.dm @@ -0,0 +1 @@ +//placeholder for holiday stuff \ No newline at end of file diff --git a/code/game/events/EventProcs/holidays/Holidays.dm b/code/game/events/EventProcs/holidays/Holidays.dm new file mode 100644 index 00000000000..c9731d986b4 --- /dev/null +++ b/code/game/events/EventProcs/holidays/Holidays.dm @@ -0,0 +1,178 @@ +//Uncommenting ALLOW_HOLIDAYS in config.txt will enable Holidays +var/global/Holiday = null + +//Just thinking ahead! Here's the foundations to a more robust Holiday event system. +//It's easy as hell to add stuff. Just set Holiday to something using the switch (or something else) +//then use if(Holiday == "MyHoliday") to make stuff happen on that specific day only +//Please, Don't spam stuff up with easter eggs, I'd rather somebody just delete this than people cause +//the game to lag even more in the name of one-day content. + +////////////////////////////////////////////////////////////////////////////////////////////////////////// +//ALSO, MOST IMPORTANTLY: Don't add stupid stuff! Discuss bonus content with Project-Heads first please!// +////////////////////////////////////////////////////////////////////////////////////////////////////////// +// ~Carn + +//sets up the Holiday global variable. Shouldbe called on game configuration or something. +/proc/Get_Holiday() + if(!Holiday) return // Holiday stuff was not enabled in the config! + + Holiday = null // reset our switch now so we can recycle it as our Holiday name + + var/YY = text2num(time2text(world.timeofday, "YY")) // get the current year + var/MM = text2num(time2text(world.timeofday, "MM")) // get the current month + var/DD = text2num(time2text(world.timeofday, "DD")) // get the current day + + //Main switch. If any of these are too dumb/inappropriate, or you have better ones, feel free to change whatever + switch(MM) + if(1) //Jan + switch(DD) + if(1) Holiday = "New Year's Day" + + if(2) //Feb + switch(DD) + if(2) Holiday = "Groundhog Day" + if(14) Holiday = "Valentine's Day" + if(17) Holiday = "Random Acts of Kindness Day" + + if(3) //Mar + switch(DD) + if(17) Holiday = "St. Patrick's Day" + if(27) + if(YY == 16) + Holiday = "Easter" + if(31) + if(YY == 13) + Holiday = "Easter" + + if(4) //Apr + switch(DD) + if(1) + Holiday = "April Fool's Day" + if(YY == 18 && prob(50)) Holiday = "Easter" + if(5) + if(YY == 15) Holiday = "Easter" + if(14) Holiday = "Pi Day" + if(16) + if(YY == 17) Holiday = "Easter" + if(20) + Holiday = "Four-Twenty" + if(YY == 14 && prob(50)) Holiday = "Easter" + if(22) Holiday = "Earth Day" + + if(5) //May + switch(DD) + if(1) Holiday = "Labour Day" + if(4) Holiday = "FireFighter's Day" + if(12) Holiday = "Owl and Pussycat Day" //what a dumb day of observence...but we -do- have costumes already :3 + + if(6) //Jun + + if(7) //Jul + switch(DD) + if(1) Holiday = "Doctor's Day" + if(2) Holiday = "UFO Day" + if(8) Holiday = "Writer's Day" + if(30) Holiday = "Friendship Day" + + if(8) //Aug + switch(DD) + if(5) Holiday = "Beer Day" + + if(9) //Sep + switch(DD) + if(19) Holiday = "Talk-Like-a-Pirate Day" + if(28) Holiday = "Stupid-Questions Day" + + if(10) //Oct + switch(DD) + if(4) Holiday = "Animal's Day" + if(7) Holiday = "Smiling Day" + if(16) Holiday = "Boss' Day" + if(31) Holiday = "Halloween" + + if(11) //Nov + switch(DD) + if(1) Holiday = "Vegan Day" + if(13) Holiday = "Kindness Day" + if(19) Holiday = "Flowers Day" + if(21) Holiday = "Saying-'Hello' Day" + + if(12) //Dec + switch(DD) + if(10) Holiday = "Human-Rights Day" + if(14) Holiday = "Monkey Day" + if(22) Holiday = "Orgasming Day" //lol. These all actually exist + if(24) Holiday = "Christmas Eve" + if(25) Holiday = "Christmas" + if(26) Holiday = "Boxing Day" + if(31) Holiday = "New Year's Eve" + + if(!Holiday) + //Friday the 13th + if(DD == 13) + if(time2text(world.timeofday, "DDD") == "Fri") + Holiday = "Friday the 13th" + +//Allows GA and GM to set the Holiday variable +/client/proc/Set_Holiday(T as text|null) + set name = ".Set Holiday" + set category = "Fun" + set desc = "Force-set the Holiday variable to make the game think it's a certain day." + + if( !holder || !(holder.rank in list("Game Master","Game Admin")) ) + src << "Error: Set_Holiday: You hold insufficient rank to perform this action." + return + + if(!T) return + + Holiday = T + //get a new station name + station_name = null + station_name() + //update our hub status + world.update_status() +// Holiday_Game_Start() + + message_admins("\blue ADMIN: Event: [key_name(src)] force-set Holiday to \"[Holiday]\"") + log_admin("[key_name(src)] force-set Holiday to \"[Holiday]\"") + + +//Run at the start of a round +/proc/Holiday_Game_Start() + if(Holiday) + world << "and..." + world << "

Happy [Holiday] Everybody!

" + switch(Holiday) //special holidays + if("Easter") + //do easter stuff + if("Christmas ") + //do christmas stuff + else + //etc. you get what I'm getting at + return + +//Nested in the random events loop. Will be triggered every 2 minutes +/proc/Holiday_Random_Event() + switch(Holiday) //special holidays + + if("",null) //no Holiday today! Back to work! + return + + if("Easter") //I'll make this into some helper procs at some point +/* var/list/turf/simulated/floor/Floorlist = list() + for(var/turf/simulated/floor/T) + if(T.contents) + Floorlist += T + var/turf/simulated/floor/F = Floorlist[rand(1,Floorlist.len)] + Floorlist = null + var/obj/structure/closet/C = locate(/obj/structure/closet) in F + var/obj/item/weapon/reagent_containers/food/snacks/chocolateegg/wrapped/Egg + if( C ) Egg = new(C) + else Egg = new(F) +*/ +/* var/list/obj/containers = list() + for(var/obj/item/weapon/storage/S in world) + if(S.z != 1) continue + containers += S + + message_admins("\blue DEBUG: Event: Egg spawned at [Egg.loc] ([Egg.x],[Egg.y],[Egg.z])")*/ \ No newline at end of file diff --git a/code/game/gamemodes/gameticker.dm b/code/game/gamemodes/gameticker.dm index dc2fe2e28cd..bd97bd3dae8 100644 --- a/code/game/gamemodes/gameticker.dm +++ b/code/game/gamemodes/gameticker.dm @@ -113,6 +113,8 @@ var/datum/roundinfo/roundinfo = new() spawn(-1) world << "Enjoy the game!" world << sound('welcome.ogg') // Skie + //Holiday Round-start stuff ~Carn + Holiday_Game_Start() spawn() supply_ticker() // Added to kick-off the supply shuttle regenerating points -- TLE diff --git a/code/game/objects/tank.dm b/code/game/objects/tank.dm index 883234bdb9a..beaa3b21a08 100644 --- a/code/game/objects/tank.dm +++ b/code/game/objects/tank.dm @@ -33,9 +33,9 @@ examine() set src in usr ..() - if(air_contents.oxygen < 1) + if(air_contents.oxygen < 1 && loc==usr) usr << text("\red The meter on the [src.name] indicates you are almost out of air!") - playsound(usr, 'alert.ogg', 50, 1) + usr << sound('alert.ogg') /obj/item/weapon/tank/plasma diff --git a/code/game/objects/tanks/emergency.dm b/code/game/objects/tanks/emergency.dm index fbadf6fca8e..0d767fd2700 100644 --- a/code/game/objects/tanks/emergency.dm +++ b/code/game/objects/tanks/emergency.dm @@ -18,10 +18,9 @@ examine() set src in usr ..() - if(air_contents.oxygen < 0.4) + if(air_contents.oxygen < 0.2 && loc==usr) usr << text("\red The meter on the [src.name] indicates you are almost out of air!") - playsound(usr, 'alert.ogg', 50, 1) - + usr << sound('alert.ogg') /obj/item/weapon/tank/emergency_oxygen/engi icon_state = "emergency_engi" diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 38e63dea1b0..b275958f043 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -256,6 +256,7 @@ verbs += /client/proc/toggle_gravity_off verbs += /client/proc/toggle_random_events verbs += /client/proc/deadmin_self + verbs += /client/proc/Set_Holiday //Force-set a Holiday //verbs += /client/proc/cmd_mass_modify_object_variables --Merged with view variables //verbs += /client/proc/cmd_admin_explosion --Merged with view variables //verbs += /client/proc/cmd_admin_emp --Merged with view variables @@ -416,6 +417,7 @@ verbs -= /client/proc/deadmin_self verbs -= /client/proc/jumptocoord verbs -= /client/proc/everyone_random + verbs -= /client/proc/Set_Holiday verbs -= /client/proc/cmd_admin_change_custom_event verbs -= /client/proc/admin_invis verbs -= /client/proc/callprocgen diff --git a/config/config.txt b/config/config.txt index c5c4c3fc147..cd1e8601b4a 100644 --- a/config/config.txt +++ b/config/config.txt @@ -143,5 +143,8 @@ GUEST_JOBBAN 1 ## The intention is to make adminPMs more visible. (although I fnd popups annoying so this defaults to off) #POPUP_ADMIN_PM +## Remove the # to allow special 'Easter-egg' events on special holidays such as seasonal holidays and stuff like 'Talk Like a Pirate Day' :3 YAARRR +#ALLOW_HOLIDAYS + ##What address should banned people appeal ther ban at? Remember to escape the characters, if needed! # APPEAL_ADDRESS -->APPEAL ADDRESS HERE<-- \ No newline at end of file From d15bf5987e705d05342ada4b0a11ddf2f28af860 Mon Sep 17 00:00:00 2001 From: Ren Erthilo Date: Thu, 3 May 2012 03:25:42 +0100 Subject: [PATCH 14/19] TG: -The biogenerator is now more robust. It can dispense fertilizer in batches, and make simple leather items at a high cost. -Watermelon and pumpkin biomass lowered a bit so biomass isn't totally trivial to acquire. -Added more wood items for tower cap wood construction: Wooden doors and sandals. -Added plump helmet biscuits and mushroom soup to kitchen recipes. Revision: r3454 Author: d_h2...@yahoo.com Date: Apr 13, 2012 --- code/game/objects/mineral_doors.dm | 34 ++++++++++++++++++++++++- code/game/objects/stacks/wood.dm | 4 ++- code/modules/food/food.dm | 24 +++++++++++++++++ code/modules/food/recipes_microwave.dm | 13 ++++++++++ icons/obj/doors/mineral_doors.dmi | Bin 38583 -> 46003 bytes sound/effects/doorcreaky.ogg | Bin 0 -> 81565 bytes 6 files changed, 73 insertions(+), 2 deletions(-) create mode 100644 sound/effects/doorcreaky.ogg diff --git a/code/game/objects/mineral_doors.dm b/code/game/objects/mineral_doors.dm index 8e8f7cc6b88..4b562b50744 100644 --- a/code/game/objects/mineral_doors.dm +++ b/code/game/objects/mineral_doors.dm @@ -243,4 +243,36 @@ /obj/structure/mineral_door/transparent/diamond mineralType = "diamond" - hardness = 10 \ No newline at end of file + hardness = 10 + +/obj/structure/mineral_door/wood + mineralType = "wood" + hardness = 1 + + Open() + isSwitchingStates = 1 + playsound(loc, 'doorcreaky.ogg', 100, 1) + flick("[mineralType]opening",src) + sleep(10) + density = 0 + opacity = 0 + state = 1 + update_icon() + isSwitchingStates = 0 + + Close() + isSwitchingStates = 1 + playsound(loc, 'doorcreaky.ogg', 100, 1) + flick("[mineralType]closing",src) + sleep(10) + density = 1 + opacity = 1 + state = 0 + update_icon() + isSwitchingStates = 0 + + Dismantle(devastated = 0) + if(!devastated) + for(var/i = 1, i <= oreAmount, i++) + new/obj/item/stack/sheet/wood(get_turf(src)) + del(src) \ No newline at end of file diff --git a/code/game/objects/stacks/wood.dm b/code/game/objects/stacks/wood.dm index e7a0bdf5a62..40f4494721c 100644 --- a/code/game/objects/stacks/wood.dm +++ b/code/game/objects/stacks/wood.dm @@ -4,8 +4,10 @@ WOOD PLANKS */ var/global/list/datum/stack_recipe/wood_recipes = list ( \ + new/datum/stack_recipe("wooden sandals", /obj/item/clothing/shoes/sandal, 1), \ new/datum/stack_recipe("table parts", /obj/item/weapon/table_parts/wood, 2), \ - new/datum/stack_recipe("wooden barricade", /obj/structure/barricade/wooden, 5, time = 30, one_per_turf = 1, on_floor = 1),\ + new/datum/stack_recipe("wooden barricade", /obj/structure/barricade/wooden, 5, time = 30, one_per_turf = 1, on_floor = 1), \ + new/datum/stack_recipe("wooden door", /obj/structure/mineral_door/wood, 10, time = 20, one_per_turf = 1, on_floor = 1), \ ) /obj/item/stack/sheet/wood diff --git a/code/modules/food/food.dm b/code/modules/food/food.dm index 33322a3121a..b295e72b435 100644 --- a/code/modules/food/food.dm +++ b/code/modules/food/food.dm @@ -1417,6 +1417,30 @@ reagents.add_reagent("nutriment", 28) bitesize = 3 +/obj/item/weapon/reagent_containers/food/snacks/mushroomsoup + name = "chantrelle soup" + desc = "A delicious and hearty mushroom soup." + icon_state = "mushroomsoup" + trash = "snack_bowl" + New() + ..() + reagents.add_reagent("nutriment", 10) + bitesize = 3 + +/obj/item/weapon/reagent_containers/food/snacks/plumphelmetbiscuit + name = "plump helmet biscuit" + desc = "This is a finely-prepared plump helmet biscuit. The ingredients are exceptionally minced plump helmet, and well-minced dwarven wheat flour." + icon_state = "phelmbiscuit" + New() + ..() + if(prob(10)) + name = "exceptional plump helmet biscuit" + desc = "Microwave is taken by a fey mood! It has cooked an exceptional plump helmet biscuit!" + reagents.add_reagent("nutriment", 15) + bitesize = 2 + else + reagents.add_reagent("nutriment", 5) + bitesize = 2 /////////////////////////////////////////////////Sliceable//////////////////////////////////////// // All the food items that can be sliced into smaller bits like Meatbread and Cheesewheels diff --git a/code/modules/food/recipes_microwave.dm b/code/modules/food/recipes_microwave.dm index b6af2806eb4..e97a5720a93 100644 --- a/code/modules/food/recipes_microwave.dm +++ b/code/modules/food/recipes_microwave.dm @@ -1005,6 +1005,19 @@ ) result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pumpkinpie +/datum/recipe/plumphelmetbiscuit + items = list( + /obj/item/weapon/reagent_containers/food/snacks/flour, + /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/plumphelmet, + ) + result = /obj/item/weapon/reagent_containers/food/snacks/plumphelmetbiscuit + +/datum/recipe/mushroomsoup + reagents = list("water" = 5, "milk" = 5) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/chanterelle, + ) + result = /obj/item/weapon/reagent_containers/food/snacks/mushroomsoup ////////////////////////////////////////// // bs12 food port stuff diff --git a/icons/obj/doors/mineral_doors.dmi b/icons/obj/doors/mineral_doors.dmi index e1b4f9e75090553d63f0009f3cc7d3acbd2a2155..81c3b0e2e25ce747dd905bbfdf7c3e1a21d388ef 100644 GIT binary patch literal 46003 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 fHvm}rliYGTQ(`%+pY?so@uFgnC^_{#=SJnvB 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

H-2*dc(Trvq>X9|1J zrJn3?8bIs!V12i zsIiI&O{zrtEfLOxqGDBx9whWmH^ZkHQ=1a~8|9ImbY0Y|7;O+pea6Gj-S_I#g_Xfl z4^#NcuMMH!ek@*)xySaMN>B^D-C1)H_{0;bMCT-1l)li+#vOJv#Pn||7CbO?m~3pV z){g|}#Cz@^zJxjVQMvZt?@Hk9<`ctg>fanlm97uBwrK(#xTQIek_gDWYoEW=xn%nO zYWnT{9a*EyS0q?zr|aw-mds@W&aQ%VPlq3D(K9}K>B|f3z+3$DbU!QIUN+6Bo4i9sZ$8i4 z%dbQ>xo{sf{>mQl(dpMQsMXt8sxT@#&P8g}LuTv9Kj6{%?VieES2}Hb)l+Y}cdb*o zeE?@0s{cK6D^4}MC=)XN0KksjxrSZT?62K~WaO&>x%+(3pG8z}}{DI1*PO(Y9#$>WT zfJ58*AcD>lhGGQrE!DqBJXQQ~*U;?k-=cZ)Gzecboy@cFw%^pu4ieVdf%y(uZaj_1 zuLzB5DrGV8nl&}8Ko9c4hNaq1SZxo|Q~hwh5v7$cT?Ks|1to-kxcRKE5o+|a?Xr&+ z9mD+gp9^z(u7xh_ha~{#DufpZH}g(@pz>(rY4ruDouCRY<%KJxilV9m<~doc3gUPc z7gc3xT+>CRNpv$hOQcVC4^57s6)${VgX7Q+d}ULDRX$EpzC#-eNGyND8xU^XC%(C> zvuVP2Fh;IKZRWgY1Gar>V&ZhL;y`;Fou1s{V@dxg7(6#!FJB8p$(-cqtxwH`TYh-B zBb|6y(s+1Dj(uC>qE6*sHCE|+N*jYvnY+f|e$U>?*uaS_` z@k@S0A#Mw!{thnq1a>&Q4yxX&-Sg zxV(YVHU8glw_w>>yAjkT4AE$^&m%gcpW0=rT3XBo5YH)-$JD;�G+F@N)B8T|2Ai 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 literal 38583 zcmaHS2UOG9*1Zi;5Kuu-fuN#@NRc8SRY1T(mEJ{~AT1!hsR#&&5$PaZilO%=AT?4$ z550vDB|w1CLd*XK=gl|oec$`9<*ZrDHFI#ysXSL6>#|adAmbrAPxW8cCuIvk3o0K#gjX!{N#+_@5P zPGIR%(`V%;CtOlbP@TAU@pbIc`L}UNbvh=vc$80ezO0+Fjt*E~Md+U2iQ^561kw~L zOLblo(kynlP@j5lx+8&Ovgm?6mfuA*Pj3 z&j&LKtM4Ojqr-)zPs2)EWzObvX$-4rF;Y`l-e}>q@zq?m-sqb?8OAhD2rDH@he2ky zN!FvnV~O2yr#+0YVZW`7xfpvRBa$EUk^f`Ici*@UKuSIJ29 z%_j#b>Z7N*mxHONm*Otf)l`cWf6C+(O+sLvhZAMrto67phQ{+nRPYzORC-!XWS#1W zT6Of1cD2`qeXW#{{5=1W@G!y87-AjfUsCye`@VL+ibFP>!G*Phpv%Qj`IM_@&_)uq zoHnnBY4>dIqQMo7Epar`EQAZWeL;9Y6+OOo;T84wrCG3&2T3(Yk~V`MWOI2KWm(26 z#c~j;Sf-{%pL0ccvz|2BHHbmT)Kb1S;1oF090Rg~^v=%8o6fdTn=qQxpBxM_x}~O?w8IXq5oukz5z+vZbE&TLn$A?d_-fpbnD%f3Z* zqv=`WokH(qlX~wswm}@YT4s!Zo2%T!l{WibTm z+~nz9S`l+fBpXp;DX6|I3M(aAZ~2X)Ro9u7u}+Jx#3Il5=Vq?v1<`p7*%S@hm-O13 zu}KOzr9U+lh?sF0LRCRuIj>#AD$XPgjhN!}l9=MiFDm~7LP?mJeBb&daUh8lNB5+C zc7z5G{7UPS7q;madTppt9TxKh4|{E{y@?@4!77$=Y;Pg=yz@N<`I*Pxn%|kOpeH68 zw06?49rH9nxd;*w!>2f_u<<_hHqMkq^7C0Hkz9n+w@9#euzGH0#wfTdY4w2(ne+_r zB)5tR>tSJJyfTC}A)v~bH-i4HTSd9bYhKSf+eycto)0j8RyrpllB@W1JO!k8|FWOF z`cqcF=fW{&MQYPF-{IZPRYI2V<;xJr6dV z^tc>E%_S#|jl!D47E*6L<~G!WWp!ERju%3VP|EL^2aZ3Csvorh`-9QaX|Vb&fJBT5 zkzXFbaWha=)*(~v%vfq;w)D$F)U?XQS&QR^x6?P!e;r#<(_Rx+`PWrlZvmx3SbFI| z)obsYgNmxNg99uYt>#eitzwM9B~h|twkz%uS7w`+;ue)kXlN2&0#nR?Utr2u&vdF- z_oc9&UD;W9J9B?O$iGsSpfB$B4YBmlUXU!aYwz2`7S1v046)mT8b=6GKa3Np6p>ur zXIngCv$`_&M0` zpj@gdYCWTN7Gf@YSYrv!|`kg6p9AN|5IhbD}G9@ z>M4e+C5nRA+}vE$`cT=a8{WN&` zU+>bsb!w^Kouhvo$S-LTf`t>!p< z5VUN8Dxc-UXT`B}E|R$-h+71%Xb3`3N`!im58)W)x0mI&K*_UBXY3hF9Mr<(3X{I~ zu0$Nfdc_BES6Gkrv2~Cdp75;};HO}bBsPeo*v59HFD-NW4wh88HKs}BluhI#NwIlv znHc}t8)VzN{q1}G#BLaUPh;ZLx`kw#V-Wjk*p>0?66Terk`H>k)LMI~a%8Tx?dn^3 z{B)Ea9|><4Up{xkPgF!nIw(v%slOz2CiL5-fxRf|WHzx1CO;!_B}BmKsyhOj~Q zVay)MRUH5+Zf!iBIT@CG zEdSz`rdCc>pWkd6MWp)P zgLqlgruuCY-{o27a6-CMy1OP7>6UQ*hajAkG{xB{<{{9!&eHL(T{x$ek&V+$LiF_> zd@(rBH$?f3trV=B0#;V=c-Mt5&|oY(Tv{2K+xBtlXiaqditejXPJGWIM?T zDX&!LG28%>>le z`*_k8pHav-($s7qM+UBE;kh|n{|Wv^-Mi|J^W$@p@z``kBpTRXVyhEw0qp z2rFjALAp`i4~ns##U5E6Kj#p=NK^Ko+=X!2yr<0~HloZ^kW%#r5cxUi)}*4+exvFG zfQBM{7yXWf0+3ZyTXkMsBr<61(Ff*cxpk|nHw7>8GKGGZ;BP>7b*>EcU|a(Lsq==&A_ zOmd&Sbk@Z&IXSzEoH*(dTogAzLL%lCqlT+eCC|^ETva1fcX!!bKy6iN<*l{YMER{A z>;g!xU-GDS0`etNphh<=2V|%2Vcx3{P9?DEfcIU8bv#w_E|#d}T@m`(=zh-kk2M4z zhT0Eaj3RRtniHQw2KLY^QuWi7S*?NB`^)IB?oePev1}off#%qe-;n;8h-Dw$WMGopE0f4>Ux5ZMWj6`OZDtFY_aTlevZmRK|qU z#)KKG(@Fj)@6MUY%ZcfV^Tu@ou=tvH`@idDlt@qU(-hsXW>(tMbXEjpnlrom#T?Q- zsr+|}(C56q_NVApaWTBBZUzROb56raicQ6_NQ@do!0n9l^nnd9H@D+cUvyyFf&lCZ zCL^6op57}tkdlXXU~Y_po8-FhQI&h zZzo`Loc$YS?j}z!*9D>{ZkJ_LxV3i|UZ9n8O3R|A|7wo);)(H=Z)|`l0lrLsMlwalIiXC7qd&CgXF2R~_3JCT`Wkz;K%KA!CX#dI8oIoPR`GZ#NomNb1gIVE0e$W2lphIG}>Mu6-+kQ%!X#-T z%*O%yIsP6}1ic~o92>atZ&3KG6%z~nKY{W^9qAV}l~wA5*>>rIibA+59M-_jXnz8xTXh~1>?r4+y}$7b#6|C=Fkqfi!)m%5+VRT5 z20Rc5OOLBjE4fJ9+YfxNTtnVg@R-$e4+|0%_X~1hON-UWw!DzHCN?>vD2nrI414(` zo!Vr@+uB|U5?*yq@;UmkXLC2r@2l1M9rb?Op8_}bMs3de25k;%Q)~49s^;Btb?aro zbnfsVP7m0BQPj1sPqH=Ew3prqJ^$`cMm(vx&CqP}w*SY(0rmZi{R8QAU&o!=*nrWt ztsrJ52{tcPUI$KdN$=e|=SAR@Vf7&a%p>d^ApOHpE;dPuT_3D24DH*;*z+O`rI3JX z18u=-=vz03*JNxG?Z2O)BRt^n4E+Qdp4t$7&kML2w&Jo{FU!O) z9&7vop-BbN4v)!P0@0dYPiAO;&^bsaEBlZWg(EfrV*GxaFXjo$-LwU&%86Bv&YrFO z=X+h>m9{;^i>P_6fklb#){1k4dif0J&H1}@C`o%3FAe;^C~9R_69Ukc=9aJyb}qn9 ze=3I`8MWW$`R(gr|B+NzEZ|y_?z=zK3-45yY;;PWZ;47C6#7QSxDs07O(Q!UNMjmt zH1q_@UfOLj4QqyP!?etui((!`mnL`o!GAdZHTq}$%>Gbk# zjSY#|3+WO*NQHZwlbCM_s2&65tx^EZ)d^{bbob&x75866u8283C^6B{TIeLq=fkKs z)?LX`;LT_l;Z(;GDxxd2eF@>wbquz)=bq6KmTrMk856P;4Yc|Vbdt#Lq7s23@>GD1 z$)I2P4vY-La-t0lG z?|I3ANJHc1Q1^3u*ETNhUf6aYhf^4&ODieIUBq1Ni0Z<5J!q5W5qWVKbaY){SO{?h zG^&U(EG=M!n)ZDVnJOq~cunq{bO(josceF5W2Lc&4iEfSJiT7~YC zJqrZtXd&@=`sC^-%(C!a5iIQsX0^eMWbu{EAaXQd$*6786zNw?8qoKq)h6lEn`O7JU8+CW`+Sm4L5e0#sAj_FeDX>F*QiOBh$1X` zJp>InIf#H?!*ry+{9WC>-uwJA(>>Chzm>|+d5cpiD7a(E8bnL&G}3ff6X{8J zG)>*^1pZ@ZzYxt>IVBUF{5=oV)ob(A;c@r*ZOm)CgE8q59}jNd3bD*=$0IyEK6u^W zyag+~z1)i74;d?vUe>y$M>paLQhq+m=YU4hviUes_EbpAwQ@W5Zr!=9Gz@i_BgI{} z({6ahK2TE!XHF zObxUZmESdmMC)X~CUs7RByo;+SCWw$IfL8l{i>9R#PqFgKBu}P7Yb^^^s7(5#=8O_ zb{s%?HACoLRAd~cN|Pw--~QlIOZJUr=+JGMN1k7HsCv#h|1dF zKfFTLqqmMsd0-Q<%c<7!3VGV;YMhRajz4CfJ8+CZS%!v&R7z{#6Jv>^+I42?>w>H;C|2U&B0Liqu;CIrK z`N8dLu$nEY=L<{yqTO0r*;*k3Zgk(YLbern_+kB( zKE{5GPTTG*5G!cYA#gYT0$wl(Xu2hkV_ChOs=cF+yNjLg#qQWM-Ke>fsSbNeB7VWvORmlwn*z#|z0)7BwvO z9+ceXpPcc@O+S6%M$J3@N)A-cQMq2F(gnK@IrWO8-er6G_=unP+*z<(@Q?BJLfa0X zAz9Gf@9GHjifHIq!69=db8;2Jr#A4bY;;DbD$flrlig9&$q33AUZX~Wgtm^3o{0%t z=XdQKElW#FUhldUTB&9i&zuW6n1mODW9~t0M+vLzn~vEhA6uT}5e!0YzbhrW)9Nqb zXKeRS=8}Pxtz}b`7xz$O`!WI$_DY{5eQ)9bI$W~Vad%_z_0ln~ce#|R8EaC6Pv}j8 z1{+B+)%r5VDK0qp^biW=fy=8n;=Z@d&sV=EfUhS>ZT7++>7#EOa=zE z34wejaf)3=jR)&fS2F!>wL+vB;cw#W-=e(1pHufoz40sbv|B^JSSFr6Y(_KK(=ET| z`r*714?}N>`j26wVtiM@jwFtO9a&-DmQl~0dplNeGr_HqUDkIL&88`&Z06}1?^)a3 z+S+QhlY|%=Vq|7!_76pXjLROh@y2^ip`&z+kAmv_+;jQ7{)X^lOIj;}xc^N8npW#5 zsMU6BIh@yE+RMrW)e0%)CzpVK&I`9nevF~0V}wdDiKZEZrasfeAuLc^>PPEFp?t2mU38VT0P!@eYDNXV>a2BR!z7WDVbmmGwEKIFg9t3 z(nZ4>*Dx?@slnHIr7g=NnU*(Aib~4fUY(uzbhB3Lx#I4oR8sqO%qm; zHXYXo>8zmQjON193;U=m+OVQ=_N3Z1HdRSp+_^|lo_7f(x0HWE^zcohi1;oDyJD>| zb`^~nz`203R%pj;gwiuKoI}H;EiEi4t~Li-WLsKUffL(^B&m0DN#saZ+#&nF=z3(n^UF}O{$*W!Pa?iWz-gPtE^6om<4Jcu-lY2{Q z2kHd!A6Em3>mWIIAON`sZK(^<7j473FZf+H>FxOD$dpOg9y*w= z4|f03utZQ`RgE8mr7X?Pw|-{QIq+zCPe5+@fQO}LU?7Kbv7f5z0%??|9csucQnyIa zEnQEYVl{IYGP}6PTIcirxk}gs&w<2t_fE1SdbF>~xvU)rUOdeKa}DC6eX_`cd*8V4 z2|Fec5vN0#$1Y)nvT$~e0QIWJzTy^RC_|`xbW9BRF?4sL`1hTK9QFW^rS;z@!Fln2K~Z6QP2p^=;Kkrg)MEmdlbyJGrpl!EpcD7*d@irB3LVB5iJN{&KAW#T`mq zvsj*}Q3NfO(a~WcG)a1x;g%JLI1Qed5^XFG!2QMw-N@*qBp$BBh=gJQ_S)GwMeOPHfLdNSp0f0BZaPT5?Kgb0tXjyziT^yzIG(Bn^5o@j6izFZnv=1S*5dhA&aDsFS@uX zWPG8nXM5!F0ZprD2uM8?#DEs{{cf7zzq|ls#`QN5U`1Rql$c(>yZJgif(oSaxaAvZ z1)g({ZiDt*L`Czb6|zgmEBq!~Jh#z(b`B6O22PX}z}oTf=_55<1TZ$uuU>>#_g^ zHcK@b+yQze&WiSf{Cw%0xm*I0@=ird# zxqnIGR3Z{vgHM|r>D zU{tj?(+Z4h+fj9!Wer`8PhxmyJRmtaIk^P|be6{OK`uc-L9525fl#uY<^&jVeFi7S zHju;k$EWc3O7KH?h(i^W)YWwxIMh=7KqFutL`;mw=Hke-dU#8Vy#3_&w$ahihwj6k zQ0PB~kmO|i%SXVsMBrP(!D5q=GK~vLii-F-XFVVW1_rjawr4I+RYLvs^IEs+wj_-` zFi{#6iTy%hK+@ix_Wud&LF9|D1=kZ77e}6W?D*e0efYWnCj7Qp4~KvISdTLHS{guO zT@EsQ_RswbrC}+NK~txb-dkz*Z$ijvX=P?*oi@NT`OYw1 z19A;FA0MJIYU9osb|C1&Fc=KkPqVP$3E!)j@)aLEFflY#a@ngr*uiB%qzecRrlwa1 zaj-ke&T3yttV95i{Fy(Z@{QPII#!o!@JYl_rqGt761KIRhco1VgoPa80=Nwv4d@6# zjMP_maO&6o?Y-?)vxN<@moHxqmxqBm#LK(3ieM`#E`EDf zPzI2lGL$iZBjptpZRP@ti(hKV&BK^X_oUkprs6nSGp$)+9&v=B_1M37dEnp$$z znAzNwURsUWB*tuRDEh2SA6;@ycwY3dNY@;&wz9Ij%i~o|IR$l>FD_T}CL|=h`}f_D zb+Lb(sI)*jZNlCeKPjoHg-Mv&;|NngYyMdIxX@HoULI&2|Egv}Z9^P@!^k> z_?Ku$Mm>jq0E8V^(mK&?cXLUzKzbHHhwmUa%|w((#>XWzo*g0+*g2!569bor+r;eIqoDsDF?CxJm6@>{|+`7mH81FE81^S)Q@%68kz z!%)&&<~*Zu!|9S6t0sr4;%pXAb7etFR!g2ig^DDv#%ki@38TSZ!>+MToyD(W`!G+@ZCu3Jy#6`R@i8rZ(HgIsBYn`}~P$D^m|U-;LxwF~5BW5|!Mq zSGlx2HNj|oC5$D}eTz4GEHm09Wl2cwLfCiXXSG!!K|y%p-e$o*t>4~e#ZwGv$%ItK zP(gGaq4!H>+wXVS6@XkwKOZd4Vk)`NwM6!A>E)fh4ZKS?1QW>aEgQ5o-2150*32s- zE5M<%iA_}qTq|pqhbLaj;;MA;0(HI?Uurg$B?qEmQVI_5vtdo4Zg9d-zmP=;6`x8) z6NTZKeXlNmmmtYkM|aK7(@V6N!wpTLYdX3neoFbGGOeAxzlDofLy5Lg`Gc)n-V&%L zwGW!ajuyRJWaq~KMUXkauUE`iaXV$&)92bT%K` zVfs28w2K@|t`SZ1kVJdxDM~ry5!w){Y$*kfC*L#`n7Hb!jzeVoKW=VNpn{tGeL$v` zzbq-Kc$8Cy92htztJUBJHKHD~5!5nD(N9v4Z?GHtMzE*?_8qcb{vUOS3Bk1)qKUyy(5%*r`>+_*cHEYNs?smVbFcwt4e$ulsg&vNCm` z+@Z2pgMM~TSMuKDk!#~Do|3#DFj@aJDG2ZWYMeF+odz+geA#*eevOk^zPK^PMtgN- zSlUpr!@TYN8KPnE({GQr3PTeFrkq(1Gl^^& zUoO)RlTH26&~OweX!r5g?tV`zRH{qk%z~({^-n`pr`#wJ`2Fc1+Z`|SQkKoSH>q*C zcZEfNEf=Z9whRbF$~&C)(o$CscpDM|gXJgW`fkUvRX~nP=@i~#S?qQ6#6yNA#A>?4 zE_8i0HpwuIdp_HGX43Cb3{u=Jqmpc3YgpbVV}%jJTVP4Emi$IgB=Vb4Qh#&@YbW|6s=l%t`&)p?$E{$bDk`od_mtxq!)5uxil|3bav;Yw5 zbb%7DL5k)A&sR>Cg#7r7r(dp_&96eCw$z#zrUIhJQU`5%mRx&i5)G{azUxc{=NKL{l6xUWVOl6u_8z`z2{%xo&Pix;vE8IykSNlLYwzlt z^bA4YE3M`IXa#*%_TnB7*W)A#=lGrOlhnJc?Y9Vmao-u-fXQ>HCXXE0c25p+VAVCv zFo7G666a@5ZVXSjfEQeOq;9p9*?X&IO8%c5AvgDLj*vL4C-vAD7$gt3tS87oRdtM0 zN@vRR!jkH8AquY1<7EDTk&exKSj@1cC|=_CvXjs63oIzv-X8=zh8D$MhPrKMldH}* zkq>;&BdpOgy)HCIxY9a}y%Om3VO56lO)jjtt}*fa;av5)oR6VFazkbfUp^krJ#~iC zUkp75TOM{`y$)RGMJ|QWT%;<>R4^+NahPm|vT#LFb#!z9g7w-~xMN{~Ys1sWF-$zF){41AjT;hTjcD-#6;a`Q!%oswWsDsybc z83pY-P_xg0gR)4h?jD;-gOi;E3Q=xnIHmC7a{O6$yW1{x+~fpEbNUAq`~z|PsZ%no zBReeeP3pS=#&xLOU_1i!+IdWj$vn_d{4eM*F);yRHy^C`Y-A4#+Knml`0i^_0RXUJ zR8u<&OY1c-9qLhHu~kwvl@gK9>i@Cfm8@H$56Ky8DUKf}mGJ0?z~0Js*gyAT+*vkT zQ#h?P*f!U`XPf_)$vS*iH|3wVkDj0muT+=xtt85jebdKrSIDlK)CF>_68inM zoe2&Xkd*A&z@hk+BZx$g6t`7 zswc6n2?vI^K)D&TFw|8!+ewt$7Zpy*#a1ST^1kvuf=Y-`-=i=*S336h%1YB^C= zkvzS>%YT(7%&pxpL}hBiO-EQ6c>9aQD)aq$&wO}#lH#sbUFPY-4&{B6%o}s_r9%R4 z(zi!I5uNqre-3o^YFzR2Q{5$VNjE zoT_8^XL@;)Ay;0*se~q)%eie4t%M)N`rCCO@E7K1Sg)R0k&r;hQ3z>e^jk-CFph|i zx4N*ti%;#9c<|zK{?c;;#%(G1vFarG7nkE~cwOpX>@DOD6$pO-O!8_BcgYnBv2a-W zZCT0vv)86f0~0zjGSVQQYFt40|Ip56CoOe?A}dT>!Gnvlc8l(fc1|0+7mY^85vpye zkJx8bjPcK>iBkQRaeTbv59r10QKlKh$PW65UyTonG?xe2oO&kGpLZ7z>dSL-m9#ur zEFE(6jybJ9n=xu3lp6kR?kUzQ>1GQB`T?ok^LvGh$a(Nphi7*Ddl1f|N$<-57zL%h zAg4fO(q}Fc$%DXFfaM*HVieNfm|g^(AF%$r0O)#ofo9Ou-Q6AB`1gLZIpHCAfRgsk z2zo|+zxi`ljN;7WkhZU!PX`6K=Q%tq@jZ(yePv?0L5vBBJo-zFvgUDKIIbHv6!mUB z+vc@sxgHugv#a^xk35be^ClhYcQ)ZFt9wsHB4tKSr(sJ(wxXKoE=l9J7I z3-dTT1a?d5T@MsmIA(OFYjMAU!Lf!m!!|gl-jiA@pzYf&hMv5OLt9!iLtY?ha zlkq%?QNkwCWY9}yg|oANK6X0PI7ht)U5tc9L_Gd0i5Dw&9M}V&8YCs*XLlhj&o4+i zq@8Xkso#z@sb1$GdIu-MQ0^~@OkS`YPAZFZrJ_4;(l{$wL)$tT0=(m%7roVM3rEK2 z?uQ2L_4P4l!@Ju}#<6&1zu^3dh8}^r2T4lhuX$gsJWAyI8`AxodSzFqYhchMq+C70 z3-AVzi|UA74t+0#RCt8G%Xtm#9i*KwbxWZGrk$9zn7DYu`zV^EgDlu~De*(5&-+_W z+jX#SmPOxr%dyi$TEVJIwl$%%{z-RZ&&sbDR;xs8)$i&^EJ(?rlpe=XT?)taj9N{N z%5#d{aDE#@9Ro-W0+;eWcz{@Cs~#dQp?VXy`hxK2I{0X9!@Y9*Wh=P(^HRc?4lnLf{o|4(&-g==I)uzJ$HURezaN=g^onvT9^ zp?KYt3H$K2xnHiMy3rq(Mz`x!%QTw_h71%Bx>L|Dg^RT1cB!{k9=l#bIp4Yf=Y+Qo zE}YND_Wc&R^WjYS%ic1vIROeGjhi=}zOA{@X#>njQs@8{BU(jWIxTgxnRZXkIyUkf z#$9isSx~>T_H8WyzxyAfm;mx9rt&ce=i{EH!;($UlhCm%s2eSx?(ySsiApbLzpDX5 z4ZUrdu=OZS{Ls;mv{fpp4rjhzN0!_sTJa%X9qN*l>{mt!TQ$kEJG{;Z+#zXdZPA?Z z7OrD8i_3%j{CYoC&{dH5v$>@}b`>#Ty~P`;x?Yfr*w0gC2Rd{vLerj?98m3-B4o%Z zCw>Wt7HNs9Q3c(doj`@H^xEPrs6W_=OSp_75U~)Q;CSf;_i_IA{w*JdjEdW19VQ+$ zQ#KJ=CrU=Fi{T#~4Q)K*;G#*0MPRK+1~ zAJ(|zEQ&9cpjO=@%Os)}PbATWZA$6MUtyq0z2N8)Rb3l~-_?x{OS5JOyB4R!cva}b z=eCSK?sA-(0QK;MoRj|PoUv9R0ftTiJ=4!!o0|vP+;s!5K{a%K6r>k-Jp3b%(f z(1#o%GA+5EyBJ@vEUuRyS+CV37LU(}lv_wDnJR#>gf3le3R!31jF|;^wy;`-%)vJD z@-&IFf96*Bu`D|qA(p0+GIav-C8K+!Rc61rl^YNZ8xKtIj`)?Uqsv*HjEuv!QgSam zSf*sO7&b@64S9KIJ$dt5uc|bq&6KKLpqbhruJ5uHVIV2Dj%m^<_qvacr%X;>%fZGu z3mWopKf8SLaq45=%w`3vn_35(H*rtLXFhGXyP=KAgl2xzlZT**#hShU#nkNDW%=)xMWa@;#0*Z4{f(+K#ABZni#HU5>x z{M1XS@L3>r1pQu=2M{Utk5Z-9bI6E(FWv;Vv-*q_p-F5fZLHym6tzEP++ZJmJ{7)M zC_&xvl8{51Ls=gf3it80Nbh7#ZPKIybXd9wR3HAR1PpqjM%SJ>bsjjU|44r;e7;n&;7$phMvhHg_(%X40^wsi}v?Qn0@={|mx|G*&Mg zi1U)F-+x)(B(4S0CE?Uyc53U#m#l_UM zr*Dxo;CqzPJM6cXE!~!zr>wRVNiaTiQ3X--5RSd4NPo+Fq9ckgmQ zTjWhmY~5?Dhv)=H5;m3davk=Wn}K`X@sL0`m8P=XDSG8Oe#@L+3Lj-L=ZR|)9|vXC z@2)Eyy(+*N^7amgXU>wj6KBYM6b1O7;WqetO30(~kD{c@)~gv}Qa7l~B{jP~G_!sz zgmA%O;cZX3qIv^D@FTB-dP*D4KUHtsYS@@rd6w*26Sg$ExM~s8PPMy`bx7yo@$`N>`OQ-uiEv&u9#!XOBGwfNeUM_q3ltT0H-(qq zZo;shDcPJMA!(O}CphxQS_mvc?Ed(z&yvX2WtKkcrM{)b^lUD; zg~MzmBjwOh!7vKf(G6XRw@yASS!NZnA{@XOGjni&Cg0h@ekN>Lm%TD|?M^7pDHiTF_We|N^z7Fr@^sj@acK?Uc zS-bTqpV>$G37+j!&r>OL4$&%^PFgVo9w4YCXk7`{oB(=v}^LmHL zKU6|x`HyOi%0=VuF;>|~6+xLw{e((}$0FOdV)efV#}$0;(z&w>Ym2@2Vf;j#Y?Q18 zEzXu=Q|$`jxpy2N(1s^A zKqqv;334pU+yssBv$~7{vJ&7a?FQjq#BsOxwi);5goAG@1h2_S=`?N_8KRE1#H@Y7 zL_e;j(2Kb2CbNrh787-4nz*yN+WX+7DWhYaaO`9J0YeJ&Jx%4~dy~qqP{)uhE&zK3 z;Hrn0&Z(iJ{w~;Z?k8hb zVJ@wGg&c9`76(5dLY8XW4S6uqibNSyM)h z4mHNw8;e@<@)vp?6mqh+w|`Z)Ed;@cP~5p`XNrWz1_*>V(6V@Fm|W~CX4WT_C+%~? zd!2@N709*DrJ~!uq&p_3zzI(&ZQef>3W~i!uhPPXmISH9Ps>8Wyb9CKKrdohN!SZ{pw(1wNbd2kZvdgb(SYOFuwU?>l&vtehHr^?&R6IK~T;%xy z4JqFQ+8*5UQwJkwlueQQ2~0GD|GnC`974eS7`xI=PC_kJQ_}QVxw~g&r#> zd66~Fh2Di5Ns7MDXMP#i!ZPDtG^S__E7Bh`GCzs@ej3?QRwG)T$W=dPf2eMz3;PLz zk5YoN$5=I$3oB{@dtOmBKC`wda!bDx2$bAhdsGkvTj?bOy+ zaCsYvG>n_#5|3YiMwR>|fGa*pM#Q;vvtng`(%&)(*Jm%n|AD&>pJsDXfg|)-ZGqMj zV_nvBJ)kvsAs@Ih3%MqzCU|&HwG@fXb!dpXQX&@8sOSZCICPT4^(mj;h!FTgo_EJ! zWTEN($lmqsLYK-Av%4OB6PTU8+oJga=bLoby_w}#)rA814#stUj<*ShCpSY!-Q8bb zVJ~)96cI0`O; z@>VwgNC+SJ2*bsQGH0S?o#eMU$=zDauH3n+^5DzHvdC6$6nF7Yj+z9?^vw^$k`Oz= z(Pu~Bnl=Pl$lckS*E#Mxh?dwMd~LEfM-ga#wD^X@C(LiX!T4~?%&fL~{g%;~aeK?j zecN-sqH(|B=2{rZ4vc!(4&|xOdN*fx1(y9(6K~AYl|+6wc;#)oWh!hsMDr_e>KS&D zjopqiUE>Uuh4@$N4;HuH6`sxt67q^ET4eBVeOB!EvT4&mdb%4yI%BbWz4r`4=j)@# zJ(JDnsmz4XO^QM_Bd^%5-YCbRI{8{9+2kd^PH?vH;I57?F;)a^o#KwUt{mGe_u)|y zD^tZ%jLLT{wK{Kjw%QOoN|dhxuSZeOUXQM5b;cr6t+HHk3^)B4CiJMNum?)~eX9Re zAnv4Sx&PRvqqqE4qE>4!L(RFfna+{7zm1}=Eo168dDSn|(-&>lzKrtVZXf)1_5bnp z)^SmGUE8pMfFO;4q;yIsC3%5_v>=@#-67r5IfJwyprmvU4U!|xfPh28(2YaaeCKf8 z*Zp44^LyX#Uw+ED_TFn9>sZHLdjT@TjEGRC9Z~dMSuJ3ZQ|Q~X&+h7K?WC1$)L=j2 z($}AVCL#f$dM8S&!5->X>5x5tp<>uBHENvSek~!*_J}=&IjZx?n8znj$Rr<9?*#H( zg@H?Hv3^n)?n6LN)3SzRmn!)*iX>0-_3FE3ywKVzE~#{uI%JINh`c(udbXN&c~}w^ zT7Q{}jj(|zKx~QSUUXW^J?Ak=b@zn4B8>>5&kB`Uie;5-?Ba01EJU(ITS4oUK zKeV^;uHQJr9uVQ|$Qq)H`R#v3qRrC^P9nns2lQ{Pp1y&^xQbCvVc{n2zBe^(zN_&v zC~Wd!N<6jL^_Ss`nGL2juYJLi)CEcJkRm=2sjOKaed)sO}cQZX1cdb?&((*Cvt|QnV zbDkEXmi!@or->L?i1cqSsou*ig23L)19f(A%j`auc%BHH!T=|hFH9`jwXlY-mjZJz zHNi6mG*a+}HA87Laq}r_y*w<`TH+qR3;#&@(_s9eJu+!*4H~nDgxZi;yhqKas3dET z?lZ4cwrFejDQ82vqA&J+@FR+uhoh_{KF@w;$xi$P7K0Kl{|-IcP-ove|GE9mvE2O9 zY`TA#jA*-*!;V_#ZHiBifh<*Ad~|X$zRtBE(z)MHklwl$PAAsu(z4^=97ap-GR|Kx zXZ-D$Ed%3G0eU^^V$fwuaQ1u`aj??^Aw}<%)#2QiHtFxg9}9!j5@gUza#&rg6?ZH* zGEqc3U5Y!_=xZC2TAc&R%)ya|*7}4)&>&&Gh%-s^-#mf6v5NTB!p6KV!+Sz?C_9|1o~4hu}l=q@fGd_q7EYfUhYkjtR?RxJwe*i2cImzof$T!fh;TG1?ZDLhx zhz(hiyAQF0gsGQ&XsCsr;uOBCE@7VX;O*=WVBxCVsWB+Ge;gv!h+poa4guF1anV0j zQTGVa6okK{awATh9OM}kr+Xki=A{iX7<+ZSIS-Yw39Y5BeW?UV~i_PW*3r{kfOA*5ZNnG`-n!M38F#F^Z^{orb6V^ZUfBWz@~qQF14 zuQ+FepCO$lcRZ9SiwKJ*^oeocVsS#SdFMI3uro18@#KC=sZ)5Lf%5*Pb z&kUz5Zt^ofj9`P`cRRUK>#x}oaz`J}f50Hep|P}>%zxA6rS7V_*t_R+L~I?j4rXJU3=rB#b^)^w|YD!Oo8Ww zY9v78T7X#V$UIDf?4D928rLF1?z>s1qyTY4AR=4HF8#aI_?&jk=G~>yY%fRu_9FiU ze^aWp8^ndGWUvrQ!33H6LGg-0^|gC+wZArxKh-M4`I=UBv@1a{#r1WasUX!722BpH z0p<6^#A*|Pe<9oZ=GLLIjfZygltzIMOfKM>o%}r-tDHz2CEje6Ct&c)vz>>1e!T`% zP9HpPl9Yx9W@ApR`!H{_P1OaNB#nPZaeePZ@-0^HiWrGa{N(s`;b;SHF|2$eoudHL zCqH2uo`?l#>9c(@nryZ&gkdC>iDq}~D^y13Wil|JHj5AZJ2&b39T-BT3)y?k-}-PV zEj@4u+R@gwi^W{!r=St*KE6B~66ic9R1#)V_dB^Ky^WFiKk<2*$1f&jE{CR;D5XP- zTM?ee)LnzSrN%=Da;pi2JjElK4#=QtKcNW?ny3><_eiuH%|U~+5bENzDkvZ@xgNE} zqq$baMoyEflBRMO?wES=bD(F?#Xd@gflD38nDsDW_K3PXGy%w?S!{5iuJ?ZK0_mB~ zKkW!Y)NeY?b`vK!i!gx--bs8FHeK^l3a}nL&HE!xIV#b7O_lQM;%4J3F1Bi>6vl_CbCwKb8yZ9 zYwrmO{PX0L1&oG(d3$3<6~=P@@+yeW!x;}8Z_-s3A5ebNY&I>m7Bf9~J4T z{_6q01&TXs`=z=VD~K`g!TtrjrOTrR%*<52yX<{;$xpioDmzPc&6y|CqfT7J&6lCV zd8nHtnhkcL1}_~13F9}88S$)sN~J0!GUaD|b64YgCoM22jAV1VR5UJsWiBT>W`-g@ zSux?Y=nuQ2Y9RzG;OHge8~iL^)YL(qkYH(SDY0w|(Jz@09oqik`FBv*BX;{7Yq^?c zm0#)a6q2=aRNq!&IOghc{(Vl^A~X377UI8BBM3fso3X$M2NGIhmM$i#ViQBH`LRSA ziFf@T<-Bs_7wRAmwHcIO64ywqwh*l1iZLE7eCz?w*wfx}p`UUZcNL``23fzPvD~aB z2KO{ZP}9;JsBW_$`r;!JLo@)Y!_A#~?vR>- zaVCZ+t3kQ@Etc8BpojV;XG3-NsV|h?YrN$|xxFZ8nMJDqLM$GRD7p;zU?=C5{-)73 zkHDK)U$PgP*;T@cEon$YkS`?vOIA0}zdrZPLN(}KKn~|6qHzIA7XkzN9Be3zE zj3s@^;1<4h^mQ6`tOooXZyNW}vDGR7JhXm}wd*FKM+D9>EEBN#!gULH_L8Kyn;7=( z*RL$cvCT00`^a_-##ju5>0Pb_bGukWYfMib;o{C54^y-bc@p)@O-qcO5P1YK-@h96 zIDypE^`0HrXooA9vt~E_i(9W6;8-Xm*(Xc~hj`JMJyIvlem2HU@~kjy{hW>2Wtv-O zCZpR%dd7h`g3)i2FN@}F9pH3-K>!*|1OK}22@6*gBU^0($&c?YHgaPcO*8UL>2SC0 z!_-92vNAHgaJ)!YrSHj&>uI1_j`XZNyJ)j`f?&WR$#Cx?*6Yu^?6`VQ+-+vMP17Ea zCsCSdxDk^?ko@S}Af>PVV+`3{_POcfeZff@iJ-dD>i7lK5YsJARYtK|XVm z7H1VZ&Q3%T3HAo_tgw8k57O+BA1ku2cP__%%*0i)(Pv{5 z=Xyvfp4YD}#B@lZEcifn`z){Jtv*lt)Bge-tt#lX^2wuRYr#eR?dL_RpF#3Wh(F*Q zXy4I}9<(*^_=)c(p$$7BrHw-GC3|zCJRAHw@S18bqz@mfM%-`WFWPyt8t)=va9E>9 zNZGHh&miF&^7|5W{#yNvJg0I<;&Mdg3p!rm*}{pf$A8%R>(c!xsT^ooL(pqNAdN1~ z&D_kq4tn;VTAZxDM!b}M`5P1?s0~rc4U)4WnK>b3)p;ZJ0Z-{S6D+nl`-(;6GXocH z=3^%MnPu1r$Nomz*SdRo6q#D$>i^J!KA0*yP`({odS)OH{zZiahd&Z`2TqI+H<@AxHT9zINYCnmvxW^S=@<43=%MU{YbBuQ?DnMau* z+;QC8AVn^zqUzYg#Wm2GfRk9D7xqb52In#_IwpB{ut1>mp>?fLykh1vxFX`^l3#H3 zoITcaD1DrCC)`DwLOOECwoxv?Fdm&$LBKMNXB^aWnn8H(evX_HB z&Tc9!t{@gg2roHh!&jFxn~`W+c+cyl4?wly$Z=F+q_?n{yF~_592%)S<*~BOr04+z zGiWfRQ9c_F8A(A`Z))4-A+(u;hv`PIr5|C&n!43yBs+NCqvrW*nuDs)T#*!{r?nsl z$M3op9b{p&hjyirCKh1qN+1xg@~T~~gPe0H=)^nHD5kcTFH}lP7P@{7($UTHbg$0Z z_TV?Q-9NOw)G)Bby~US}XSYhXFZtd5D!IDo1xoq3 z=u9pI2ONf!P_V9@mO(P+RYzGO(Mf4oLE)qAX+3ns6|55<}vk1L=< zNPkj3TuvHYXvY=6_>?hE?S=xEvXs>-=kBm>EDK!n`x~;fs zZHFVUzr8WWGGk8=HpUk!gpM`f`urLK*1SC|Sr3Cc9Tg*W<6|r=beQC7JkDoU#a&(H zu}O%b_#>@k%7pxV< zsP2+2`Qc#aAuKXh-kCPXDK>hG&wi~Z-OHhsDly?)DDuA28aii9j&RM$gO#EoT_b+N zqnbAjotbJ5pV}pMGr2_WHlWuBdzx2zeaRZSi#WU98C)>zu~reLvdXW1RyoSVDk`)Z z<^23dr!*V+CdOHrz?ZKfNrG7m-zH`{J*bjDAbq%En!n4>T{S`5_pWNL1yd|^fZ|1m z4NGa7Nde<0`g2mgc>dMbMKBvvaLz36m-mnA*4ruR#Qvg69E#TFwjoX^z?|BCKSp6D z%DP&E4C4#ukNN~L--khCPxccF_!NYhLDeQ660}6M&B?AvAM@sMoe`s7UB@l@=bzRm zL~g8&>~7$oI6ij8bD%o^a#}`PzQBTC$V!zc`3zvMGh0S-II?1NR$+HLzXPb~XlwD< zWG%532qyuZ@{fYL_wrm{=U{K1!B@*buXEri)Fg}iZ&gHTJiY$-hOvk@#3p`BmLtL& zNnucg-e+Y>p0MWc5kHEPdBU{z&oc5RuaGS)Hk6iOM1VU1wST8JZ6b``ar7I^7;S*B z$P`bM8JE)YY!I4ga%3j-(g%DfnY_};4Z#|;B%y{v(@5!Qs7Ijpt|lpA_R+BOY(+Ws zPz?!b9G0cD!=>CE?`#EyoR@LKlnP>2)GX*-z;13tA9fMMc9k`%9Ke?G?*gdKL)tqc zw4RDbxgh-n6dx-(OA9{H>acE-s}-@)VRQ zBVJpeYh`i&yTpK$Ty7!-M zBjIVh>7Q7LQkV}6>`LuhBjWLmKZMl{(8YHvtj@O34lHwTsSCC59ae~<>}Lw=18UHp z)UX_B%h$l(Oai`GHz%j<^#iYxrUG5fT09)%FA_&hY~`Oubv^u#Pzt1u6pN*XfRp%9 zk1CwOLCD;lBI+N2dZ6?gKPy1h>e|7L_(O|l#>BwB&hXIoH+xU^Sy}O|HR#g!N%V(V zprShxR|;q)-CZmq(V*2nKwlG}Wm6j%?983j!;q(J%j!u33hJRvND~!M7U7WmU)uEA zud#SGMt3Z!PVz*0iLJ6HI_XR8z40hK_EGGxoyfyOZgo=FR{2tcgvQIka5awAwd2UH zLyd+QA8dBJ)fte{_8F(eRC?feE)>42$6wTKre4mMetwjujhgN|N^C_ZEeMJEOgxTz zbz?F&;8nQrf#vhFuYhmI?Fp*j=A2Uyves1Byc7|6SVj1HbB(OJ)Lt)!83Qr{RE!6d zc7s-C_NRG23dVmB7i$1cHC`rHvc|n-`r3B2&<280RDM`bQ$Kn2R`suR7CnnZ9Kgj2 zfPz^-V;W=kaf@7GlDuO%i8<8ZP7mN+RTwFnM}qUkE66rB<2CkW=g_bpF85W1tY9{= z3B*PAWBj2HgqXauth0?=aoDT4&c5YX|I-T);!0yU(&OTnv}+p0?EJxpE3WzLKd`2R zc(TzT0)Eh#MrwhD{dsr9V49Ithl7gila`GFVwv_qL*JW{!$k>~QK?A#x1>tg zd9I@hk=s@oZw<5q=;<-YFmp+`=+merdniT~WT-)vYM3nP;J?=atHR??L&M2V!W;1a$DzblMZuK}s-G)=!P+~J`%lt+SBHEl^J+-WwYr-y6 zA)i~*ibfL%3BV0l05k!z)h2(u?(0Hzw0L{YW#CO8s)Fio9<=I0pSij)%e(t-(W-Cr zIM&pYN)mUv4NgzhtP>Z7@mjvB35&}#s)WAT;P0V$MGe(W>Blgqlhn z133-+O?};_<{8pK|NC?6KF=n(TTMPgmuFeVJe+6O`nqRbfz`nsoga?jJI{Kc^Hu5M zMsRA-6rQ{*gjTrCGFl&MgUW!`P$lRBp@gGhALX$xd7Ijp}P{OB7{TkF_H=))ZX%iPh;rtJ4rsiKKeNW36 zzdxXl?vQ@4Dt6}s2OEB~57peT*0;OiY;TQ%v2YsT{iEb)OUOlDO*~mX=bE{zs0gTz>;x88 zm-oB>mUF_l1vmlZAWSjD0nU;iWV=e0Dehcuca`sIJ0uCUduN)-mBh1O#a0iWW3g3< zT<_XxkV6+=<;;&eH5%er^fo#4egap4h3vY)Ut57}Ua~Y#^M8?BtlIrPC9K$l{vW~R z`n^p;D}8z#CdTe91*(N90hF5viqt=c`RQ+;6)G44+#moKYG*o@hpsh@Yt*Qr7()`b zx(-5vwz08H>uQaXMF6e#Xw#zu${dLgg@SE|0>6E+|5(lJQ2lV480z#w#7|n7%JOt4 zZ1TO26>4tAkNlf`-Y%m9ohg>?^B?>60BrA8F#$nThqR+bH6fh@<9OxJLhjVbG)9>~ z9!cf(34s#e&me;A_sW6pncnLpue1W8%;Ii;svFDzh?D) zk?S6x1w#tV037%Ko+ zO-Qx>2pQ<2lxheHNEESQ3T92r;(tD<73So9;dbW)(o>0h?4%3e-MtY6g#8^JhP74I zyZadYA{oCS5tY&6@sHB&bURt1EN8D*gkXK7rg|HtPw&IEeI-OP(e;$6FS?$hPd)PG z>4!eA0|ip!+YL#+j#@Jt^D+i-%CN{j7IZfQ%j61QqZkcSQg#o1POfk9KQKe{F3L=; z&wT~?zfw`f^~bdDO!df82FrhP(N`h}*>@6ciOxs*MO1k88NUR{`7$<7i|Q>W^nU0( zUoqbs(a#5XK*}4mZ+#ojvkWlYJ~J~a7{01$#k_&%2K@mL%cwohmHLEkp%<+c)C11# zNEsGdV;1{S^A#~Gnq~80(qkB#l>wPCh57SHb?_aAiP!8^s+R9@^IxN{_5w9Pnm9A= z3d=7Q6~=_`a#dDKkuVtS5ku9{AJ_N})NZGQb$<{{<(^j#6_ZylY@~|?G&GUoy1>2$ zt9JMGM>YV2i#y0dA&rv>qOjN*hd?M3B{br(fLF7*z!XBjkr%n#% zrF--LE|t&SG||bSq`nP(*l~MuWqzTho>$GBb!*ug!|>2W4j>(elk}WzJk-5c0S{wB z6HPni*lqW!JafM@?94%Q<=7NJvb}X$ZObdL)_#17x>*p)S~r^Q!d>nnkX(_MydbLh za7l+cgN9AJ?1@|hKTuzC;p!5n8#vGnZGHr1nB@>FUQ9UzsAj&rk#{AV&Rt+o$9jr} zB5c>gdv0dk!FPIZV`IZEP`f)9XYaZAALo)IwytLgb>{j=AcI?Y{Yu7)amHZGyAt-B!CRDc&?Z4k?S zci0b4Mbuh4X-yX5SE^N_md~h=KNp;HE!|TC?k_LBJD1^zg3$8+mE$ zF@E6noj50-f4ST7_H-K;pwVycYmKn~agFgZr_$0H7}~Dl0`_%a&3FYcAmh(>P6Fee z>uK>cgfNfT8%1CQ6H{MbTNY2$RGq(`BkZPlZS9x>3`KikmHnP9?E>kk1@L*b-10+7 zx&^lz|6Po;98O|(=B#z#9n- zEU?(M_@z|pD%qj%st&LXeAM`l7Z) zJ_1a@`jDEdZwHLC!VV6S#N8bLE;6%jvi!A7QVhDygsHWMhY*J=eTn%li`z0%JS$p{OJLujN<1n+EUbG0L=Y7fu_2PJcKb2=Q)4(AU@3u+8r?@Ec=leJ7An zfPKCXw9&saFtFX#k(QwBc&s7DYqrhbcXL+9``3_@U`8DXWzAnKfHFQKJ3IR0?C*bV zXSD*XJJ`75bhajUsukGsCj=u%4g}euu8B#-my9VhJ%Ey@3;{NkOcWtY z_x2{!15GmCA-rjU5ht(gRBGVnz+)m-wXDS^?vRe4C1)>|)ytcycNKP*)w4OYTK_4U zq1BD#-hOXqQvri+1p@SDDY8Q#5MZ_o!SIcTzKIExq6>H;9T5>>v-l0kQ$H}x|X z{FE+UUS5;GDY_01`Q+v0tu%mn9tCrbNVrvYW~+=><_x*RX^xeytQatGLnqy!7XiGb zN_L6y`ois2k&ppJ91YYxx(yjH2xLnWI8Y7n19zWMU~(PAVSN8|1b=#A!AdX#wtos- z=?o14)6*~sXvKs{{O8cWxw>O`X2EyARVUhD(#*^(m)KFAAYT)Wj=;1VbX4$B#@Vh0 z9>L^+!`<4lZ9QMVyn#y1mgp7y7i$!=-Xzk(rq^a=ApnIWj2>D~^fz97SGV`{yN%Bo_kU zlWKEnPkP+ozO9Ycsp(~yf%7fYxvS-Z^yzkKL8InhWmg^V-fW*`XT@&yOCH**Gy&s+ za_cMwGrlDOGcAD^v7n@cCFe+luod03P0QZyKy689E?0f2yw<;b<)2E#*O7A2S=d~d zdihc!u`kqf-aEpwrf+wqo~LyAK%|~$;MxDLW293*!UQJhBqd}BIX%x9!tOd~{JdNd zeTy&fo8o1%V_?o4T3u);Z$=xx;P&OT;rr9Q>T?&vYkd0{XEn6SL!xg70)f0Pj@Z>n zf$7u0OqQyuj(5C^z*s$C=IU{N5a6RQ4=r!t9{Kotw85`jTcEIW;xJzOr;7fy`Q$ms zj8?)gk}!DTvUR~sFr&2+pr0^n^N`hl|DvYz!b24> z>fF^?%bV-svbfJ&ni_g^i5?{AeRe=!rfp~X@jnK9Aqy(yIP3?>YaM<72iAyfEu%7q zwR$PEwY7Ei^pXtvUFDft839dD@% z0BI0NCEn;%;;L0Kl?%6b1!m)*hh!}kFax1rk`ZwV?Ef^{@CIw-S`2WFS-h;hs-E(n z^*5alpaGt2m173teY63C4{qqRhJ$i8>?D2XX0qEJ4$hQw+;({JTp$@{pVMjqX@V;x z1Dfl2^IUwZKSZ`s(e8TIr#aQ=)8IOi{N@U9Vu+F6?SENEwXppM;Qv-DQ2bkzDCD8a zdNvSIlD^kh#VSgwh^trKz|MU3(DG{8dG+g{JS-8*O7Qcr2N2Pn6eFX=z$=NK?S>%Q8-V7M(5fDjtYp$Rx!inudb0y>9* z1I$zWKVLEcCD*y1@mclNf7pR~(TU{EA=u>X12@Hb%VG85`861IH$!Ne>Fw`kq3-=A z;kK0n*rS2!jS8&VNpTRZii-h0r_TLO1!-!zt94XgU|%5W5{0LN;HBw~C6Hb=?VJ=f zk~p8k8eF5Naw_Ge3B{huY1}$In54HUmZG|eL2XH{1)e#f)XT0=+kw|sVGZNZvUQ2< zK(}=vWg>80o#kzxSCyxo=0jl9Yj)Ax^c$H!W`2?g@ONX>xsZ*MC1TOe`wQ(R-{*?t z)%R>Jkq*e%5A$B13K2@$Rv*sYMaDbP0%A zVmbvoQ%!56BudHYg%QE|l*xRD+oRNa9q;vhhXbtac}ufa`3kr>FD+l(drBRD5X%c? z+ekM}(ZI`0M|$+;A7*kIpzoO=^E+Cd&$bRXbqLT!n(oGvMVrGP7OKBWyAben(}g_f z!1NT~Fd`)Ky6Yjq2^MuMlp@y#Q-U(?&AYsBb0>{W6I~x3xDel^WM=LpP9v=qoSl35 ze&4y1N%`z($;<;Ed=^$;zQ}&pM%&Ac{|ORzs^VaGz~FaEk1*xGJN?ieh7O~MrVR-= zQVcy7t+y9bdWFQtL;fVS2ber54P8C_IlfS%1nc)9wFwltvFLs2B)0wXNwzYEPQu*G zD_Uy2-+_TYhs*fnn@J28EGJ{4*62l^^NWE`=NlE%St!g1L1C%_5xIPaiAi(7pHFOf z1)2hRp#Y1{_UK{!vIgOBm+r2~Ah|9xL2!J^_y6>}Tx|yi)T5zB2Ab>~<3lZ$hOVyY zRZWQ6H?p5%51%+bmVT#q?g(|7Z#f@pQ@b=dY7nFKzTlh&NSN%j4&SghLQl)(o9WT{q(-kb2Txr@EW` zaH`l!3?>D|Vu2#nC@@K<{xpRn7U0> zLLK2-hwKvO?*6BV^QdVT%^vU*ZYz~7StlS8tSr*AT4g2X%EZ+Sf1$<;)yPG-D*&<= z4e|X1*f-}`pWre~RhVT{Y}0_RP#opf-D^ODnad}&V2W^!SYoo+KS*;fcM-!1l_l;8 z3QH1H)%ljx1GDbT=a(yeXt+?&Jm2kvWiJvu*JYNVS#`>9E|{Ju^H8Y5VVPY^)C9YP z@SkgOm(3wtz`A)ar)IRkSRsC&R2mov3%sn{bn6G^cf|X%Beh5UVZ=$uYaSm%T7ca? zb~t4KGwePa;1It(+RUw;2+V-(>>H&c$LIwQuiuo5f)0DAm9$*ew{i=ci$XNoSD1Ik zs^g^@%unJQSAG3XC^Fw0S!sv1Xeo);r!{*YWot4z4>_M4p+n? z*V(qKW&zE&)}Hws*4q^&zbYbSShcQeIn z4ETq6q`cKpfqz&7t4CeD#r_=W)Xv3-Mb`!b%=rTF9=2sA&#(Ofts1L&1$MkbOrC&fzR(b@qk8|BRttB`Yo!tY+S`5$#UcXS9 zlriAPRjP&+HMapN>A!s%ZL)=8;Ct;gjhA7X-$u0An*d+>L;8t!wFEM@i3|yd(y_-7Wt>miLT~ z0N~fZ#vM4*@#v;poT(#@lerhpZv?Wa@uOJSOIii91O8yF0(aA)eI3-9wzEI-m+CfJ zCsu~a+{;TVs$ot2`2+sbWtb*@ZBWIEp38;S&UeDAV-t@f#1QNo{76$*LwqY^=YMZeN*;nj6vi~axOVC-rbbU`v-Y;OEJ$rt^YTr6y ziGOX5GcayLSnfR7$q2R0rZZ~OT@3Hl^`h#DnOPjQtk@ z6fj%8lF`k>}=|1{7&FjxRPJUrGfENPvYc8c6*OCt}IZ&e&;5K;L1mB5Gi6e0S^2@A(1p!Amt~{6KZNT_(tvd)+WCCmqpI(2rNcF zgHhbKmI(WOqPys^0@ZpBh9#L!gJ9g-O_o0~Wp}h8VCMi#q);wI*LB~4$?-syOz{Yl zNx@Y+VH22zy0gE}m_OLcv%8sU&rewe6w3WKf!9-k{@)PXe}LQ6-3sgG>e+EN5dbnQ zvQjEXZKC;tVTmt2_jZ;99Jug$|Dv|dVUxq5Dig5VmI%C=n(swY=LoMH(miUpsn@Z- zpdG`OKuxI$`#m>Z)krNgp)plzxXASPkdS0h;NKMhQ!Om~a3@`8ter;;?ctgLo&(DFr+hF2C8n0NF^<2g0H3v~p{Itlm8KCTrg ztv{%vVrc*C6v?Yuaxeg*d62bSxJrs+n#k0EYpf%Pf9SmdETW)si1m@fRogpc8H;c8 z+bmExwaS`u7yG5J*$KE1!y{yW_G-qfEo8>6Bk%j2TDu>?y{jyru<9kK4#qE={X7D} z!V~{~o1^6tGc%OUmnv}tE9yV9qzXR?kvU|f#sRazc4Fp#b? zP;7arBSMoYNS=%*dD*W8`C)IxG;V?n{*$zS0sDT}9>x{L%hKY||G$MQAU(ap+ z3&imnu7JJ?Om8uzSZ-S7eyL{0OTkO==oZaN(hanlEv{(?qLEqs#KI}vo}?vnLX8(| zl!3@DRMOYYG5E>3Qv2Ec^k=D@sUojUoiCz))I_Ot^GkFeGC^{G1S3|0_L754P(AH2 z@y>{A_nS!q6m80#Oqo2>do14&a6^5g)jq!pj{x<*%fx?)Fx@udO>uE}K=Sh3n|(R+ zrs1`98E|>Lyg6Pdquza+942O~cZ+RNDm?>YZ_Qr2_ty<+-DCan!Tx5V5Ea_~ht4k} zE*Za`)~|QrteNiX+mLv&T~3Kq?MpWL$YpxYRDJt0x5k#X&WTe~*r7xXp7^7gc* zLn|vP)KD?MGeY`q&P#$W=l>Z%!p{`rJ#RyvXKv%LRj6Y8k^Rj9D=L0uf0tJxZK>X< z7IUQDo1cnsSR+C6!)h6K;yHCKy|Yhkz2WG?E`@H%E0Y^OdC%Sk$ScogsnM#J)1O_u zczd;@=Y2wiBy^dhU$OMX;=wC27q%d{E-!`T>%T);v&GnMpYXI@9jT+msfFug&RZZD zm(JAkzss8V(1jXM-hjWWvcA+60dO1`qIfOEK}YM-V(;szeaqmuiMxwKPivuXY{7?e z6O*2Hn;KE-sxezW3e_hng@nw%Tl^WZ= zSIQ7-uaW)2MEyvr<#=;BLFV;D4kC6ss?70ma4Lzl0Rs#a{UUoey-U z(ZT)=kR3K;O=mpHH=q1Z)yASbW*OjR|AK!Y(tB-QR<|I&2pO-PuOJvD+S>-KiCz5y z``g67)zI?N$PRL|irtw1^a>ny7Jj84{Iu$P9&76JFbPWyBZzi|=05J7JCEfQWTZ5e z;Vp1EY~1Z1%N=v{QIp@Bag=@>^`;Gb{8(8^x+L(ZO3FJf3t}7d8mq`edGT^~=*O~3gPGwTfbk66Qw8qeaxno@$0k7?AJjlY{pOtw& zQ)-ez_HlFVe?5s%e+;l+^sNBT9O=WS(K)k!{jE)fWzb}v(1kBaL$!vU&6F3PfDojV zXv0S4nX{8qzz#|pmKgp$Yx*%5zh|DjKY!PV*}lIBj}DPHTh@G$K17uA%5E-q!DhKh zuw)*`DbP0zE|$~0R}<)`+~xHA_ruK-G409pvybL=G(oB#8v+7mIRED5*WQ4P3jXl{ zom9W4XG|f&G8m+^1<)XnZ7|Ygjj{l`JYpav#n(cQd62)NSYYf_t@s8*CHAf74~!Rs z2xD`el&B`A0CbO-k7|SnU`jNTzBFR>A#8ElgSWwR8vwF5(2qxzv*;FbXruO%fl{Z1cBnuHs1=}F$F_h}%sopX zzONK@eGS~w)A39*ZTQvB?1q7we*%5dwe2~({jO?=3?JO9=OfqhBof}0z`*CEOV5B9 z9+X#V#m;?h|3WB24Zq3&A8QH2RPPZjxbbH9vD=r*n!rJ-ZAKO~1`I(F*wvY5z@RlR z6!M_+0X`D#jT#VeVI-ETtJ3b?C zKmUFkOcegdd4Ng|p4gs4H?IA9z95~o!1R5`Me9S!3ES8W+D3b^ZT959^vS@d_&~0v zyIS30YOEV$X81Pe=z0mG{b*NHJ+W3MB*Z(-OTdV4b^3Ci?nTzn0gddK0F(86LyKbJ zD&i%++6e*tMmr)|m8ytT4ga*Ey#^e^a4>_;j`d#KjeLOkgT6!a;WsKo%l4+Cw;&YL z49JIi_%^udDyfIoy@y`GjEkZ|qrzHUe>L{cL zD5w#+q7wiIGV}r#ZP*?F5S%|pdQ5;Uon%l8=yab?cx;9qgO2I#Gx z2!$^_y8?9`v6oJw2<)aD% zrcg1x9r6kU@sY)~DcMb!`B{a}TmkJfiL?rTYVIJ^c9i5+G(IQm0kwqDgs+;KFB#>` zpzb>=1LII;T+=FwmHW$`A90CI?nb@vyVLNLis^m`A^FM^L52l)+1liDOl;x}gmDC+f5)ul{jlo0CdjK_>q+eKd@ zq#$MiSGQf;e1Bb~`iNk^uBt>N^S%{3P2#L5su60vlT$1b{IpU-;O%bO+N4Ln@H28a zp*mjFNe5dpNY6-}q>@AAJ@#>-cx(>j4YXzNrc2P2!gQTx7jv4x(-V`#ZszFo zae!3ZY&xNyjbEcmBz+mR))9h#2C`>5ere*Qe9Ykpt;+7Ff@f!|&mqRMTY}%ZpZA48 zyTj6u>l{g(=gQX*Q5l%Iaa+@uZQj1tlQPQv+3QFR2{2dm7mubQ59JSb6U58|?{^xL zcBs|x(~H~&w;-7Q)FblpEB#6W7V!oF%C>+TveDC&|z#%n8RHGJs1* z7WC*`>{>(1qs~5J$^1+RWs59&<$|qFid@Ni)hcejfjK)T$z&&)^8SyvnGLWri5?L; z+)l(q^!<7Bd_xl!M4dsxph{)NI$%c@PB#g#b_DeKu|mQ`*W69u^D8~b?MLafaVNYk z@)|ls7?{R9$ZN@MM%2y?BLfdh;dYC&LkzFqNkDL|yyk-(-kdqQMY^yrd!E*|;`T=U zzed&tkL!b42vBYBjfL=u{Et0I^p&HZnNFCvq_^hFoB zcuh-9Bw2ykz+|YS)$>o9QLx`V5P`N6Uz5K^239yR^)5@+?T4Knr%v+ql{t|2DN&M_ zC$W_kEbt9IW_t3ha0%oeE^lm0Q`5AX&~Y;HSVm!Ks{QJslLpxYmJp_|=x3`|4ozxc zEZX*_T^}qPJVlj)b-8sTt3#hk6NZMW%QS?V1TEk>U*C~UA;S2nqpWGbVrL@s*fqSZ z7Np=<4)k_AZNfnS>kM&c>NF~fd@pTEKwDG0 zUpAQc{mx~SXhPFW9gb0b*7;5L@uxYL(BhJ(IKYrN?AHm;kFnNi>ev_u?q%M@$BoJx zK88ICE4|KCTK`_(thAlBLRLa1H{X3E_iLDZ1Fs9c*LKA}ZJL#KT|a6E1~ujsjPaFF zg+4zvBX?2x5z~S`Z~1G!kEc7PI4@P0v2)QbRzf~GYVp~z_cCx&zU^|6uuFrT>g63K zDc%0UH#tW;*_DuQANC9BMt$n#8A0qAt_1;p)Z;H*Hx@X!fb-7yz=U7?OqzjT$@H|< zv6yCj)_5vRcG!7(2&U}lC6W_{eCTXMKYCCMOyN4}LdHKh04Gkb?9tljVU zy>bpHZ!bTNlH4|XWvG6B*bOyu@zXBDLfam98QXJ*Uh&>Q12;nMN7Q`b4BfZY$CJiG zxpp{qRPYOk4TGkhK9uQnBEw+iQOIJdXY;9O0NRLF4=kYrqGum%VU|{{>595q7gw#vau<_On-x~iZED+R z_6CSBs&zuym&roal9H+exo=%5nrNW})55;^bwdnlKJbeU+tm6Gwu2hThA$cTh5Lt5e4#>Zj}Hem6vfi&*i=0 z)vNj-W339nQS)yWi9#VMOUgpT@@n`QL6<_w*cdWK7@)_{PK`IahY6^)8b&vYI_X zDL@=v9|UB&_N{%N>!J!T@>Krd6!1P#d*quwx9j#v*e?JGgdqKq_pFPfi;HnR2e*rh zUsHcfNv(2~TL$Hovqi~#N<~Kn5w3UKR#TWGhs;NUU>QR08@8===OCWC}1>#Z7FsX&r2Ds8JuXY%vP&{Hoe@3=i@<%K7emj}(=#F6*RcRkhQtqX$d^FRva<8Ds~ z?qkxB`wq!4sn(gLUmgt8pGObx`98x?2x3zO98l*M^Q6$T_lrQJt*msNpd-P~;DMVK z0~w>H7DMbZ8WP4K18n#&(Chy*q%%xHOdrmBA{JiWo}~6oaf+*xO-7w*vRu39G42r- zen?en(E^-e2}>fpfCm5sgZ(2t1NH++wG+0LNA`2C0VB50Y3u4Z(oV5+tQI6ya?P|o z#b_B@?nt&EiA>oo*XyRyM)+F|{yshXTp5%3!nxNGfQ0g*?O#WfFwPKVG!S1cR)V;q zN%8QMrm#ceg`+hhFb?75!x=^q`t&2Y2of>L#oAr-t!611PvPM2?Mc91&{ORQT}CGS z97P`F3QvG+%D+V>%@XPn@sehKM4*vTlv2!BL6bUyu;*t}H98QnlVYi}*2k&vKgrOm z1F10eF-Ie=AL>B<^Bzi%?tF6wFNf`Yo$bLUkD=6*me|6BTFq}=p8EEIt+5sxud9Au zXH&x@D2XxO7f3{UWr3MEls3~=QiP(ZCAZ=^e|GboIVRac`E@?M+tv<&(*1%xdqB?s zkd(Q^OPb)P@2~5KuXFjpbUc%M6&WTIjc&~+J4^RXUsK1R(_uOXGD^v!S|ZTOU&c(< ze79Qm`qxs!LhcJ{M8hV^X7)RQwHu8xGqkM4L|#afUy0GqWC(XfJ1O5?*){5wISIyn znZ#c}g7`!hawq=-X3iI5XsP2~OIV?#ugmc|&~t^(g8;qq3Ops1A|zyD2e`oLyd#Zd z?B9W~+A?$z#t@!Q*aQ5zECy~wb7aoz+!?EO`0_AJlwb6|@ztPr^+^d2Y0*ADIs=P) z|1w*j=GgVe60gVyNJ#6+g~;jr%N&UMyY-19Ao7(;1U)*Qg5F2lx}YQAj#hGHXXMjI z==ci}Udi+Sn}awylE!yaxXbqbdVKY}>u{#%RWbLs@6WME@zP0!RNBtAg!-mYvn3U# z@aZuTmc|^6R7Y*TXK|e`8G$6cH)V_>3&u7e*E!#+xK>A}e)UD7rn})BZ`q9v8_bMT zg};8~{23g{@fw|msgiNz5k70^L>Svip-%kMiPBzEJ6@J(L=B}-wThQQIZKJWlw90aF(hsjQDwEzLwbMiw_rgI%;v?CenT|!a){)&%x8z;%8hXRSi!`|PLtT_9!q5hU7ZCNT-+q7If0h}WQILoH2?$EqlV)qP zGzAlvJa@;-37Q{8h@yaTfnY4_=>A5keC2DqiV7EA+ok_+eTSBo_!ML{Cs3KZKcX9k5_!nf~J|R;Kpaqx=C;hQb3hFf@%*)q*%`N~CC7wX zy!{&d64)gA_UlP8n}7f7FLMoV-<}GpfZYGhI9JdTc=3XWB{2DIk2*1VI`_=?puG3* zd*4JBLF0gmpG$M+6dowJaxg_Vbj9Z98_G=kHMlr@8~3W)Hfbcy_-y=@J8!OIvd?<+ zD4;vS>y(r`HdGx=DzSU;!A~Dl3KVBLJe+g#o_?FiDmB0R-oPTUe8>9@yUR}||Z_?F-|AD}Ji33tO zJ^r(uH0aTY5<5EQCV3F5SQ_MF{8F4I))eqTKgs*I|?Z0Uae+eOf0(F9Oiv|Z89;8YE$Np!5M zYuyPGezqTpF7+mEBA5Q(Z-~7bsTq+m%gI&0_~}uj#T(uCzfOO}?`GE|ws{S(AEFz^ zD|J_I*}6dcmx>ZgZW*3ED=D^CSiIOZE%&Ng1E?L|tvdJ9s@9a1Ej?nOW~oo7*FBYc z9U8aUx|CFbNkFKzVgHuBv%miO@$4sATMuLyxJ_X(@m(6FwIG|-^*xc_00W)RaY}rr7nD1kvN(a6gI(QM z#Zm3`=kjard9vR#W%+K@ZS;Aixt^~EVxyvbW1qysT{Qm!hy6m1s9X-br zm+ccjYI0X`kpif#s-30K#U%gBUFKfq;u~3@yzyP$X6e4`i|1XgSYmQ>N2nJtF&D>3qyr9P7(iJ{uclo{k!49q(BJYQ2 ztbe|_gii^+g^fI+AW8M&_2dbc=^`1;jnK|G7)?uTPxL<#+f!yN$ z)@rvpuS%qg5DVYyv%uOqmRIufiOJxEDPC+@;(V~MR>#y{wSRlvt3`a6Z%6nYS1EsC)l%59cIJ7x-T%HQ0P{xP$#V~P=)Ju+A$s~Y z$=z{U!19twDNw*k=CUkLpsN_L-ENxFyts`DPeMKhU(nF-->RIzQ7nU?_({}mfHJF;*rF9Ast{>F+043 xt>67e+=0W}{REVRfU#lf{qV^*VQ}U6PyA)SeAn{u+szC>;OXk;vd$@?2>|*ah_nCz diff --git a/sound/effects/doorcreaky.ogg b/sound/effects/doorcreaky.ogg new file mode 100644 index 0000000000000000000000000000000000000000..3d60aca56bfea4188d93b808c65a16a72ee1ffa8 GIT binary patch literal 81565 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

5q%jK7T@A6zxZ0UvuLSCwf+ALZey!Ci>31 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 H#0C5xRshmL literal 0 HcmV?d00001 From 5c2523e4e078a469a46c5f45088139968214749a Mon Sep 17 00:00:00 2001 From: Ren Erthilo Date: Thu, 3 May 2012 03:30:08 +0100 Subject: [PATCH 15/19] TG: Added cult structure icons by Ausops/Utilitas and objects for them which are (for now) purely decorative. Revision: r3455 Author: kortgstation --- baystation12.dme | 1 + code/game/gamemodes/cult/cult_structures.dm | 52 ++++++++++++++++++++ code/game/gamemodes/nuclear/nuclearbomb.dm | 8 --- icons/obj/cult.dmi | Bin 0 -> 12868 bytes 4 files changed, 53 insertions(+), 8 deletions(-) create mode 100644 code/game/gamemodes/cult/cult_structures.dm create mode 100644 icons/obj/cult.dmi diff --git a/baystation12.dme b/baystation12.dme index b6f36cb6811..3abdf35c59c 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -437,6 +437,7 @@ #include "code\game\gamemodes\changeling\traitor_chan.dm" #include "code\game\gamemodes\cult\cult.dm" #include "code\game\gamemodes\cult\cult_items.dm" +#include "code\game\gamemodes\cult\cult_structures.dm" #include "code\game\gamemodes\epidemic\epidemic.dm" #include "code\game\gamemodes\extended\extended.dm" #include "code\game\gamemodes\malfunction\Malf_Modules.dm" diff --git a/code/game/gamemodes/cult/cult_structures.dm b/code/game/gamemodes/cult/cult_structures.dm new file mode 100644 index 00000000000..c4e4080459d --- /dev/null +++ b/code/game/gamemodes/cult/cult_structures.dm @@ -0,0 +1,52 @@ +/obj/structure/cult + density = 1 + anchored = 1 + icon = 'cult.dmi' + +/obj/structure/cult/talisman + name = "Altar" + desc = "A bloodstained altar dedicated to Nar-Sie" + icon_state = "talismanaltar" + + +/obj/structure/cult/forge + name = "Daemon forge" + desc = "A forge used in crafting the unholy weapons used by the armies of Nar-Sie" + icon_state = "forge" + +/obj/structure/cult/pylon + name = "Pylon" + desc = "A floating crystal that hums with an unearthly energy" + icon_state = "pylon" + + +/obj/structure/cult/tome + name = "Desk" + desc = "A desk covered in arcane manuscripts and tomes in unknown languages. Looking at the text makes your skin crawl" + icon_state = "tomealtar" + +/obj/structure/cult/pillar + name = "Pillar" + desc = "This should not exist" + icon_state = "pillar" + icon = 'magic_pillar.dmi' + + +/obj/effect/gateway + name = "gateway" + desc = "You're pretty sure that abyss is staring back" + icon = 'cult.dmi' + icon_state = "hole" + density = 1 + unacidable = 1 + anchored = 1.0 + +/obj/effect/gateway/Bumped(mob/M as mob|obj) + spawn(0) + return + return + +/obj/effect/gateway/HasEntered(AM as mob|obj) + spawn(0) + return + return \ No newline at end of file diff --git a/code/game/gamemodes/nuclear/nuclearbomb.dm b/code/game/gamemodes/nuclear/nuclearbomb.dm index e351f3d82a3..ca568f6bf9d 100644 --- a/code/game/gamemodes/nuclear/nuclearbomb.dm +++ b/code/game/gamemodes/nuclear/nuclearbomb.dm @@ -151,7 +151,6 @@ /obj/machinery/nuclearbomb/ex_act(severity) return - /obj/machinery/nuclearbomb/blob_act() if (src.timing == -1.0) return @@ -174,15 +173,8 @@ ticker.mode.explosion_in_progress = 1 sleep(100) -/* - var/turf/ground_zero = get_turf(loc) - explosion(ground_zero, 50, 250, 500, 750) - -*/ enter_allowed = 0 - - var/off_station = 0 var/area/A = get_area(src.loc) if(A && (istype(A,/area/syndicate_station) || A.type == "/area")) diff --git a/icons/obj/cult.dmi b/icons/obj/cult.dmi new file mode 100644 index 0000000000000000000000000000000000000000..7d73fe97be3da70f51e581f2886fe6b0b07c8cac GIT binary patch literal 12868 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 C?k)HL literal 0 HcmV?d00001 From 3c96a4357da581a7a6b7b4fa965ef0e2b81e9423 Mon Sep 17 00:00:00 2001 From: Ren Erthilo Date: Thu, 3 May 2012 03:33:57 +0100 Subject: [PATCH 16/19] TG: Reverting the ID changes, no more gold IDs for everyone. I'll try and get the silver IDs in properly, but I don't have time to work it out atm. Revision: r3457 Author: petethegoat --- code/game/jobs/job_controller.dm | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/code/game/jobs/job_controller.dm b/code/game/jobs/job_controller.dm index baddec7c9c1..865baeee72d 100644 --- a/code/game/jobs/job_controller.dm +++ b/code/game/jobs/job_controller.dm @@ -288,9 +288,7 @@ var/global/datum/controller/occupations/job_master switch(rank) if("Cyborg") return - if( "Head of Personnel" || "Head of Security" || "Chief Engineer" || "Research Director" || "Chief Medical Officer") - C = new /obj/item/weapon/card/id/silver(H) - else if("Captain") + if("Captain") C = new /obj/item/weapon/card/id/gold(H) else C = new /obj/item/weapon/card/id(H) From 77845f557a34b8f86b06d5855cbd6a50f63a82a0 Mon Sep 17 00:00:00 2001 From: Ren Erthilo Date: Thu, 3 May 2012 03:37:23 +0100 Subject: [PATCH 17/19] TG: - Made the gold, silver, regular id cards a job datum variable. Revision: r3471 Author: baloh.matev --- code/game/jobs/job/captain.dm | 2 ++ code/game/jobs/job/engineering.dm | 1 + code/game/jobs/job/job.dm | 3 +++ code/game/jobs/job/medical.dm | 1 + code/game/jobs/job/science.dm | 1 + code/game/jobs/job/security.dm | 1 + code/game/jobs/job_controller.dm | 17 ++++++++++++----- 7 files changed, 21 insertions(+), 5 deletions(-) diff --git a/code/game/jobs/job/captain.dm b/code/game/jobs/job/captain.dm index c5fb2e259cf..d7ed1fefeea 100644 --- a/code/game/jobs/job/captain.dm +++ b/code/game/jobs/job/captain.dm @@ -7,6 +7,7 @@ spawn_positions = 1 supervisors = "Nanotrasen officials and Space law" selection_color = "#ccccff" + idtype = /obj/item/weapon/card/id/gold equip(var/mob/living/carbon/human/H) @@ -43,6 +44,7 @@ spawn_positions = 1 supervisors = "the captain" selection_color = "#ddddff" + idtype = /obj/item/weapon/card/id/silver equip(var/mob/living/carbon/human/H) diff --git a/code/game/jobs/job/engineering.dm b/code/game/jobs/job/engineering.dm index df37a83acd8..f01f05c2c59 100644 --- a/code/game/jobs/job/engineering.dm +++ b/code/game/jobs/job/engineering.dm @@ -7,6 +7,7 @@ spawn_positions = 1 supervisors = "the captain" selection_color = "#ffeeaa" + idtype = /obj/item/weapon/card/id/silver equip(var/mob/living/carbon/human/H) diff --git a/code/game/jobs/job/job.dm b/code/game/jobs/job/job.dm index 217e5e7e087..07b1a4ee1a3 100644 --- a/code/game/jobs/job/job.dm +++ b/code/game/jobs/job/job.dm @@ -25,6 +25,9 @@ //Sellection screen color var/selection_color = "#ffffff" + //the type of the ID the player will have + var/idtype = /obj/item/weapon/card/id + //List of alternate titles, if any var/list/alt_titles diff --git a/code/game/jobs/job/medical.dm b/code/game/jobs/job/medical.dm index 5a4220828dc..f96126e3e24 100644 --- a/code/game/jobs/job/medical.dm +++ b/code/game/jobs/job/medical.dm @@ -7,6 +7,7 @@ spawn_positions = 1 supervisors = "the captain" selection_color = "#ffddf0" + idtype = /obj/item/weapon/card/id/silver equip(var/mob/living/carbon/human/H) diff --git a/code/game/jobs/job/science.dm b/code/game/jobs/job/science.dm index d3eb18db922..243d9fee647 100644 --- a/code/game/jobs/job/science.dm +++ b/code/game/jobs/job/science.dm @@ -7,6 +7,7 @@ spawn_positions = 1 supervisors = "the captain" selection_color = "#ffddff" + idtype = /obj/item/weapon/card/id/silver equip(var/mob/living/carbon/human/H) diff --git a/code/game/jobs/job/security.dm b/code/game/jobs/job/security.dm index 364508ee048..3bf370b7d56 100644 --- a/code/game/jobs/job/security.dm +++ b/code/game/jobs/job/security.dm @@ -7,6 +7,7 @@ spawn_positions = 1 supervisors = "the captain" selection_color = "#ffdddd" + idtype = /obj/item/weapon/card/id/silver equip(var/mob/living/carbon/human/H) diff --git a/code/game/jobs/job_controller.dm b/code/game/jobs/job_controller.dm index 865baeee72d..7b9e21ab0ac 100644 --- a/code/game/jobs/job_controller.dm +++ b/code/game/jobs/job_controller.dm @@ -285,13 +285,20 @@ var/global/datum/controller/occupations/job_master if(!H) return 0 if(!title) title = rank var/obj/item/weapon/card/id/C = null - switch(rank) - if("Cyborg") + + var/datum/job/job = null + for(var/datum/job/J in occupations) + if(J.title == rank) + job = J + break + + if(job) + if(job.title == "Cyborg") return - if("Captain") - C = new /obj/item/weapon/card/id/gold(H) else - C = new /obj/item/weapon/card/id(H) + C = new job.idtype(H) + else + C = new /obj/item/weapon/card/id(H) if(C) C.registered_name = H.real_name C.assignment = title From 0554a4627cb56464692908e116c8ff3144f56287 Mon Sep 17 00:00:00 2001 From: Ren Erthilo Date: Thu, 3 May 2012 19:30:29 +0100 Subject: [PATCH 18/19] Revert "TG: Added the foundations of a special-day events system. It's a bit more robust," This reverts commit d92495a2b06dc50d02e506e3066c1f8e7c01de87. Does not revert tank alert changes. --- baystation12.dme | 2 - code/datums/configuration.dm | 4 - code/defines/procs/station_name.dm | 49 +---- code/game/cellautomata.dm | 1 - .../events/EventProcs/holidays/AprilFools.dm | 1 - .../events/EventProcs/holidays/Christmas.dm | 1 - .../game/events/EventProcs/holidays/Easter.dm | 1 - .../events/EventProcs/holidays/Holidays.dm | 178 ------------------ code/game/gamemodes/gameticker.dm | 2 - code/modules/admin/admin_verbs.dm | 2 - config/config.txt | 3 - 11 files changed, 2 insertions(+), 242 deletions(-) delete mode 100644 code/game/events/EventProcs/holidays/AprilFools.dm delete mode 100644 code/game/events/EventProcs/holidays/Christmas.dm delete mode 100644 code/game/events/EventProcs/holidays/Easter.dm delete mode 100644 code/game/events/EventProcs/holidays/Holidays.dm diff --git a/baystation12.dme b/baystation12.dme index 3abdf35c59c..28a9fa0df46 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -31,7 +31,6 @@ #define FILE_DIR "code/game/asteroid" #define FILE_DIR "code/game/events" #define FILE_DIR "code/game/events/EventProcs" -#define FILE_DIR "code/game/events/EventProcs/holidays" #define FILE_DIR "code/game/events/Events" #define FILE_DIR "code/game/gamemodes" #define FILE_DIR "code/game/gamemodes/autotraitor" @@ -406,7 +405,6 @@ #include "code\game\events\EventProcs\space_ninja.dm" #include "code\game\events\EventProcs\spacevines.dm" #include "code\game\events\EventProcs\wormholes.dm" -#include "code\game\events\EventProcs\holidays\Holidays.dm" #include "code\game\events\Events\AlienInfestation.dm" #include "code\game\events\Events\Appendicitis.dm" #include "code\game\events\Events\ElectricalStorm.dm" diff --git a/code/datums/configuration.dm b/code/datums/configuration.dm index 733fd925b41..59c5c6543d9 100644 --- a/code/datums/configuration.dm +++ b/code/datums/configuration.dm @@ -285,10 +285,6 @@ if("popup_admin_pm") config.popup_admin_pm = 1 - - if("allow_holidays") - Holiday = 1 - if("useircbot") useircbot = 1 diff --git a/code/defines/procs/station_name.dm b/code/defines/procs/station_name.dm index 5b9fab8d86b..4e230f315e3 100644 --- a/code/defines/procs/station_name.dm +++ b/code/defines/procs/station_name.dm @@ -3,60 +3,15 @@ return station_name var/name = "NSS Exodus" -/* - var/random = rand(1,5) - var/name = "" - //Rare: Pre-Prefix - if (prob(10)) - name = pick("Imperium", "Heretical", "Cuban", "Psychic", "Elegant", "Common", "Uncommon", "Rare", "Unique", "Houseruled", "Religious", "Atheist", "Traditional", "Houseruled", "Mad", "Super", "Ultra", "Secret", "Top Secret", "Deep", "Death", "Zybourne", "Central", "Main", "Government", "Uoi", "Fat", "Automated", "Experimental", "Augmented") - station_name = name + " " - - // Prefix - switch(Holiday) - //get normal name - if(null,"",0) - name = pick("", "Stanford", "Dorf", "Alium", "Prefix", "Clowning", "Aegis", "Ishimura", "Scaredy", "Death-World", "Mime", "Honk", "Rogue", "MacRagge", "Ultrameens", "Safety", "Paranoia", "Explosive", "Neckbear", "Donk", "Muppet", "North", "West", "East", "South", "Slant-ways", "Widdershins", "Rimward", "Expensive", "Procreatory", "Imperial", "Unidentified", "Immoral", "Carp", "Ork", "Pete", "Control", "Nettle", "Aspie", "Class", "Crab", "Fist","Corrogated","Skeleton","Race", "Fatguy", "Gentleman", "Capitalist", "Communist", "Bear", "Beard", "Derp", "Space", "Spess", "Star", "Moon", "System", "Mining", "Neckbeard", "Research", "Supply", "Military", "Orbital", "Battle", "Science", "Asteroid", "Home", "Production", "Transport", "Delivery", "Extraplanetary", "Orbital", "Correctional", "Robot", "Hats", "Pizza") - if(name) - station_name += name + " " - - //For special days like christmas, easter, new-years etc ~Carn - if("Friday the 13th") - name = pick("Mike","Friday","Evil","Myers","Murder","Deathly","Stabby") - station_name += name + " " - random = 13 - else - //get the first word of the Holiday and use that - var/i = findtext(Holiday," ",1,0) - name = copytext(Holiday,1,i) - station_name += name + " " - - // Suffix - name = pick("Station", "Fortress", "Frontier", "Suffix", "Death-trap", "Space-hulk", "Lab", "Hazard","Spess Junk", "Fishery", "No-Moon", "Tomb", "Crypt", "Hut", "Monkey", "Bomb", "Trade Post", "Fortress", "Village", "Town", "City", "Edition", "Hive", "Complex", "Base", "Facility", "Depot", "Outpost", "Installation", "Drydock", "Observatory", "Array", "Relay", "Monitor", "Platform", "Construct", "Hangar", "Prison", "Center", "Port", "Waystation", "Factory", "Waypoint", "Stopover", "Hub", "HQ", "Office", "Object", "Fortification", "Colony", "Planet-Cracker", "Roost", "Fat Camp") - station_name += name + " " - - // ID Number - switch(random) - if(1) - station_name += "[rand(1, 99)]" - if(2) - station_name += pick("Alpha", "Beta", "Gamma", "Delta", "Epsilon", "Zeta", "Eta", "Theta", "Iota", "Kappa", "Lambda", "Mu", "Nu", "Xi", "Omicron", "Pi", "Rho", "Sigma", "Tau", "Upsilon", "Phi", "Chi", "Psi", "Omega") - if(3) - station_name += pick("II", "III", "IV", "V", "VI", "VII", "VIII", "IX", "X", "XI", "XII", "XIII", "XIV", "XV", "XVI", "XVII", "XVIII", "XIX", "XX") - if(4) - station_name += pick("Alpha", "Bravo", "Charlie", "Delta", "Echo", "Foxtrot", "Golf", "Hotel", "India", "Juliet", "Kilo", "Lima", "Mike", "November", "Oscar", "Papa", "Quebec", "Romeo", "Sierra", "Tango", "Uniform", "Victor", "Whiskey", "X-ray", "Yankee", "Zulu") - if(5) - station_name += pick("One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen") - if(13) - station_name += pick("13","XIII","Thirteen") -*/ + station_name = name if (config && config.server_name) world.name = "[config.server_name]: [name]" else world.name = "Baystation12" - return station_name + return name /proc/world_name(var/name) diff --git a/code/game/cellautomata.dm b/code/game/cellautomata.dm index 5d5bbcc4d8a..b05d22e526d 100644 --- a/code/game/cellautomata.dm +++ b/code/game/cellautomata.dm @@ -88,7 +88,6 @@ if (config.usewhitelist) load_whitelist() LoadBansjob() - Get_Holiday() //~Carn, needs to be here when the station is named so :P src.update_status() makepowernets() diff --git a/code/game/events/EventProcs/holidays/AprilFools.dm b/code/game/events/EventProcs/holidays/AprilFools.dm deleted file mode 100644 index 2b4a1008ff1..00000000000 --- a/code/game/events/EventProcs/holidays/AprilFools.dm +++ /dev/null @@ -1 +0,0 @@ -//placeholder for holiday stuff \ No newline at end of file diff --git a/code/game/events/EventProcs/holidays/Christmas.dm b/code/game/events/EventProcs/holidays/Christmas.dm deleted file mode 100644 index 2b4a1008ff1..00000000000 --- a/code/game/events/EventProcs/holidays/Christmas.dm +++ /dev/null @@ -1 +0,0 @@ -//placeholder for holiday stuff \ No newline at end of file diff --git a/code/game/events/EventProcs/holidays/Easter.dm b/code/game/events/EventProcs/holidays/Easter.dm deleted file mode 100644 index 2b4a1008ff1..00000000000 --- a/code/game/events/EventProcs/holidays/Easter.dm +++ /dev/null @@ -1 +0,0 @@ -//placeholder for holiday stuff \ No newline at end of file diff --git a/code/game/events/EventProcs/holidays/Holidays.dm b/code/game/events/EventProcs/holidays/Holidays.dm deleted file mode 100644 index c9731d986b4..00000000000 --- a/code/game/events/EventProcs/holidays/Holidays.dm +++ /dev/null @@ -1,178 +0,0 @@ -//Uncommenting ALLOW_HOLIDAYS in config.txt will enable Holidays -var/global/Holiday = null - -//Just thinking ahead! Here's the foundations to a more robust Holiday event system. -//It's easy as hell to add stuff. Just set Holiday to something using the switch (or something else) -//then use if(Holiday == "MyHoliday") to make stuff happen on that specific day only -//Please, Don't spam stuff up with easter eggs, I'd rather somebody just delete this than people cause -//the game to lag even more in the name of one-day content. - -////////////////////////////////////////////////////////////////////////////////////////////////////////// -//ALSO, MOST IMPORTANTLY: Don't add stupid stuff! Discuss bonus content with Project-Heads first please!// -////////////////////////////////////////////////////////////////////////////////////////////////////////// -// ~Carn - -//sets up the Holiday global variable. Shouldbe called on game configuration or something. -/proc/Get_Holiday() - if(!Holiday) return // Holiday stuff was not enabled in the config! - - Holiday = null // reset our switch now so we can recycle it as our Holiday name - - var/YY = text2num(time2text(world.timeofday, "YY")) // get the current year - var/MM = text2num(time2text(world.timeofday, "MM")) // get the current month - var/DD = text2num(time2text(world.timeofday, "DD")) // get the current day - - //Main switch. If any of these are too dumb/inappropriate, or you have better ones, feel free to change whatever - switch(MM) - if(1) //Jan - switch(DD) - if(1) Holiday = "New Year's Day" - - if(2) //Feb - switch(DD) - if(2) Holiday = "Groundhog Day" - if(14) Holiday = "Valentine's Day" - if(17) Holiday = "Random Acts of Kindness Day" - - if(3) //Mar - switch(DD) - if(17) Holiday = "St. Patrick's Day" - if(27) - if(YY == 16) - Holiday = "Easter" - if(31) - if(YY == 13) - Holiday = "Easter" - - if(4) //Apr - switch(DD) - if(1) - Holiday = "April Fool's Day" - if(YY == 18 && prob(50)) Holiday = "Easter" - if(5) - if(YY == 15) Holiday = "Easter" - if(14) Holiday = "Pi Day" - if(16) - if(YY == 17) Holiday = "Easter" - if(20) - Holiday = "Four-Twenty" - if(YY == 14 && prob(50)) Holiday = "Easter" - if(22) Holiday = "Earth Day" - - if(5) //May - switch(DD) - if(1) Holiday = "Labour Day" - if(4) Holiday = "FireFighter's Day" - if(12) Holiday = "Owl and Pussycat Day" //what a dumb day of observence...but we -do- have costumes already :3 - - if(6) //Jun - - if(7) //Jul - switch(DD) - if(1) Holiday = "Doctor's Day" - if(2) Holiday = "UFO Day" - if(8) Holiday = "Writer's Day" - if(30) Holiday = "Friendship Day" - - if(8) //Aug - switch(DD) - if(5) Holiday = "Beer Day" - - if(9) //Sep - switch(DD) - if(19) Holiday = "Talk-Like-a-Pirate Day" - if(28) Holiday = "Stupid-Questions Day" - - if(10) //Oct - switch(DD) - if(4) Holiday = "Animal's Day" - if(7) Holiday = "Smiling Day" - if(16) Holiday = "Boss' Day" - if(31) Holiday = "Halloween" - - if(11) //Nov - switch(DD) - if(1) Holiday = "Vegan Day" - if(13) Holiday = "Kindness Day" - if(19) Holiday = "Flowers Day" - if(21) Holiday = "Saying-'Hello' Day" - - if(12) //Dec - switch(DD) - if(10) Holiday = "Human-Rights Day" - if(14) Holiday = "Monkey Day" - if(22) Holiday = "Orgasming Day" //lol. These all actually exist - if(24) Holiday = "Christmas Eve" - if(25) Holiday = "Christmas" - if(26) Holiday = "Boxing Day" - if(31) Holiday = "New Year's Eve" - - if(!Holiday) - //Friday the 13th - if(DD == 13) - if(time2text(world.timeofday, "DDD") == "Fri") - Holiday = "Friday the 13th" - -//Allows GA and GM to set the Holiday variable -/client/proc/Set_Holiday(T as text|null) - set name = ".Set Holiday" - set category = "Fun" - set desc = "Force-set the Holiday variable to make the game think it's a certain day." - - if( !holder || !(holder.rank in list("Game Master","Game Admin")) ) - src << "Error: Set_Holiday: You hold insufficient rank to perform this action." - return - - if(!T) return - - Holiday = T - //get a new station name - station_name = null - station_name() - //update our hub status - world.update_status() -// Holiday_Game_Start() - - message_admins("\blue ADMIN: Event: [key_name(src)] force-set Holiday to \"[Holiday]\"") - log_admin("[key_name(src)] force-set Holiday to \"[Holiday]\"") - - -//Run at the start of a round -/proc/Holiday_Game_Start() - if(Holiday) - world << "and..." - world << "

Happy [Holiday] Everybody!

" - switch(Holiday) //special holidays - if("Easter") - //do easter stuff - if("Christmas ") - //do christmas stuff - else - //etc. you get what I'm getting at - return - -//Nested in the random events loop. Will be triggered every 2 minutes -/proc/Holiday_Random_Event() - switch(Holiday) //special holidays - - if("",null) //no Holiday today! Back to work! - return - - if("Easter") //I'll make this into some helper procs at some point -/* var/list/turf/simulated/floor/Floorlist = list() - for(var/turf/simulated/floor/T) - if(T.contents) - Floorlist += T - var/turf/simulated/floor/F = Floorlist[rand(1,Floorlist.len)] - Floorlist = null - var/obj/structure/closet/C = locate(/obj/structure/closet) in F - var/obj/item/weapon/reagent_containers/food/snacks/chocolateegg/wrapped/Egg - if( C ) Egg = new(C) - else Egg = new(F) -*/ -/* var/list/obj/containers = list() - for(var/obj/item/weapon/storage/S in world) - if(S.z != 1) continue - containers += S - - message_admins("\blue DEBUG: Event: Egg spawned at [Egg.loc] ([Egg.x],[Egg.y],[Egg.z])")*/ \ No newline at end of file diff --git a/code/game/gamemodes/gameticker.dm b/code/game/gamemodes/gameticker.dm index bd97bd3dae8..dc2fe2e28cd 100644 --- a/code/game/gamemodes/gameticker.dm +++ b/code/game/gamemodes/gameticker.dm @@ -113,8 +113,6 @@ var/datum/roundinfo/roundinfo = new() spawn(-1) world << "Enjoy the game!" world << sound('welcome.ogg') // Skie - //Holiday Round-start stuff ~Carn - Holiday_Game_Start() spawn() supply_ticker() // Added to kick-off the supply shuttle regenerating points -- TLE diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index b275958f043..38e63dea1b0 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -256,7 +256,6 @@ verbs += /client/proc/toggle_gravity_off verbs += /client/proc/toggle_random_events verbs += /client/proc/deadmin_self - verbs += /client/proc/Set_Holiday //Force-set a Holiday //verbs += /client/proc/cmd_mass_modify_object_variables --Merged with view variables //verbs += /client/proc/cmd_admin_explosion --Merged with view variables //verbs += /client/proc/cmd_admin_emp --Merged with view variables @@ -417,7 +416,6 @@ verbs -= /client/proc/deadmin_self verbs -= /client/proc/jumptocoord verbs -= /client/proc/everyone_random - verbs -= /client/proc/Set_Holiday verbs -= /client/proc/cmd_admin_change_custom_event verbs -= /client/proc/admin_invis verbs -= /client/proc/callprocgen diff --git a/config/config.txt b/config/config.txt index cd1e8601b4a..c5c4c3fc147 100644 --- a/config/config.txt +++ b/config/config.txt @@ -143,8 +143,5 @@ GUEST_JOBBAN 1 ## The intention is to make adminPMs more visible. (although I fnd popups annoying so this defaults to off) #POPUP_ADMIN_PM -## Remove the # to allow special 'Easter-egg' events on special holidays such as seasonal holidays and stuff like 'Talk Like a Pirate Day' :3 YAARRR -#ALLOW_HOLIDAYS - ##What address should banned people appeal ther ban at? Remember to escape the characters, if needed! # APPEAL_ADDRESS -->APPEAL ADDRESS HERE<-- \ No newline at end of file From 933a95dd6e65c68eb47bf8f40c403ed1260ab3ff Mon Sep 17 00:00:00 2001 From: Ren Erthilo Date: Thu, 3 May 2012 22:05:59 +0100 Subject: [PATCH 19/19] Fixes CE's office door name, renames a few APCs to match their area, changed research, mining, and atmospherics doors. Fixes watering cans. Changelog! --- code/game/machinery/autolathe.dm | 4 +-- code/game/machinery/sink.dm | 2 +- code/modules/chemical/Chemistry-Tools.dm | 13 +++---- html/changelog.html | 29 ++++++++++++++++ maps/tgstation.2.0.8.dmm | 44 ++++++++++++------------ 5 files changed, 58 insertions(+), 34 deletions(-) diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm index 9802c771fbd..83392c7b161 100644 --- a/code/game/machinery/autolathe.dm +++ b/code/game/machinery/autolathe.dm @@ -262,19 +262,17 @@ var/global/list/autolathe_recipes_hidden = list( \ restart: if(outputAmount > 0) if(src.m_amount >= template.m_amt*multiplier && src.g_amount >= template.g_amt*multiplier) - busy = 1 + use_power(power) icon_state = "autolathe" flick("autolathe_n",src) spawn(16) - if(!busy) busy = 1 use_power(power) spawn(16) use_power(power) spawn(16) - flick("autolathe_n",src) src.m_amount -= template.m_amt*multiplier src.g_amount -= template.g_amt*multiplier if(src.m_amount < 0) diff --git a/code/game/machinery/sink.dm b/code/game/machinery/sink.dm index 7927772702f..e89b11828dd 100644 --- a/code/game/machinery/sink.dm +++ b/code/game/machinery/sink.dm @@ -76,7 +76,7 @@ user << "\red Someone's already washing something here." return - if (istype(O, (/obj/item/weapon/reagent_containers/glass/bucket || /obj/item/weapon/reagent_containers/glass/watercan))) + if (istype(O, /obj/item/weapon/reagent_containers/glass/bucket)) O:reagents.add_reagent("water", 70) user.visible_message( \ "\blue [user] fills the [O] using the [src].", \ diff --git a/code/modules/chemical/Chemistry-Tools.dm b/code/modules/chemical/Chemistry-Tools.dm index bede9c678fe..3562372a94a 100644 --- a/code/modules/chemical/Chemistry-Tools.dm +++ b/code/modules/chemical/Chemistry-Tools.dm @@ -1887,19 +1887,16 @@ del(D) del(src) -/obj/item/weapon/reagent_containers/glass/watercan +/obj/item/weapon/reagent_containers/glass/bucket/wateringcan name = "watering can" desc = "A watering can, for all your watering needs." icon = 'hydroponics.dmi' icon_state = "watercan" item_state = "bucket" - m_amt = 200 - g_amt = 0 - w_class = 3.0 - amount_per_transfer_from_this = 20 - possible_transfer_amounts = list(10,20,30,50,70) - volume = 70 - flags = FPRINT | OPENCONTAINER + + attackby(var/obj/D, mob/user as mob) + if(isprox(D)) + return /obj/item/weapon/reagent_containers/glass/cantister desc = "It's a canister. Mainly used for transporting fuel." diff --git a/html/changelog.html b/html/changelog.html index bff322db998..35800485187 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -47,6 +47,35 @@ 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. --> +
+

03 May 2012

+

TG updated:

+
    +
  • CONTRABAND-CON UPDATE: Added posters.
  • +
  • POSTERS! Posters come in rolled packages that can adhere to any wall or r_wall, if it's uncluttered enough. +

    ?How they get on-board: The quartermaster can now set the receiver frequency of his supplycomp circuit board. A bit simplistic as of now, will work on it later. Building a supplycomp with a properly set up circuitboard will give access to the Contraband crate. +

    ?How they're used: Unfold the rolled poster on any wall or r_wall to create the poster. There are currently 17 designs, with the possibility of me adding more. +

    ?How to get rid of them: You can rip them using your hand... To cleanly extract them and not ruin them for future use, however, you can use a pair of wirecutters. +

    ?How they're classified: They're contraband, so it's perfectly okay for security officers to confiscate them. Punishment for contraband-providers (or end-users, if you want to go full nazi) is up to the situational commanding officers. +
  • Merged 'Game' and 'Lobby' tabs during pre-game into one tab
  • +
  • Added the little red x to the late-join job list
  • +
  • Late-joiners are warned if the shuttle is past the point of recall, and if the shuttle has already left the station
  • +
  • Late-joiners now see how long the round has been going on.
  • +
  • Droppers are now used at the eyes, and thus, access to the eyes is required to have an effect.
  • +
  • Mining shuttle computer no longer spits out both 'Shuttle has been sent' and 'The shuttle is already moving' every time.
  • +
  • Adds a borg upgrade that increases their speed. Requires gold.
  • +
  • Fixes autolathes not doing anything.
  • +
  • Changed Chief Engineers Office door name. Stop breaking in!
  • +
  • Added new airlocks to mining dock, research, and atmospherics.
  • +
  • RCDs are disabled if they are used on the escape shuttle or hyperspace around it.
  • +
  • EMPs will now cause flashes to flash their holder.
  • +
  • Heads now get a silver ID!
  • +
  • Blenders can now be filled directly from plant bags. Chefs rejoice.
  • +
  • The biogenerator is now more robust. It can dispense fertilizer in batches, and make simple leather items at a high cost. Added more wood items for tower cap wood construction: Wooden doors and sandals. Added plump helmet biscuits and mushroom soup to kitchen recipes.
  • +
  • Watermelon and pumpkin biomass lowered a bit so biomass isn't totally trivial to acquire.
  • +
+
+

2nd May 2012

TG updated:

diff --git a/maps/tgstation.2.0.8.dmm b/maps/tgstation.2.0.8.dmm index cf212585b3a..0185e6c3bb2 100755 --- a/maps/tgstation.2.0.8.dmm +++ b/maps/tgstation.2.0.8.dmm @@ -2301,7 +2301,7 @@ "aSm" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor{icon_state = "wood"},/area/library) "aSn" = (/obj/machinery/atmospherics/pipe/simple{color = "blue"; dir = 5; icon_state = "intact-b-f"; level = 1; name = "pipe"},/turf/simulated/wall,/area/hydroponics) "aSo" = (/obj/structure/reagent_dispensers/watertank,/obj/machinery/atmospherics/pipe/simple{color = "blue"; dir = 4; icon_state = "intact-b-f"; level = 1; name = "pipe"},/obj/machinery/atmospherics/pipe/simple{color = "red"; icon_state = "intact-r-f"; level = 1; name = "pipe"},/turf/simulated/floor{icon_state = "dark"},/area/hydroponics) -"aSp" = (/obj/machinery/atmospherics/pipe/simple{color = "blue"; dir = 4; icon_state = "intact-b-f"; level = 1; name = "pipe"},/obj/item/weapon/reagent_containers/glass/watercan,/turf/simulated/floor{icon_state = "dark"},/area/hydroponics) +"aSp" = (/obj/machinery/atmospherics/pipe/simple{color = "blue"; dir = 4; icon_state = "intact-b-f"; level = 1; name = "pipe"},/obj/item/weapon/reagent_containers/glass/bucket/wateringcan,/turf/simulated/floor{icon_state = "dark"},/area/hydroponics) "aSq" = (/obj/machinery/atmospherics/pipe/simple{color = "blue"; dir = 4; icon_state = "intact-b-f"; level = 1; name = "pipe"},/obj/machinery/atmospherics/pipe/simple{color = "red"; icon_state = "intact-r-f"; level = 1; name = "pipe"},/turf/simulated/floor{icon_state = "green"; dir = 8},/area/hydroponics) "aSr" = (/obj/machinery/atmospherics/pipe/manifold{color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "green"; dir = 4},/area/hydroponics) "aSs" = (/obj/structure/disposalpipe/segment,/obj/structure/reagent_dispensers/watertank,/obj/machinery/atmospherics/pipe/simple{color = "blue"; dir = 4; icon_state = "intact-b-f"; level = 1; name = "pipe"},/obj/machinery/camera{c_tag = "Hydroponics South"; dir = 1},/turf/simulated/floor{icon_state = "dark"},/area/hydroponics) @@ -2724,8 +2724,8 @@ "bat" = (/obj/structure/table/reinforced,/obj/structure/disposalpipe/segment{dir = 1},/obj/machinery/door/window/northleft{name = "Reception Window"; req_access = null; req_access_txt = "0"},/obj/machinery/door/window/southleft{name = "Research and Development"; req_access_txt = "7"},/turf/simulated/floor{icon_state = "white"},/area/toxins/lab) "bau" = (/obj/structure/table/reinforced,/obj/machinery/door/window/northright{name = "Reception Window"; req_access_txt = "0"},/obj/machinery/door/window/southright{name = "Research and Development"; req_access_txt = "7"},/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/turf/simulated/floor{icon_state = "white"},/area/toxins/lab) "bav" = (/turf/simulated/wall/r_wall,/area/medical/research{name = "Research Division"}) -"baw" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/obj/machinery/door/airlock/medical{name = "Research Division Access"; req_access_txt = "47"; req_one_access_txt = "1"},/turf/simulated/floor,/area/medical/research{name = "Research Division"}) -"bax" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/medical{name = "Research Division Access"; req_access_txt = "47"; req_one_access_txt = "1"},/turf/simulated/floor,/area/medical/research{name = "Research Division"}) +"baw" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/obj/machinery/door/airlock/research{name = "Research Division Access"; req_access_txt = "47"; req_one_access_txt = "1"},/turf/simulated/floor,/area/medical/research{name = "Research Division"}) +"bax" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/research{name = "Research Division Access"; req_access_txt = "47"; req_one_access_txt = "1"},/turf/simulated/floor,/area/medical/research{name = "Research Division"}) "bay" = (/turf/simulated/floor/plating,/area/maintenance/asmaint2) "baz" = (/obj/effect/landmark{name = "carpspawn"},/turf/space,/area/shuttle/escape/station) "baA" = (/obj/machinery/camera{c_tag = "Auxiliary Docking"; dir = 8; network = "Arrivals"},/turf/simulated/floor,/area/hallway/secondary/entry) @@ -2799,7 +2799,7 @@ "bbQ" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 0},/turf/simulated/wall/r_wall,/area/medical/chemistry) "bbR" = (/turf/simulated/floor{icon_state = "white"},/area/toxins/lab) "bbS" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "white"},/area/toxins/lab) -"bbT" = (/obj/machinery/camera{c_tag = "RnD Lab North"; dir = 2; network = "Research"},/obj/machinery/power/apc{dir = 1; name = "Lab APC"; pixel_x = 0; pixel_y = 24},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor{icon_state = "white"},/area/toxins/lab) +"bbT" = (/obj/machinery/camera{c_tag = "RnD Lab North"; dir = 2; network = "Research"},/obj/machinery/power/apc{dir = 1; name = "Research Lab APC"; pixel_x = 0; pixel_y = 24},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor{icon_state = "white"},/area/toxins/lab) "bbU" = (/obj/structure/disposalpipe/segment{dir = 1},/obj/structure/stool/bed/chair{dir = 1},/obj/effect/landmark/start{name = "Scientist"},/turf/simulated/floor{icon_state = "white"},/area/toxins/lab) "bbV" = (/obj/machinery/requests_console{department = "Research and Development"; departmentType = 2; name = "rnd Requests Console"; pixel_x = 30; pixel_y = 0},/obj/structure/table,/obj/item/weapon/packageWrap,/obj/item/weapon/packageWrap,/obj/item/device/destTagger{pixel_x = 4; pixel_y = 3},/turf/simulated/floor{icon_state = "white"},/area/toxins/lab) "bbW" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/medical/research{name = "Research Division"}) @@ -3042,8 +3042,8 @@ "bgz" = (/obj/structure/disposalpipe/segment{dir = 1},/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/toxins/lab) "bgA" = (/obj/item/weapon/stock_parts/console_screen,/obj/structure/table,/obj/item/weapon/stock_parts/console_screen,/obj/item/weapon/stock_parts/console_screen,/obj/item/weapon/stock_parts/matter_bin,/obj/item/weapon/stock_parts/matter_bin,/obj/machinery/light{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/toxins/lab) "bgB" = (/obj/effect/sign/biohazard,/turf/simulated/wall/r_wall,/area/medical/research{name = "Research Division"}) -"bgC" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/door/airlock/medical{name = "Research Division Access"; req_access_txt = "47"; req_one_access_txt = "1"},/turf/simulated/floor,/area/medical/research{name = "Research Division"}) -"bgD" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/airlock/medical{name = "Research Division Access"; req_access_txt = "47"; req_one_access_txt = "1"},/turf/simulated/floor,/area/medical/research{name = "Research Division"}) +"bgC" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/door/airlock/research{name = "Research Division Access"; req_access_txt = "47"; req_one_access_txt = "1"},/turf/simulated/floor,/area/medical/research{name = "Research Division"}) +"bgD" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/airlock/research{name = "Research Division Access"; req_access_txt = "47"; req_one_access_txt = "1"},/turf/simulated/floor,/area/medical/research{name = "Research Division"}) "bgE" = (/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/plating,/area/maintenance/asmaint2) "bgF" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/hallway/secondary/entry) "bgG" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/effect/sign/securearea{name = "EXTERNAL AIRLOCK"; desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; pixel_x = -1},/turf/simulated/floor/plating,/area/hallway/secondary/entry) @@ -3520,7 +3520,7 @@ "bpJ" = (/obj/structure/disposalpipe/segment{dir = 1},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bpK" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/obj/machinery/atmospherics/pipe/manifold{color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bpL" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall/r_wall,/area/toxins/gasstorage) -"bpM" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/power/apc{dir = 8; name = "Storage APC"; pixel_x = -25},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor,/area/toxins/gasstorage) +"bpM" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/power/apc{dir = 8; name = "Gas Storage APC"; pixel_x = -25},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor,/area/toxins/gasstorage) "bpN" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 1},/turf/simulated/floor,/area/toxins/gasstorage) "bpO" = (/turf/simulated/floor,/area/toxins/gasstorage) "bpP" = (/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/toxins/gasstorage) @@ -3592,7 +3592,7 @@ "brd" = (/obj/structure/window/reinforced,/mob/living/carbon/monkey,/turf/simulated/floor{icon_state = "white"},/area/medical/genetics) "bre" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/structure/disposalpipe/segment{dir = 1},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "brf" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) -"brg" = (/obj/structure/cable{tag = "Streight"; icon_state = "4-8"; pixel_x = 1; d1 = 4; d2 = 8},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/medical{name = "Gas Storage"; req_access_txt = "8"},/turf/simulated/floor,/area/toxins/gasstorage) +"brg" = (/obj/structure/cable{tag = "Streight"; icon_state = "4-8"; pixel_x = 1; d1 = 4; d2 = 8},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/research{name = "Gas Storage"; req_access_txt = "8"},/turf/simulated/floor,/area/toxins/gasstorage) "brh" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = "90Curve"},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/toxins/gasstorage) "bri" = (/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/toxins/gasstorage) "brj" = (/obj/item/weapon/cigbutt,/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/toxins/gasstorage) @@ -3707,7 +3707,7 @@ "bto" = (/obj/structure/disposalpipe/segment{dir = 1},/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden,/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "btp" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "btq" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/wall/r_wall,/area/toxins/gasstorage) -"btr" = (/obj/machinery/door/airlock/medical{name = "Toxins Research"; req_access_txt = "7; 8"},/turf/simulated/floor,/area/toxins/gasstorage) +"btr" = (/obj/machinery/door/airlock/research{name = "Gas Storage"; req_access_txt = "8"},/turf/simulated/floor,/area/toxins/gasstorage) "bts" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = "Streight"},/turf/simulated/floor/plating,/area/maintenance/asmaint2) "btt" = (/turf/simulated/wall,/area/toxins/mixing) "btu" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/general/visible,/turf/simulated/floor/plating,/area/toxins/mixing) @@ -3989,7 +3989,7 @@ "byK" = (/turf/simulated/floor{icon_state = "white"},/area/toxins/toxinslab) "byL" = (/obj/structure/table,/obj/effect/sign/securearea{desc = "A warning sign which reads 'NO SMOKING'"; icon_state = "nosmoking2"; name = "NO SMOKING"; pixel_x = 29; pixel_y = 1},/obj/machinery/firealarm,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor{icon_state = "white"},/area/toxins/toxinslab) "byM" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/turf/simulated/floor,/area/maintenance/asmaint2) -"byN" = (/obj/machinery/camera{c_tag = "Toxins Lab East"; dir = 4; network = "SS13"},/obj/machinery/power/apc{dir = 8; name = "Toxins Lab Mix Chambers APC"; pixel_x = -25; pixel_y = 0},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor,/area/toxins/mixing) +"byN" = (/obj/machinery/camera{c_tag = "Toxins Lab East"; dir = 4; network = "SS13"},/obj/machinery/power/apc{dir = 8; name = "Toxins Lab Mixing Room APC"; pixel_x = -25; pixel_y = 0},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor,/area/toxins/mixing) "byO" = (/obj/machinery/atmospherics/unary/vent_pump,/turf/simulated/floor,/area/toxins/mixing) "byP" = (/obj/machinery/atmospherics/binary/pump{dir = 4},/turf/simulated/floor,/area/toxins/mixing) "byQ" = (/obj/machinery/atmospherics/pipe/simple/general/visible{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/machinery/meter,/turf/simulated/floor,/area/toxins/mixing) @@ -4007,7 +4007,7 @@ "bzc" = (/obj/effect/landmark/start{name = "Shaft Miner"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = "Streight"},/turf/simulated/floor,/area/quartermaster/miningdock) "bzd" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = "Streight"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = "90Curve"},/turf/simulated/floor,/area/quartermaster/miningdock) "bze" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = "Streight"},/turf/simulated/floor,/area/quartermaster/miningdock) -"bzf" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = "Streight"},/obj/machinery/door/firedoor/border_only{dir = 4},/obj/machinery/door/airlock/maintenance{name = "Mining Department"; req_access_txt = "48"},/turf/simulated/floor,/area/quartermaster/miningdock) +"bzf" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = "Streight"},/obj/machinery/door/firedoor/border_only{dir = 4},/obj/machinery/door/airlock/mining{name = "Mining Dock"; req_access_txt = "48"},/turf/simulated/floor,/area/quartermaster/miningdock) "bzg" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = "Streight"},/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor{dir = 8; icon_state = "brown"},/area/quartermaster/miningdock) "bzh" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = "Streight"},/turf/simulated/floor{dir = 8; icon_state = "brown"},/area/quartermaster/miningdock) "bzi" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = "Streight"},/obj/machinery/camera{c_tag = "Mining Dock Entrance"; dir = 2; network = "Cargo"},/obj/machinery/light{dir = 1},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{dir = 8; icon_state = "brown"},/area/quartermaster/miningdock) @@ -4061,7 +4061,7 @@ "bAe" = (/obj/machinery/atmospherics/pipe/manifold{color = "red"; icon_state = "manifold-r-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/toxins/toxinslab) "bAf" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass{name = "Toxins Lab"; req_access_txt = "7"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/toxins/toxinslab) "bAg" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/maintenance/asmaint2) -"bAh" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass{name = "Toxins Lab"; req_access_txt = "7"},/obj/structure/cable{d2 = 2; icon_state = "4-8"; pixel_y = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/toxins/mixing) +"bAh" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass{name = "Toxins Lab Mixing Room"; req_access_txt = "7"},/obj/structure/cable{d2 = 2; icon_state = "4-8"; pixel_y = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/toxins/mixing) "bAi" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = "90Curve"},/obj/machinery/atmospherics/pipe/manifold{color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/toxins/mixing) "bAj" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor,/area/toxins/mixing) "bAk" = (/turf/simulated/floor,/area/toxins/mixing) @@ -4136,7 +4136,7 @@ "bBB" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = "90Curve"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/toxins/toxinslab) "bBC" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass{name = "Toxins Lab"; req_access_txt = "7"},/obj/structure/cable{d2 = 2; icon_state = "4-8"; pixel_y = 1},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/toxins/toxinslab) "bBD" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "2-8"; pixel_y = 0; tag = "Streight"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/maintenance/asmaint2) -"bBE" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass{name = "Toxins Lab"; req_access_txt = "7"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/toxins/mixing) +"bBE" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass{name = "Toxins Lab Mixing Room"; req_access_txt = "7"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/toxins/mixing) "bBF" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/toxins/mixing) "bBG" = (/obj/machinery/atmospherics/pipe/manifold{color = "blue"; dir = 4; icon_state = "manifold-b-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/toxins/mixing) "bBH" = (/obj/machinery/atmospherics/binary/pump{dir = 8; icon_state = "intact_off"; on = 1},/turf/simulated/floor,/area/toxins/mixing) @@ -4249,7 +4249,7 @@ "bDK" = (/obj/machinery/atmospherics/pipe/manifold{color = "blue"; dir = 8; icon_state = "manifold-b-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/wall/r_wall,/area/atmos) "bDL" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/wall/r_wall,/area/atmos) "bDM" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 1},/turf/simulated/wall/r_wall,/area/atmos) -"bDN" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "atmos"; name = "Airlock Window Shield"; opacity = 0},/obj/machinery/door/airlock/maintenance{name = "Atmospherics Maintenance"; req_access_txt = "12;24"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/atmos) +"bDN" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "atmos"; name = "Airlock Window Shield"; opacity = 0},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/airlock/atmos{name = "Atmospherics Maintenance"; req_access_txt = "12;24"},/turf/simulated/floor,/area/atmos) "bDO" = (/obj/machinery/atmospherics/pipe/manifold{color = "blue"; dir = 4; icon_state = "manifold-b-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/wall/r_wall,/area/atmos) "bDP" = (/obj/machinery/atmospherics/pipe/simple{color = "red"; icon_state = "intact-r"; level = 2},/turf/simulated/wall/r_wall,/area/atmos) "bDQ" = (/turf/simulated/wall/r_wall,/area/atmos) @@ -4282,7 +4282,7 @@ "bEr" = (/obj/structure/disposalpipe/segment{dir = 1},/turf/simulated/wall/r_wall,/area/maintenance/asmaint2) "bEs" = (/turf/simulated/wall/r_wall,/area/maintenance/asmaint2) "bEt" = (/turf/simulated/wall/r_wall,/area/toxins/observatory) -"bEu" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass{name = "Toxins Observatory"; req_access_txt = "7"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/toxins/observatory) +"bEu" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass{name = "Toxins Lab Observatory"; req_access_txt = "7"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/toxins/observatory) "bEv" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/wall/r_wall,/area/toxins/observatory) "bEw" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/toxins/observatory) "bEx" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor/plating,/area/toxins/observatory) @@ -4412,7 +4412,7 @@ "bGR" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/manifold{dir = 1},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server) "bGS" = (/obj/machinery/atmospherics/pipe/simple{dir = 10},/obj/structure/window/reinforced{dir = 1},/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server) "bGT" = (/turf/simulated/wall/r_wall,/area/toxins/server) -"bGU" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/disposalpipe/segment{dir = 1},/obj/machinery/power/apc{dir = 8; name = "Lab Hallway APC"; pixel_x = -25},/obj/machinery/atmospherics/pipe/manifold{color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) +"bGU" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/disposalpipe/segment{dir = 1},/obj/machinery/power/apc{dir = 8; name = "Research Division APC"; pixel_x = -25},/obj/machinery/atmospherics/pipe/manifold{color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bGV" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = "90Curve"},/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bGW" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/wall/r_wall,/area/toxins/xenobiology) "bGX" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/closet/secure_closet/scientist,/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology) @@ -4443,7 +4443,7 @@ "bHw" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor,/area/hallway/primary/aft) "bHx" = (/obj/machinery/camera{c_tag = "Aft Primary Hallway 2"; dir = 8; network = "SS13"},/turf/simulated/floor,/area/hallway/primary/aft) "bHy" = (/obj/machinery/dispenser{pltanks = 0},/obj/machinery/newscaster{pixel_y = 32},/turf/simulated/floor,/area/atmos) -"bHz" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "atmos"; name = "Airlock Window Shield"; opacity = 0},/obj/machinery/door/airlock/maintenance{name = "Atmospherics Maintenance"; req_access_txt = "12;24"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/atmos) +"bHz" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "atmos"; name = "Airlock Window Shield"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/door/airlock/atmos{name = "Atmospherics Maintenance"; req_access_txt = "12;24"},/turf/simulated/floor,/area/atmos) "bHA" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = "90Curve"},/turf/simulated/floor,/area/atmos) "bHB" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = "Streight"},/turf/simulated/floor,/area/atmos) "bHC" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = "Streight"},/obj/structure/disposalpipe/segment{dir = 1},/turf/simulated/floor,/area/atmos) @@ -4537,7 +4537,7 @@ "bJm" = (/obj/machinery/atmospherics/pipe/simple,/turf/simulated/wall/r_wall,/area/toxins/server) "bJn" = (/obj/machinery/door/window/northleft{name = "Server Room"; req_access_txt = "30"},/obj/machinery/door/window/southleft{name = "Server Room"; req_access_txt = "30"},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server) "bJo" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/obj/machinery/atmospherics/pipe/manifold{color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) -"bJp" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = "Streight"},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/medical{name = "Xenobiology"; req_access_txt = "55"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology) +"bJp" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = "Streight"},/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/door/airlock/research{name = "Xenobiology"; req_access_txt = "55"},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology) "bJq" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = "Streight"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology) "bJr" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = "90Curve"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology) "bJs" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology) @@ -4655,7 +4655,7 @@ "bLA" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server) "bLB" = (/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server) "bLC" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 0; icon_state = "in"; initialize_directions = 1; internal_pressure_bound = 4000; on = 1; pressure_checks = 2; pump_direction = 0},/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server) -"bLD" = (/obj/structure/disposalpipe/segment{dir = 1},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/medical{name = "Research Division Storage"; req_access_txt = "47"},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) +"bLD" = (/obj/structure/disposalpipe/segment{dir = 1},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/research{name = "Research Division Storage"; req_access_txt = "47"; req_one_access_txt = "1"},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bLE" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall/r_wall,/area/medical/research{name = "Research Division"}) "bLF" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = "90Curve"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/toxins/xenobiology) "bLG" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = "Streight"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/obj/item/weapon/monkeycube_box,/obj/item/weapon/monkeycube_box,/obj/structure/table,/obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped,/obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/toxins/xenobiology) @@ -4961,7 +4961,7 @@ "bRu" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=AIE"; location = "AftH"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/turf/simulated/floor,/area/hallway/primary/aft) "bRv" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/newscaster{pixel_y = 32},/turf/simulated/floor{icon_state = "cautioncorner"; dir = 4},/area/hallway/primary/aft) "bRw" = (/turf/simulated/floor{icon_state = "caution"; dir = 4},/area/hallway/primary/aft) -"bRx" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "atmos"; name = "Airlock Window Shield"; opacity = 0},/obj/machinery/door/airlock/maintenance{name = "Atmospherics"; req_access = null; req_access_txt = "24"},/turf/simulated/floor,/area/atmos) +"bRx" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "atmos"; name = "Airlock Window Shield"; opacity = 0},/obj/machinery/door/airlock/atmos{name = "Atmospherics"; req_access_txt = "24"},/turf/simulated/floor,/area/atmos) "bRy" = (/obj/structure/closet/firecloset,/turf/simulated/floor,/area/atmos) "bRz" = (/obj/machinery/atmospherics/pipe/manifold{color = "yellow"; dir = 4; icon_state = "manifold-y"; level = 2},/turf/simulated/floor,/area/atmos) "bRA" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1441; input_tag = "tox_in"; name = "Toxin Supply Control"; output_tag = "tox_out"; sensors = list("tox_sensor" = "Tank")},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/atmos) @@ -5046,7 +5046,7 @@ "bTb" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor{icon_state = "yellowcorner"},/area/hallway/primary/aft) "bTc" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/wall/r_wall,/area/hallway/primary/aft) "bTd" = (/obj/item/weapon/crowbar,/obj/structure/table/reinforced,/turf/simulated/floor,/area/engine/chiefs_office) -"bTe" = (/obj/machinery/light{dir = 1},/obj/machinery/power/apc{dir = 1; name = "CE office APC"; pixel_x = 0; pixel_y = 25},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor,/area/engine/chiefs_office) +"bTe" = (/obj/machinery/light{dir = 1},/obj/machinery/power/apc{dir = 1; name = "Chief Engineers office APC"; pixel_x = 0; pixel_y = 25},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor,/area/engine/chiefs_office) "bTf" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/closet/emcloset,/turf/simulated/floor,/area/engine/chiefs_office) "bTg" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{tag = "icon-intact-r (NORTH)"; icon_state = "intact-r"; dir = 1},/obj/machinery/portable_atmospherics/scrubber,/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/atmos) "bTh" = (/obj/effect/landmark/start{name = "Atmospheric Technician"},/obj/machinery/atmospherics/pipe/simple{color = "yellow"; dir = 4; icon_state = "intact-y"; initialize_directions = 12; level = 2},/turf/simulated/floor,/area/atmos) @@ -5214,7 +5214,7 @@ "bWn" = (/obj/structure/disposalpipe/sortjunction{backsort = 1; backType = list("Chief Engineer"); dir = 8; icon_state = "pipe-j2s"; sortType = list("Engineering")},/turf/simulated/wall,/area/engine/chiefs_office) "bWo" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall,/area/engine/chiefs_office) "bWp" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/wall,/area/engine/chiefs_office) -"bWq" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/obj/machinery/door/airlock/glass/glass_engineering{req_access_txt = "56"},/turf/simulated/floor,/area/engine/chiefs_office) +"bWq" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/obj/machinery/door/airlock/glass/glass_engineering{name = "Chief Engineers office"; req_access_txt = "56"},/turf/simulated/floor,/area/engine/chiefs_office) "bWr" = (/turf/simulated/wall,/area/engine/chiefs_office) "bWs" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/wall,/area/engine/chiefs_office) "bWt" = (/obj/machinery/atmospherics/tvalve/digital{tag = "icon-tvalve0 (NORTH)"; icon_state = "tvalve0"; dir = 1},/turf/simulated/floor,/area/atmos)