Releases: armoha/euddraft
Releases · armoha/euddraft
euddraft 0.9.9.0
[0.9.9.0] - 2023.01.09
Changed
- Raise compile error or warning when unexpected constant is used as condition, like
if (Db(4))
- 'Condition is always true` warning for castable proxy classes: EUDArray, EUDVArray, EUDStruct (object in epScript) etc
- Compile error for the other ConstExpr
- Integers like -1, 0, 1 behaves same as before, converts 0 into
Never()
, non-zero integers intoAlways()
condition.
- Changed name
TrgTBL
->StatText
- Chaged
VariableBase
andEUDObject
to abstract class
Bugfix
- [epScript] Don't wrap global consants with ExprProxy unless there's forward-declared function call.
- No need to write
globalConst.getValue()
in most cases.
- No need to write
- [MSQC] Use Move order instead of right click
- The player can't deliberately controls QCUnit by group hotkey selection and right clicking.
- [draw.py] Fixed infinite compile bug in
Point x, y = Shape[index]
(reported by Avlos) - [epScript] Fixed bug in relative path import (reported by 유즈맵조아조아)
- Fixed compile error for Artanis song guessing game open source, exists in euddraft 0.9.8.3~0.9.8.13
- Fixed compile error in
EPDCUnitMap.set_color(player)
(reported by 할루) - Fixed compile error
TypeError: EncodePlayer() got an unexpected keyword argument 'issueError'
(reported by HuntRabbit)- Fixed compile error with [BetterBrain] plugin
- Removed ambiguous string warning added in euddraft 0.9.8.13, rollbacked previous behavior and improved error message (reported by nn2)
- Fixed unsupported EUD error in
f_dwpatch_epd
Improved
- [epScript] Don't add initialization trigger for global variables when their initial values are constants
- Fixed CreateUnitWithProperties with HP 100% to create unit with MaxHP > 167772 full-health
- UnitProperty reuses UnitProperty of equal result: ex) cloaked=None and cloaked=False share same properties
- Optimize EUD loops (EUDInfLoop, EUDLoopN, EUDLoopRange, EUDWhile) to execute 1 less trigger for every iterations (reported by 콤)
- Arithmetic of ConstExpr yields integer offset when rlocmode becomes 0
- Added and improved eudplib error messages
- Update euddraft Korean localization
- Updated eudplib 0.73.16
Added
- [epScript] Can write function call syntax on outermost scope
- Raises TriggerScopeError when you added trigger by writing Trigger action or calling EUD function.
:"Must put Trigger into onPluginStart, beforeTriggerExec or afterTriggerExec"
- Useful for eudplib functions like
EUDOnStart
,InitialWireframe
,MPQAddFile
,EUDRegisterObjectToNamespace
or calling python library functions in epScript.
- Raises TriggerScopeError when you added trigger by writing Trigger action or calling EUD function.
- Revised and added type hints
- Added
TriggerScopeError
: subclass ofEPError
. Raised when trigger was written at unusable scope - Added function
b2utf8(bytes) -> str
: decode bytes to UTF-8 string
euddraft 0.9.8.13
[0.9.8.13] - 2023.01.01
Bugfix
- Fixed various bugs/typos
Improved
- Added more type hints
- Type checked eudplib with mypy
- Updated eudplib 0.73.1
euddraft 0.9.8.12
[0.9.8.12] - 2022.12.31
Bugfix
- Fixed
a[index] /= constant
compile error forEUDVArray
,PVariable
(reported by gongnamu) - Fixed
EUDLoopNewUnit
missed iterating preplaced units under certain circumstances (reported by Oneiro)
Improved
- Added type hints for some eudplib functions: localize, maprw, trigger, trigtrg, utils
- Work in progress: core, ctrlstru, epscript, eudlib
- Updated eudplib 0.72.6
euddraft 0.9.8.11
[0.9.8.11] - 2022.12.30
Changed
- Due to regression bug,
$T
,EncodeString
,GetStringIndex
rollbacked to use CP949 encoding for new string. (Undo change of 0.9.8.8)
Bugfix
[chatEvent]
When hash collisions, fall-back to string comparison (reported by LLAS)
Improved
[chatEvent]
Added simple encryption for chat patterns- Added typing for eudlib/utilf
- Updated eudplib 0.72.5
euddraft 0.9.8.10
[0.9.8.10] - 2022.12.25
Bugfix
- Allow
EUDOnStart
to be used everywhere in your code - Fixed
println
,printAt
,simpleprint
didn't work (#28)- No longer need to put
GetGlobalStringBuffer()
inonPluginStart
- No longer need to put
- Allow
SetWireframes
without usingInitialWireframe
- [epScript] Allow
py_len()
for global constants- Allow
len()
forExprProxy
- Allow
Improved
- Updated eudplib 0.72.3, pybind11 v2.10.2
- Optimize size of
StringBuffer
initialization triggers
euddraft 0.9.8.9
[0.9.8.9] - 2022.12.20
Changed
$T
,EncodeString
,GetStringIndex
uses UTF-8 encoding to add new string.
Bugfix
- Fixed coordinates in null tiles warning
- Fixed
InitialWireframe
bug when Marine was not editted. (reported by Oneiro)
Improved
- eudplib supports Python 3.11 (euddraft still uses Python 3.10.9, waiting cx_Freeze update)
[chatEvent]
Support global eud namespace:: edd/eds example [chatEvent] __addr__: addr __patternAddr__: patternAddr __ptrAddr__: ptrAddr __lenAddr__: lenAddr sell : 2 sellghost : 3 sellhydra : 4 selldragoon : 5 ^'ore .*.*$: 1 ^'gas .*.*$: 2 [test.eps]
// Example epScript code (test.eps) var addr, patternAddr, ptrAddr, lenAddr; function onPluginStart() { EUDRegisterObjectToNamespace("addr", addr); EUDRegisterObjectToNamespace("patternAddr", patternAddr); EUDRegisterObjectToNamespace("ptrAddr", ptrAddr); EUDRegisterObjectToNamespace("lenAddr", lenAddr); } function chat(); function beforeTriggerExec() { chat(); } function chat() { if (addr < 1) return; setcurpl(getuserplayerid()); if (addr >= 2) { println("\x07Chat Detected \x04(id: {})", addr); return; } if (patternAddr) { println("\x07Pattern Detected \x04(id: {})", patternAddr); return; } DisplayText("\x05Chat not belong to [chatEvent] settings"); }
- Add duplicated entries warning for
EUDRegisterObjectToNamespace
- Add assertion messages for
InitialWireframe
andEUDOnStart
euddraft 0.9.8.7
[0.9.8.7] - 2022.12.14
Bugfix
[chatEvent]
Fixed wrong pattern length (reported by Yuuki-Asuna)[unlimiter]
Fixed compile error (reported by 파냥이)
euddraft 0.9.8.6
[0.9.8.6] - 2022.12.13
Bugfix
- Fixed
EPDCUnitMap.isBlind
type frombool
tou8
(reported by Skywindragoon) EPDCUnitMap.is_dying()
was not working with[unlimiter]
plugin, and now it raises compile error- CSprite is always 0 for units spawned after running
[unlimiter]
, and looking into just CUnit, we can't tell whether it is already dead or dying. To distinguish between dead and dying with[unlimiter]
, we need to store that unit is in usage, on additional memory space usingEUDLoopNewUnit
etc. It involves non-trivial cost so we'd rather explicitly state current status and leave this matter to end users.
- CSprite is always 0 for units spawned after running
Added
- Added
IsUnlimiterOn()
: useful for library writers - Added
InitialWireframe
class/namespace
Supports both 32 bit and 64 bit StarCraft.InitialWireframe.wireframes(unit: TrgUnit, wireframe: TrgUnit)
- Set initial TranWire.grp, GrpWire.grp, Wirefram.grp of unit.
- Must called at outermost scope!
InitialWireframe.tranwire(unit: TrgUnit, wireframe: TrgUnit)
InitialWireframe.grpwire(unit: TrgUnit, wireframe: TrgUnit)
InitialWireframe.wirefram(unit: TrgUnit, wireframe: TrgUnit)
- Added
SetWireframes(unit: TrgUnit, wireframe: TrgUnit)
,SetTranWire(unit: TrgUnit, wireframe: TrgUnit)
,SetGrpWire(unit: TrgUnit, wireframe: TrgUnit)
,SetWirefram(unit: TrgUnit, wireframe: TrgUnit)
- Edit wireframe at runtime. Supports both 32 bit and 64 bit StarCraft.
- Only works when
InitialWireframe
is used!
euddraft 0.9.8.5
[0.9.8.5] - 2022.12.06
Bugfix
- Fixed typo in
Trigger(preserved=False)
andDoActions(preserved=False)
(reported by 콤)
Improved
- Print null tile coordinates for 00.0000 warning
- Optimized
f_atan2(y, x)
andf_lengthdir(length, angle)
Added
- Added
f_atan2_256(y, x)
andf_lengthdir_256(length, angle)
euddraft 0.9.8.4
Changed
EUDLoopNewUnit
no longer modify CUnit +0xA5uniquenessIdentifier
- Can call
cunit.remove();
multiple times inUnitGroup.cploop
Bugfix
- Allow
selftype
for non-const method call - Fixed #34 : calling non-const
EUDTypedMethod
with parameter type raisesEPError: Different number of variables(n) from type declarations(n-1)
Improved
- Optimize
f_playerexist(player)
- Optimize read functions for empty case
- Example) Local (desync) unit selection
const localSelect = EPD(0x6284B8); for(var mySelect = localSelect; mySelect < localSelect + 12; mySelect++) { // Much faster and cleaner when mySelect is *not* empty const ptr, epd = cunitepdread_epd(mySelect); if (epd == 0) break; // .. than this, which substitutes mySelect on condition if (MemoryEPD(mySelect, Exactly, 0)) break; const ptr, epd = cunitepdread_epd(mySelect); }
switch
: Omit masked range check if bitmask == 0