diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 77c89d45051..14bf92fdcb2 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -319,15 +319,23 @@ var/reagent_note if(reagents?.reagent_list) - reagent_note = " REAGENTS:" - for(var/datum/reagent/R in reagents.reagent_list) - reagent_note += "[R.name] ([num2text(R.volume)])" + reagent_note = "REAGENTS: [pretty_string_from_reagent_list(reagents.reagent_list)]" if(ismob(firer)) log_combat(firer, L, "shot", src, reagent_note) - else - L.log_message("has been shot by [firer] with [src]", LOG_ATTACK, color="orange") + return BULLET_ACT_HIT + if(isvehicle(firer)) + var/obj/vehicle/firing_vehicle = firer + + var/list/logging_mobs = firing_vehicle.return_controllers_with_flag(VEHICLE_CONTROL_EQUIPMENT) + if(!LAZYLEN(logging_mobs)) + logging_mobs = firing_vehicle.return_drivers() + for(var/mob/logged_mob as anything in logging_mobs) + log_combat(logged_mob, L, "shot", src, "from inside [firing_vehicle][logging_mobs.len > 1 ? " with multiple occupants" : null][reagent_note ? " and contained [reagent_note]" : null]") + return BULLET_ACT_HIT + + L.log_message("has been shot by [firer] with [src][reagent_note ? " containing [reagent_note]" : null]", LOG_VICTIM, color="orange", log_globally=FALSE) return BULLET_ACT_HIT /obj/projectile/proc/vol_by_damage() @@ -698,6 +706,7 @@ AddElement(/datum/element/embed, projectile_payload = shrapnel_type) if(!log_override && firer && original) log_combat(firer, original, "fired at", src, "from [get_area_name(src, TRUE)]") + //note: mecha projectile logging is handled in /obj/item/mecha_parts/mecha_equipment/weapon/action(). try to keep these messages roughly the sameish just for consistency's sake. if(direct_target && (get_dist(direct_target, get_turf(src)) <= 1)) // point blank shots process_hit(get_turf(direct_target), direct_target) if(QDELETED(src)) diff --git a/code/modules/vehicles/mecha/equipment/weapons/weapons.dm b/code/modules/vehicles/mecha/equipment/weapons/weapons.dm index 20ea8d5913e..2c9d9d0113d 100644 --- a/code/modules/vehicles/mecha/equipment/weapons/weapons.dm +++ b/code/modules/vehicles/mecha/equipment/weapons/weapons.dm @@ -63,6 +63,7 @@ spread = round((i / projectiles_per_shot - 0.5) * variance) var/obj/projectile/projectile_obj = new projectile(get_turf(src)) + projectile_obj.log_override = TRUE //we log being fired ourselves a little further down. projectile_obj.firer = chassis projectile_obj.preparePixelProjectile(target, source, modifiers, spread) if(source.client && isliving(source)) //dont want it to happen from syndie mecha npc mobs, they do direct fire anyways @@ -73,11 +74,13 @@ new firing_effect_type(get_turf(src), chassis.dir) playsound(chassis, fire_sound, 50, TRUE) + log_combat(source, target, "fired [projectile_obj] at", src, "from [chassis] at [get_area_name(src, TRUE)]") + sleep(max(0, projectile_delay)) if(kickback) chassis.newtonian_move(newtonian_target) - chassis.log_message("Fired from [name], targeting [target].", LOG_ATTACK) + chassis.log_message("[key_name(source)] fired [src], targeting [target].", LOG_ATTACK) //Base energy weapon type /obj/item/mecha_parts/mecha_equipment/weapon/energy