Skip to content

Update History

Records the history of this technology update

Recorded in months

2025/03

  • ❇️ [New] measure ⚛️ ❇️ [New] Subset processing of fonts.ttf ⚛️
  • ✨ [Optimized] Naming of some japi methods
  • ✨ [Optimized] Automatic processing mechanism for rules during obfuscation ⚛️
  • ✨ [Optimized] ability.missile has new params cruise, it uses a brand new offset logic to make its axis flipping smoother and tracking more balanced ⚛️
  • ✨ [Optimized] Adjusted the xhot strategy
  • ✨ [Optimized] Adjustment of Font resource loading
  • ✨ [Optimized] Adjustment of the handling of the kill command ⚛️
  • ✨ [Optimized] Clean up some invalid codes
  • ✨ [Optimized] Resolve the issue where font resource configurations may be lost under certain special circumstances
  • ✨ [Optimized] Fix some ambiguously named local variables, which may avoid potential data inconsistencies in the future
  • 🐜 [Fixed] Bug where map packaging might fail under certain special circumstances
  • 🐜 [Fixed] The deadlock issue that occurred under certain special circumstances when starting in hot mode
  • 🐜 [Fixed] Bug where the key value kind was missing in japi.IsLongPressing 🐜 [Fixed] Bug where the .tga suffix parameter was ineffective in assets_loading

2025/02

  • ❇️ [New] UIScroller ⚛️
  • ❇️ [New] UIInfill ⚛️
  • ❇️ [New] library/library.yaml
  • ❌ [Removed] library/encrypt.yaml
  • ✨ [Optimized] cache handling process in destruct
  • ✨ [Optimized] Compression matters for agate ⚛️
  • ✨ [Optimized] All logics refactoring for encrypt ⚛️
  • ✨ [Optimized] Added boundary judgment and diagonal point crossing to pathfinding.aStar ⚛️
  • 🐜 [Fixed] Bug where the uiAdaptive size was not correctly adjusted
  • 🐜 [Fixed] Bug that csv compare file build data is misaligned in some cases
  • 🐜 [Fixed] Bug where must outputs incorrect results under certain special circumstances
  • 🐜 [Fixed] The problem of confusion with obfuscated integers at certain special numbers ⚛️
  • 🐜 [Fixed] Precision issue of obfuscated floating-point numbers at certain special digits ⚛️
  • 🐜 [Fixed] Errors in a few calls to string.format

2025/01

  • ❇️ [New] ability.paw ⚛️
  • ❇️ [New] pathfinding ⚛️
  • ❇️ [New] UIBarSlider ⚛️
  • ❇️ [New] UIDrag:isDragging()
  • ❇️ [New] eventKind.uiSlide ⚛️
  • ❇️ [New] isEntering() ⚛️
  • ❇️ [New] mouse.relation() ⚛️
  • ❌ [Removed] UIBar:textureValue() replaced with UIBar:valueTexture()
  • ❌ [Removed] UIBar:textureMark() replaced with UIBar:markTexture()
  • ❌ [Removed] UIDrag:padding() replaced with UIDrag:margin()
  • ❌ [Removed] UIDrag:releaseXY()
  • ❌ [Removed] mouse.position()
  • ✨ [Optimized] Feedback when the env.yaml configuration is incorrect
  • ✨ [Optimized] ability.missile runtime logics ⚛️
  • ✨ [Optimized] ability.leap runtime logics ⚛️
  • ✨ [Optimized] ability.crackFly runtime logics ⚛️
  • ✨ [Optimized] Debug information under certain special circumstances ⚛️
  • ✨ [Optimized] Agate related matters
  • ✨ [Optimized] UIDrag logics
  • 🐜 [Fixed] YRotateRate in ability.missile ⚛️
  • 🐜 [Fixed] The problem of failed backup value for assets
  • 🐜 [Fixed] RotateY inversion when the effector resets
  • 🐜 [Fixed] Bug where library packaging might fail under certain special circumstances
  • 🐜 [Fixed] Bug where hot listening might fail under certain special circumstances
  • 🐜 [Fixed] Bug where the parameter _highlightFdfName is set to false when creating UIButton, and highlighting still works

