Quasar
Moderator

Posts: 5160
Registered: 08-00 |
Based on your analysis of the line types in Strife I also revisited the disassembly and verified the following:
code:
(In P_UseSpecialLine:)
case49:
mov edx, 3 ; verifies it is still crushAndRaise...
mov eax, ecx
call EV_DoCeiling
test eax, eax
jz rettrue
(In EV_DoCeiling: - NB: case 5 also points to case 3, as in DOOM)
ceilingcase3: ; CODE XREF: EV_DoCeiling+98j
; DATA XREF: cseg01:0001CF5Co ...
mov eax, [esi+sector_t.ceilingheight] ; crush is not set!!!
mov [ebx+ceiling_t.topheight], eax
ceilingcase0: ; CODE XREF: EV_DoCeiling+98j
; DATA XREF: cseg01:off_1CF50o
mov eax, [esi+sector_t.floorheight]
mov [ebx+ceiling_t.bottomheight], eax
test ebp, ebp
jz short loc_1D06F
add word ptr [ebx+16h], 8
loc_1D06F: ; CODE XREF: EV_DoCeiling+100j
mov [ebx+ceiling_t.direction], 0FFFFFFFFh
mov [ebx+ceiling_t.speed], 65536
jmp short loc_1D097
So we can see that neither silentCrushAndRaise nor crushAndRaise do any crushing damage in Strife. I have adjusted Chocolate Strife to do this correctly.
Also I do not know if you're aware or if ZDoom implements it correctly, but lowerAndCrush, which does not crush in DOOM, DOES crush in Strife. Seems they literally moved the crush = true from case 3/5 up to case 2:
code:
ceilingcase2: ; CODE XREF: EV_DoCeiling+98j
; DATA XREF: cseg01:0001CF58o
mov [edx+ceiling_t.crush], 1
mov eax, [esi+sector_t.floorheight]
mov [edx+ceiling_t.direction], 0FFFFFFFFh
mov [edx+ceiling_t.speed], 65536
mov [edx+ceiling_t.bottomheight], eax
jmp short loc_1D097
|