- Made Mimewalls a seperate instance of forcefields instead of the special-snowflake-mime-dependent ones. When made, they are added to processing_objects, and count down every process() until they delete themselves(And are removed from processing_objects)

Fixes Issue 1025
- Made the Nuke Disk delete itself under certain conditions when it hits a transition tile in space, specifically if it is inside a bag and NOT on a living mob's back with a client, so spaced containers, backpack on braindead body, backpack on corpse will no longer make Nuclear Emergency unwinnable.
Fixes Issue 1026
- Added parse_zone() to projectile/Bump(), so instead of being hit in the "r_leg" you would be hit in the "right leg", and so on.
Fixes Issue 1028
- Touched up my throw logging so that instead of doing a search through the player_list to match stuff up, it simply pulls the client from carn's directory list

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4976 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
sieve32@gmail.com
2012-10-28 18:40:52 +00:00
parent 8112a568b1
commit 1879167cd4
4 changed files with 38 additions and 17 deletions

View File

@@ -23,14 +23,31 @@
if(V!=usr)
V.show_message("[H] looks as if a wall is in front of them.", 3, "", 2)
usr << "You form a wall in front of yourself."
var/obj/effect/forcefield/F = new /obj/effect/forcefield(locate(usr.x,usr.y,usr.z))
F.icon_state = "empty"
F.name = "invisible wall"
F.desc = "You have a bad feeling about this."
spawn (300)
del (F)
new /obj/effect/forcefield/mime(locate(usr.x,usr.y,usr.z))
return
///////////Mimewalls///////////
/obj/effect/forcefield/mime
icon_state = "empty"
name = "invisible wall"
desc = "You have a bad feeling about this."
var/timeleft = 300
var/last_process = 0
/obj/effect/forcefield/mime/New()
..()
last_process = world.time
processing_objects.Add(src)
/obj/effect/forcefield/mime/process()
timeleft -= (world.time - last_process)
if(timeleft <= 0)
processing_objects.Remove(src)
del(src)
///////////////////////////////
/client/proc/mimespeak()
set category = "Mime"
set name = "Speech"

View File

@@ -83,8 +83,14 @@
if(!isemptylist(A.search_contents_for(/obj/item/weapon/disk/nuclear)))
if(istype(A, /mob/living))
var/mob/living/MM = A
if(MM.client)
if(MM.client && !MM.stat)
MM << "\red Something you are carrying is preventing you from leaving. Don't play stupid; you know exactly what it is."
else
for(var/obj/item/weapon/disk/nuclear/N in A.search_contents_for(/obj/item/weapon/disk/nuclear))
del(N)//Make the disk respawn it is on a clientless mob or corpse
else
for(var/obj/item/weapon/disk/nuclear/N in A.search_contents_for(/obj/item/weapon/disk/nuclear))
del(N)//Make the disk respawn if it is floating on its own
return
var/move_to_z_str = pickweight(accessable_z_levels)

View File

@@ -67,11 +67,9 @@
apply_damage(O.throwforce, dtype, zone, armor, O)
if(!O.fingerprintslast)
return
var/mob/assailant = null
for(var/mob/living/M in player_list)//Finds the name of whoever threw it (This is required unless thrown objects are COMPLETELY reworked
if(M.key == O.fingerprintslast)
assailant = M
continue
src.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has been hit with [O], last touched by [assailant.name] ([assailant.ckey])</font>")
assailant.attack_log += text("\[[time_stamp()]\] <font color='red'>Hit [src.name] ([src.ckey]) with [O]</font>")
log_attack("<font color='red'>[src.name] ([src.ckey]) was hit by [O], last touched by [assailant.name] ([assailant.ckey])</font>")
var/client/assailant = directory[ckey(O.fingerprintslast)]
if(assailant.mob && istype(assailant.mob,/mob))
var/mob/M = assailant.mob
src.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has been hit with [O], last touched by [M.name] ([assailant.ckey])</font>")
M.attack_log += text("\[[time_stamp()]\] <font color='red'>Hit [src.name] ([src.ckey]) with [O]</font>")
log_attack("<font color='red'>[src.name] ([src.ckey]) was hit by [O], last touched by [M.name] ([assailant.ckey])</font>")

View File

@@ -82,9 +82,9 @@
var/distance = get_dist(original,loc)
def_zone = ran_zone(def_zone, 100-(5*distance)) //Lower accurancy/longer range tradeoff.
if(silenced)
M << "\red You've been shot in the [def_zone] by the [src.name]!"
M << "\red You've been shot in the [parse_zone(def_zone)] by the [src.name]!"
else
visible_message("\red [A.name] is hit by the [src.name] in the [def_zone]!")//X has fired Y is now given by the guns so you cant tell who shot you if you could not see the shooter
visible_message("\red [A.name] is hit by the [src.name] in the [parse_zone(def_zone)]!")//X has fired Y is now given by the guns so you cant tell who shot you if you could not see the shooter
if(istype(firer, /mob))
M.attack_log += "\[[time_stamp()]\] <b>[firer]/[firer.ckey]</b> shot <b>[M]/[M.ckey]</b> with a <b>[src]</b>"