mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-10 10:21:11 +00:00
- 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:
@@ -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"
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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>")
|
||||
@@ -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>"
|
||||
|
||||
Reference in New Issue
Block a user