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
|
||||
# ============================================================================
|
||||
|
||||
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]:
|
||||
"""Get all available armor sets."""
|
||||
return [
|
||||
|
|
@ -1198,6 +1275,7 @@ def get_all_armor_sets() -> List[ArmorSet]:
|
|||
create_vigilante_set(),
|
||||
create_ghost_set(),
|
||||
create_shogun_set(),
|
||||
create_frontier_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 = [
|
||||
{"name": "Vivo T10", "cost": Decimal("2.0"), "amount": Decimal("12")},
|
||||
{"name": "Vivo T15", "cost": Decimal("3.5"), "amount": Decimal("18")},
|
||||
{"name": "Vivo S10", "cost": Decimal("4.0"), "amount": Decimal("25")},
|
||||
{"name": "Refurbished H.E.A.R.T.", "cost": Decimal("1.5"), "amount": Decimal("8")},
|
||||
{"name": "Restoration Chip I", "cost": Decimal("5.0"), "amount": Decimal("30")},
|
||||
{"name": "Restoration Chip II", "cost": Decimal("8.0"), "amount": Decimal("50")},
|
||||
{"name": "Restoration Chip III", "cost": Decimal("12.0"), "amount": Decimal("80")},
|
||||
{"name": "Mod 2350", "cost": Decimal("15.0"), "amount": Decimal("100")},
|
||||
def get_healing_tools_data():
|
||||
"""Get healing tools from the real database."""
|
||||
try:
|
||||
from core.healing_tools import HEALING_TOOLS
|
||||
return [
|
||||
{
|
||||
"name": tool.name,
|
||||
"cost": tool.decay_pec,
|
||||
"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)
|
||||
|
||||
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.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):
|
||||
"""Open weapon selector dialog."""
|
||||
|
|
|
|||
Loading…
Reference in New Issue