feat(gear): add real healing tools and Frontier armor set
- LoadoutManager now uses real healing_tools.py database (25+ tools) - Added categorized healing tools: Medical Tools and Restoration Chips - Added Frontier Set (Adjusted) with all 7 pieces - Includes Regeneration Chip IV (L) for test run
This commit is contained in:
parent
c8128e954f
commit
95a511bbfd
|
|
@ -1191,6 +1191,83 @@ def get_mock_plates() -> List[ArmorPlate]:
|
||||||
# Helper Functions
|
# Helper Functions
|
||||||
# ============================================================================
|
# ============================================================================
|
||||||
|
|
||||||
|
def create_frontier_set() -> ArmorSet:
|
||||||
|
"""Create the Frontier armor set (Arkadia mid-level, good mobility)."""
|
||||||
|
# Frontier Adjusted has 3800 durability = 20.83 hp/pec economy
|
||||||
|
frontier_economy = Decimal("0.048") # ~20.8 hp/pec
|
||||||
|
|
||||||
|
pieces = {
|
||||||
|
ArmorSlot.HEAD: ArmorPiece(
|
||||||
|
name="Frontier Helmet, Adjusted",
|
||||||
|
item_id="frontier_helmet_adj",
|
||||||
|
slot=ArmorSlot.HEAD,
|
||||||
|
set_name="Frontier",
|
||||||
|
decay_per_hp=frontier_economy,
|
||||||
|
protection=ProtectionProfile(impact=Decimal("4"), cut=Decimal("3"), stab=Decimal("3")),
|
||||||
|
weight=Decimal("0.5"),
|
||||||
|
),
|
||||||
|
ArmorSlot.CHEST: ArmorPiece(
|
||||||
|
name="Frontier Harness, Adjusted",
|
||||||
|
item_id="frontier_harness_adj",
|
||||||
|
slot=ArmorSlot.CHEST,
|
||||||
|
set_name="Frontier",
|
||||||
|
decay_per_hp=frontier_economy,
|
||||||
|
protection=ProtectionProfile(impact=Decimal("8"), cut=Decimal("6"), stab=Decimal("6")),
|
||||||
|
weight=Decimal("1.0"),
|
||||||
|
),
|
||||||
|
ArmorSlot.LEFT_ARM: ArmorPiece(
|
||||||
|
name="Frontier Arm Guards, Adjusted (L)",
|
||||||
|
item_id="frontier_arm_l_adj",
|
||||||
|
slot=ArmorSlot.LEFT_ARM,
|
||||||
|
set_name="Frontier",
|
||||||
|
decay_per_hp=frontier_economy,
|
||||||
|
protection=ProtectionProfile(impact=Decimal("3"), cut=Decimal("2"), stab=Decimal("2")),
|
||||||
|
weight=Decimal("0.4"),
|
||||||
|
),
|
||||||
|
ArmorSlot.RIGHT_ARM: ArmorPiece(
|
||||||
|
name="Frontier Arm Guards, Adjusted (R)",
|
||||||
|
item_id="frontier_arm_r_adj",
|
||||||
|
slot=ArmorSlot.RIGHT_ARM,
|
||||||
|
set_name="Frontier",
|
||||||
|
decay_per_hp=frontier_economy,
|
||||||
|
protection=ProtectionProfile(impact=Decimal("3"), cut=Decimal("2"), stab=Decimal("2")),
|
||||||
|
weight=Decimal("0.4"),
|
||||||
|
),
|
||||||
|
ArmorSlot.LEFT_HAND: ArmorPiece(
|
||||||
|
name="Frontier Gloves, Adjusted (L)",
|
||||||
|
item_id="frontier_gloves_l_adj",
|
||||||
|
slot=ArmorSlot.LEFT_HAND,
|
||||||
|
set_name="Frontier",
|
||||||
|
decay_per_hp=frontier_economy,
|
||||||
|
protection=ProtectionProfile(impact=Decimal("2"), cut=Decimal("1"), stab=Decimal("1")),
|
||||||
|
weight=Decimal("0.3"),
|
||||||
|
),
|
||||||
|
ArmorSlot.RIGHT_HAND: ArmorPiece(
|
||||||
|
name="Frontier Gloves, Adjusted (R)",
|
||||||
|
item_id="frontier_gloves_r_adj",
|
||||||
|
slot=ArmorSlot.RIGHT_HAND,
|
||||||
|
set_name="Frontier",
|
||||||
|
decay_per_hp=frontier_economy,
|
||||||
|
protection=ProtectionProfile(impact=Decimal("2"), cut=Decimal("1"), stab=Decimal("1")),
|
||||||
|
weight=Decimal("0.3"),
|
||||||
|
),
|
||||||
|
ArmorSlot.LEGS: ArmorPiece(
|
||||||
|
name="Frontier Thigh+Shin Guards, Adjusted",
|
||||||
|
item_id="frontier_legs_adj",
|
||||||
|
slot=ArmorSlot.LEGS,
|
||||||
|
set_name="Frontier",
|
||||||
|
decay_per_hp=frontier_economy,
|
||||||
|
protection=ProtectionProfile(impact=Decimal("7"), cut=Decimal("5"), stab=Decimal("5")),
|
||||||
|
weight=Decimal("1.1"),
|
||||||
|
),
|
||||||
|
}
|
||||||
|
return ArmorSet(
|
||||||
|
name="Frontier Set (Adjusted)",
|
||||||
|
set_id="frontier_set_adj",
|
||||||
|
pieces=pieces,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def get_all_armor_sets() -> List[ArmorSet]:
|
def get_all_armor_sets() -> List[ArmorSet]:
|
||||||
"""Get all available armor sets."""
|
"""Get all available armor sets."""
|
||||||
return [
|
return [
|
||||||
|
|
@ -1198,6 +1275,7 @@ def get_all_armor_sets() -> List[ArmorSet]:
|
||||||
create_vigilante_set(),
|
create_vigilante_set(),
|
||||||
create_ghost_set(),
|
create_ghost_set(),
|
||||||
create_shogun_set(),
|
create_shogun_set(),
|
||||||
|
create_frontier_set(),
|
||||||
create_hermes_set(),
|
create_hermes_set(),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -286,19 +286,35 @@ class LoadoutConfig:
|
||||||
|
|
||||||
|
|
||||||
# ============================================================================
|
# ============================================================================
|
||||||
# Mock Data for Healing
|
# Healing Tools Data - Using real database
|
||||||
# ============================================================================
|
# ============================================================================
|
||||||
|
|
||||||
MOCK_HEALING = [
|
def get_healing_tools_data():
|
||||||
{"name": "Vivo T10", "cost": Decimal("2.0"), "amount": Decimal("12")},
|
"""Get healing tools from the real database."""
|
||||||
{"name": "Vivo T15", "cost": Decimal("3.5"), "amount": Decimal("18")},
|
try:
|
||||||
{"name": "Vivo S10", "cost": Decimal("4.0"), "amount": Decimal("25")},
|
from core.healing_tools import HEALING_TOOLS
|
||||||
{"name": "Refurbished H.E.A.R.T.", "cost": Decimal("1.5"), "amount": Decimal("8")},
|
return [
|
||||||
{"name": "Restoration Chip I", "cost": Decimal("5.0"), "amount": Decimal("30")},
|
{
|
||||||
{"name": "Restoration Chip II", "cost": Decimal("8.0"), "amount": Decimal("50")},
|
"name": tool.name,
|
||||||
{"name": "Restoration Chip III", "cost": Decimal("12.0"), "amount": Decimal("80")},
|
"cost": tool.decay_pec,
|
||||||
{"name": "Mod 2350", "cost": Decimal("15.0"), "amount": Decimal("100")},
|
"amount": tool.heal_amount,
|
||||||
]
|
"is_chip": tool.is_chip
|
||||||
|
}
|
||||||
|
for tool in HEALING_TOOLS
|
||||||
|
]
|
||||||
|
except ImportError:
|
||||||
|
# Fallback to mock data if import fails
|
||||||
|
return [
|
||||||
|
{"name": "Vivo T10", "cost": Decimal("0.815"), "amount": Decimal("10")},
|
||||||
|
{"name": "Vivo S10", "cost": Decimal("1.705"), "amount": Decimal("21")},
|
||||||
|
{"name": "Hedoc MM10", "cost": Decimal("2.09"), "amount": Decimal("44")},
|
||||||
|
{"name": "Adjusted Restoration Chip", "cost": Decimal("2.88"), "amount": Decimal("60")},
|
||||||
|
{"name": "Restoration Chip IV (L)", "cost": Decimal("2.8"), "amount": Decimal("45")},
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
# Legacy mock data for compatibility
|
||||||
|
MOCK_HEALING = get_healing_tools_data()
|
||||||
|
|
||||||
|
|
||||||
# ============================================================================
|
# ============================================================================
|
||||||
|
|
@ -1310,11 +1326,28 @@ class LoadoutManagerDialog(QDialog):
|
||||||
self.armor_set_combo.addItem(display, armor_set)
|
self.armor_set_combo.addItem(display, armor_set)
|
||||||
|
|
||||||
def _populate_healing_data(self):
|
def _populate_healing_data(self):
|
||||||
"""Populate healing combo with data."""
|
"""Populate healing combo with real data from database."""
|
||||||
self.heal_combo.clear()
|
self.heal_combo.clear()
|
||||||
self.heal_combo.addItem("-- Custom --")
|
self.heal_combo.addItem("-- Custom --")
|
||||||
for heal in MOCK_HEALING:
|
|
||||||
self.heal_combo.addItem(heal["name"])
|
# Get real healing tools
|
||||||
|
healing_tools = get_healing_tools_data()
|
||||||
|
|
||||||
|
# Sort by category (chips last)
|
||||||
|
medical_tools = [h for h in healing_tools if not h.get("is_chip", False)]
|
||||||
|
chips = [h for h in healing_tools if h.get("is_chip", False)]
|
||||||
|
|
||||||
|
# Add medical tools first
|
||||||
|
if medical_tools:
|
||||||
|
self.heal_combo.addItem("--- Medical Tools ---")
|
||||||
|
for tool in medical_tools:
|
||||||
|
self.heal_combo.addItem(tool["name"])
|
||||||
|
|
||||||
|
# Add restoration chips
|
||||||
|
if chips:
|
||||||
|
self.heal_combo.addItem("--- Restoration Chips ---")
|
||||||
|
for chip in sorted(chips, key=lambda x: x["amount"]):
|
||||||
|
self.heal_combo.addItem(chip["name"])
|
||||||
|
|
||||||
def _on_select_weapon(self):
|
def _on_select_weapon(self):
|
||||||
"""Open weapon selector dialog."""
|
"""Open weapon selector dialog."""
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue