diff --git a/baystation12.dme b/baystation12.dme index 1e8bb46096..17643dc825 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -943,11 +943,7 @@ #include "code\modules\critters\critter_defenses.dm" #include "code\modules\critters\critters.dm" #include "code\modules\critters\hivebots\hivebot.dm" -#include "code\modules\DetectiveWork\detective_work.dm" -#include "code\modules\DetectiveWork\evidence.dm" -#include "code\modules\DetectiveWork\footprints_and_rag.dm" -#include "code\modules\DetectiveWork\scanner.dm" -#include "code\modules\flufftext\Dreaming.dm" +#include "code\modules\customitems\item_defines.dm"#include "code\modules\customitems\item_spawning.dm"#include "code\modules\DetectiveWork\detective_work.dm"#include "code\modules\DetectiveWork\evidence.dm"#include "code\modules\DetectiveWork\footprints_and_rag.dm"#include "code\modules\DetectiveWork\scanner.dm"#include "code\modules\flufftext\Dreaming.dm" #include "code\modules\flufftext\Hallucination.dm" #include "code\modules\flufftext\TextFilters.dm" #include "code\modules\food\recipes_microwave.dm" @@ -1272,7 +1268,7 @@ #include "code\modules\security levels\security levels.dm" #include "code\WorkInProgress\buildmode.dm" #include "code\WorkInProgress\explosion_particles.dm" -#include "interface\interface.dm" +#include "code\WorkInProgress\animusstation\atm.dm"#include "code\WorkInProgress\Cael_Aislinn\energy_field.dm"#include "code\WorkInProgress\Cael_Aislinn\external_shield_gen.dm"#include "code\WorkInProgress\Cael_Aislinn\shield_capacitor.dm"#include "code\WorkInProgress\Cael_Aislinn\shield_gen.dm"#include "code\WorkInProgress\Cael_Aislinn\Rust\core_field.dm"#include "code\WorkInProgress\Cael_Aislinn\Rust\core_gen.dm"#include "code\WorkInProgress\Cael_Aislinn\Rust\core_monitor.dm"#include "code\WorkInProgress\Cael_Aislinn\Rust\fuel_assembly.dm"#include "code\WorkInProgress\Cael_Aislinn\Rust\fuel_assembly_port.dm"#include "code\WorkInProgress\Cael_Aislinn\Rust\fuel_compressor.dm"#include "code\WorkInProgress\Cael_Aislinn\Rust\fuel_control.dm"#include "code\WorkInProgress\Cael_Aislinn\Rust\fuel_injector.dm"#include "code\WorkInProgress\Cael_Aislinn\Rust\gyrotron.dm"#include "code\WorkInProgress\Cael_Aislinn\Rust\gyrotron_controller.dm"#include "code\WorkInProgress\Cael_Aislinn\Rust\radiation.dm"#include "code\WorkInProgress\Cael_Aislinn\Rust\virtual_particle_catcher.dm"#include "code\WorkInProgress\Mini\atmos_control.dm"#include "code\WorkInProgress\Ported\policetape.dm"#include "code\WorkInProgress\SkyMarshal\Ultralight_procs.dm"#include "code\WorkInProgress\Tastyfish\livestock.dm"#include "code\WorkInProgress\Wrongnumber\weldbackpack.dm"#include "code\ZAS\Airflow.dm"#include "code\ZAS\Connection.dm"#include "code\ZAS\FEA_gas_mixture.dm"#include "code\ZAS\FEA_system.dm"#include "code\ZAS\Fire.dm"#include "code\ZAS\Functions.dm"#include "code\ZAS\Plasma.dm"#include "code\ZAS\Variable Settings.dm"#include "code\ZAS\ZAS_Turfs.dm"#include "code\ZAS\ZAS_Zones.dm"#include "interface\interface.dm" #include "interface\skin.dmf" #include "maps\tgstation.2.0.9.dmm" // END_INCLUDE diff --git a/code/WorkInProgress/Mini/ATM.dm b/code/WorkInProgress/Mini/ATM.dm index 068211a97c..17b6ef2e47 100644 --- a/code/WorkInProgress/Mini/ATM.dm +++ b/code/WorkInProgress/Mini/ATM.dm @@ -21,7 +21,7 @@ log transactions /obj/machinery/atm/attackby(obj/item/I as obj, mob/user as mob) if(ishuman(user)) var/obj/item/weapon/card/id/user_id = src.scan_user(user) - if(istype(I,/obj/item/weapon/money)) + if(istype(I,/obj/item/weapon/spacecash)) user_id.money += I:worth del I @@ -51,21 +51,21 @@ log transactions //hueg switch for giving moneh out switch(amount) if(1) - new /obj/item/weapon/money(loc) + new /obj/item/weapon/spacecash(loc) if(10) - new /obj/item/weapon/money/c10(loc) + new /obj/item/weapon/spacecash/c10(loc) if(20) - new /obj/item/weapon/money/c20(loc) + new /obj/item/weapon/spacecash/c20(loc) if(50) - new /obj/item/weapon/money/c50(loc) + new /obj/item/weapon/spacecash/c50(loc) if(100) - new /obj/item/weapon/money/c100(loc) + new /obj/item/weapon/spacecash/c100(loc) if(200) - new /obj/item/weapon/money/c200(loc) + new /obj/item/weapon/spacecash/c200(loc) if(500) - new /obj/item/weapon/money/c500(loc) + new /obj/item/weapon/spacecash/c500(loc) if(1000) - new /obj/item/weapon/money/c1000(loc) + new /obj/item/weapon/spacecash/c1000(loc) else usr << browse("You don't have that much money!
Back","window=atm") return diff --git a/code/WorkInProgress/Ported/policetape.dm b/code/WorkInProgress/Ported/policetape.dm index 36076152f0..3fa0a4a851 100644 --- a/code/WorkInProgress/Ported/policetape.dm +++ b/code/WorkInProgress/Ported/policetape.dm @@ -1,3 +1,21 @@ +//Define all tape types in policetape.dm +/obj/item/taperoll + name = "tape roll" + icon = 'policetape.dmi' + icon_state = "rollstart" + flags = FPRINT + w_class = 1.0 + var/turf/start + var/turf/end + var/tape_type = /obj/item/tape + var/icon_base + +/obj/item/tape + name = "tape" + icon = 'policetape.dmi' + anchored = 1 + density = 1 + var/icon_base /obj/item/taperoll/police name = "police tape" @@ -116,7 +134,7 @@ breaktape(/obj/item/weapon/wirecutters,user) /obj/item/tape/proc/breaktape(obj/item/weapon/W as obj, mob/user as mob) - if(user.a_intent == "help" && ((!is_sharp(W) && src.allowed(user)) ||(!is_cut(W) && !src.allowed(user)))) + if(user.a_intent == "help" && ((!is_sharp(W) && src.allowed(user)))) user << "You can't break the [src] with that!" return user.show_viewers("\blue [user] breaks the [src]!") diff --git a/code/WorkInProgress/animusstation/atm.dm b/code/WorkInProgress/animusstation/atm.dm index 71235421ce..897ae273a0 100644 --- a/code/WorkInProgress/animusstation/atm.dm +++ b/code/WorkInProgress/animusstation/atm.dm @@ -18,13 +18,13 @@ log transactions use_power = 1 idle_power_usage = 10 var/obj/item/weapon/card/id/card - var/obj/item/weapon/money/cashes = list() + var/obj/item/weapon/spacecash/cashes = list() var/inserted = 0 var/accepted = 0 var/pincode = 0 attackby(var/obj/A, var/mob/user) - if(istype(A,/obj/item/weapon/money)) + if(istype(A,/obj/item/weapon/spacecash)) cashes += A user.drop_item() A.loc = src @@ -101,21 +101,21 @@ log transactions card.money -= amount switch(amount) if(1) - new /obj/item/weapon/money(loc) + new /obj/item/weapon/spacecash(loc) if(10) - new /obj/item/weapon/money/c10(loc) + new /obj/item/weapon/spacecash/c10(loc) if(20) - new /obj/item/weapon/money/c20(loc) + new /obj/item/weapon/spacecash/c20(loc) if(50) - new /obj/item/weapon/money/c50(loc) + new /obj/item/weapon/spacecash/c50(loc) if(100) - new /obj/item/weapon/money/c100(loc) + new /obj/item/weapon/spacecash/c100(loc) if(200) - new /obj/item/weapon/money/c200(loc) + new /obj/item/weapon/spacecash/c200(loc) if(500) - new /obj/item/weapon/money/c500(loc) + new /obj/item/weapon/spacecash/c500(loc) if(1000) - new /obj/item/weapon/money/c1000(loc) + new /obj/item/weapon/spacecash/c1000(loc) else user << "\red Error: Insufficient funds." return @@ -144,7 +144,7 @@ log transactions if (usr.machine==src && get_dist(src, usr) <= 1 || istype(usr, /mob/living/silicon/ai)) if(href_list["eca"]) if(accepted) - for(var/obj/item/weapon/money/M in cashes) + for(var/obj/item/weapon/spacecash/M in cashes) M.loc = loc inserted = 0 if(!cashes) @@ -166,3 +166,11 @@ log transactions else usr.machine = null usr << browse(null,"window=atm") + + +/obj/item/weapon/card/id/proc/checkaccess(p,var/mob/user) + if(p == pin) + user << "\green Access granted" + return 1 + user << "\red Access denied" + return 0 \ No newline at end of file diff --git a/code/defines/obj/storage.dm b/code/defines/obj/storage.dm index c52bd713cd..62279c6d3e 100644 --- a/code/defines/obj/storage.dm +++ b/code/defines/obj/storage.dm @@ -446,7 +446,7 @@ /obj/item/weapon/storage/bible name = "bible" - desc = "Apply to head repeatedly." + desc = "A holy book." //BS12 EDIT icon_state ="bible" throw_speed = 1 throw_range = 5 @@ -457,8 +457,7 @@ /obj/item/weapon/storage/bible/booze name = "bible" - desc = "To be applied to the head repeatedly." - icon_state ="bible" + desc = "A holy book. Smells faintly of alcohol" //BS12 EDIT /obj/item/weapon/storage/mousetraps name = "box of Pest-B-Gon Mousetraps" diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm index 5742090575..1fc35a64ae 100644 --- a/code/defines/obj/weapon.dm +++ b/code/defines/obj/weapon.dm @@ -76,7 +76,48 @@ throwforce = 10 w_class = 1 -/obj/item/weapon/sord +//BS12 EDIT +/obj/item/weapon/nullrod/attack(mob/M as mob, mob/living/user as mob) + + M.attack_log += text("\[[time_stamp()]\] Has been attacked with [src.name] by [user.name] ([user.ckey])") + user.attack_log += text("\[[time_stamp()]\] Used the [src.name] to attack [M.name] ([M.ckey])") + + log_admin("ATTACK: [user] ([user.ckey]) attacked [M] ([M.ckey]) with [src].") + message_admins("ATTACK: [user] ([user.ckey]) attacked [M] ([M.ckey]) with [src].") + log_attack("[user.name] ([user.ckey]) attacked [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])") + + if (!(istype(user, /mob/living/carbon/human) || ticker) && ticker.mode.name != "monkey") + user << "\red You don't have the dexterity to do this!" + return + + if ((CLUMSY in user.mutations) && prob(50)) + user << "\red The rod slips out of your hand and hits your head." + user.take_organ_damage(10) + user.Paralyse(20) + return + + if (M.stat !=2) + if((M.mind in ticker.mode.cult) && prob(33)) + M << "\red The power of [src] clears your mind of the cult's influence!" + user << "\red You wave [src] over [M]'s head and see their eyes become clear, their mind returning to normal." + ticker.mode.remove_cultist(M.mind) + for(var/mob/O in viewers(M, null)) + O.show_message(text("\red [] waves [] over []'s head.", user, src, M), 1) + else if(prob(10)) + user << "\red The rod slips in your hand." + ..() + else + user << "\red The rod appears to do nothing." + for(var/mob/O in viewers(M, null)) + O.show_message(text("\red [] waves [] over []'s head.", user, src, M), 1) + return + +/obj/item/weapon/nullrod/afterattack(atom/A, mob/user as mob) + if (istype(A, /turf/simulated/floor)) + user << "\blue You hit the floor with the [src]." + call(/obj/effect/rune/proc/revealrunes)(src) + +/*/obj/item/weapon/sord name = "\improper SORD" desc = "This thing is so unspeakably shitty you are having a hard time even holding it." icon_state = "sord" @@ -87,7 +128,7 @@ throwforce = 1 w_class = 3 attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") - +*/ //BS12 EDIT /obj/item/weapon/sord/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob) playsound(loc, 'sound/weapons/bladeslice.ogg', 50, 1, -1) return ..() @@ -184,8 +225,8 @@ g_amt = 15000 /obj/item/weapon/spacecash - name = "space cash" - desc = "It's worth 1 credit." + name = "stack of credits" + desc = "1 credit." gender = PLURAL icon = 'icons/obj/items.dmi' icon_state = "spacecash" @@ -197,37 +238,140 @@ throw_speed = 1 throw_range = 2 w_class = 1.0 + var/currency + var/worth + var/split = 5 + var/round = 0.01 var/access = list() access = access_crate_cash + +/obj/item/weapon/spacecash/proc/updatedesc() + name = "stack of [currency]" + desc = "A pile of [worth] [currency]" + +/obj/item/weapon/spacecash/New(var/nloc, var/nworth=1,var/ncurrency = "credits") + if(!worth) + worth = nworth + if(!currency) + currency = ncurrency + split = round(worth/2,round) + updatedesc() + return ..(nloc) + /obj/item/weapon/spacecash/c10 icon_state = "spacecash10" access = access_crate_cash - desc = "It's worth 10 credits." + desc = "A pile of 10 credits." + worth = 10 + /obj/item/weapon/spacecash/c20 icon_state = "spacecash20" access = access_crate_cash - desc = "It's worth 20 credits." + desc = "A pile of 20 credits." + worth = 20 + /obj/item/weapon/spacecash/c50 icon_state = "spacecash50" access = access_crate_cash - desc = "It's worth 50 credits." + desc = "A pile of 50 credits." + worth = 50 + /obj/item/weapon/spacecash/c100 icon_state = "spacecash100" access = access_crate_cash - desc = "It's worth 100 credits." + desc = "A pile of 100 credits." + worth = 100 + /obj/item/weapon/spacecash/c200 icon_state = "spacecash200" access = access_crate_cash - desc = "It's worth 200 credits." + desc = "A pile of 200 credits." + worth = 200 + /obj/item/weapon/spacecash/c500 icon_state = "spacecash500" access = access_crate_cash - desc = "It's worth 500 credits." + desc = "A pile of 500 credits." + worth = 500 + /obj/item/weapon/spacecash/c1000 icon_state = "spacecash1000" access = access_crate_cash - desc = "It's worth 1000 credits." + desc = "A pile of 1000 credits." + worth = 1000 + +/obj/item/weapon/spacecash/attack_self(var/mob/user) + interact(user) + +/obj/item/weapon/spacecash/proc/interact(var/mob/user) + + user.machine = src + + var/dat + + dat += "
[worth] [currency]" + dat += "
New pile:" + + dat += "-" + dat += "-" + if(round<=0.1) + dat += "-" + if(round<=0.01) + dat += "-" + dat += "[split]" + if(round<=0.01) + dat += "+" + if(round<=0.1) + dat += "+" + dat += "+" + dat += "+" + dat += "
split" + + + user << browse(dat, "window=computer;size=400x500") + + onclose(user, "computer") + return + +/obj/item/weapon/spacecash/Topic(href, href_list) + if ((usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf))) || (istype(usr, /mob/living/silicon))) + usr.machine = src + + if (href_list["su"]) + var/samt = text2num(href_list["su"]) + if(split+samt0) + split-=samt + if(href_list["split"]) + new /obj/item/weapon/spacecash(get_turf(src),split,currency) + worth-=split + split = round(worth/2,round) + updatedesc() + + + src.add_fingerprint(usr) + src.updateUsrDialog() + for (var/mob/M in viewers(1, src.loc)) + if (M.client && M.machine == src) + src.attack_self(M) + return + +/obj/item/weapon/spacecash/attackby(var/obj/I as obj, var/mob/user as mob) + if(istype(I,/obj/item/weapon/spacecash)) + var/mob/living/carbon/c = user + if(!uppertext(I:currency)==uppertext(currency)) + c<<"You can't mix currencies!" + return ..() + else + worth+=I:worth + c<<"You combine the piles." + updatedesc() + del I + return ..() /obj/item/device/mass_spectrometer desc = "A hand-held mass spectrometer which identifies trace chemicals in a blood sample." @@ -586,6 +730,9 @@ var/assignment_real_title = null var/dorm = 0 // determines if this ID has claimed a dorm already + var/money + var/pin + /obj/item/weapon/card/id/silver name = "identification card" desc = "A silver card which shows honour and dedication." diff --git a/code/game/algorithm.dm b/code/game/algorithm.dm index ce1ffd5410..b9f08159b0 100644 --- a/code/game/algorithm.dm +++ b/code/game/algorithm.dm @@ -28,7 +28,7 @@ Starting up. [time2text(world.timeofday, "hh:mm.ss")] make_datum_references_lists() //initialises global lists for referencing frequently used datums (so that we only ever do it once) process_teleport_locs() //Sets up the wizard teleport locations process_ghost_teleport_locs() //Sets up ghost teleport locations. - //sleep_offline = 1 + sleep_offline = 1 spawn(180) //so we aren't adding to the round-start lag /*if(config.ToRban) diff --git a/code/game/cellautomata.dm b/code/game/cellautomata.dm index 5dc1f3baeb..b5ccecb1da 100644 --- a/code/game/cellautomata.dm +++ b/code/game/cellautomata.dm @@ -100,7 +100,7 @@ ..() - //sleep(50) + sleep(50) plmaster = new /obj/effect/overlay( ) plmaster.icon = 'icons/effects/tile_effects.dmi' diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm index e194e34136..afbf6da52b 100644 --- a/code/game/gamemodes/game_mode.dm +++ b/code/game/gamemodes/game_mode.dm @@ -225,11 +225,12 @@ Whitespace:Seperator; comm.messagetitle.Add("Cent. Com. Status Summary") comm.messagetext.Add(intercepttext) + world << sound('commandreport.ogg') - command_alert("Summary downloaded and printed out at all communications consoles.", "Enemy communication intercept. Security Level Elevated.") +/* command_alert("Summary downloaded and printed out at all communications consoles.", "Enemy communication intercept. Security Level Elevated.") world << sound('sound/AI/intercept.ogg') if(security_level < SEC_LEVEL_BLUE) - set_security_level(SEC_LEVEL_BLUE) + set_security_level(SEC_LEVEL_BLUE)*/ /datum/game_mode/proc/get_players_for_role(var/role, override_jobbans=1) diff --git a/code/game/gamemodes/newobjective.dm b/code/game/gamemodes/newobjective.dm index 08e299962f..6b271f4868 100644 --- a/code/game/gamemodes/newobjective.dm +++ b/code/game/gamemodes/newobjective.dm @@ -1203,7 +1203,7 @@ datum check_completion() var/held_credits = 0 - for(var/obj/item/weapon/money/M in owner.current.get_contents()) + for(var/obj/item/weapon/spacecash/M in owner.current.get_contents()) held_credits += M.worth if(held_credits >= steal_amount) return 1 diff --git a/code/game/jobs/job/civilian_chaplain.dm b/code/game/jobs/job/civilian_chaplain.dm index 95d4f82b95..eca1cb3582 100644 --- a/code/game/jobs/job/civilian_chaplain.dm +++ b/code/game/jobs/job/civilian_chaplain.dm @@ -13,7 +13,7 @@ equip(var/mob/living/carbon/human/H) if(!H) return 0 - var/obj/item/weapon/storage/bible/B = new /obj/item/weapon/storage/bible/booze(H) + var/obj/item/weapon/storage/bible/B = new /obj/item/weapon/storage/bible(H) //BS12 EDIT H.equip_to_slot_or_del(B, slot_l_hand) H.equip_to_slot_or_del(new /obj/item/device/pda/chaplain(H), slot_belt) H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/chaplain(H), slot_w_uniform) diff --git a/code/game/jobs/job/silicon.dm b/code/game/jobs/job/silicon.dm index 1b608e200d..9cec53ba20 100644 --- a/code/game/jobs/job/silicon.dm +++ b/code/game/jobs/job/silicon.dm @@ -21,7 +21,7 @@ department_flag = ENGSEC faction = "Station" total_positions = 0 - spawn_positions = 1 + spawn_positions = 2 supervisors = "your laws and the AI" //Nodrak selection_color = "#ddffdd" diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm index b853344b9b..ca9aeb6230 100644 --- a/code/game/machinery/computer/communications.dm +++ b/code/game/machinery/computer/communications.dm @@ -182,10 +182,10 @@ return Centcomm_announce(input, usr) usr << "Message transmitted." - log_say("[key_name(usr)] has made a Centcomm announcement: [input]") + log_say("[key_name(usr)] has sent Centcomm a message: [input]") //BS12 EDIT Fix for comms console never cooling down centcomm_message_cooldown = 1 - spawn(600)//One minute cooldown - message_cooldown = 0 + spawn(50)//One minute cooldown, nah 5 seconds + centcomm_message_cooldown = 0 // OMG SYNDICATE ...LETTERHEAD @@ -199,10 +199,10 @@ return Syndicate_announce(input, usr) usr << "Message transmitted." - log_say("[key_name(usr)] has made a Syndicate announcement: [input]") + log_say("[key_name(usr)] has sent the Syndicate a message: [input]") centcomm_message_cooldown = 1 - spawn(600)//One minute cooldown - message_cooldown = 0 + spawn(50)//One minute cooldown, nah 5 seconds + centcomm_message_cooldown = 0 if("RestoreBackup") usr << "Backup routing data restored!" diff --git a/code/game/machinery/telecomms/broadcaster.dm b/code/game/machinery/telecomms/broadcaster.dm index fd163e7286..888ca7ae3f 100644 --- a/code/game/machinery/telecomms/broadcaster.dm +++ b/code/game/machinery/telecomms/broadcaster.dm @@ -358,7 +358,11 @@ var/list/recentmessages = list() // global list of recent messages broadcasted : // --- Filter the message; place it in quotes apply a verb --- - var/quotedmsg = M.say_quote(message) + var/quotedmsg = "\"" + message + "\"" //BS12 EDIT For Arrivals Computer + if(job == "Automated Announcement") + quotedmsg = message + else if(M) + quotedmsg = M.say_quote(message) // --- This following recording is intended for research and feedback in the use of department radio channels --- diff --git a/code/game/master_controller.dm b/code/game/master_controller.dm index f0505d1c08..3048e0fe9b 100644 --- a/code/game/master_controller.dm +++ b/code/game/master_controller.dm @@ -46,13 +46,6 @@ datum/controller/game_controller world.tick_lag = config.Ticklag - // Sleep for about 5 seconds to allow background initialization procs to finish - sleep(50) - - // Now that the game is world is fully initialized, pause server until a user connects. - world.sleep_offline = 1 - - createRandomZlevel() setup_objects() diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 9bd96fb50c..a7c68ac352 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -541,20 +541,35 @@ set category = "Object" set name = "Pick up" - if(!usr.canmove || usr.stat || usr.restrained() || !in_range(src, usr)) + if(!(usr)) //BS12 EDIT return + if((!istype(usr, /mob/living/carbon)) || (istype(usr, /mob/living/carbon/brain)))//Is humanoid, and is not a brain + usr << "\red You can't pick things up!" + return + if( usr.stat || usr.restrained() )//Is not asleep/dead and is not restrained + usr << "\red You can't pick things up!" + return + if(src.anchored) //Object isn't anchored + usr << "\red You can't pick that up!" + return + if(!usr.hand && usr.r_hand) //Right hand is not full + usr << "\red Your right hand is full." + return + if(usr.hand && usr.l_hand) //Left hand is not full + usr << "\red Your left hand is full." + return + if(!istype(src.loc, /turf)) //Object is on a turf + usr << "\red You can't pick that up!" + return + //All checks are done, time to pick it up! + if(istype(usr, /mob/living/carbon/human)) + src.attack_hand(usr) + if(istype(usr, /mob/living/carbon/alien)) + src.attack_alien(usr) + if(istype(usr, /mob/living/carbon/monkey)) + src.attack_paw(usr) + return - if(ishuman(usr)) - if(usr.get_active_hand() == null) - src.Click() // Let me know if this has any problems -Giacom - /* - if(usr.get_active_hand() == null) - src.attack_hand(usr) - else - usr << "\red You already have something in your hand." - */ - else - usr << "\red This mob type can't use this verb." //This proc is executed when someone clicks the on-screen UI button. To make the UI button show, set the 'icon_action_button' to the icon_state of the image of the button in screen1_action.dmi //The default action is attack_self(). diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm index c0816c356d..32930ea2a7 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -195,6 +195,27 @@ var/GLOBAL_RADIO_TYPE = 1 // radio type to use updateDialog() add_fingerprint(usr) +/obj/item/device/radio/proc/autosay(var/message, var/from, var/channel) //BS12 EDIT + var/datum/radio_frequency/connection = null + if(channel && channels && channels.len > 0) + if (channel == "department") + //world << "DEBUG: channel=\"[channel]\" switching to \"[channels[1]]\"" + channel = channels[1] + connection = secure_radio_connections[channel] + else + connection = radio_connection + channel = null + if (!istype(connection)) + return + if (!connection) + return + + Broadcast_Message(connection, new /mob/living/silicon/ai(src), + 0, "*garbled automated announcement*", src, + message, from, "Automated Announcement", from, "synthesized voice", + 4, 0, 1) + return + /obj/item/device/radio/talk_into(mob/M as mob, message, channel) if(!on) return // the device has to be on diff --git a/code/game/objects/items/weapons/storage/bible.dm b/code/game/objects/items/weapons/storage/bible.dm index 25d1a52122..3a381fb596 100644 --- a/code/game/objects/items/weapons/storage/bible.dm +++ b/code/game/objects/items/weapons/storage/bible.dm @@ -5,7 +5,8 @@ new /obj/item/weapon/spacecash(src) new /obj/item/weapon/spacecash(src) new /obj/item/weapon/spacecash(src) - +//BS12 EDIT +/* // All cult functionality moved to Null Rod /obj/item/weapon/storage/bible/proc/bless(mob/living/carbon/M as mob) if(ishuman(M)) var/mob/living/carbon/human/H = M @@ -70,12 +71,12 @@ O.show_message(text("\red [] smacks []'s lifeless corpse with [].", user, M, src), 1) playsound(src.loc, "punch", 25, 1, -1) return - +*/ /obj/item/weapon/storage/bible/afterattack(atom/A, mob/user as mob) - if (istype(A, /turf/simulated/floor)) +/* if (istype(A, /turf/simulated/floor)) user << "\blue You hit the floor with the bible." if(user.mind && (user.mind.assigned_role == "Chaplain")) - call(/obj/effect/rune/proc/revealrunes)(src) + call(/obj/effect/rune/proc/revealrunes)(src)*/ if(user.mind && (user.mind.assigned_role == "Chaplain")) if(A.reagents && A.reagents.has_reagent("water")) //blesses all the water in the holder user << "\blue You bless [A]." diff --git a/code/modules/DetectiveWork/footprints_and_rag.dm b/code/modules/DetectiveWork/footprints_and_rag.dm index 9b3fa77c55..4aceed22ec 100644 --- a/code/modules/DetectiveWork/footprints_and_rag.dm +++ b/code/modules/DetectiveWork/footprints_and_rag.dm @@ -178,7 +178,7 @@ proc/blood_incompatible(donor,receiver) attack(atom/target as obj|turf|area, mob/user as mob , flag) if(ismob(target) && target.reagents && reagents.total_volume) user.visible_message("\red \The [target] has been smothered with \the [src] by \the [user]!", "\red You smother \the [target] with \the [src]!", "You hear some struggling and muffled cries of surprise") - src.reagents.reaction(target, TOUCH) + src.reagents.reaction(target, INGEST) spawn(5) src.reagents.clear_reagents() return else diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index 083908dbcf..d1b38d0511 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -508,30 +508,27 @@ Traitors and the like can also be revived with the previous role mostly intact. src << "Only administrators may use this command." return var/input = input(usr, "Please enter anything you want. Anything. Serious.", "What?", "") as message|null + var/customname = input(usr, "Pick a title for the report.", "Title") as text|null if(!input) return + if(!customname) + customname = "NanoTrasen Update" + for (var/obj/machinery/computer/communications/C in machines) + if(! (C.stat & (BROKEN|NOPOWER) ) ) + var/obj/item/weapon/paper/P = new /obj/item/weapon/paper( C.loc ) + P.name = "'[command_name()] Update.'" + P.info = input + P.update_icon() + C.messagetitle.Add("[command_name()] Update") + C.messagetext.Add(P.info) - var/confirm = alert(src, "Do you want to announce the contents of the report to the crew?", "Announce", "Yes", "No") - if(confirm == "Yes") - command_alert(input); - for (var/obj/machinery/computer/communications/C in machines) - if(! (C.stat & (BROKEN|NOPOWER) ) ) - var/obj/item/weapon/paper/P = new /obj/item/weapon/paper( C.loc ) - P.name = "paper- '[command_name()] Update.'" - P.info = input - C.messagetitle.Add("[command_name()] Update") - C.messagetext.Add(P.info) - else - command_alert("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message"); - for (var/obj/machinery/computer/communications/C in machines) - if(! (C.stat & (BROKEN|NOPOWER) ) ) - var/obj/item/weapon/paper/P = new /obj/item/weapon/paper( C.loc ) - P.name = "paper- 'Classified [command_name()] Update.'" - P.info = input - C.messagetitle.Add("Classified [command_name()] Update") - C.messagetext.Add(P.info) + switch(alert("Should this be announced to the general population?",,"Yes","No")) + if("Yes") + command_alert(input, maintitle=customname); + if("No") + world << "\red New NanoTrasen Update available at all communication consoles." - world << sound('sound/AI/commandreport.ogg') + world << sound('commandreport.ogg') log_admin("[key_name(src)] has created a command report: [input]") message_admins("[key_name_admin(src)] has created a command report", 1) feedback_add_details("admin_verb","CCR") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! diff --git a/code/modules/clothing/uniforms/lawyer.dm b/code/modules/clothing/uniforms/lawyer.dm index ddf363c133..9bd16169fd 100644 --- a/code/modules/clothing/uniforms/lawyer.dm +++ b/code/modules/clothing/uniforms/lawyer.dm @@ -62,4 +62,4 @@ item_state = "judge" flags = FPRINT | TABLEPASS body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS - allowed = list(/obj/item/weapon/cigpacket,/obj/item/weapon/money) + allowed = list(/obj/item/weapon/cigpacket,/obj/item/weapon/spacecash) diff --git a/code/modules/detectivework/footprints_and_rag.dm b/code/modules/detectivework/footprints_and_rag.dm index b26480f2e1..f39aca8750 100644 --- a/code/modules/detectivework/footprints_and_rag.dm +++ b/code/modules/detectivework/footprints_and_rag.dm @@ -178,7 +178,7 @@ proc/blood_incompatible(donor,receiver) attack(atom/target as obj|turf|area, mob/user as mob , flag) if(ismob(target) && target.reagents && reagents.total_volume) user.visible_message("\red \The [target] has been smothered with \the [src] by \the [user]!", "\red You smother \the [target] with \the [src]!", "You hear some struggling and muffled cries of surprise") - src.reagents.reaction(target, TOUCH) + src.reagents.reaction(target, INGEST) spawn(5) src.reagents.clear_reagents() return else diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index 4786b6ce95..9ef7851149 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -65,6 +65,7 @@ Works together with spawning an observer, noted above. if(key) var/mob/dead/observer/ghost = new(src) //Transfer safety to observer spawning proc. ghost.can_reenter_corpse = can_reenter_corpse + ghost.timeofdeath = timeofdeath //BS12 EDIT ghost.key = key return ghost diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index e168db635b..bab2a88d72 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -337,14 +337,35 @@ var/list/slot_equipment_priority = list( \ set category = "OOC" if (!( abandon_allowed )) + usr << "\blue Respawn is disabled." return if ((stat != 2 || !( ticker ))) usr << "\blue You must be dead to use this!" return + if (ticker.mode.name == "meteor" || ticker.mode.name == "epidemic") //BS12 EDIT + usr << "\blue Respawn is disabled." + return + else + var/deathtime = world.time - src.timeofdeath + var/deathtimeminutes = round(deathtime / 600) + var/pluralcheck = "minute" + if(deathtimeminutes == 0) + pluralcheck = "" + else if(deathtimeminutes == 1) + pluralcheck = " [deathtimeminutes] minute and" + else if(deathtimeminutes > 1) + pluralcheck = " [deathtimeminutes] minutes and" + var/deathtimeseconds = round((deathtime - deathtimeminutes * 600) / 10,1) + usr << "You have been dead for[pluralcheck] [deathtimeseconds] seconds." + if (deathtime < 18000) + usr << "You must wait 30 minutes to respawn!" + return + else + usr << "You can respawn now, enjoy your new life!" log_game("[usr.name]/[usr.key] used abandon mob.") - usr << "\blue Please roleplay correctly!" + usr << "\blue Make sure to play a different character, and please roleplay correctly!" if(!client) log_game("[usr.key] AM failed due to disconnect.") diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index f4ceed41a3..47cdf8f076 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -321,14 +321,9 @@ proc/AnnounceArrival(var/mob/living/carbon/human/character, var/rank) if (ticker.current_state == GAME_STATE_PLAYING) - var/ailist[] = list() - for (var/mob/living/silicon/ai/A in living_mob_list) - ailist += A - if (ailist.len) - var/mob/living/silicon/ai/announcer = pick(ailist) - if(character.mind) - if((character.mind.assigned_role != "Cyborg") && (character.mind.special_role != "MODE")) - announcer.say("[character.real_name] has signed up as [rank].") + var/obj/item/device/radio/intercom/a = new /obj/item/device/radio/intercom(null)// BS12 EDIT Arrivals Announcement Computer, rather than the AI. + a.autosay("\"[character.real_name],[character.wear_id.assignment ? " [character.wear_id.assignment]," : "" ] has arrived on the station.\"", "Arrivals Announcement Computer") + del(a) proc/LateChoices() var/mills = world.time // 1/10 of a second, not real milliseconds but whatever diff --git a/icons/misc/fullscreen.dmi b/icons/misc/fullscreen.dmi index 116ea7cfdc..7d8ced9e49 100644 Binary files a/icons/misc/fullscreen.dmi and b/icons/misc/fullscreen.dmi differ