From 00119e0b4a2574ba9ed606b310375d21b4e47be1 Mon Sep 17 00:00:00 2001 From: "vageyenaman@gmail.com" Date: Mon, 16 Jan 2012 01:14:19 +0000 Subject: [PATCH] =?UTF-8?q?=E2=96=AB=20Telecommunications=20is=20finally?= =?UTF-8?q?=20live.=20There's=20just=20too=20much=20to=20explain=20so=20I'?= =?UTF-8?q?m=20going=20to=20recommend=20you=20visit=20the=20wiki=20article?= =?UTF-8?q?=20on=20Telecommunications.=20=E2=96=AB=20AI=20satellite=20repl?= =?UTF-8?q?aced=20with=20Communications=20Satellite.=20=E2=96=AB=20Some=20?= =?UTF-8?q?turret=20tweaks.=20Gave=20"AI"=20turrets=20a=20variable=20that?= =?UTF-8?q?=20controls=20what=20type=20of=20lethal=20shots=20they=20shoot.?= =?UTF-8?q?=20=E2=96=AB=20New=20job=20access=20level,=20Telecommunications?= =?UTF-8?q?=20Satellite.=20The=20CE,=20RD,=20and=20Captain=20get=20this=20?= =?UTF-8?q?access=20level.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ▫ Some icon tweaks and stuff. ▫ Faster chem machine energy regeneration rate. git-svn-id: http://tgstation13.googlecode.com/svn/trunk@2959 316c924e-a436-60f5-8080-3fe189b3f50e --- code/datums/diseases/appendicitis.dm | 4 +- code/defines/area/Space Station 13 areas.dm | 32 + code/defines/obj/weapon.dm | 2 +- code/game/atom_procs.dm | 7 +- code/game/jobs/access.dm | 13 +- code/game/machinery/telecomms/broadcaster.dm | 4 +- code/game/machinery/telecomms/logbrowser.dm | 14 +- .../telecomms/machine_interactions.dm | 78 +- .../machinery/telecomms/telecomunications.dm | 118 +- code/game/machinery/telecomms/telemonitor.dm | 2 +- code/game/machinery/turrets.dm | 15 +- code/game/objects/radio/radio.dm | 8 +- code/game/turf.dm | 15 +- code/modules/chemical/Chemistry-Machinery.dm | 2 +- code/modules/mob/living/carbon/human/life.dm | 25 + code/modules/mob/mob_defines.dm | 1 + html/changelog.html | 13 +- icons/effects/blood.dmi | Bin 60479 -> 62032 bytes icons/obj/projectiles.dmi | Bin 20889 -> 21207 bytes icons/obj/stationobjs.dmi | Bin 94930 -> 94928 bytes icons/obj/toy.dmi | Bin 5191 -> 1968 bytes icons/turf/areas.dmi | Bin 16033 -> 17358 bytes maps/tgstation.2.0.8.dmm | 3723 +++++++++-------- 23 files changed, 2310 insertions(+), 1766 deletions(-) diff --git a/code/datums/diseases/appendicitis.dm b/code/datums/diseases/appendicitis.dm index acaf4160e8b..6c822adb1ef 100644 --- a/code/datums/diseases/appendicitis.dm +++ b/code/datums/diseases/appendicitis.dm @@ -27,7 +27,9 @@ if(prob(1)) if (affected_mob.nutrition > 100) affected_mob.Stun(rand(4,6)) - affected_mob << "\red You throw up!" + for(var/mob/O in viewers(world.view, affected_mob)) + O.show_message(text("\red [] throws up!", affected_mob), 1) + playsound(affected_mob.loc, 'splat.ogg', 50, 1) var/turf/location = affected_mob.loc if (istype(location, /turf/simulated)) location.add_vomit_floor(affected_mob) diff --git a/code/defines/area/Space Station 13 areas.dm b/code/defines/area/Space Station 13 areas.dm index 642c22d770b..25765606da4 100644 --- a/code/defines/area/Space Station 13 areas.dm +++ b/code/defines/area/Space Station 13 areas.dm @@ -1245,6 +1245,38 @@ proc/process_ghost_teleport_locs() icon_state = "storage" + +// Telecommunications Satellite + +/area/tcommsat/entrance + name = "Telecommunications Satellite Teleporter" + icon_state = "tcomsatentrance" + +/area/tcommsat/chamber + name = "Telecommunications Satellite Central Compartment" + icon_state = "tcomsatcham" + +/area/turret_protected/tcomfoyer + name = "Telecommunications Satellite Foyer" + icon_state = "tcomsatlob" + +/area/turret_protected/tcomwest + name = "Telecommunications Satellite West Wing" + icon_state = "tcomsatwest" + +/area/turret_protected/tcomeast + name = "Telecommunications Satellite East Wing" + icon_state = "tcomsateast" + +/area/tcommsat/computer + name = "Telecommunications Satellite Observatory" + icon_state = "tcomsatcomp" + +/area/tcommsat/lounge + name = "Telecommunications Satellite Lounge" + icon_state = "tcomsatlounge" + + ///////////////////////////////////////////////////////////////////// /* Lists of areas to be used with is_type_in_list. diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm index ae9e97cea68..aeff477d268 100644 --- a/code/defines/obj/weapon.dm +++ b/code/defines/obj/weapon.dm @@ -1653,7 +1653,7 @@ /obj/item/weapon/stock_parts/subspace/analyzer name = "Subspace Wavelength Analyzer" - icon_state = "treatment_disk" + icon_state = "wavelength_analyzer" desc = "A sophisticated analyzer capable of analyzing cryptic subspace wavelengths." origin_tech = "programming=3;magnets=4;materials=4;bluespace=2" m_amt = 30 diff --git a/code/game/atom_procs.dm b/code/game/atom_procs.dm index e13e0c30996..694263a150f 100644 --- a/code/game/atom_procs.dm +++ b/code/game/atom_procs.dm @@ -181,9 +181,14 @@ src.blood_DNA = list2params(L) return -/atom/proc/add_vomit_floor(mob/living/carbon/M as mob) +/atom/proc/add_vomit_floor(mob/living/carbon/M as mob, var/toxvomit = 0) if( istype(src, /turf/simulated) ) var/obj/effect/decal/cleanable/vomit/this = new /obj/effect/decal/cleanable/vomit(src) + + // Make toxins vomit look different + if(toxvomit) + this.icon_state = "vomittox_[pick(1,4)]" + for(var/datum/disease/D in M.viruses) var/datum/disease/newDisease = new D.type this.viruses += newDisease diff --git a/code/game/jobs/access.dm b/code/game/jobs/access.dm index 4b7f6aabfdf..d9d6138073d 100644 --- a/code/game/jobs/access.dm +++ b/code/game/jobs/access.dm @@ -59,6 +59,7 @@ access_hos = 58 access_RC_announce = 59 //Request console announcements access_keycard_auth = 60 //Used for events which require at least two people to confirm them + access_tcomsat = 61 // has access to the entire telecomms satellite / machinery //BEGIN CENTCOM ACCESS /*Should leave plenty of room if we need to add more access levels. @@ -235,15 +236,15 @@ return list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mint, access_mining) if("Chief Engineer") return list(access_engine, access_engine_equip, access_tech_storage, access_maint_tunnels, - access_external_airlocks, access_atmospherics, access_emergency_storage, access_eva, + access_teleporter, access_external_airlocks, access_atmospherics, access_emergency_storage, access_eva, access_heads, access_ai_upload, access_construction, access_robotics, - access_mint, access_ce, access_RC_announce, access_keycard_auth) + access_mint, access_ce, access_RC_announce, access_keycard_auth, access_tcomsat) if("Research Director") return list(access_medlab, access_rd, access_maint_tunnels, access_heads, access_tox, access_tox_storage, access_chemistry, access_teleporter, access_research, access_robotics, access_xenobiology, access_RC_announce, - access_keycard_auth) + access_keycard_auth, access_tcomsat) if("Virologist") return list(access_medical, access_morgue, access_virology) if("Chief Medical Officer") @@ -285,7 +286,7 @@ access_hydroponics, access_library, access_manufacturing, access_lawyer, access_virology, access_cmo, access_qm, access_clown, access_mime, access_surgery, access_theatre, access_research, access_mining, access_mailsorting, access_mint_vault, access_mint, access_heads_vault, access_mining_station, access_xenobiology, access_ce, access_hop, access_hos, access_RC_announce, - access_keycard_auth) + access_keycard_auth, access_tcomsat) /proc/get_all_centcom_access() return list(access_cent_general, access_cent_thunder, access_cent_specops, access_cent_medical, access_cent_living, access_cent_storage, access_cent_teleporter, access_cent_creed, access_cent_captain) @@ -306,7 +307,7 @@ if(4) //engineering and maintenance return list(access_engine, access_engine_equip, access_maint_tunnels, access_external_airlocks, access_emergency_storage, access_tech_storage, access_atmospherics, access_construction, access_robotics, access_ce) if(5) //command - return list(access_change_ids, access_ai_upload, access_teleporter, access_eva, access_heads, access_captain, access_all_personal_lockers, access_mint_vault, access_heads_vault, access_hop, access_RC_announce, access_keycard_auth) + return list(access_change_ids, access_ai_upload, access_teleporter, access_eva, access_heads, access_captain, access_all_personal_lockers, access_mint_vault, access_heads_vault, access_hop, access_RC_announce, access_keycard_auth, access_tcomsat) if(6) //station general return list(access_chapel_office, access_kitchen,access_bar, access_janitor, access_crematorium, access_library, access_theatre, access_lawyer, access_clown, access_mime) if(7) //supply @@ -454,6 +455,8 @@ return "RC announcements" if(access_keycard_auth) return "Keycode auth. device" + if(access_tcomsat) + return "Telecommunications Satellite" /proc/get_centcom_access_desc(A) switch(A) diff --git a/code/game/machinery/telecomms/broadcaster.dm b/code/game/machinery/telecomms/broadcaster.dm index 203635dc02f..43cca8113ba 100644 --- a/code/game/machinery/telecomms/broadcaster.dm +++ b/code/game/machinery/telecomms/broadcaster.dm @@ -16,6 +16,9 @@ use_power = 1 idle_power_usage = 25 machinetype = 5 + heatgen = 60 + delay = 7 + circuitboard = "/obj/item/weapon/circuitboard/telecomms/broadcaster" receive_information(datum/signal/signal, obj/machinery/telecomms/machine_from) @@ -318,7 +321,6 @@ if (length(heard_gibberish)) quotedmsg = M.say_quote(Gibberish(message, compression + 50)) - world << "Gibberish: [quotedmsg]" var/rendered = "[part_a][Gibberish(M.real_name, compression + 50)][part_b][quotedmsg][part_c]" for (var/mob/R in heard_gibberish) diff --git a/code/game/machinery/telecomms/logbrowser.dm b/code/game/machinery/telecomms/logbrowser.dm index 90d895842e5..1c88ba6b9ad 100644 --- a/code/game/machinery/telecomms/logbrowser.dm +++ b/code/game/machinery/telecomms/logbrowser.dm @@ -12,7 +12,7 @@ universal_translate = 0 // set to 1 if it can translate nonhuman speech - req_access = list(access_engine) + req_access = list(access_tcomsat) attack_hand(mob/user as mob) if(stat & (BROKEN|NOPOWER)) @@ -45,7 +45,13 @@ dat += "
[temp]
" dat += "
\[Main Menu\] \[Refresh\]
" dat += "
Current Network: [network]" - dat += "
Selected Server: [SelectedServer.id]

