The Plasma types each have a magical internal ID.
R = 0
S = 1
G = 2
F = 3
I = 4
D = 5
X = 6
E = 7
Dro-D = 40
Then they are assigned incrementally to a range via a table.
.text:0041E5F2 db 0 ; R ; +0 bytes
.text:0041E5F3 db 1 ; S ; +4 bytes
.text:0041E5F4 db 2 ; G ; +8 bytes
.text:0041E5F5 db 3 ; F ; +12 bytes
.text:0041E5F6 db 3 ; I ; +12 bytes
.text:0041E5F7 db 4 ; D ; +16 bytes
.text:0041E5F8 db 5 ; X ; +20 bytes
.text:0041E5F9 db 1 ; E ; +4 bytes
These numbers on the left are used to find the correct offset. They are multiplied by 4 to calculate the displacement for each Plasma type in a "jump table". Each offset is 4 bytes apart. So PlaR jumps to the first offset (+0 bytes). PlaS jumps to the second offset (+4 bytes), the same as PlaE. PlaF and PlaI jump to the same offset at +12 bytes. Etc.
It is highly confusing. These calculated offsets are links to locations within the function.
.text:0041E5B6 dd offset loc_41E164 ; +0 bytes, jumptable 0041E15D case 0 ; PlaR
.text:0041E5BA dd offset loc_41E26E ; +4 bytes, jumptable 0041E15D cases 1,7 ; PlaS,PlaE
.text:0041E5BE dd offset loc_41E1B8 ; +8 bytes, jumptable 0041E15D case 2 ; PlaG
.text:0041E5C2 dd offset loc_41E1F9 ; +12 bytes, jumptable 0041E15D cases 3,4 ; PlaF, PlaI
.text:0041E5C6 dd offset loc_41E201 ; +16 bytes, jumptable 0041E15D cases 5,40 ; PlaD , DroD
.text:0041E5CA dd offset loc_41E243 ; +20 bytes, jumptable 0041E15D case 6 ; PlaX