Skip to content

Commit

Permalink
The modified Changeling mode should end properly now.
Browse files Browse the repository at this point in the history
Tracking implants can now be used to message the holder.
Mini Readme update.
Explosive implants will explode when the host dies.  Might try and wrap these into nuke or as a new traitor item.
Added a play local sound proc.
Fixed most of the runtimes in the latest log.


git-svn-id: http://tgstation13.googlecode.com/svn/trunk@2074 316c924e-a436-60f5-8080-3fe189b3f50e
  • Loading branch information
[email protected] committed Aug 30, 2011
1 parent 7323470 commit b471da4
Show file tree
Hide file tree
Showing 12 changed files with 136 additions and 124 deletions.
12 changes: 6 additions & 6 deletions README.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand All @@ -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

Expand All @@ -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.

Expand Down
8 changes: 4 additions & 4 deletions code/game/gamemodes/changeling/changeling.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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))
Expand Down
8 changes: 6 additions & 2 deletions code/game/machinery/computer/explosive.dm
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@
dat += "<A href='?src=\ref[src];inject1=\ref[C]'>(<font color=red>(1)</font>)</A>"
dat += "<A href='?src=\ref[src];inject5=\ref[C]'>(<font color=red>(5)</font>)</A>"
dat += "<A href='?src=\ref[src];inject10=\ref[C]'>(<font color=red>(10)</font>)</A><BR>"
dat += "********************************<BR>"
dat += "<HR>Tracking Implants<BR>"
for(var/obj/item/weapon/implant/tracking/T in world)
Tr = get_turf(T)
Expand All @@ -51,6 +52,8 @@
var/turf/mob_loc = get_turf_loc(M)
loc_display = mob_loc.loc
dat += "ID: [T.id] | Location: [loc_display]<BR>"
dat += "<A href='?src=\ref[src];warn=\ref[T]'>(<font color=red><i>Message Holder</i></font>)</A> |<BR>"
dat += "********************************<BR>"
dat += "<HR><A href='?src=\ref[src];lock=1'>Lock Console</A>"

user << browse(dat, "window=computer;size=400x500")
Expand Down Expand Up @@ -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()
Expand Down
6 changes: 2 additions & 4 deletions code/game/machinery/hydroponics.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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."
Expand Down
134 changes: 69 additions & 65 deletions code/game/objects/items/candle.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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)
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()
if(istype(loc, /turf)) //start a fire if possible
var/turf/T = loc
T.hotspot_expose(700, 5)

if(istype(loc, /turf)) //start a fire if possible
var/turf/T = loc
T.hotspot_expose(700, 5)

spawn(60)
process()
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)

/obj/item/candle/attack_self(mob/user as mob)
if(lit)
lit = 0
update_icon()
sd_SetLuminosity(0)
user.sd_SetLuminosity(user.luminosity - CANDLE_LUM)

/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)


///////////////
Expand Down
16 changes: 15 additions & 1 deletion code/game/objects/items/weapons/implants/implant.dm
Original file line number Diff line number Diff line change
Expand Up @@ -102,9 +102,17 @@ Implant Specifics:<BR>"}
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()



Expand Down Expand Up @@ -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
Expand Down
1 change: 1 addition & 0 deletions code/game/objects/items/weapons/implants/implantcase.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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."
Expand Down
13 changes: 13 additions & 0 deletions code/game/objects/items/weapons/implants/implanter.dm
Original file line number Diff line number Diff line change
Expand Up @@ -37,11 +37,24 @@
src.icon_state = "implanter0"
return



/obj/item/weapon/implanter/loyalty
name = "implanter-loyalty"

New()
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
3 changes: 1 addition & 2 deletions code/game/sound.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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')
Expand Down
2 changes: 2 additions & 0 deletions code/modules/admin/admin_verbs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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

Expand Down
Loading

0 comments on commit b471da4

Please sign in to comment.