" + dat += "
Selected Server: [SelectedServer.id]" + + if(SelectedServer.totaltraffic >= 1024) + dat += "
Total recorded traffic: [round(SelectedServer.totaltraffic / 1024)] Terrabytes

" + else + dat += "
Total recorded traffic: [SelectedServer.totaltraffic] Gigabytes

" + dat += "Stored Logs:
    " var/i = 0 @@ -58,7 +64,7 @@ var/race // The actual race of the mob var/language = "Human" // MMIs, pAIs, Cyborgs and humans all speak Human - var/mobtype = "[C.parameters["mobtype"]]" + var/mobtype = C.parameters["mobtype"] var/mob/M = new mobtype if(istype(M, /mob/living/carbon/human)) @@ -103,7 +109,7 @@ else dat += "Data type: Audio File
    " dat += "Source: Unidentifiable
    " - dat += "Race: [race]
    " + dat += "Class: [race]
    " dat += "Contents: Unintelligble
    " dat += "
    " diff --git a/code/game/machinery/telecomms/machine_interactions.dm b/code/game/machinery/telecomms/machine_interactions.dm index 2abb7af0406..ce10bf54ac0 100644 --- a/code/game/machinery/telecomms/machine_interactions.dm +++ b/code/game/machinery/telecomms/machine_interactions.dm @@ -8,6 +8,7 @@ /obj/machinery/telecomms var temp = "" // output message + construct_op = 0 @@ -17,6 +18,75 @@ if(istype(P, /obj/item/device/multitool)) attack_hand(user) + switch(construct_op) + if(0) + if(istype(P, /obj/item/weapon/screwdriver)) + user << "You unfasten the bolts." + playsound(src.loc, 'Screwdriver.ogg', 50, 1) + construct_op ++ + if(1) + if(istype(P, /obj/item/weapon/screwdriver)) + user << "You fasten the bolts." + playsound(src.loc, 'Screwdriver.ogg', 50, 1) + construct_op -- + if(istype(P, /obj/item/weapon/wrench)) + user << "You dislodge the external plating." + playsound(src.loc, 'Ratchet.ogg', 75, 1) + construct_op ++ + if(2) + if(istype(P, /obj/item/weapon/wrench)) + user << "You secure the external plating." + playsound(src.loc, 'Ratchet.ogg', 75, 1) + construct_op -- + if(istype(P, /obj/item/weapon/wirecutters)) + playsound(src.loc, 'wirecutter.ogg', 50, 1) + user << "You remove the cables." + construct_op ++ + var/obj/item/weapon/cable_coil/A = new /obj/item/weapon/cable_coil( user.loc ) + A.amount = 5 + stat |= BROKEN // the machine's been borked! + if(3) + if(istype(P, /obj/item/weapon/cable_coil)) + var/obj/item/weapon/cable_coil/A = P + if(A.amount >= 5) + user << "You insert the cables." + A.amount -= 5 + if(A.amount <= 0) + user.drop_item() + del(A) + construct_op -- + stat &= ~BROKEN // the machine's not borked anymore! + if(istype(P, /obj/item/weapon/crowbar)) + user << "You begin prying out the circuit board other components..." + playsound(src.loc, 'Crowbar.ogg', 50, 1) + if(do_after(user,60)) + user << "You finish prying out the components." + + // Drop all the component stuff + if(contents.len > 0) + for(var/obj/x in src) + x.loc = user.loc + else + + // If the machine wasn't made during runtime, probably doesn't have components: + // manually find the components and drop them! + var/newpath = text2path(circuitboard) + var/obj/item/weapon/circuitboard/C = new newpath + for(var/I in C.req_components) + for(var/i = 1, i <= C.req_components[I], i++) + newpath = text2path(I) + var/obj/item/s = new newpath + s.loc = user.loc + + // Drop a circuit board too + C.loc = user.loc + + // Create a machine frame and delete the current machine + var/obj/machinery/constructable_frame/machine_frame/F = new + F.loc = src.loc + del(src) + + attack_hand(var/mob/user as mob) // You need a multitool to use this. @@ -26,7 +96,7 @@ else return - if(stat & (BROKEN|NOPOWER)) + if(stat & (BROKEN|NOPOWER) || !on) return var/obj/item/device/multitool/P = user.equipped() @@ -80,7 +150,7 @@ else return - if(stat & (BROKEN|NOPOWER)) + if(stat & (BROKEN|NOPOWER) || !on) return var/obj/item/device/multitool/P = usr.equipped() @@ -96,7 +166,7 @@ if("network") var/newnet = input(usr, "Specify the new network for this machine. This will break all current links.", src, network) as null|text - if(newnet && usr in range(1, src) && newnet != network) + if(newnet && usr in range(1, src)) if(length(newnet) > 15) temp = "-% Too many characters in new network tag %-" @@ -143,8 +213,8 @@ if(href_list["buffer"]) - temp = "-% Successfully stored \ref[P.buffer] [P.buffer.name] in buffer %-" P.buffer = src + temp = "-% Successfully stored \ref[P.buffer] [P.buffer.name] in buffer %-" if(href_list["flush"]) diff --git a/code/game/machinery/telecomms/telecomunications.dm b/code/game/machinery/telecomms/telecomunications.dm index eece6b6c1b9..72cd13d8789 100644 --- a/code/game/machinery/telecomms/telecomunications.dm +++ b/code/game/machinery/telecomms/telecomunications.dm @@ -15,6 +15,7 @@ var list/links = list() // list of machines this machine is linked to traffic = 0 // value increases as traffic increases + netspeed = 1 // how much traffic to lose per tick (50 gigabytes/second * netspeed) list/autolinkers = list() // list of text/number values to link with id = "NULL" // identification string network = "NULL" // the network of the machinery @@ -22,19 +23,40 @@ list/freq_listening = list() // list of frequencies to tune into: if none, will listen to all machinetype = 0 // just a hacky way of preventing alike machines from pairing + on = 1 + integrity = 100 // basically HP, loses integrity by heat + heatgen = 20 // how much heat to transfer to the environment + delay = 10 // how many process() ticks to delay per heat + heating_power = 40000 + + circuitboard = null // string pointing to a circuitboard type + proc/relay_information(datum/signal/signal, filter, copysig, amount) // relay signal to all linked machinery that are of type [filter]. If signal has been sent [amount] times, stop sending + if(!on) + return + + var/send_count = 0 + signal.data["slow"] += rand(0, round((100-integrity))) // apply some lag based on integrity + + // Apply some lag based on traffic rates + var/netlag = round(traffic / 50) + if(netlag > signal.data["slow"]) + signal.data["slow"] = netlag + // Loop through all linked machines and send the signal or copy. for(var/obj/machinery/telecomms/machine in links) if(filter && !istype( machine, text2path(filter) )) continue + if(!machine.on) + continue if(amount && send_count >= amount) break @@ -60,11 +82,12 @@ "message" = signal.data["message"], "connection" = signal.data["connection"], "radio" = signal.data["radio"], - "slow" = signal.data["slow"] + "slow" = signal.data["slow"], + "traffic" = signal.data["traffic"] ) // Keep the "original" signal constant - if(!copy.data["original"]) + if(!signal.data["original"]) copy.data["original"] = signal else copy.data["original"] = signal.data["original"] @@ -74,6 +97,8 @@ send_count++ + if(machine.is_freq_listening(signal)) + machine.traffic++ spawn() if(copysig && copy) @@ -81,6 +106,9 @@ else machine.receive_information(signal, src) + if(send_count > 0 && is_freq_listening(signal)) + traffic++ + return send_count proc/relay_direct_information(datum/signal/signal, obj/machinery/telecomms/machine) @@ -110,7 +138,74 @@ links.Add(T) + update_icon() + if(on) + icon_state = initial(icon_state) + else + icon_state = "[initial(icon_state)]_off" + + process() + if(stat & (BROKEN|NOPOWER) || integrity <= 0) // if powered, on. if not powered, off. if too damaged, off + on = 0 + else + on = 1 + + // Check heat and generate some + checkheat() + + // Update the icon + update_icon() + + /* Machine checks */ + if(on) + if(machinetype == 2) // bus mainframes + switch(traffic) + if(-100 to 49) + icon_state = initial(icon_state) + if(50 to 200) + icon_state = "bus2" + else + icon_state = "bus3" + + // Check heat and generate some + + proc/checkheat() + // Checks heat from the environment and applies any integrity damage + var/datum/gas_mixture/environment = loc.return_air() + switch(environment.temperature) + if(T0C to (T20C + 20)) + integrity = between(0, integrity, 100) + if((T20C + 20) to (T0C + 70)) + integrity = max(0, integrity - 1) + if(delay) + delay-- + else + // If the machine is on, ready to produce heat, and has positive traffic, genn some heat + if(on && traffic > 0) + produce_heat(heatgen) + delay = initial(delay) + traffic -= netspeed + + proc/produce_heat(heat_amt) + if(!(stat & (NOPOWER|BROKEN))) //Blatently stolen from space heater. + var/turf/simulated/L = loc + if(istype(L)) + var/datum/gas_mixture/env = L.return_air() + if(env.temperature < (heat_amt+T0C)) + + var/transfer_moles = 0.25 * env.total_moles() + + var/datum/gas_mixture/removed = env.remove(transfer_moles) + + if(removed) + + var/heat_capacity = removed.heat_capacity() + if(heat_capacity == 0 || heat_capacity == null) + heat_capacity = 1 + removed.temperature = min((removed.temperature*heat_capacity + heating_power)/heat_capacity, 1000) + + env.merge(removed) /* The receiver idles and receives messages from subspace-compatible radio equipment; primarily headsets. They then just relay this information to all linked devices, @@ -129,9 +224,14 @@ use_power = 1 idle_power_usage = 30 machinetype = 1 + heatgen = 10 + circuitboard = "/obj/item/weapon/circuitboard/telecomms/receiver" receive_signal(datum/signal/signal) + if(!on) // has to be on to receive messages + return + if(signal.transmission_method == 2) if(is_freq_listening(signal)) // detect subspace signals @@ -165,6 +265,9 @@ use_power = 1 idle_power_usage = 50 machinetype = 2 + heatgen = 50 + circuitboard = "/obj/item/weapon/circuitboard/telecomms/bus" + netspeed = 3 receive_information(datum/signal/signal, obj/machinery/telecomms/machine_from) @@ -201,13 +304,16 @@ /obj/machinery/telecomms/processor name = "Processor Unit" icon = 'stationobjs.dmi' - icon_state = "processor_on" + icon_state = "processor" desc = "This machine is used to process large quantities of information." density = 1 anchored = 1 use_power = 1 idle_power_usage = 30 machinetype = 3 + heatgen = 100 + delay = 5 + circuitboard = "/obj/item/weapon/circuitboard/telecomms/processor" receive_information(datum/signal/signal, obj/machinery/telecomms/machine_from) @@ -218,6 +324,7 @@ relay_direct_information(signal, machine_from) // send the signal back to the machine else // no bus detected - send the signal to servers instead + signal.data["slow"] += rand(5, 10) // slow the signal down relay_information(signal, "/obj/machinery/telecomms/server", 1) @@ -240,8 +347,11 @@ use_power = 1 idle_power_usage = 15 machinetype = 4 + heatgen = 50 + circuitboard = "/obj/item/weapon/circuitboard/telecomms/server" var list/log_entries = list() + totaltraffic = 0 // gigabytes (if > 1024, divide by 1024 -> terrabytes) receive_information(datum/signal/signal, obj/machinery/telecomms/machine_from) @@ -249,6 +359,8 @@ if(is_freq_listening(signal)) + totaltraffic += traffic // add current traffic to total traffic + // If signal has a message and appropriate frequency update_logs() diff --git a/code/game/machinery/telecomms/telemonitor.dm b/code/game/machinery/telecomms/telemonitor.dm index 71d61628706..50bbf8d35d0 100644 --- a/code/game/machinery/telecomms/telemonitor.dm +++ b/code/game/machinery/telecomms/telemonitor.dm @@ -18,7 +18,7 @@ temp = "" // temporary feedback messages - req_access = list(access_engine) + req_access = list(access_tcomsat) attack_hand(mob/user as mob) if(stat & (BROKEN|NOPOWER)) diff --git a/code/game/machinery/turrets.dm b/code/game/machinery/turrets.dm index ac3524da6a0..afb0c4e256d 100644 --- a/code/game/machinery/turrets.dm +++ b/code/game/machinery/turrets.dm @@ -56,6 +56,11 @@ invisibility = 2 density = 1 var/lasers = 0 + var/lasertype = 1 + // 1 = lasers + // 2 = cannons + // 3 = pulse + // 4 = change (HONK) var/health = 80 var/obj/machinery/turretcover/cover = null var/popping = 0 @@ -200,7 +205,15 @@ return var/obj/item/projectile/A if (src.lasers) - A = new /obj/item/projectile/beam( loc ) + switch(lasertype) + if(1) + A = new /obj/item/projectile/beam( loc ) + if(2) + A = new /obj/item/projectile/beam/heavylaser( loc ) + if(3) + A = new /obj/item/projectile/beam/pulse( loc ) + if(4) + A = new /obj/item/projectile/change( loc ) A.original = target.loc use_power(500) else diff --git a/code/game/objects/radio/radio.dm b/code/game/objects/radio/radio.dm index a23b3e710f6..65876225d10 100644 --- a/code/game/objects/radio/radio.dm +++ b/code/game/objects/radio/radio.dm @@ -1,4 +1,4 @@ -var/GLOBAL_RADIO_TYPE = 0 // radio type to use +var/GLOBAL_RADIO_TYPE = 1 // radio type to use // 0 = old radios // 1 = new radios (subspace technology) @@ -290,7 +290,8 @@ var/GLOBAL_RADIO_TYPE = 0 // radio type to use "message" = message, // the actual sent message "connection" = connection, // the radio connection to use "radio" = src, // stores the radio used for transmission - "slow" = 0 // how much to sleep() before broadcasting - simulates net lag + "slow" = 0, // how much to sleep() before broadcasting - simulates net lag + "traffic" = 0 // dictates the total traffic sum that the signal went through ) signal.frequency = connection.frequency // Quick frequency set @@ -333,7 +334,8 @@ var/GLOBAL_RADIO_TYPE = 0 // radio type to use "message" = message, // the actual sent message "connection" = connection, // the radio connection to use "radio" = src, // stores the radio used for transmission - "slow" = 0 + "slow" = 0, + "traffic" = 0 ) signal.frequency = connection.frequency // Quick frequency set diff --git a/code/game/turf.dm b/code/game/turf.dm index c531fbefc83..00625c3608e 100644 --- a/code/game/turf.dm +++ b/code/game/turf.dm @@ -1232,7 +1232,20 @@ turf/simulated/floor/return_siding_icon_state() inertial_drift(A) if(ticker && ticker.mode) - if(ticker.mode.name == "nuclear emergency") return + + // Okay, so let's make it so that people can travel z levels but not nuke disks! + // if(ticker.mode.name == "nuclear emergency") return + + + if(istype(A, /obj/item/weapon/disk/nuclear)) // Don't let nuke disks travel Z levels + return + + if(!isemptylist(A.search_contents_for(/obj/item/weapon/disk/nuclear))) + if(istype(A, /mob/living)) + var/mob/living/MM = A + if(MM.client) + MM << "\red Something you are carrying is preventing you from leaving. Don't play stupid; you know exactly what it is." + return else if(ticker.mode.name == "extended"||ticker.mode.name == "sandbox") Sandbox_Spacemove(A) diff --git a/code/modules/chemical/Chemistry-Machinery.dm b/code/modules/chemical/Chemistry-Machinery.dm index b820deba37b..546b22103da 100644 --- a/code/modules/chemical/Chemistry-Machinery.dm +++ b/code/modules/chemical/Chemistry-Machinery.dm @@ -17,7 +17,7 @@ recharge() if(stat & BROKEN) return if(energy != max_energy) - energy++ + energy += 4 use_power(2000) // This thing uses up alot of power (this is still low as shit for creating reagents from thin air) spawn(200) recharge() diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index d42ba40a7e1..bda5c767bd3 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -64,6 +64,9 @@ //Disabilities handle_disabilities() + //Random events (vomiting etc) + handle_random_events() + //Status updates, death etc. UpdateLuminosity() handle_regular_status_updates() @@ -1015,10 +1018,32 @@ return 1 handle_random_events() + /* // probably stupid -- Doohl if (prob(1) && prob(2)) spawn(0) emote("sneeze") return + */ + + // Puke if toxloss is too high + if (prob(50) && getToxLoss() >= 45 && nutrition > 20) + lastpuke ++ + if(lastpuke >= 5) + Stun(rand(4,6)) + + for(var/mob/O in viewers(world.view, src)) + O.show_message(text("\red [] throws up!", src), 1) + playsound(src.loc, 'splat.ogg', 50, 1) + + var/turf/location = loc + if (istype(location, /turf/simulated)) + location.add_vomit_floor(src, 1) + + nutrition -= rand(10,20) + adjustToxLoss(-rand(1,10)) + + // make it so you can only puke so fast + lastpuke = 0 handle_virus_updates() if(bodytemperature > 406) diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index b7e25e193b7..4e9839ddd40 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -101,6 +101,7 @@ var/lying = 0.0 var/canmove = 1.0 var/eye_stat = null//Living, potentially Carbon + var/lastpuke = 0 var/name_archive //For admin things like possession diff --git a/html/changelog.html b/html/changelog.html index 05880ccad55..350be933d5e 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -60,9 +60,20 @@ Stuff which is in development and not yet visible to players or just code relate (ie. code improvements for expandability, etc.) should not be listed here. They should be listed in the changelog upon commit tho. Thanks. --> +15 January 2012 +
      +
    • Doohl updated: +
        +
      • The radio overhaul 'Telecommunications' is now LIVE. Please submit any opinions/feedback in the forums and check the wiki article on Telecommunications for some more info for the curious.
      • +
      • The AI satellite has been replaced with a communications satellite. You can get there via teleporter or space, just like the AI satellite. I highly recommend not bum-rushing the new satellite, as you may be killed if you don't have access. It's a very secure place.
      • +
      • Once a human's toxicity level reaches a certain point, they begin throwing up. This is a natural, but overall ineffective method of purging toxins from the body.
      • +
      • You can now travel Z-levels in Nuclear Emergency mode (the nuke disk is still bound to the station). This means the nuclear agents can and probably will fly off into space to blow up the comm satellite and shut down communications.
      • +
      +
    + 9 January 2012