private void OnGetExamineVerbs(EntityUid uid, HealthExaminableComponent component, GetVerbsEvent <ExamineVerb> args) { if (!TryComp <DamageableComponent>(uid, out var damage)) { return; } var detailsRange = _examineSystem.IsInDetailsRange(args.User, uid); var verb = new ExamineVerb() { Act = () => { var markup = CreateMarkup(uid, component, damage); _examineSystem.SendExamineTooltip(args.User, uid, markup, false, false); }, Text = Loc.GetString("health-examinable-verb-text"), Category = VerbCategory.Examine, Disabled = !detailsRange, Message = Loc.GetString("health-examinable-verb-disabled"), IconTexture = "/Textures/Interface/VerbIcons/rejuvenate.svg.192dpi.png" }; args.Verbs.Add(verb); }
private FormattedMessage CreateMarkup(EntityUid uid, HealthExaminableComponent component, DamageableComponent damage) { var msg = new FormattedMessage(); var first = true; foreach (var type in component.ExaminableTypes) { if (!damage.Damage.DamageDict.TryGetValue(type, out var dmg)) { continue; } if (dmg == FixedPoint2.Zero) { continue; } FixedPoint2 closest = FixedPoint2.Zero; string chosenLocStr = string.Empty; foreach (var threshold in component.Thresholds) { var str = $"health-examinable-{component.LocPrefix}-{type}-{threshold}"; var tempLocStr = Loc.GetString($"health-examinable-{component.LocPrefix}-{type}-{threshold}", ("target", Identity.Entity(uid, EntityManager))); // i.e., this string doesn't exist, because theres nothing for that threshold if (tempLocStr == str) { continue; } if (dmg > threshold && threshold > closest) { chosenLocStr = tempLocStr; closest = threshold; } } if (closest == FixedPoint2.Zero) { continue; } if (!first) { msg.PushNewline(); } else { first = false; } msg.AddMarkup(chosenLocStr); } if (msg.IsEmpty) { msg.AddMarkup(Loc.GetString($"health-examinable-{component.LocPrefix}-none")); } // Anything else want to add on to this? RaiseLocalEvent(uid, new HealthBeingExaminedEvent(msg), true); return(msg); }