-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmemories.jsonl
More file actions
46 lines (46 loc) · 41.3 KB
/
Copy pathmemories.jsonl
File metadata and controls
46 lines (46 loc) · 41.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
{"type":"entity","name":"widget_GetInfo_function_unit_SCV","entityType":"lua_function","observations":["Returns widget metadata including name, description, author, date, version, license, layer, and enabled state for the RezBots - AGENT widget."]}
{"type":"entity","name":"scvlog_function_unit_SCV","entityType":"lua_function","observations":["Logs messages to Spring.Echo if logging is enabled; used for development and debugging."]}
{"type":"entity","name":"isMyResbot_function_unit_SCV","entityType":"lua_function","observations":["Determines if a given unit is a valid, fully built RezBot belonging to the player's team.","As of v1.26, isMyResbot checks for legrezbot (Legion RezBot) in addition to armrectr and cornecro."]}
{"type":"entity","name":"isBuilding_function_unit_SCV","entityType":"lua_function","observations":["Checks if a given unit or feature is a building or building wreckage by referencing known building names."]}
{"type":"entity","name":"processUnits_function_unit_SCV","entityType":"lua_function","observations":["Assigns tasks (healing, resurrecting, collecting) to eligible RezBots based on their state and UI settings."]}
{"type":"entity","name":"widget_UnitCreated_function_unit_SCV","entityType":"lua_function","observations":["Handles initialization and task assignment when a RezBot unit is created."]}
{"type":"entity","name":"widget_UnitDestroyed_function_unit_SCV","entityType":"lua_function","observations":["Removes a unit from tracking when it is destroyed."]}
{"type":"entity","name":"widget_FeatureDestroyed_function_unit_SCV","entityType":"lua_function","observations":["Handles cleanup and task reassignment when a feature (wreckage/resource) is destroyed.","Optimized to include early exit check - only processes feature destructions for features that were actually targeted by RezBots via targetedFeatures table lookup. This prevents unnecessary loops through all RezBots for every single feature destroyed on the map, significantly improving performance during battles with heavy destruction."]}
{"type":"entity","name":"widget_GameFrame_function_unit_SCV","entityType":"lua_function","observations":["Main periodic update: handles task assignment, enemy avoidance, stuck checks, resource needs, and idle regrouping for RezBots.","Reduced stuck check interval from 1000 to 300 frames (33 seconds to 10 seconds) for faster detection of stuck units trying to reach unreachable mountain resources.","As of v1.37 (2025), fixed major performance issue where idle regroup logic was running every frame and causing massive log spam. Idle regroup checks now run every 150 frames (5 seconds) instead of every frame, and removed debug logging that was printing for every potential combat unit found. This eliminates exponential log spam when multiple idle RezBots are searching among many combat units."]}
{"type":"entity","name":"findNearestDamagedFriendly_function_unit_SCV","entityType":"lua_function","observations":["Finds the nearest damaged friendly ground unit within a given radius for healing."]}
{"type":"entity","name":"findNearestEnemy_function_unit_SCV","entityType":"lua_function","observations":["Finds the nearest enemy unit within a given radius and determines if it is an air unit.","Enhanced with threat filtering to prevent RezBots from fleeing from harmless critters and neutral units. Now only considers units as threats if they have weapons, can capture/reclaim, or can build. This prevents unnecessary fleeing from seagulls, decorative units, and other non-threatening entities while maintaining proper avoidance of actual combat threats."]}
{"type":"entity","name":"maintainSafeDistanceFromEnemy_function_unit_SCV","entityType":"lua_function","observations":["Forces a RezBot to flee from nearby enemies, moving toward the nearest friendly combat unit or away from the enemy if none found.","Added debug logging to track enemy detection and fleeing behavior. Now logs when enemies are detected, when flee commands are issued, and when units are marked as fleeing to help diagnose enemy avoidance issues."]}
{"type":"entity","name":"assessResourceNeeds_function_unit_SCV","entityType":"lua_function","observations":["Determines if the team needs metal or energy based on current and storage values, using a 75% threshold."]}
{"type":"entity","name":"getFeatureResources_function_unit_SCV","entityType":"lua_function","observations":["Returns the metal and energy values of a given feature."]}
{"type":"entity","name":"getDynamicWeightDistance_function_unit_SCV","entityType":"lua_function","observations":["Calculates a dynamic weighting factor for distance scoring based on map size."]}
{"type":"entity","name":"findReclaimableFeature_function_unit_SCV","entityType":"lua_function","observations":["Finds the best reclaimable feature for a unit to target, considering distance, resource need, and targeting limits."]}
{"type":"entity","name":"performHealing_function_unit_SCV","entityType":"lua_function","observations":["Assigns a RezBot to heal the nearest damaged friendly unit if possible, respecting healer limits."]}
{"type":"entity","name":"performCollection_function_unit_SCV","entityType":"lua_function","observations":["Assigns a RezBot to reclaim a resource feature if the team needs metal or energy, updating task state and targets.","Enhanced to store the target featureID in unitData.featureID for proper tracking during stuck detection."]}
{"type":"entity","name":"performResurrection_function_unit_SCV","entityType":"lua_function","observations":["Assigns a RezBot to resurrect a nearby dead unit (corpse), respecting targeting and building exclusion rules.","Enhanced to store the target featureID in unitData.featureID for proper tracking during stuck detection."]}
{"type":"entity","name":"resurrectNearbyDeadUnits_function_unit_SCV","entityType":"lua_function","observations":["Finds and returns a list of nearby resurrectable features (dead units) for a RezBot, optionally excluding buildings."]}
{"type":"entity","name":"widget_UnitIdle_function_unit_SCV","entityType":"lua_function","observations":["Handles a RezBot becoming idle: resets state, clears targets, and reassigns tasks if appropriate.","Enhanced to clear the manual command flag when a unit becomes idle, re-enabling automated behavior. Logs when automated behavior is restored."]}
{"type":"entity","name":"isUnitStuck_function_unit_SCV","entityType":"lua_function","observations":["Checks if a unit is stuck by comparing its position over time, with a cooldown between checks.","Improved sensitivity by reducing minimum move distance to 1.5 and adding specific detection for units with active reclaim/resurrect commands that haven't moved, making it better at detecting units stuck trying to reach unreachable resources on mountains.","Significantly enhanced with aggressive detection: reduced stuck check interval to 150 frames (5 seconds), minimum move distance to 0.8 units, and added progress tracking that detects units stuck for more than 3 seconds (90 frames) when trying to reach targets. Now tracks distance to target and progress over time."]}
{"type":"entity","name":"handleStuckUnits_function_unit_SCV","entityType":"lua_function","observations":["Handles a stuck RezBot: marks its target as unreachable, stops the unit, resets its state, and reassigns a new task.","Enhanced to properly identify unreachable features when units get stuck. Now includes fallback logic to detect nearby targeted features if featureID isn't directly stored, ensuring stuck units at mountain edges can mark their targets as unreachable."]}
{"type":"entity","name":"unit_SCV_widget","entityType":"spring_widget","observations":["As of v1.26 (2025), the widget supports the Legion faction's RezBot (legrezbot) in addition to ARM (armrectr) and CORE (cornecro). All logic for identifying and controlling RezBots now includes legrezbot.","Implements the 'RezBots - AGENT' widget for the SpringRTS engine, automating RezBot units to resurrect, heal, and collect resources. Supports persistent settings, enemy avoidance, and advanced task assignment. Authored by Tumeden, version v1.25, 2025.","Fixed a bug in logCommandIDs() where enabling logging (Alt+L) could cause an error if any CMD.* constant was nil. Now all command IDs are stringified before logging, preventing Spring.Echo errors on nil values.","Fixed a critical bug where enabling logging (Alt+L) could cause a crash if logCommandIDs() was called before scvlog was defined. The scvlog function is now defined above logCommandIDs, ensuring it is always available when needed.","Improved stuck detection: Units must now make significant progress (>5 units) toward their target to reset the stuck counter. If a unit oscillates within 1 unit of its last distance for 3+ checks, or fails to make progress for 3 seconds, the target is marked as unreachable. This prevents units from endlessly circling unreachable features (e.g., on cliffs) and ensures proper reassignment.","As of v1.39, RezBots can opportunistically reclaim live enemy non-combatant buildings (e.g., walls, resource structures) if they are within 1/10th of reclaim range, provided the engine allows reclaiming live enemy units (canReclaimEnemy=true). This does not cause bots to seek out such buildings, only to reclaim them if very close. Combatant buildings (with weapons) are ignored."]}
{"type":"entity","name":"unit_SCV_widget_state_variables","entityType":"state_variables","observations":["Tracks units to collect, healing units, resurrecting units, unreachable features, targeted features, idle timers, and last positions. Maintains per-unit and per-feature state for robust task management and error recovery.","Added manuallyCommandedUnits table to track units that have been manually commanded by the player, preventing automated behavior until they become idle again.","Added lastProgressCheck table to track progress toward targets over time, enabling detection of units that appear to be moving but aren't actually getting closer to unreachable targets."]}
{"type":"entity","name":"unit_SCV_widget_constants","entityType":"constants","observations":["Defines key constants: healResurrectRadius, reclaimRadius, enemyAvoidanceRadius, maxUnitsPerFeature, maxHealersPerUnit, IDLE_TIMEOUT_FRAMES, UNREACHABLE_EXPIRE_FRAMES, FLEE_REORDER_DISTANCE, and others for tuning widget behavior.","The idleRegroupRadius variable (set to 3500) is now properly used in the idle regroup logic within widget:GameFrame, replacing the previous hardcoded value of 2000.","Updated version to v1.30 to reflect the enhanced stuck detection improvements for unreachable mountain resources.","Fixed slider initialization timing issue in v1.31 - sliders table is now properly initialized inside widget:Initialize() after loading config values, ensuring sliders display the correct saved values instead of always showing hardcoded defaults. This resolves the issue where slider positions didn't match their actual effective values.","Updated to v1.35 to reflect the fix for false positive manual command detection affecting newly created units from factories.","Updated to version v1.36 to reflect latest improvements and bug fixes","All slider initialization moved to widget:Initialize() to ensure proper display of saved configuration values"]}
{"type":"entity","name":"unit_SCV_widget_task_assignment","entityType":"design_pattern","observations":["Uses a state-driven task assignment system: RezBots are assigned healing, resurrection, or collection tasks based on UI settings, resource needs, and proximity. Task status is tracked per unit, and reassignment occurs on idle, stuck, or destroyed events.","Enhanced to respect manual player commands - all automated logic (enemy avoidance, task assignment, stuck handling, idle regrouping) is skipped for manually commanded units until they become idle again."]}
{"type":"entity","name":"unit_SCV_widget_enemy_avoidance","entityType":"behavior","observations":["RezBots automatically flee from nearby enemies, preferring to regroup with friendly combat units. Fleeing logic uses distance checks and issues move orders, with cooldowns to avoid redundant commands.","FLEE_REORDER_DISTANCE (100 units) is an optimization mechanism that prevents command spam during fleeing. It compares the new calculated escape position to the last issued flee position - if they're within 100 units of each other, no new move command is issued. This prevents RezBots from receiving dozens of nearly identical move commands per second while still allowing course corrections when enemies move significantly."]}
{"type":"entity","name":"unit_SCV_widget_persistence","entityType":"persistence","observations":["All user settings (checkboxes, sliders) are persisted between sessions using Spring config keys. Widget restores previous state on initialization."]}
{"type":"entity","name":"widget_UnitCommand_function_unit_SCV","entityType":"lua_function","observations":["New function that detects when a player manually commands a RezBot unit. When detected, marks the unit in manuallyCommandedUnits table and sets taskStatus to 'manual_override', disabling all automated behavior.","Fixed critical bug: Now only triggers for actual player commands (cmdTag > 0) instead of all commands including script-issued ones. This prevents automated commands (flee, reclaim, resurrect) from marking units as manually commanded, which was causing the enemy avoidance system to fail.","Completely redesigned to use command tracking instead of cmdTag. Now tracks script-issued commands via giveScriptOrder() wrapper function and only treats untracked commands as manual player commands. This properly distinguishes between player and script commands.","As of v1.35 (2025), fixed false positive manual command detection for newly created units from factories. Added 5-second grace period (150 frames) after unit creation during which all commands are ignored. Also filters out automatic CMD.STOP/0 commands that the game engine issues automatically and don't represent manual player control.","As of v1.36 (2025), refined the manual command detection to only use the 5-second grace period for newly created units, removing the blanket STOP command filtering. This allows players to properly use STOP commands to interrupt waypoint paths from bot labs while still preventing false positives during unit creation."]}
{"type":"entity","name":"RezBots_AGENT_SpringRTS_Widget","entityType":"spring_widget","observations":["SpringRTS automation widget (unit_SCV.lua) that manages RezBot units for resurrection, healing, resource collection, and enemy avoidance","Current version: v1.36 (2025), authored by Tumeden","Supports ARM (armrectr), CORE (cornecro), and Legion (legrezbot) faction RezBots","Features comprehensive UI with persistent settings, sliders for radii configuration, and toggleable behaviors","Implements advanced enemy detection with threat filtering to avoid fleeing from harmless critters","Uses state-driven task assignment system with race condition prevention and atomic processing","Supports manual command detection to disable automation when player takes control","Includes sophisticated stuck detection and unreachable target marking system","As of v1.37 (2025), added dynamic scaling system for maxUnitsPerFeature and maxHealersPerUnit based on idle worker count. For every 5 idle workers, both values increase by +1 from their base of 4. Values automatically scale down when workers get assigned tasks and are no longer idle.","Dynamic scaling functions are located after the UI code section for clean organization. System updates every 60 frames (2 seconds) and also immediately when units change task status between idle and working.","Scaling formula: maxUnitsPerFeature = 4 + floor(idleWorkers/5), maxHealersPerUnit = 4 + floor(idleWorkers/5). This reduces idle worker count by allowing more units to work on the same targets when many workers are idle.","As of v1.28 (2025-06-16), the dangerous zones system successfully prevents ping-ponging to enemy-defended areas but may be too aggressive. The logs show extensive 'Skipping feature X - in dangerous zone' messages, indicating the system works but zones may be too large (400 radius) or too persistent (60 seconds). Units can end up with no valid targets when large areas are marked dangerous, creating a different ping-pong pattern where they go idle and immediately retry, cycling through the same blocked targets every frame.","As of v1.28 (2025-06-16), implemented comprehensive dangerous zone system improvements: 1) Reduced zone radius from 400 to 300 units and expiration time from 60 to 30 seconds for less aggressive blocking. 2) Added smart zone cleanup that checks if enemies are still present after 15 seconds and removes zones with no combat threats. 3) Added idle throttling system with 5-second delay (IDLE_RETRY_DELAY=150 frames) to prevent units from constantly retrying when all targets are dangerous/unavailable. 4) Uses proper Lua control flow with shouldProcessUnit flag instead of goto statements for compatibility. 5) Throttling is cleared when units successfully complete work, ensuring responsive behavior when conditions improve.","As of v1.28 (2025-06-16), implemented smart target prioritization system to prevent ping-ponging: 1) Reduced dangerous zone radius from 300 to 200 units for less aggressive blocking. 2) Added safe/dangerous feature separation in findReclaimableFeature - units prioritize safe targets first and only use dangerous targets as fallback when no safe alternatives exist. 3) Maintained full healing functionality - units can still heal in dangerous zones when needed. 4) The system prevents units from being drawn into danger for resources in the first place, rather than trying to fix problems after units are already damaged. This addresses the core issue of units getting hurt by seeking resources in contested areas.","As of v1.28 (2025-06-16), made dangerous zone system much more aggressive to prevent units from getting killed: 1) Increased dangerous zone base radius from 200 to 500 units. 2) Increased enemy avoidance radius from 675 to 900 units. 3) Increased dangerous zone persistence from 30 to 60 seconds. 4) Increased max zone radius cap from 2x to 3x base radius (up to 1500 units for long-range weapons). 5) Added dangerous zone avoidance to idle regroup logic - units won't try to regroup to combat units in dangerous zones. These changes create much larger no-go zones around enemy positions, especially around long-range weapons like laser towers, preventing units from getting close enough to be killed."]}
{"type":"entity","name":"RezBot_Widget_Performance_Optimizations","entityType":"optimization_set","observations":["FeatureDestroyed handler now includes early exit check - only processes features in targetedFeatures table, preventing unnecessary loops through all RezBots for every feature destroyed on map","Idle regroup logic fixed to run every 150 frames (5 seconds) instead of every frame, eliminating exponential log spam","Removed debug logging that was printing for every potential combat unit found during regroup searches","These optimizations dramatically improve performance during battles with heavy destruction or when multiple RezBots are idle"]}
{"type":"entity","name":"RezBot_Widget_Enemy_Detection_System","entityType":"behavior_system","observations":["Uses enemyAvoidanceRadius as single source of truth for both detection and avoidance (default 675 units, UI range 0-2000)","Enhanced findNearestEnemy() with threat filtering - only considers units with weapons, capture/reclaim abilities, or build options as threats","Prevents false fleeing from harmless seagulls, critters, and decorative units while maintaining proper combat threat avoidance","FLEE_REORDER_DISTANCE (100 units) prevents command spam by only issuing new flee orders when escape position differs by >100 units from last position","Per-unit enemy detection properly isolated using individual unit positions with no cross-unit contamination"]}
{"type":"entity","name":"RezBot_Widget_Manual_Command_Detection","entityType":"command_system","observations":["Tracks script-issued commands via giveScriptOrder() wrapper to distinguish from player commands","Uses 30-frame detection window (1 second) instead of 5 frames to accommodate busy units with delayed command execution","Added 5-second grace period (150 frames) for newly created units to prevent false positives from factory commands","Includes auto-registration logic to detect and register missing RezBots that should be tracked but aren't in unitsToCollect table","When manual commands detected, sets taskStatus to 'manual_override' and skips all automated behavior until unit becomes idle"]}
{"type":"entity","name":"RezBot_Widget_Resurrection_System","entityType":"resurrection_system","observations":["Handles interrupted resurrections with attempt tracking and automatic resumption when safe","Maintains activeResurrections table to track which units are resurrecting which features","Supports up to 5 resurrection attempts before marking target as temporarily unreachable","UnitFinished event handler catches resurrected units and ensures proper registration/activation","Prioritizes emergency healing for critically close units (<425 distance) over other tasks","Excludes commanders from collection when 'Exclude Commanders from Collection' checkbox is enabled (default: on)"]}
{"type":"entity","name":"RezBot_Widget_Configuration_Issues_Fixed","entityType":"bug_fixes","observations":["Fixed slider default values bug where sliders always showed hardcoded defaults instead of saved values due to initialization timing","Moved slider table creation inside widget:Initialize() after config loading to ensure proper value display","Enhanced isUnitStuck() with aggressive detection: reduced stuck check interval to 150 frames, minimum move distance to 0.8 units","Added progress tracking that detects units stuck for more than 3 seconds when trying to reach targets","Improved handleStuckUnits() to properly identify unreachable features with fallback logic for nearby targeted features"]}
{"type":"entity","name":"terrOre_movement_speed_modifier","entityType":"xml_xpath_modification","observations":["This entity represents the addition of a MovementFactor property for all blocks with names containing 'terrOre', set to 1.1, in the 7 Days To Die mod XML configuration."]}
{"type":"entity","name":"foodHoney_item_xml_modification","entityType":"item_modification","observations":["On 2024-06-09, the foodHoney item was added to items.xml with a reduced food value (6) and a new water value (5) for 7 Days to Die modding."]}
{"type":"entity","name":"foodHoney_xml_patch","entityType":"xml_patch","observations":["On 2024-06-09, only <set> and <append> statements were used in items.xml to modify foodHoney: food value set to 6, water value appended as 5, following 7 Days to Die XML modding best practices."]}
{"type":"entity","name":"entitygroup_EnemyAnimalsForest","entityType":"entitygroup","observations":["This group now includes animalSnake (prob=10), animalTumedenBabyBear (prob=1), and none (prob=90) as of 2024-06-10."]}
{"type":"entity","name":"entitygroups_config_xml","entityType":"config_file","observations":["As of 2024-06-10, the file now directly defines the EnemyAnimalsForest entity group and includes animalTumedenBabyBear. All <append> nodes using the old method have been removed.","As of 2024-06-10, the file now only appends animalTumedenBabyBear to the EnemyAnimalsForest group using an <append> node. All other <append> nodes have been removed.","As of 2024-06-10, the file now directly defines the EnemyAnimalsForest group in the requested format, with animalTumedenBabyBear, 1 appended to the group. All <append> nodes have been removed."]}
{"type":"entity","name":"append_animalTumedenBabyBear_EnemyAnimalsForest","entityType":"xml_append","observations":["This <append> node adds animalTumedenBabyBear to the EnemyAnimalsForest group as of 2024-06-10."]}
{"type":"entity","name":"loot_xml_player_storage_size_patch","entityType":"xml_xpath_modification","observations":["As of 2024-06-16, loot.xml now includes <setattribute> patches for playerWoodWritableStorage, playerIronWritableStorage, and playerSteelWritableStorage containers, allowing easy adjustment of their size attributes via XPath.","On 2024-06-16, the patching method for player storage crate sizes in loot.xml was updated to use <set xpath=\"//lootcontainer[@name='...']/@size\">...</set>, which is the modern and robust way to patch attributes by name in 7 Days to Die XML modding."]}
{"type":"entity","name":"perkPackMule_carry_capacity_patch","entityType":"xml_xpath_modification","observations":["As of 2024-06-16, progression.xml includes a <set> patch for perkPackMule's CarryCapacity passive_effect, setting its value attribute to 3,6,9,12,15 so each level adds +3 carry capacity in 7 Days to Die."]}
{"type":"entity","name":"buffElementWet_movement_speed_debuff_patch","entityType":"xml_xpath_modification","observations":["On 2024-06-16, a new effect_group was appended to buffElementWet in buffs.xml. It uses a requirement on $WetTempModifierActive (GTE 1) to apply RunSpeed, WalkSpeed, CrouchSpeed, and JumpStrength perc_subtract passive_effects, slowing movement by 15% when wet."]}
{"type":"entity","name":"perks_plus_overpowered_removal","entityType":"xml_modification","observations":["Removed three overpowered perks from the Perks Plus Serverside Only mod for 7 Days to Die: ExpFiendPP (experience gain up to 200%), KnowledgablePP (crafting speed reduction up to 80%), and InstantDeathPP (dismember chance up to 30%). These perks were considered too broken for normal gameplay balance.","Successfully removed ExpFiendPP (lines 104-129), KnowledgablePP (lines 132-157), and InstantDeathPP (lines 673-689) from the progression.xml file. The mod now maintains balanced progression without game-breaking XP multipliers, instant crafting, or excessive headshot damage. All other perks remain functional.","To move custom perks to base game's General Perks category: 1) Remove custom attdamods1 attribute, 2) Change skill parents from attdamods1 to attGeneralPerks, 3) Change perk parents from custom skills to skillGeneralPerks. Base game structure shows attGeneralPerks attribute with skillGeneralPerks as the main skill container.","Successfully migrated all custom perks to the base game's General Perks category by: 1) Removing the custom attdamods1 attribute and associated skills, 2) Changing all perk parents to skillGeneralPerks, 3) Preserving all attribute requirements (like attStrength=10) which work independently of parent hierarchy. The mod now appears clean and organized under the base game's General Perks section while maintaining all balance requirements.","Changed from insertAfter to append xpath to ensure all custom perks appear at the bottom of the General Perks section, below all base game perks. This provides the cleanest organization where players see all vanilla perks first, then all custom Perks Plus perks at the end.","Successfully condensed all perks from 10 levels to 5 levels while maintaining power progression. Converted individual level effects to ranges (e.g., level 1=.10, level 5=.50), removed all level 6-10 effects, and maintained all cool abilities. The mod is now more accessible with faster progression while keeping balanced gameplay. All attribute requirements (like attStrength=10) remain unchanged.","FIXED: Properly condensed all perks from 10 to 5 levels while preserving ALL cool effects. Restored missing effects like FallDamage reduction, fixed BowMasterPP magazine bonuses (1-3 arrows), RifleMasterPP armor penetration, weapon-specific bonuses for machine guns/pistols/shotguns, turret count increases, and bartering secret stash values. All level 10 values are now properly distributed across 5 levels with full power maintained.","As of 2025-01-15, ALL custom perks in the Perks Plus Serverside Only mod have been successfully converted from 10 levels to 5 levels while maintaining full power progression. Every perk now uses max_level='5' with the same final values achieved at level 5 that were previously at level 10. This includes proper conversion of complex perks like BowMasterPP with multiple effect groups, magazine bonuses, and weapon-specific requirements. The conversion preserved all special abilities, attribute requirements, and balanced gameplay while making progression faster and more accessible.","As of 2025-01-15, successfully began converting the Localization.txt file to match the 5-level perk system. Completed conversion of core survival perks (HealthMaxPP, DamageResPP, ExpFiendPP, etc.), combat perks (AttackSpeedPP, AttackDamagePP, SpeedPP), utility perks (PlatinumGutPP, RechargePP, WeatherTolerantPP), and complex weapon perks like BowMasterPP. The conversion maintains the same final power at level 5 that was previously achieved at level 10, with linear progression across 5 levels. Still need to complete conversion of remaining weapon master perks, durability perks, specialty perks, and all long descriptions.","Completed major localization conversion for 5-level perk system on 2025-01-15. Successfully converted 15+ core perks including HealthMaxPP, DamageResPP, ExpFiendPP, KnowledgablePP, MarathonPP, AttackSpeedPP, AttackDamagePP, SpeedPP, PlatinumGutPP, RechargePP, WeatherTolerantPP, BowMasterPP, MeleeWeaponsDurabilityPP, RangedWeaponsDurabilityPP, EfficientHealingPP, FallDamagePP, RangedWeaponsHandlingPP, MagazineCapacityPP, ReloadSpeedPP, SharperShooterPP, NinjaPP, LockpickingLawyerPP, SteadyHandsPP, and LuckyLockpickerPP. All descriptions now properly reflect the compressed 5-level progression while maintaining the same final power values that were previously achieved at level 10.","Completed second major phase of localization conversion on 2025-01-15. Successfully converted additional 15+ perks including InstantDeathPP, FastLooterPP, RecyclerPP, DeterminedQuestingPP (with quest reward bonuses), TheMinerPP, and all weapon master perks: ClubMasterPP, SledgeMasterPP, KnuckleMasterPP, BladeMasterPP, BatonMasterPP, and ExplosiveMasterPP. Enhanced ExplosiveMasterPP descriptions to include all effects (handling, reload speed, dismember chance) from the progression.xml. All weapon master perks now properly show 40%→200% damage progression across 5 levels instead of 20%→200% across 10 levels.","Completed analysis of all 5-level perks in Perks Plus Serverside Only mod. Found 32 perks with exactly 5 levels that need description verification against progression.xml effects.","On 2025-01-15, fixed all remaining broken level references in progression.xml to align with 5-level perk system: EfficientHealingPP (level 5,10→5), RangedWeaponsHandlingPP (level 2,10→2,5), TurretMasterPP (level 5,9→5), RifleMasterPP (removed level 5,7 and 8,9 references, kept level 2,4 and simplified level 5), MachineGunMasterPP (level 5,9→5), SidearmMasterPP (level 5,9→5), ShotgunMasterPP (level 5,9→5), and BarteringPP (removed level 6,10 reference, increased max SecretStash to 8000). All perks now properly align with the 5-level localization system.","On 2025-01-15, fixed TurretMasterPP turret count progression to properly scale across 5 levels. Changed JunkTurretActiveCount from single +1 turret at level 5 to progressive scaling: +1 turret at level 3, scaling to +2 turrets at level 5 (level 3,5 with value 1,2). This ensures players get multiple turrets at max level as intended in the original 10-level system.","On 2025-01-15, corrected localization for BowMasterPP to properly reflect bow draw speed (6%→50%) instead of incorrectly calling it 'attack speed'. The RoundsPerMinute effect with bowDrawPenalty tag specifically affects bow draw speed in 7 Days to Die, not general attack speed. Also fixed other weapon master perk descriptions to match exact progression.xml values: RifleMasterPP armor penetration (-15% at levels 2-4, -30% at level 5), MachineGunMasterPP durability bonus only at level 5, SidearmMasterPP spread reduction only at level 5, ShotgunMasterPP damage fall-off reduction only at level 5, and BarteringPP secret stash scaling up to 8000.","On 2025-01-15, completed comprehensive localization fixes to match progression.xml exactly: Fixed SteadyHandsPP lockpick break chance (5%→50% instead of 10%→50%), corrected KnuckleMasterPP movement speed (1%→10% instead of 2%→10%), fixed FastLooterPP and RecyclerPP values to match .02,.2 progression (2%→20% instead of 4%→20%), removed duplicate SteadyHandsPP entries, fixed DeterminedQuestingPP quest reward choices to scale properly (level 3,5 with +1 to +2 choices), and corrected progression.xml typo in KnuckleMasterPP speed values (.01,.1 instead of .01,.0.1). All perk descriptions now perfectly align with their actual effects.","On 2025-01-15, identified and fixed critical localization accuracy issues where values didn't match progression.xml: StaminaMaxPP (corrected from +10→+50 to +20→+100), MarathonPP stamina effects (corrected from +4%→+20% to +2%→+20%), WeatherTolerantPP resistance (corrected from +7→+36 to +8→+36), both durability perks (corrected from +18%→+90% to +20%→+90%), RangedWeaponsHandlingPP (corrected from +18%→+90% to +5%,+10%→+90% based on level-specific values), and FireRatePP (corrected from +20%→+100% to +20%→+200%). User specifically noted level 5 stamina should be 100, not 50, which was the key indicator of the broader accuracy issues.","On 2025-01-15, completed comprehensive creative overhaul of long descriptions for Perks Plus Serverside Only mod. Replaced generic, repetitive descriptions like 'You know how to get the BEST deal!' and 'Improve your cardio!' with engaging, level-specific narratives that progress meaningfully. Updated BarteringPP (novice haggler → legendary merchant), MarathonPP (basic endurance → legendary runner), AttackSpeedPP (muscle memory → legendary weapon speed), AttackDamagePP (basic technique → legendary warrior), SpeedPP (efficient stride → legendary swiftness), PlatinumGutPP (basic adaptation → legendary efficiency), WeatherTolerantPP (basic adaptation → legendary climate mastery), MeleeWeaponsDurabilityPP (basic maintenance → legendary weaponsmith), RangedWeaponsDurabilityPP (cleaning techniques → legendary gunsmith), EfficientHealingPP (first aid → legendary healer), FireRatePP (trigger discipline → legendary gunslinger), RangedWeaponsHandlingPP (basic marksmanship → legendary weapon mastery), and KnowledgablePP (useful shortcuts → legendary inventor). Each level now tells a story of progression from novice to legendary mastery.","On 2025-01-15, successfully cleaned the Localization.txt file by removing all entries for the three perks that were previously removed from progression.xml: ExpFiendPP, KnowledgablePP, and InstantDeathPP. This included removing all Name, Desc, level descriptions (1-5), and long descriptions for each removed perk. The localization file now contains only entries that correspond to the 42 perks that actually exist in progression.xml, eliminating potential errors from missing perk references.","On 2025-01-15, successfully merged MeleeWeaponsDurabilityPP and RangedWeaponsDurabilityPP into a single weapon durability perk. The merged perk now costs 10 skill points (increased from 3) and affects both melee and ranged weapons with the same -20% to -90% degradation reduction across 5 levels. RangedWeaponsDurabilityPP was completely removed. The perk retains the MeleeWeaponsDurabilityPP internal name but should be renamed in localization to reflect its broader scope.","On 2025-01-15, successfully merged FallDamagePP perk into NinjaPP perk. The FallDamagePP perk was completely removed and its parkour/fall damage functionality was integrated into the Ninja perk. The merged NinjaPP perk now provides both stealth benefits (noise reduction and visibility in darkness) and fall damage resistance (2-10m safe fall distance across 5 levels). The perk was renamed from 'Ninja' to 'Shadow Walker' to better reflect its combined functionality. All references in buffs.xml were updated from FallDamagePP to NinjaPP to maintain the fall damage mechanics.","On 2025-01-15, successfully merged SpeedPP perk into AttackSpeedPP perk. The SpeedPP perk was completely removed and its movement speed functionality was integrated into the Haste (AttackSpeedPP) perk, but significantly reduced from 50% to only 10% maximum movement speed. The merged AttackSpeedPP perk now provides both attack speed (10-50% across 5 levels) and movement speed (2-10% across 5 levels). The perk was renamed from 'Haste' to 'Combat Reflexes' to better reflect its combined functionality. All SpeedPP localization entries were removed and AttackSpeedPP descriptions were updated to show both effects.","On 2025-01-15, changed HealthMaxPP (Max HP) perk attribute requirement from attStrength to attFortitude to better align with the thematic connection between health/vitality and endurance/constitution rather than raw physical strength. Updated both the progression_name and desc_key accordingly.","On 2025-01-15, changed StaminaMaxPP (Max Stamina) perk attribute requirement from attStrength to attAgility to better align with the thematic connection between stamina/endurance and agility/speed rather than raw physical strength. The perk already used the agility icon, making this change more consistent with its visual representation.","On 2025-01-15, changed LockpickingLawyerPP (Master Lockpicker) perk attribute requirement from attFortitude to attIntellect to better align with the technical and skill-based nature of lockpicking, which requires knowledge, precision, and understanding of mechanical systems rather than physical endurance.","On 2025-01-15, fixed missing attribute requirement localization keys in Localization.txt. Added AttPointsFortitudeDescKey and AttPointsPerceptionDescKey with proper 'Main [Attribute] Lvl 10 Required' text format. Removed incorrect duplicate StrengthPPName entries that were showing wrong requirement text. Now all attribute requirements (Strength, Agility, Fortitude, Perception, Intellect) have proper localization support.","On 2025-01-15, implemented progressive attribute requirements for perks: Level 1 requires attribute level 3, Level 2 requires attribute level 5, and Levels 3-5 require attribute level 10. This system provides early access to perk benefits while still requiring full investment for maximum power. Applied to HealthMaxPP (Fortitude) and StaminaMaxPP (Agility) as examples.","On 2025-01-15, completed comprehensive implementation of progressive attribute requirements across ALL perks in the Perks Plus Serverside Only mod. Every perk now uses the 3/5/10 requirement system: Level 1 requires attribute level 3 (early access), Level 2 requires attribute level 5 (moderate investment), and Levels 3-5 require attribute level 10 (full investment). This creates better pacing and accessibility while maintaining balanced progression. Updated 20+ perks across all attributes (Strength, Agility, Fortitude, Perception, Intellect).","On 2025-01-15, fixed critical attribute requirement bug where all custom perks used operation='Equals' instead of operation='GTE' for level requirements. This caused perks to completely disappear when players had intermediate attribute levels (e.g., having 4 Agility would disable StaminaMaxPP because it needed exactly 3 for level 1 but exactly 5 for level 2). Changed all 137+ instances of operation='Equals' to operation='GTE' in progression.xml so that once players reach the required attribute level, they maintain access to that perk level and all lower levels. This fixes the user's reported issue where stamina perk would zero out at 4 attribute points.","Updated localization to reflect the new progressive attribute requirements. Changed all attribute requirement descriptions from 'Lvl 10 Required' to 'Lvl 3/5/10 Required' to correctly indicate that Level 1 perks require 3+ points, Level 2 requires 5+ points, and Levels 3-5 require 10+ points in the respective attribute. This matches the GTE operation changes made to progression.xml and provides clearer information to players about perk requirements.","Implemented level-specific localization keys for attribute requirements instead of generic text. Created 15 new desc_key entries: AttPointsStrength3DescKey, AttPointsStrength5DescKey, AttPointsStrength10DescKey (and equivalent for Agility, Fortitude, Perception, Intellect). Each perk level now displays specific requirements like 'Requires 3 Strength' for Level 1, 'Requires 5 Strength' for Level 2, and 'Requires 10 Strength' for Levels 3-5. Updated all perk level requirements in progression.xml to use these specific desc_key references instead of the old generic ones. This provides much cleaner and more precise requirement information to players.","Demonstrated progressive attribute requirements system using StaminaMaxPP as example. Changed from 3/5/10 system to 5/6/7/8/9 progressive system where each perk level requires exactly one more attribute point than the previous level. Added corresponding localization keys (AttPointsAgility6DescKey through AttPointsAgility9DescKey) to support the new requirement levels. This system allows for more granular progression and smoother attribute investment curves. The same pattern can be applied to any perk with any progression sequence desired (e.g., 4/6/8/10/12, or 3/4/5/6/7, etc.).","Demonstrated progressive skill point cost system using StaminaMaxPP as example. Added individual <level> tags with skill_point_cost attributes to create progressive costs: Level 1=5 points, Level 2=6 points, Level 3=7 points, Level 4=8 points, Level 5=9 points. This system allows each perk level to cost a different amount of skill points while keeping the attribute requirements unchanged (3/5/10 system). The base_skill_point_cost becomes the cost for level 1, and individual level tags override the cost for subsequent levels. This creates more granular skill point investment and can make higher levels more expensive or follow any desired cost progression pattern."]}