2024/12

  • ❇️ [New] superposition.config()
  • ❇️ [New] japi.CameraLockDistance() ⚛️
  • ❇️ [New] japi.CameraUnlockDistance() ⚛️
  • ❇️ [New] japi.CameraLockField() ⚛️
  • ❇️ [New] japi.CameraUnlockField() ⚛️
  • ❇️ [New] japi.AssetsPortrait() ⚛️
  • ❇️ [New] portraits.yaml ⚛️
  • ❌ [Removed] japi.CameraLock()
  • ❌ [Removed] japi._assets
  • ✨ [Optimized] japi.KK_MlScriptEvent() 110 locator code changed to new 1009
  • ✨ [Optimized] assets_image supports /* mode for loading sequential images(only for assets/war3mapImage)
  • ✨ [Optimized] Handling of assets resource files within the UI
  • ✨ [Optimized] function params encrypt
  • ✨ [Optimized] The /temp directory generated by the exe utility is renamed to /.tmp directory to distinguish it from other directories
  • ✨ [Optimized] japi.ConvertWorldPosition() ⚛️
  • ✨ [Optimized] Correct the precision of assets processing detection
  • 🐜 [Fixed] Error with slice parameter in UIMap:t2i()

2024/11

  • ❇️ [New] eventKind.mouseLeftLongPressBroken
  • ❇️ [New] eventKind.mouseLeftLongPressStart
  • ❇️ [New] eventKind.mouseLeftLongPressOver
  • ❇️ [New] eventKind.mouseRightLongPressBroken
  • ❇️ [New] eventKind.mouseRightLongPressStart
  • ❇️ [New] eventKind.mouseRightLongPressOver
  • ❇️ [New] eventKind.keyboardLongPressBroken
  • ❇️ [New] eventKind.keyboardLongPressStart
  • ❇️ [New] eventKind.keyboardLongPressOver
  • ❇️ [New] math.boundary()
  • ❇️ [New] mouse.onLeftLongPress()
  • ❇️ [New] mouse.onRightLongPress()
  • ❇️ [New] keyboard.onLongPress()
  • ❇️ [New] cursor.amassRatio()
  • ❇️ [New] monitor.destroy()
  • ❇️ [New] ttg.permanent()
  • ❇️ [New] slk.disIconPath()
  • ❇️ [New] japi.IsLongPressing()
  • ❇️ [New] japi.AsyncInc()
  • ❇️ [New] japi.UIEvent2Mouse()
  • ❇️ [New] japi.AsyncEffectShow() ⚛️
  • ❇️ [New] japi.AsyncEffectHide() ⚛️
  • ❇️ [New] japi.DZ_DoodadRemove()
  • ❇️ [New] japi.DZ_RemovePlayerTechResearched()
  • ❇️ [New] japi.DZ_ItemSetPortrait()
  • ❇️ [New] japi.DZ_SetClipboard()
  • ❇️ [New] japi.DZ_TriggerRegisterMallItemConsumeEvent()
  • ❇️ [New] japi.DZ_TriggerRegisterMallItemRemoveEvent()
  • ❇️ [New] japi.DZ_GetTriggerMallItemPlayer()
  • ❇️ [New] japi.DZ_GetTriggerMallItem()
  • ❇️ [New] japi.KK_MlScriptEvent()
  • ❇️ [New] japi.KK_GetMallItemUpdateCount()
  • ❇️ [New] AbilityTpl:amassAdv()
  • ❇️ [New] AbilityTpl:amass()
  • ❇️ [New] AbilityTpl:amassIncrease()
  • ❇️ [New] AbilityTpl:amass()
  • ❇️ [New] AbilityTpl:cursorCond()
  • ❇️ [New] Ability:cursorCondResult()
  • ❇️ [New] UnitAttr:amass()
  • ❇️ [New] UnitAttr:amassPercent()
  • ❇️ [New] UnitEnchant
  • ❇️ [New] UI:resetAnchor()
  • ❇️ [New] UI:tooltips()
  • ❇️ [New] UIButton:borderScale()
  • ❇️ [New] UIButton:hotkeyRelation()
  • ❇️ [New] uiGradientStart(), uiGradientStop()
  • ❇️ [New] Aura:onEnter(), Aura:onLeave()
  • ❇️ [New] Region:splat(), Region:setEventMode(), Region:onEnter(), Region:onLeave()
  • ❇️ [New] isAI(), isEnchant(), isFlow(), isGrid(), isGroup(), isPool()
  • ❇️ [New] X_UI_QUESTION
  • ❌ [Removed] common/enchant
  • ❌ [Removed] event.reactUnregister()
  • ❌ [Removed] event.reactRegister()
  • ❌ [Removed] event.reactHas()
  • ❌ [Removed] event.reactTrigger()
  • ❌ [Removed] eventKind.itemDead
  • ❌ [Removed] eventKind.itemBeAttack
  • ❌ [Removed] player.onWorthChange()
  • ❌ [Removed] player.onWarehouseChange()
  • ❌ [Removed] class.registerBeforeChange()
  • ❌ [Removed] class.triggerBeforeChange()
  • ❌ [Removed] class.registerAfterChange()
  • ❌ [Removed] class.triggerAfterChange()
  • ❌ [Removed] UI:show() methods no longer support the delay parameter
  • ❌ [Removed] gradientUIStop, uiGradientStop()
  • ❌ [Removed] AbilityTpl:cursorBanCond()
  • ❌ [Removed] Ability:isCursorBaning()
  • ❌ [Removed] Aura:onEvent()
  • ❌ [Removed] Region:onEvent()
  • ✨ [Optimized] Redoing the implementation of alerter.message()
  • ✨ [Optimized] event data matching primitive, add topology domain logic mechanism
  • ✨ [Optimized] destructable death trigger mechanism
  • ✨ [Optimized] migrate event.unitMove* series event timing mechanism in order
  • ✨ [Optimized] Scenarios in which some callFunc(s) of event should be rationally reused
  • ✨ [Optimized] Underlying keyboard, mouse events and new growth press events
  • ✨ [Optimized] UIButton supports for constructing optional parameters
  • ✨ [Optimized] UIButton now disables borders, masks, highlighting
  • ✨ [Optimized] UIButton now supports dynamic borders and masks
  • ✨ [Optimized] UIBalloon supports style parameter settings
  • ✨ [Optimized] UIBarState supports style parameter settings
  • ✨ [Optimized] UIBarState adds a new casting bar header
  • ✨ [Optimized] UIToast supports style parameter settings
  • ✨ [Optimized] assets/war3mapImage add mask category
  • ✨ [Optimized] Grid's storage and search strategies
  • ✨ [Optimized] Remake triggering Mechanism of playerMultipleSelect Multi-Select Event
  • ✨ [Optimized] The weather experience
  • 🐜 [Fixed] Ability:capture() error in some cases
  • 🐜 [Fixed] Unit:animate() incorrect handling of attachment of animatePropertiesIncorrect handling of attachment of animateProperties
  • 🐜 [Fixed] The cursor locking mechanism in setup will deadlock in some cases
  • 🐜 [Fixed] Issue with uncleared definition cache data for certain classes
  • 🐜 [Fixed] UIText in some special cases font style loss problem
  • 🐜 [Fixed] The bug that UIBlock did not eliminate after setting the initial blocking value
  • 🐜 [Fixed] ability.lightningChain next target problem
  • 🐜 [Fixed] Calling Zebra during obfuscation generates bugs under certain conditions
  • 🐜 [Fixed] player._evtOrder support for order ID 851974

2024/10

  • ❇️ [New] sync.hasQuery()
  • ❇️ [New] ability.missile now supports options.twist
  • ❇️ [New] ability.serpentine() ⚛️
  • ❇️ [New] engine.bigNum
  • ❇️ [New] vector3.linear
  • ❇️ [New] blizzard/BLP_COLOR_*
  • ❇️ [New] Team:is()
  • ❇️ [New] japi.DZ_ItemSetModel()
  • ❇️ [New] japi.DZ_ItemSetVertexColor()
  • ❇️ [New] japi.DZ_ItemSetAlpha()
  • ❇️ [New] japi.DZ_UnlockOpCodeLimit()
  • ❇️ [New] japi.KK_MapExplorationNum()
  • ❇️ [New] japi.KK_MapExplorationTime()
  • ❇️ [New] japi.KK_MapOrderNum()
  • ❇️ [New] japi.Perspective() to optimise the numerical calculation of wdcP
  • ❇️ [New] Ability.anyCostAdv(instead of Ability:anyCostAdv)
  • ❇️ [New] Ability:spellAnimation(instead of Ability:castAnimation)
  • ❇️ [New] Ability:targetFilter(instead of Ability:castTargetFilter)
  • ❇️ [New] Ability:castKeepAnimation(instead of Ability:keepAnimation)
  • ❇️ [New] AbilityTpl:amass()
  • ❇️ [New] AbilityTpl:amassAdv()
  • ❇️ [New] AbilityTpl:amassEffect()
  • ❇️ [New] Unit:spellAnimation(instead of Unit:castAnimation)
  • ❇️ [New] Unit:castKeepAnimation(instead of Unit:keepAnimation)
  • ❇️ [New] Unit:isCastChanting(instead of Unit:isAbilityChanting)
  • ❇️ [New] Unit:isCastKeeping(instead of Unit:isAbilityKeeping)
  • ❇️ [New] Unit:castChantPeriod(instead of Unit:abilityChantPeriod)
  • ❇️ [New] Unit:castChantRemain(instead of Unit:abilityChantRemain)
  • ❇️ [New] Unit:castKeepPeriod(instead of Unit:abilityKeepPeriod)
  • ❇️ [New] Unit:castKeepRemain(instead of Unit:abilityKeepRemain)
  • ❇️ [New] UnitAttr:amass()
  • ❇️ [New] UnitAttr:amassPercent()
  • ❇️ [New] BarState:spell(instead of BarState:cast)
  • ❇️ [New] Grid():count()
  • ❌ [Removed] common/view(moved to ui/_ui)
  • ❌ [Removed] common/screen(moved to ui/balloon,ui/barState,ui/toast)
  • ❌ [Removed] common/matrix
  • ❌ [Removed] shake, shakeOffset parameters in ability.missile method
  • ❌ [Removed] shake, shakeOffset parameters in ability.leap method
  • ❌ [Removed] blizzard/TEAM_COLOR_BLP_*
  • ❌ [Removed] cursor._tooltips/cursor.setTooltips()
  • ✨ [Optimized] exe tool mod directive
  • ✨ [Optimized] exe tool directives with item name support right fuzzy match
  • ✨ [Optimized] run process handling of slk
  • ✨ [Optimized] common/sync generic registration
  • ✨ [Optimized] Add monadic scope for class.triggerChange
  • ✨ [Optimized] Add panel linkage triggers for modifications to noAttack and invulnerable values
  • ✨ [Optimized] All composite_calls in ability get data reference optimisation
  • ✨ [Optimized] Add a touch of flexibility to ability.crackFly's movement
  • ✨ [Optimized] Callback_call coordinate values for ability.lightningChain
  • ✨ [Optimized] balloon, barState, toast
  • ✨ [Optimized] logger logging position
  • ✨ [Optimized] game.warehouseSlotVolume moved to player.warehouseSlotVolume
  • ✨ [Optimized] now splat method is not limited to !isBuilding
  • ✨ [Optimized] isBuilding's unit rooting is now related to turnSpeed
  • ✨ [Optimized] Player now no longer automatically changes the colour of created units when modifying the teamColor data
  • ✨ [Optimized] AbilitySlot and ItemSlot data cleanup process to save redundant bindUnit data setups somewhere
  • ✨ [Optimized] Follow snippet process logic in cursor code in new item
  • ✨ [Optimized] Slice data logging in UIMap
  • ✨ [Optimized] Unify global alias comment formatting
  • ✨ [Optimized] prompt format for must determination
  • 🐜 [Fixed] Hot update has a certain chance of error in setup modification case
  • 🐜 [Fixed] Hot update cache stack not cleared after modification
  • 🐜 [Fixed] Invalid show due to deleting regulateUI
  • 🐜 [Fixed] The problem that two bindUnit data are not cleaned up in time after processing
  • 🐜 [Fixed] vwp get data lost in some cases
  • 🐜 [Fixed] vwp configuration lost without proper warning
  • 🐜 [Fixed] Ability:capture() interrupt not clearing the action bug
  • 🐜 [Fixed] distanceAction interval data prepending issue
  • 🐜 [Fixed] Transparency not shown correctly when item is pointed to by pointer bug
  • 🐜 [Fixed] When camera is rotated, bug that eye cache is not refreshed
  • 🐜 [Fixed] Bug that some UIs are not refreshed synchronously when the window is changed
  • 🐜 [Fixed] common/window definitions are missing

2024/09

  • ❇️ [New] Reuse class
  • ❇️ [New] Refactored all methods of AI class
  • ❇️ [New] In assets resources, image(former icon), model, bgm, vcm, v3d, vwp are now all supported with 3 paths
    • Support for resource paths outside assets (always supported paths)
    • Support resource paths imported from project resource
    • Support Warcraft native resource paths
  • ❇️ [New] war3mapBgm
    • assets_sound(‘bgm’, ...) Changed to assets_bgm(...)
    • The path to the resource war3mapSound/bgm/ can now be changed to war3mapBgm/
  • ❇️ [New] war3mapVoice, this path holds sound resources
    • Due to a new mechanism upgrade, now 3 types are not considered as different files if they are called from the same mp3 file as in the past
    • vcm, v3d, vwp 3 types are all voices although they have different effects, now they are all grouped in this directory
    • assets_sound(‘vcm’, ...) Change to assets_vcm(...)
    • assets_sound(‘v3d’, ...) to assets_v3d(...)
    • The path to war3mapSound/voice/, which used to be a resource, can now be changed to war3mapVoice/
  • ❇️ [New] war3mapVwp, this path holds the data configuration for the weapon sound effects group
    • Weapon sound effects are no longer limited to 3 files, now supports any number of files, just configure it
    • The old Warcraft native assets external sound effects are all deleted, now directly refer to the mpq resource, and comes with the configuration group, as in the past, the name can be quoted
    • The custom weapon sound group is also the same, now need to be configured
    • assets_sound(‘vwp’, name) changed to assets_vwp(name)
    • The path to war3mapSound/vwp/, which used to be a resource, is now war3mapVoice/vwp
    • Optimised weapon sound selection strategy to increase dispersion of sounds and reduce repetitive homophones
  • ❇️ [New] war3mapImage instead of war3mapIcon
    • assets_icon(path) changed to assets_image(path)
    • The path to past resource war3mapIcon/ can now be changed to war3mapImage/
  • ❇️ [New] war3mapImage, war3mapModel support for paths, now supports native resources, project resources and so on
  • ❇️ [New] new underlying determination mechanism war3mapImage, more accurately support the distinction between UI resources and other resources, greatly improving the performance and accuracy of the acquisition
  • ❇️ [New] japi.Assets*()
  • ❇️ [New] uiKit:assets()
  • ❇️ [New] exe's run command, -h changed to -l (hot mode changed to local mode) and -t/-b support hot update
  • ❌ [Removed] due to the Plugins function use scenarios too little and plulibrary can be replaced by the sublibrary bit, so abandoned war3mapPlugins module, now no longer configure the plug-ins
  • ❌ [Removed] now in the project sublibrary directory renamed to library, the tool will automatically identify it as a project sublibrary
  • ❌ [Removed] war3mapSound
  • ❌ [Removed] war3mapIcon
  • ❌ [Removed] japi.Reg*()
  • ❌ [Removed] j.GetLocationZ()
  • ❌ [Removed] event unitMoving
  • ❌ [Removed] common/assets
  • ❌ [Removed] view.regulateUI()
  • ✨ [Optimized] Unit's orderRoute underlying mechanism determines improvements to improve performance
  • ✨ [Optimized] Add a trigger data distance to event unitMoveStop to get the total distance of the move route from start to stop
  • ✨ [Optimized] some coordinate data and order actions in player._evtOrder
  • ✨ [Optimized] Types of exe tool new commands
  • ✨ [Optimized] exe command run's handling mechanism for mods in slk data
  • ✨ [Optimized] exe command run to fix the scope of obfuscation judgement for self method
  • ✨ [Optimized] UITooltips:content() no longer support fill kit parameters, now texture no longer take kit to get resources have to deal with content data by themselves
  • ✨ [Optimized] UI:close() close button method is renamed to UI:closer()
  • ✨ [Optimized] Listening mechanism for hotshots to make it more efficient and responsive
  • 🐜 [Fixed] exe tool we start decision fixed
  • 🐜 [Fixed] In exe command we, the conflict situation of project opening may affect the modification of we that has been opened
  • 🐜 [Fixed] The bug that new war3mapTerrain resources are not used when exe command we
  • 🐜 [Fixed] exe lua code may overwrite the associated data of speech in assets
  • 🐜 [Fixed] exe resource path may cause load name error in some cases
  • 🐜 [Fixed] A bug in sound code analysis that could cause errors during obfuscation
  • 🐜 [Fixed] dist packing naming error
  • 🐜 [Fixed] Tool may cause a bug in hot changing temp directory which may cause the cache to be emptied first

2024/08

  • ❇️ [New] war3mapTerrain
  • ❇️ [New] Translation mechanism for obfuscated messages in debug debugging
  • ❇️ [New] interfaces
  • ❇️ [New] keyboard.s2i(), keyboard.i2s()
  • ❇️ [New] japi.DZ_FrameSetAnimateByIndex()
  • ❇️ [New] japi.DZ_SetUnitDataCacheInteger()
  • ❇️ [New] japi.DZ_UnitUIAddLevelArrayInteger()
  • ❇️ [New] japi.DZ_SetEffectVisible()/japi.DZ_SetEffectModel()/japi.DZ_SetEffectTeamColor()
  • ❇️ [New] japi.DZ_UnitUIAddLevelArrayInteger()
  • ❇️ [New] japi.KK_SetUnitDataCacheInteger()
  • ❇️ [New] japi.KK_UnitUIAddUpgradesIds()
  • ❇️ [New] japi.KK_UnitUIAddBuildsIds()
  • ❇️ [New] japi.KK_UnitUIAddResearchesIds()
  • ❇️ [New] japi.KK_UnitUIAddTrainsIds()
  • ❇️ [New] japi.KK_UnitUIAddSellsUnitIds()
  • ❇️ [New] japi.KK_UnitUIAddSellsItemIds()
  • ❇️ [New] japi.KK_UnitUIAddMakesItemIds()
  • ❇️ [New] japi.KK_UnitUIAddRequiresUnitCode()
  • ❇️ [New] japi.KK_UnitUIAddRequiresAmounts()
  • ❇️ [New] japi.KK_GetGuildLevel()
  • ❇️ [New] player.onSelect()/player.onMultipleSelect()/player.onDeSelect()
  • ❇️ [New] player.onChat()/player.onWorthChange()/player.onWarehouseChange()
  • ❌ [Removed] force parameter in Ability:banReason()
  • ❌ [Removed] game.onInit() event, still keep onStart
  • ❌ [Removed] string.repeater(), string.replace()
  • ❌ [Removed] Player:onSelectUnit()/Player:onChat()
  • ❌ [Removed] Player:onWorthChange()/Player:onWarehouseChange()
  • ✨ [Optimized] Built-in lni, models under vendor
  • ✨ [Optimized] Unify and make it mandatory for all code that references keyboard.code to use the full value of keyboard.code No longer supports single key configuration
    • keyboard.abilityHotkey({ ‘Q’ }) to keyboard.abilityHotkey({ keyboard.code[‘Q’] })
  • ✨ [Optimized] Performance of onResize execution in JAPI
  • ✨ [Optimized] Rework logic related functions such as cursor, camera, etc
  • ✨ [Optimized] ability to trigger key presses from release to press
  • ✨ [Optimized] Adjust the control of init code during run command, now it is divided into 3 different loading phases: init, setup, start
  • ✨ [Optimized] The lua code in exe's run command now adjusts the event code output result according to the actual project content
  • ✨ [Optimized] Debugging information after exe tool packaging
  • ✨ [Optimized] Simulation performance and accuracy of built-in pointers
  • 🐜 [Fixed] Conflicting information bug of all spinner components in exe
  • 🐜 [Fixed] bug that uberSplat in slk data is unstable under different lni format
  • 🐜 [Fixed] pack.w3x pack size in cache mode will increase cumulatively bug
  • 🐜 [Fixed] camera will get stuck when using moveto in some special cases
  • 🐜 [Fixed] Cursor's last state is not cleaned up when it is continuously referenced
  • 🐜 [Fixed] Player pressing Esc skill duration can't be interrupted

2024/07

  • ❇️ [New] Array:first() Get the first data of an array
  • ❇️ [New] UnitTpl:splat() Handles surface mapping
  • ❌ [Removed] UnitTpl:elite()
  • ❌ [Removed] UnitTpl:iconMap() changed to UnitTpl:miniMap()
  • ❌ [Removed] Unit:unitPoint() changed to effect.unit()
  • ✨ [Optimized] Deprecate all json configurations in the project and replace them with yaml configurations, including env and encrypt
  • ✨ [Optimized] Rework the implementation of Unit:animateProperties() method
  • ✨ [Optimized] ability.damage input, and add custom parameter design
  • ✨ [Optimized] Remove default data from speech building and add pathTex series
  • ✨ [Optimized] cursor pointer behaviour when the camera is moving violently
  • ✨ [Optimized] fusion execution logic, add virtual compositing, split method virtualConflate, virtualSeparate
  • 🐜 [Fixed] Bug in Slot series objects where VastModifier is called too early
  • 🐜 [Fixed] Bug in Ability#bindUnit in vastModifier configuration where idx value is nil

2024/06

  • ❇️ [New] math.guarantee()
  • ❇️ [New] Ability:castPotTimes(), Ability:castPotType()
  • ❇️ [New] Ability, Item's change mechanism
  • ❇️ [New] datum.binaryIndex()
  • ❌ [Removed] Some redundant sync.must()
  • ✨ [Optimized] Handling of ampl parameter in Vast
  • ✨ [Optimized] now cursor will automatically execute quote.refresh logic once on quote.start
  • ✨ [Optimized] logic for executing model commands in exe tool
  • ✨ [Optimized] Rework the registration and triggering of get and close events in item and ability
  • ✨ [Optimized] japi.Z handling logic
  • ✨ [Optimized] player.unitDistanceAction
  • 🐜 [Fixed] monitor not clearing cache.timer bug in time
  • 🐜 [Fixed] Bug in ability.reborn in handling data of resurrected units
  • 🐜 [Fixed] bug with duration parameter in ability.invulnerable

2024/05

  • ❇️ [New] math.isSame
  • ❇️ [New] datum.default
  • ❇️ [New] suffix bounds handling for vast's val processing
  • ❇️ [New] Meta#Task
  • ❇️ [New] camera.onZoom
  • ❇️ [New] eventKind.cameraZoom event
  • ❇️ [New] screen.balloonSimpleTips
  • ❌ [Removed] japi.SetUIEsc() changed to japi.UISetEsc()
  • ❌ [Removed] japi.SetUIEventResize() changed to japi.UISetEventResize()
  • ❌ [Removed] japi.SetUIAdaptive() changed to japi.UISetAdaptive()
  • ❌ [Removed] japi.MousePX(), japi.MousePY()
  • ❌ [Removed] a redundantly defined japi.DZ_Map_UseConsumablesItem()
  • ❌ [Removed] ability.casting and a bunch of other casting process methods, refactoring ability's casting logic
  • ❌ [Removed] Player:onSelectItem together with event playerSelectItem and playerSelectItem
  • ✨ [Optimized] Using Grid's update call in Item
  • ✨ [Optimized] Handling of nil values in server.load fetching
  • ✨ [Optimized] logic for math.cale calculation
  • ✨ [Optimized] logic for handling must
  • ✨ [Optimized] Item part of the method can exist shift multi-layer command, such as pawn, drop
  • ✨ [Optimized] Player pickup range determination
  • ✨ [Optimized] Linkage logic between unit and screen for HP changes
  • ✨ [Optimized] camera.shake support for synchronous and asynchronous environments
  • ✨ [Optimized] UITooltips pad parameter
  • ✨ [Optimized] UIBarState's width processing and calculation logic
  • ✨ [Optimized] assets support for native or full paths, remove extra colons before paths
  • ✨ [Optimized] Handling of sounds in the exe tool, now sounds can be configured in assets with their own playback volume
  • 🐜 [Fixed] Item builds lost self when injecting Groups
  • 🐜 [Fixed] bug in common.camera where farZ, zOffset, and other series methods did not return in time
  • 🐜 [Fixed] grid reference datum.enumXY method parameter wrong bug
  • 🐜 [Fixed] Handle overflow bug in some classes
  • 🐜 [Fixed] bug in player._evtOrderMoveRoute state handling
  • 🐜 [Fixed] Bug in superposition where calculation is wrong in some cases
  • 🐜 [Fixed] Bug in UIBarState where mode, barWidth did not return self correctly
  • 🐜 [Fixed] UIAnimate step value return to 0 error problem
  • 🐜 [Fixed] Bug in UIButton where border is not bound to size

2024/04

  • ❇️ [New] fonts font lua configuration in assets
  • ❇️ [New] J.PlayerLocal, J.PlayerLocalIndex
  • ❇️ [New] japi's async family of methods asyncExec, asyncRefresh, asyncExec, asyncExec
  • ❇️ [New] common.camera's support for camera shake
  • ❇️ [New] time's clock, including synchronous and asynchronous clocks
  • ❇️ [New] UI Native specialises in handling Warcraft native frames
  • ❇️ [New] Ability state modification mechanism
  • ❇️ [New] VastModifierAct
  • ❇️ [New] class.handle
  • ❇️ [New] effect.agile
  • ❌ [Removed] japi.IsTyping, japi.CameraIsShaking, japi.CameraSetShaking, japi.CameraIsQuaking, japi.CameraSetQuaking
  • ❌ [Removed] Effect, EffectAttach, effect, supplemented by common
  • ❌ [Removed] audio sound method, added common.sound to handle all sounds
  • ❌ [Removed] Screen, added common.screen to handle screen elements
  • ❌ [Removed] FRAMEWORK_, replaced with XLIK_
  • ❌ [Removed] UIKit:isStarted()
  • ❌ [Removed] effect.unitPoint() changed to effect.unit()
  • ✨ [Optimized] Vast constructor object inheritance call
  • ✨ [Optimized] Performance of JAPI methods
  • ✨ [Optimized] modelAlias changed to model
  • ✨ [Optimized] prop family of methods replaced with modify family of methods
  • ✨ [Optimized] Item implementation reworked, now items are effects style
  • ✨ [Optimized] Tpl series logic reworked, now higher level objects inherit Tpl data directly instead of setting it once
  • ✨ [Optimized] Configuration logic for confusion rules, now all configurations are external
  • ✨ [Optimized] UIMap execution logic
  • ✨ [Optimized] UILabel now autoSize default false
  • ✨ [Optimized] UITooltip content method adds padding parameter
  • ✨ [Optimized] UITooltip content positioning and sizing
  • ✨ [Optimized] UIKit's onStart(), onSetup() write method
  • ✨ [Optimized] exe, hot now support bootstrap update temp file of temp
  • 🐜 [Fixed] math.cale calculation error bug
  • 🐜 [Fixed] UI:text() part of the method to fill in the number data error bug
  • 🐜 [Fixed] prototype and cache bug in Class
  • 🐜 [Fixed] bug of exe's model command
  • 🐜 [Fixed] bug of fin parameter in timer
  • 🐜 [Fixed] cursor default pointer data conflict problem

2024/03

  • ❇️ [New] EnumDatum
  • ❇️ [New] Redesigned Assault, abandoning the AttackMode design pattern
  • ❇️ [New] Vast/modifier
  • ❌ [Removed] All implementations of class:superposition() changed to common.superposition to manage stacked data
  • ❌ [Removed] destroy, isDestroy and a series of other global methods all returned to common.class, such as class.destroy(OBJ)
  • ❌ [Removed] common.synthesis to new common.fusion
  • ❌ [Removed] event.confPropChange, now provides special methods for data changes to be used
  • ❌ [Removed] Frame names are deprecated, now all are UI? naming pattern, frame names are returned to japi methods
  • ❌ [Removed] FrameCustom
  • ❌ [Removed] FrameBackdropTile
  • ❌ [Removed] Ability's isProhibiting, prohibit, allow, ban and a series of methods, add isBan to determine the state of the skill
  • ❌ [Removed] Server, added common.server
  • ❌ [Removed] Player:alert(), added alerter.message()
  • ✨ [Optimized] JAPI, divide original japi into yd, dz, lk, add kkapi
  • ✨ [Optimized] frame index
  • ✨ [Optimized] event registration environment, no longer mixed together, synchronous asynchronous and so on all separate processing
  • ✨ [Optimized] view function optimisation, absorb and improve some Frame methods
  • ✨ [Optimized] Buff's rollback is changed to back, run method to delete Buff is now self-starting

2024/02

  • ❇️ [New] method isarray
  • ❇️ [New] common.class
  • ❇️ [New] common.cursor
  • ❇️ [New] common.worth
  • ❇️ [New] Data logic for enum
  • ❌ [Removed] AttackMode attack mode, added Assault attack mode
  • ❌ [Removed] Game, added common.game as an implementation of the game's few data manipulation functions
  • ❌ [Removed] Player number data in Player, replaced with implementation in common.game
  • ❌ [Removed] Destructable, greatly deleted the decorations method, added common.destructable as a supplementary processing method
  • ❌ [Removed] ABILITY_TARGET_TYPE, now target data moved to ability.target
  • ❌ [Removed] EVENT data, now target data merged and moved to eventKind
  • ❌ [Removed] variable data (e.g. damageType, lightningType, etc.), data returned to respective functional modules
  • ❌ [Removed] buff methods in class, Buff method set to be independent to its own module
  • ✨ [Optimized] common, foundation merged into common
  • ✨ [Optimized] common.ttg to common.mtg, original ttg handles Warcraft's own floating text
  • ✨ [Optimized] Abandon design_struct, proposed design_index. class start splitting into Meta, UI, Vast modules
    • Incorporate Meta: AI Array Assault Aura Buff Coordinate Dialog Enchant Flow Grid Group Guarantee Image ItemSlot Lightning LightningChain Pool Process quest region Task Team Timer TimerAsync UiKit warehouseSlot
    • Incorporate UI: Animate Backdrop Balloon Bar BarState Block Button Drag Highlight Label Map Model Plate Text Textarea Toast Tooltips
    • Incorporate Vast: Ability AbilityTpl Item ItemTpl Player Store Tpl Unit UnitAttr UnitTpl
  • ✨ [Optimized] lua code in exe's run command now automatically removes redundant BJ parameter definitions when in dist mode
  • ✨ [Optimized] Grid performance
  • ✨ [Optimized] monitor's execution logic
  • ✨ [Optimized] mouse execution logic
  • ✨ [Optimized] Execution logic for keyboard
  • ✨ [Optimized] Refactored event execution method

2024/01

  • ❇️ [New] prop design overly redundant, proposed design_struct
  • ❇️ [New] Asynchronous frame counter timerAsync
  • ✨ [Optimized] Assets configuration environment, now supports external path repositories
  • ✨ [Optimized] We test runtime environment
  • ✨ [Optimized] Foundation.synthesis performance
  • ✨ [Optimized] Foundation.event execution logic

2023/12

  • Project establishment: Based on lik, code name X

All publicly available technologies are released under the AGPL3 licence.