Code:
proc После_нанесения_урона uses esi, defend_stack, position
; ECX - структура атакующего (пока не нужно)
mov eax, 441332h
thiscall eax, ecx, [defend_stack], [position]
push eax; сохранить результат функции
mov esi, [defend_stack]
cmp [esi + Структура_стека.Текущее_количество], 0
jle @f; стек уже мёртв
.if [esi + Структура_стека.Тип_существа] = CR_Нетопырь
.if ~[esi + (SPL_Кровожадность*2) + Структура_стека.Длительность_заклинаний]
Монстр_колдует_заклинание esi, SPL_Кровожадность, [esi + Структура_стека.Позиция], 3, 1
.endif
.elseif [esi + Структура_стека.Тип_существа] = CR_Гипогриф
.if ~[esi + (SPL_Ускорение*2) + Структура_стека.Длительность_заклинаний]
Монстр_колдует_заклинание esi, SPL_Ускорение, [esi + Структура_стека.Позиция], 3, 1
.endif
.elseif [esi + Структура_стека.Тип_существа] = CR_Королевский_Гипогриф
.if ~[esi + (SPL_Ускорение*2) + Структура_стека.Длительность_заклинаний]
Монстр_колдует_заклинание esi, SPL_Ускорение, [esi + Структура_стека.Позиция], 3, 2
.endif
.endif
@@:
pop eax; вернуть результат функции
ret
endp