Source code for screpl.plugins.trigger.intacttrigger
"""defines IntactTrigger"""
from eudplib import RawTrigger
[docs]class IntactTrigger(RawTrigger):
"""RawTrigger object that does not allow overlapping"""
[docs] def WritePayload(self, pbuffer):
pbuffer.WriteDword(self._prevptr)
pbuffer.WriteDword(self._nextptr)
# Conditions
for cond in self._conditions:
cond.WritePayload(pbuffer)
if len(self._conditions) != 16:
pbuffer.WriteBytes(bytes(20) * (16 - len(self._conditions)))
# Actions
for act in self._actions:
act.WritePayload(pbuffer)
if len(self._actions) != 64:
pbuffer.WriteBytes(bytes(32) * (64 - len(self._actions)))
# Preserved flag
if self.preserved:
pbuffer.WriteDword(4)
else:
pbuffer.WriteDword(0)
pbuffer.WriteBytes(bytes(28))