{% extends 'mastery/base.html' %} {% load i18n %} {% load humanize %} {% load evelinks %} {% load l10n %} {% block details %}

{{ fitting.ship_type.name }} {{ fitting.name }}

{{ fitting.ship_type.name }}{% if doctrine %} · Doctrine: {{ doctrine.name }}{% endif %}
Character readiness {{ filtered_character_rows|length }}/{{ character_rows|length }} visible
{% if selected_character %}{% endif %} {% if summary_group_id %}{% endif %}
{% for row in filtered_character_rows %} {% empty %} {% endfor %}
Character Required Recommended Gap Details
{{ row.character.eve_character.character_name }} {{ row.character.eve_character.character_name }}
{{ row.progress.required_pct }}%
{{ row.progress.recommended_pct }}%
{{ row.progress.status_label }}
{{ row.progress.missing_recommended_count }} skill{{ row.progress.missing_recommended_count|pluralize }} {% if row.progress.total_missing_sp %} · {{ row.progress.total_missing_sp|intcomma }} SP {% endif %}
{% if row.is_selected %} Selected {% else %} Select {% endif %}
No characters match the current filter.
{% if selected_character and selected_progress %}
Export mode (affects the whole view)
Active mode: {{ export_mode_label }}
{% for value, label in export_mode_choices %} {{ label }} {% endfor %}
{% if summary_group_id %}{% endif %}
Selected pilot
{{ selected_character.eve_character.character_name }}
{{ selected_character.eve_character.character_name }}
{{ selected_progress.status_label }}
Coverage
{% if selected_mode_stats %}{{ selected_mode_stats.coverage_pct }}%{% else %}0%{% endif %}
Missing SP
{% if selected_mode_stats %}{{ selected_mode_stats.total_missing_sp|intcomma }}{% else %}0{% endif %}
Estimated training
{% if selected_mode_stats and selected_mode_stats.total_missing_time is not None %}{{ selected_mode_stats.total_missing_time }}{% else %}Unknown{% endif %}
{% if skill_plan_summary %}
Plan advisory
{{ export_mode_label }} training plan overview
Quick read on remap efficiency, injector fallback and the overall scope of the current plan.
{{ skill_plan_summary.line_count }} step{{ skill_plan_summary.line_count|pluralize }} {{ skill_plan_summary.unique_skill_count }} skill{{ skill_plan_summary.unique_skill_count|pluralize }} {{ skill_plan_summary.total_missing_sp|intcomma }} SP
Neural remap advisory
Best attribute focus for this plan
{% if skill_plan_summary.optimal_remap %} {{ skill_plan_summary.optimal_remap.primary_label }} / {{ skill_plan_summary.optimal_remap.secondary_label }} {% endif %}
{% if skill_plan_summary.optimal_remap %}
Recommended focus
{{ skill_plan_summary.optimal_remap.primary_label }} / {{ skill_plan_summary.optimal_remap.secondary_label }}
This is the remap pairing that minimizes training time across the current exported plan.
Training time comparison
{% if skill_plan_summary.optimal_remap.has_implant_bonus %}
Implant bonuses are included in both current and recommended simulations.
{% endif %}
Best-case with suggested remap {{ skill_plan_summary.optimal_remap.estimated_time }}
{% if skill_plan_summary.optimal_remap.current_time is not None %}
With current attributes {{ skill_plan_summary.optimal_remap.current_time }}
Potential time saved {{ skill_plan_summary.optimal_remap.time_saved }}
{% else %}
Current attribute data is unavailable, so only the optimal remap estimate can be shown.
{% endif %}
Suggested remap values
{% for attribute in skill_plan_summary.optimal_remap.attributes %} {{ attribute.label }} Base {{ attribute.base_value }} {% if skill_plan_summary.optimal_remap.has_implant_bonus %} · With implants {{ attribute.effective_value }} {% endif %} {% endfor %}
{% if skill_plan_summary.optimal_remap.current_attributes_rows %}
Current character attributes
{% for attribute in skill_plan_summary.optimal_remap.current_attributes_rows %} {{ attribute.label }} Base {{ attribute.base_value }} {% if skill_plan_summary.optimal_remap.has_implant_bonus %} · With implants {{ attribute.effective_value }} {% endif %} {% endfor %}
{% endif %} {% if skill_plan_summary.optimal_remap.implant_bonus_rows %}
Detected implant bonuses
{% for attribute in skill_plan_summary.optimal_remap.implant_bonus_rows %} {{ attribute.label }} +{{ attribute.value }} {% endfor %}
{% endif %} {% else %}
Unable to determine an optimal remap for this plan.
{% endif %}
Injector fallback
Large Skill Injectors
{% if skill_plan_summary.injector_estimate.known %} Estimated {% else %} Unavailable {% endif %}
Large Skill Injector
Estimated injectors for this {{ export_mode_label|lower }} plan
{% if skill_plan_summary.injector_estimate.known %} {{ skill_plan_summary.injector_estimate.count }} {% else %} ? {% endif %}
{% if skill_plan_summary.injector_estimate.known %} Approximate fallback if you finish the plan with injectors only. {% else %} Character total SP is missing, so the injector estimate cannot be derived. {% endif %}
Plan SP to cover {{ skill_plan_summary.total_missing_sp|intcomma }} SP
Unallocated SP available {% if skill_plan_summary.current_unallocated_sp is not None %}{{ skill_plan_summary.current_unallocated_sp|intcomma }} SP{% else %}—{% endif %}
Remaining after unallocated SP {{ skill_plan_summary.remaining_sp_after_unallocated|intcomma }} SP
Current character total SP {% if skill_plan_summary.current_total_sp is not None %}{{ skill_plan_summary.current_total_sp|intcomma }} SP{% else %}—{% endif %}
{% if skill_plan_summary.injector_estimate.known %}
Current yield per injector {{ skill_plan_summary.injector_estimate.current_gain_per_injector|intcomma }} SP
Injector SP applied {{ skill_plan_summary.injector_estimate.gained_sp|intcomma }} SP
Projected total SP after injectors {{ skill_plan_summary.injector_estimate.final_total_sp|intcomma }} SP
{% if skill_plan_summary.injector_estimate.overage_sp %}
Injector overage {{ skill_plan_summary.injector_estimate.overage_sp|intcomma }} SP
{% endif %} {% endif %}
LSI yield bands
< 5M SP → 500k SP
5M–50M SP → 400k SP
50M–80M SP → 300k SP
80M+ SP → 150k SP
{% endif %}
Missing skills · {{ selected_character.eve_character.character_name }}
Req {{ selected_progress.missing_required_count }} Rec {{ selected_progress.missing_recommended_count }}
Required
{{ selected_progress.missing_required_count }}
{% if selected_progress.missing_required %}
{% for skill in selected_progress.missing_required %}
{{ skill.skill_name }}
{{ skill.skill_name }}
{{ skill.current_level }} {{ skill.target_level }} {% if skill.missing_sp %} {{ skill.missing_sp|intcomma }} SP {% endif %}
{% endfor %}
{% else %}
All required skills met.
{% endif %}
Recommended
{{ selected_progress.missing_recommended_count }}
{% if selected_progress.missing_recommended %}
{% for skill in selected_progress.missing_recommended %}
{{ skill.skill_name }}
{{ skill.skill_name }}
{{ skill.current_level }} {{ skill.target_level }} {% if skill.missing_sp %} {{ skill.missing_sp|intcomma }} SP {% endif %}
{% endfor %}
{% else %}
All recommended skills met.
{% endif %}
{{ export_mode_label }} gap and plan export
Missing SP: {% if selected_mode_stats %}{{ selected_mode_stats.total_missing_sp|intcomma }}{% else %}0{% endif %} {% if selected_mode_stats and selected_mode_stats.total_missing_time is not None %} · Estimated training: {{ selected_mode_stats.total_missing_time }} {% else %} · Estimated training: Unknown (missing attribute data) {% endif %}
Download .txt
{% endif %}
{% endblock %}