The modified Changeling mode should end properly now.

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
This commit is contained in:
mport2004@gmail.com
2011-08-30 07:29:59 +00:00
parent 7323470e8f
commit b471da4ed4
12 changed files with 136 additions and 124 deletions
+4 -4
View File
@@ -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))
+6 -2
View File
@@ -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)
@@ -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")
@@ -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()
+2 -4
View File
@@ -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."
+69 -65
View File
@@ -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)
///////////////
@@ -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()
@@ -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
@@ -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."
@@ -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
+1 -2
View File
@@ -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')
+2
View File
@@ -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
+17 -37
View File
@@ -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)*/
M << 'honk_theme.ogg'*/
@@ -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)