diff --git a/README.txt b/README.txt index 4d740c914e..2a2896c6a8 100644 --- a/README.txt +++ b/README.txt @@ -12,13 +12,13 @@ First-time installation should be fairly straightforward. First, you'll need BYOND installed. You can get it from http://www.byond.com/. Once you've done that, extract the game files to wherever you want to keep them. This is a sourcecode-only release, so the next step is to compile the server files. -Open goonstation.dme by double-clicking it, open the Build menu, and click +Open tgstation.dme by double-clicking it, open the Build menu, and click compile. This'll take a little while, and if everything's done right you'll get a message like this: -saving goonstation.dmb (DEBUG mode) +saving tgstation.dmb (DEBUG mode) -goonstation.dmb - 0 errors, 0 warnings +tgstation.dmb - 0 errors, 0 warnings If you see any errors or warnings, something has gone wrong - possibly a corrupt download or the files extracted wrong. @@ -32,8 +32,8 @@ so they may have unknown and bizarre bugs. Extended is essentially no mode, and isn't in the Secret rotation by default as it's just not very fun. You'll also want to edit admins.txt to remove the default admins and add your -own. Host is the highest level of access, and the other recommended admin -levels for now are Coder (a little below host) and Moderator. The format is +own. "Game Master" is the highest level of access, and the other recommended admin +levels for now are "Game Admin" (a little below host) and "Moderator". The format is byondkey - Rank @@ -42,7 +42,7 @@ capitalised. There are a bunch more admin ranks, but these three should be enough for most servers, assuming you have trustworthy admins. Finally, to start the server, run Dream Daemon and enter the path to your -compiled goonstation.dmb file. Make sure to set the port to the one you +compiled tgstation.dmb file. Make sure to set the port to the one you specified in the config.txt, and set the Security box to 'Safe'. Then press GO and the server should start up and be ready to join. diff --git a/code/game/gamemodes/changeling/changeling.dm b/code/game/gamemodes/changeling/changeling.dm index 5c5ed684c7..cb4c1784ec 100644 --- a/code/game/gamemodes/changeling/changeling.dm +++ b/code/game/gamemodes/changeling/changeling.dm @@ -157,8 +157,8 @@ obj_count++ return -/datum/game_mode/changeling/check_finished() -/* var/changelings_alive = 0 +/*/datum/game_mode/changeling/check_finished() + var/changelings_alive = 0 for(var/datum/mind/changeling in changelings) if(!istype(changeling.current,/mob/living/carbon)) continue @@ -176,8 +176,8 @@ if(world.time-changelingdeathtime > TIME_TO_GET_REVIVED) return 1 else - return ..()*/ - return 0 + return ..() + return 0*/ /datum/game_mode/proc/grant_changeling_powers(mob/living/carbon/human/changeling_mob) if (!istype(changeling_mob)) diff --git a/code/game/machinery/computer/explosive.dm b/code/game/machinery/computer/explosive.dm index 72d269acdd..7161d2f249 100644 --- a/code/game/machinery/computer/explosive.dm +++ b/code/game/machinery/computer/explosive.dm @@ -40,6 +40,7 @@ dat += "((1))" dat += "((5))" dat += "((10))
" + dat += "********************************
" dat += "
Tracking Implants
" for(var/obj/item/weapon/implant/tracking/T in world) Tr = get_turf(T) @@ -51,6 +52,8 @@ var/turf/mob_loc = get_turf_loc(M) loc_display = mob_loc.loc dat += "ID: [T.id] | Location: [loc_display]
" + dat += "(Message Holder) |
" + dat += "********************************
" dat += "
Lock Console" user << browse(dat, "window=computer;size=400x500") @@ -93,8 +96,9 @@ else if(href_list["warn"]) var/warning = input(usr,"Message:","Enter your message here!","") var/obj/item/weapon/implant/I = locate(href_list["warn"]) - var/mob/living/carbon/R = I.imp_in - R << "\green You hear a voice in your head saying: '[warning]'" + if((I)&&(I.imp_in)) + var/mob/living/carbon/R = I.imp_in + R << "\green You hear a voice in your head saying: '[warning]'" src.add_fingerprint(usr) src.updateUsrDialog() diff --git a/code/game/machinery/hydroponics.dm b/code/game/machinery/hydroponics.dm index 036156b5c3..32105cf2c7 100644 --- a/code/game/machinery/hydroponics.dm +++ b/code/game/machinery/hydroponics.dm @@ -441,13 +441,11 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob) del(O) src.updateicon() - - - else if ( istype(O, /obj/item/weapon/reagent_containers/syringe)) // Syringe stuff + else if(istype(O, /obj/item/weapon/reagent_containers/syringe)) // Syringe stuff var/obj/item/weapon/reagent_containers/syringe/S = O if (src.planted) if (S.mode == 1) - if(!reagents.total_volume) + if(!S.reagents.total_volume) user << "\red The syringe is empty." return user << "\red You inject the [src.myseed.plantname] with a chemical solution." diff --git a/code/game/objects/items/candle.dm b/code/game/objects/items/candle.dm index a70e0ac004..5077f9a437 100644 --- a/code/game/objects/items/candle.dm +++ b/code/game/objects/items/candle.dm @@ -7,75 +7,79 @@ icon_state = "candle1" item_state = "candle1" - var/wax = 100 - var/lit = 0 - -/obj/item/candle/update_icon() - var/i - if(wax>75) - i = 1 - else if(wax>40) - i = 2 - else i = 3 - icon_state = "candle[i][lit ? "_lit" : ""]" - -/obj/item/candle/attackby(obj/item/weapon/W as obj, mob/user as mob) - ..() - if(istype(W, /obj/item/weapon/weldingtool) && W:welding) - light("\red [user] casually lights the [name] with [W], what a badass.") - else if(istype(W, /obj/item/weapon/zippo) && W:lit) - light() - else if(istype(W, /obj/item/weapon/match) && W:lit) - light() - else if(istype(W, /obj/item/candle) && W:lit) - light() - - - -/obj/item/candle/proc/light(var/flavor_text = "\red [usr] lights the [name].") - if(!lit) - lit = 1 - //src.damtype = "fire" - for(var/mob/O in viewers(usr, null)) - O.show_message(flavor_text, 1) - sd_SetLuminosity(CANDLE_LUM) - spawn() - src.process() - -/obj/item/candle/process() - if(!lit) - return - wax-- - if(!wax) - new/obj/item/trash/candle(src.loc) - if(istype(src.loc, /mob)) - src.dropped() - del(src) - update_icon() - - if(istype(loc, /turf)) //start a fire if possible - var/turf/T = loc - T.hotspot_expose(700, 5) - - spawn(60) - process() - -/obj/item/candle/attack_self(mob/user as mob) - if(lit) + var + wax = 100 lit = 0 + proc + light(var/flavor_text = "\red [usr] lights the [name].") + + + update_icon() + var/i + if(wax>75) + i = 1 + else if(wax>40) + i = 2 + else i = 3 + icon_state = "candle[i][lit ? "_lit" : ""]" + + + attackby(obj/item/weapon/W as obj, mob/user as mob) + ..() + if(istype(W, /obj/item/weapon/weldingtool) && W:welding) + light("\red [user] casually lights the [name] with [W], what a badass.") + else if(istype(W, /obj/item/weapon/zippo) && W:lit) + light() + else if(istype(W, /obj/item/weapon/match) && W:lit) + light() + else if(istype(W, /obj/item/candle) && W:lit) + light() + + + light(var/flavor_text = "\red [usr] lights the [name].") + if(!src.lit) + src.lit = 1 + //src.damtype = "fire" + for(var/mob/O in viewers(usr, null)) + O.show_message(flavor_text, 1) + sd_SetLuminosity(CANDLE_LUM) + processing_items.Add(src) + + + process() + if(!lit) + return + wax-- + if(!wax) + new/obj/item/trash/candle(src.loc) + if(istype(src.loc, /mob)) + src.dropped() + del(src) update_icon() - sd_SetLuminosity(0) - user.sd_SetLuminosity(user.luminosity - CANDLE_LUM) + if(istype(loc, /turf)) //start a fire if possible + var/turf/T = loc + T.hotspot_expose(700, 5) -/obj/item/candle/pickup(mob/user) - if(lit) - src.sd_SetLuminosity(0) - user.sd_SetLuminosity(user.luminosity + CANDLE_LUM) -/obj/item/candle/dropped(mob/user) - if(lit) - user.sd_SetLuminosity(user.luminosity - CANDLE_LUM) - src.sd_SetLuminosity(CANDLE_LUM) + attack_self(mob/user as mob) + if(lit) + lit = 0 + update_icon() + sd_SetLuminosity(0) + user.sd_SetLuminosity(user.luminosity - CANDLE_LUM) + + + pickup(mob/user) + if(lit) + src.sd_SetLuminosity(0) + user.sd_SetLuminosity(user.luminosity + CANDLE_LUM) + + + dropped(mob/user) + if(lit) + user.sd_SetLuminosity(user.luminosity - CANDLE_LUM) + src.sd_SetLuminosity(CANDLE_LUM) + /////////////// diff --git a/code/game/objects/items/weapons/implants/implant.dm b/code/game/objects/items/weapons/implants/implant.dm index 8104344bb8..0be810e74a 100644 --- a/code/game/objects/items/weapons/implants/implant.dm +++ b/code/game/objects/items/weapons/implants/implant.dm @@ -102,9 +102,17 @@ Implant Specifics:
"} return dat + trigger(emote, source as mob) + if(emote == "deathgasp") + src.activate("death") + return + + activate(var/cause) if((!cause) || (!src.imp_in)) return 0 - //explode here + explosion(src, -1, 0, 1, 3, 0)//This might be a bit much, dono will have to see. + if(src.imp_in) + src.imp_in.gib() @@ -139,6 +147,12 @@ the implant may become unstable and either pre-maturely inject the subject or si R.my_atom = src + trigger(emote, source as mob) + if(emote == "deathgasp") + src.activate(10) + return + + activate(var/cause) if((!cause) || (!src.imp_in)) return 0 var/mob/living/carbon/R = src.imp_in diff --git a/code/game/objects/items/weapons/implants/implantcase.dm b/code/game/objects/items/weapons/implants/implantcase.dm index 9ac0ce5b37..073c913a9e 100644 --- a/code/game/objects/items/weapons/implants/implantcase.dm +++ b/code/game/objects/items/weapons/implants/implantcase.dm @@ -34,6 +34,7 @@ else src.name = "Glass Case" else if(istype(I, /obj/item/weapon/reagent_containers/syringe)) + if(!src.imp) return if(!src.imp.allow_reagents) return if(src.imp.reagents.total_volume >= 10) user << "\red [src] is full." diff --git a/code/game/objects/items/weapons/implants/implanter.dm b/code/game/objects/items/weapons/implants/implanter.dm index 770ab7b89c..59965024af 100644 --- a/code/game/objects/items/weapons/implants/implanter.dm +++ b/code/game/objects/items/weapons/implants/implanter.dm @@ -37,6 +37,8 @@ src.icon_state = "implanter0" return + + /obj/item/weapon/implanter/loyalty name = "implanter-loyalty" @@ -44,4 +46,15 @@ src.imp = new /obj/item/weapon/implant/loyalty( src ) ..() update() + return + + + +/obj/item/weapon/implanter/explosive + name = "implanter-explosive" + + New() + src.imp = new /obj/item/weapon/implant/explosive( src ) + ..() + update() return \ No newline at end of file diff --git a/code/game/sound.dm b/code/game/sound.dm index 51769e08e7..20fc553831 100644 --- a/code/game/sound.dm +++ b/code/game/sound.dm @@ -28,8 +28,7 @@ M << S /mob/proc/playsound_local(var/atom/source, soundin, vol as num, vary, extrarange as num) - if(!src.client && ear_deaf > 0) - return + if(!src.client || ear_deaf > 0) return switch(soundin) if ("shatter") soundin = pick('Glassbr1.ogg','Glassbr2.ogg','Glassbr3.ogg') if ("explosion") soundin = pick('Explosion1.ogg','Explosion2.ogg') diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index d3f2e79f46..0f7de20077 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -153,6 +153,7 @@ verbs += /client/proc/cmd_admin_emp verbs += /client/proc/cmd_admin_drop_everything verbs += /client/proc/make_sound + verbs += /client/proc/play_local_sound verbs += /client/proc/only_one verbs += /client/proc/send_space_ninja verbs += /client/proc/restartcontroller //Can call via aproccall --I_hate_easy_things.jpg, Mport --Agouri @@ -362,6 +363,7 @@ verbs -= /client/proc/cmd_admin_say verbs -= /client/proc/cmd_admin_gib_self verbs -= /client/proc/restartcontroller + verbs -= /client/proc/play_local_sound verbs -= /client/proc/enable_mapping_debug return diff --git a/code/modules/admin/verbs/playsound.dm b/code/modules/admin/verbs/playsound.dm index 88c5ea8cab..db64d6811f 100644 --- a/code/modules/admin/verbs/playsound.dm +++ b/code/modules/admin/verbs/playsound.dm @@ -31,20 +31,29 @@ else usr << "You already used up your jukebox monies this round!" del(uploaded_sound) -// else -// usr << "Cant play Sound." - //else - // alert("Debugging is disabled") - // return +/client/proc/play_local_sound(S as sound) + set category = "Fun" + set name = "Play Local Sound" + + if(!src.authenticated || !src.holder) + src << "Only administrators may use this command." + return + + if(src.holder.rank == "Game Master" || src.holder.rank == "Game Admin") + log_admin("[key_name(src)] played a local sound [S]") + message_admins("[key_name_admin(src)] played a local sound [S]", 1) + playsound(get_turf_loc(src.mob), S, 50, 0, 0) + return + + /* /client/proc/cuban_pete() set category = "Fun" set name = "Cuban Pete Time" message_admins("[key_name_admin(usr)] has declared Cuban Pete Time!", 1) - for(var/mob/M in world) if(M.client) if(M.client.midis) @@ -55,27 +64,23 @@ CP << "Your body can't contain the rhumba beat" CP.gib(1) + /client/proc/bananaphone() set category = "Fun" set name = "Banana Phone" message_admins("[key_name_admin(usr)] has activated Banana Phone!", 1) - for(var/mob/M in world) if(M.client) if(M.client.midis) M << 'bananaphone.ogg' - - - client/proc/space_asshole() set category = "Fun" set name = "Space Asshole" message_admins("[key_name_admin(usr)] has played the Space Asshole Hymn.", 1) - for(var/mob/M in world) if(M.client) if(M.client.midis) @@ -87,32 +92,7 @@ client/proc/honk_theme() set name = "Honk" message_admins("[key_name_admin(usr)] has creeped everyone out with Blackest Honks.", 1) - for(var/mob/M in world) if(M.client) if(M.client.midis) - M << 'honk_theme.ogg' -*/ - - /*if(Debug2) - if(!src.authenticated || !src.holder) - src << "Only administrators may use this command." - return - - var/sound/uploaded_sound = sound(S,0,1,0) - uploaded_sound.priority = 255 - uploaded_sound.wait = 1 - - if(src.holder.rank == "Game Master" || src.holder.rank == "Game Admin" || src.holder.rank == "Badmin") - log_admin("[key_name(src)] played sound [S]") - message_admins("[key_name_admin(src)] played sound [S]", 1) - world << uploaded_sound - else - if(usr.client.canplaysound) - usr.client.canplaysound = 0 - log_admin("[key_name(src)] played sound [S]") - message_admins("[key_name_admin(src)] played sound [S]", 1) - world << uploaded_sound - else - usr << "You already used up your jukebox monies this round!" - del(uploaded_sound)*/ \ No newline at end of file + M << 'honk_theme.ogg'*/ diff --git a/code/modules/mob/living/carbon/human/death.dm b/code/modules/mob/living/carbon/human/death.dm index 1e874f496e..27a6f5fd12 100644 --- a/code/modules/mob/living/carbon/human/death.dm +++ b/code/modules/mob/living/carbon/human/death.dm @@ -27,9 +27,6 @@ drop_item() hand = h //This is where the suicide assemblies checks would go - for (var/obj/item/weapon/implant/I in src) - if (I.implanted) - I.activate(10) if (client) spawn(10)