From 20698305e0d11f9e696dcea5698a5f5687cd86be Mon Sep 17 00:00:00 2001 From: variableundefined <40092670+variableundefined@users.noreply.github.com> Date: Sat, 25 Aug 2018 17:15:44 +0800 Subject: [PATCH] Minor attack log overhaul --- code/__HELPERS/_logging.dm | 2 +- code/__HELPERS/mobs.dm | 7 +++---- code/game/objects/empulse.dm | 6 +++--- code/game/objects/explosion.dm | 6 +++--- code/modules/projectiles/projectile.dm | 9 ++++++--- code/modules/projectiles/projectile/special.dm | 14 ++++++++++---- 6 files changed, 26 insertions(+), 18 deletions(-) diff --git a/code/__HELPERS/_logging.dm b/code/__HELPERS/_logging.dm index 0ed5dd944db..ec0f0217911 100644 --- a/code/__HELPERS/_logging.dm +++ b/code/__HELPERS/_logging.dm @@ -182,4 +182,4 @@ return "[key_name(src)] ([mob.x],[mob.y],[mob.z])" //this is only used here (for now) -#undef RUST_G \ No newline at end of file +#undef RUST_G diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm index 3d495964cb0..4ebced1c973 100644 --- a/code/__HELPERS/mobs.dm +++ b/code/__HELPERS/mobs.dm @@ -255,8 +255,8 @@ This is always put in the attack log. add_attack_logs(user, M, what_done, custom_level) return - var/user_str = key_name_log(user) - var/target_str = key_name_log(target) + var/user_str = key_name_log(user) + COORD(user) + var/target_str = key_name_log(target) + COORD(target) if(istype(user)) user.create_attack_log("Attacked [target_str]: [what_done]") @@ -265,7 +265,6 @@ This is always put in the attack log. log_attack(user_str, target_str, what_done) var/loglevel = ATKLOG_MOST - if(!isnull(custom_level)) loglevel = custom_level else if(istype(target)) @@ -503,4 +502,4 @@ This is always put in the attack log. var/list/viewrangelist = splittext(view, "x") viewX = text2num(viewrangelist[1]) viewY = text2num(viewrangelist[2]) - return list(viewX, viewY) \ No newline at end of file + return list(viewX, viewY) diff --git a/code/game/objects/empulse.dm b/code/game/objects/empulse.dm index 2188337ba77..3c26a850a9a 100644 --- a/code/game/objects/empulse.dm +++ b/code/game/objects/empulse.dm @@ -1,12 +1,12 @@ -/proc/empulse(turf/epicenter, heavy_range, light_range, log=0) +/proc/empulse(turf/epicenter, heavy_range, light_range, log=0, cause = null) if(!epicenter) return if(!istype(epicenter, /turf)) epicenter = get_turf(epicenter.loc) if(log) - message_admins("EMP with size ([heavy_range], [light_range]) in area [epicenter.loc.name] [ADMIN_COORDJMP(epicenter)]") - log_game("EMP with size ([heavy_range], [light_range]) in area [epicenter.loc.name] [COORD(epicenter)]") + message_admins("EMP with size ([heavy_range], [light_range]) in area [epicenter.loc.name] [cause ? "(Cause: [cause])": ] [ADMIN_COORDJMP(epicenter)]") + log_game("EMP with size ([heavy_range], [light_range]) in area [epicenter.loc.name] [cause ? "(Cause: [cause])" : ] [COORD(epicenter)]") if(heavy_range > 1) new/obj/effect/temp_visual/emp/pulse(epicenter) diff --git a/code/game/objects/explosion.dm b/code/game/objects/explosion.dm index 8adb61dec93..48ebad7ea5d 100644 --- a/code/game/objects/explosion.dm +++ b/code/game/objects/explosion.dm @@ -1,6 +1,6 @@ //TODO: Flash range does nothing currently -/proc/explosion(turf/epicenter, devastation_range, heavy_impact_range, light_impact_range, flash_range, adminlog = 1, ignorecap = 0, flame_range = 0 ,silent = 0, smoke = 1) +/proc/explosion(turf/epicenter, devastation_range, heavy_impact_range, light_impact_range, flash_range, adminlog = 1, ignorecap = 0, flame_range = 0 ,silent = 0, smoke = 1, cause = null) src = null //so we don't abort once src is deleted epicenter = get_turf(epicenter) @@ -25,8 +25,8 @@ var/list/cached_exp_block = list() if(adminlog) - message_admins("Explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range], [flame_range]) in area [epicenter.loc.name] ([epicenter.x],[epicenter.y],[epicenter.z]) (JMP)") - log_game("Explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range], [flame_range]) in area [epicenter.loc.name] ([epicenter.x],[epicenter.y],[epicenter.z])") + message_admins("Explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range], [flame_range]) in area [epicenter.loc.name] [cause ? "(Cause: [cause])" : ] [ADMIN_COORDJMP(epicenter)] ") + log_game("Explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range], [flame_range]) in area [epicenter.loc.name] [cause ? "(Cause: [cause])" : ] [COORD(epicenter)] ") // Play sounds; we want sounds to be different depending on distance so we will manually do it ourselves. // Stereo users will also hear the direction of the explosion! diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index e19cd1165b5..3aa2252ac92 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -28,16 +28,17 @@ var/speed = 1 //Amount of deciseconds it takes for projectile to travel var/Angle = 0 var/spread = 0 //amount (in degrees) of projectile spread - var/legacy = 0 //legacy projectile system + var/legacy = FALSE //legacy projectile system animate_movement = 0 var/damage = 10 var/damage_type = BRUTE //BRUTE, BURN, TOX, OXY, CLONE are the only things that should be in here - var/nodamage = 0 //Determines if the projectile will skip any damage inflictions + var/nodamage = FALSE //Determines if the projectile will skip any damage inflictions var/flag = "bullet" //Defines what armor to use when it hits things. Must be set to bullet, laser, energy,or bomb //Cael - bio and rad are also valid var/projectile_type = "/obj/item/projectile" var/range = 50 //This will de-increment every step. When 0, it will delete the projectile. var/is_reflectable = FALSE // Can it be reflected or not? + var/alwayslog = FALSE // ALWAYS log this projectile on hit even if it doesn't hit a living target. Useful for AOE explosion / EMP. //Effects var/stun = 0 var/weaken = 0 @@ -68,6 +69,8 @@ /obj/item/projectile/proc/on_hit(atom/target, blocked = 0, hit_zone) var/turf/target_loca = get_turf(target) + if(alwayslog) + add_attack_logs(firer, target, "Shot with a [type]") if(!isliving(target)) return 0 var/mob/living/L = target @@ -121,7 +124,7 @@ reagent_note += R.id + " (" reagent_note += num2text(R.volume) + ") " has_reagents = TRUE - if(!log_override && firer && original) + if(!log_override && firer && !alwayslog) if(has_reagents) add_attack_logs(firer, L, "Shot with a [type] (containing [reagent_note])") else diff --git a/code/modules/projectiles/projectile/special.dm b/code/modules/projectiles/projectile/special.dm index 2003e78b780..ef8a36f7f86 100644 --- a/code/modules/projectiles/projectile/special.dm +++ b/code/modules/projectiles/projectile/special.dm @@ -2,43 +2,46 @@ name = "ion bolt" icon_state = "ion" damage = 0 + alwayslog = TRUE damage_type = BURN nodamage = 1 flag = "energy" /obj/item/projectile/ion/on_hit(var/atom/target, var/blocked = 0) ..() - empulse(target, 1, 1, 1) + empulse(target, 1, 1, 1, cause = "[type] fired by [key_name(firer)]") return 1 /obj/item/projectile/ion/weak /obj/item/projectile/ion/weak/on_hit(atom/target, blocked = 0) ..() - empulse(target, 0, 0, 1) + empulse(target, 0, 0, 1, cause = "[type] fired by [key_name(firer)]") return 1 /obj/item/projectile/bullet/gyro name ="explosive bolt" icon_state= "bolter" damage = 50 + alwayslog = TRUE flag = "bullet" /obj/item/projectile/bullet/gyro/on_hit(var/atom/target, var/blocked = 0) ..() - explosion(target, -1, 0, 2) + explosion(target, -1, 0, 2, cause = "[type] fired by [key_name(firer)]") return 1 /obj/item/projectile/bullet/a40mm name ="40mm grenade" desc = "USE A WEEL GUN" icon_state= "bolter" + alwayslog = TRUE damage = 60 flag = "bullet" /obj/item/projectile/bullet/a40mm/on_hit(atom/target, blocked = 0) ..() - explosion(target, -1, 0, 2, 1, 0, flame_range = 3) + explosion(target, -1, 0, 2, 1, 0, flame_range = 3, cause = "[type] fired by [key_name(firer)]") return 1 /obj/item/projectile/temp @@ -229,6 +232,7 @@ name ="explosive slug" damage = 25 weaken = 5 + alwayslog = TRUE /obj/item/projectile/bullet/frag12/on_hit(atom/target, blocked = 0) ..() @@ -276,6 +280,7 @@ icon_state = "bluespace" damage = 0 nodamage = 1 + alwayslog = TRUE var/teleport_target = null /obj/item/projectile/energy/teleport/New(loc, tele_target) @@ -289,6 +294,7 @@ do_teleport(target, teleport_target, 0)//teleport what's in the tile to the beacon else do_teleport(target, target, 15) //Otherwise it just warps you off somewhere. + add_attack_logs(firer, target, "Shot with a [type] [teleport_target ? "(Destination: [teleport_target])" : ""]") /obj/item/projectile/snowball name = "snowball"