Here's the code, if you want to use for yourself:
gamevar ACCESSKEY2 0 1
gamevar CUSTOMKEYCARDPOS 0 0
gamevar KEYCARD_CURRENT_PAL 0 0
gamevar CKEYCARDPAL 0 0
gamevar CKEYCARDTILE 0 0
gamevar KEYCARD_TEMP 0 2
gamevar KEYCARD_TEMP2 0 2
gamevar KEYCARD_TEMP3 0 2
gamevar KEYCARD_TEMP4 0 2
gamevar KEYCARD_TEMP7 0 0
define DOUBLESIZE 131072
define NORMALSIZE 65536
define HALFSIZE 32768
define QUARTERSIZE 16384
action LOCKED 0
action UNLOCKING 0
action UNLOCKED 1
eventloadactor ACCESSCARD2
setactor[THISACTOR].xrepeat 28
setactor[THISACTOR].yrepeat 28
enda
useractor notenemy ACCESSCARD2
ifp pshrunk nullop
else
ifp palive
ifpdistl RETRIEVEDISTANCE
ifcount 6
ifcanseetarget
{
// Verifica cor do cartão e adiciona ao inventário
ifspritepal 12
{
ifvarand ACCESSKEY2 1 { break }
else
{
addvar ACCESSKEY2 1
setvar KEYCARD_TEMP7 30
globalsound DUKE_GET
quote 43
palfrom 16 0 32
killit
break
}
}
ifspritepal 11
{
ifvarand ACCESSKEY2 2 { break }
else
{
addvar ACCESSKEY2 2
setvar KEYCARD_TEMP7 30
globalsound DUKE_GET
quote 43
palfrom 16 0 32
killit
break
}
}
ifspritepal 15
{
ifvarand ACCESSKEY2 4 { break }
else
{
addvar ACCESSKEY2 4
setvar KEYCARD_TEMP7 30
globalsound DUKE_GET
quote 43
palfrom 16 0 32
killit
break
}
}
ifspritepal 10
{
ifvarand ACCESSKEY2 8 { break }
else
{
addvar ACCESSKEY2 8
setvar KEYCARD_TEMP7 30
globalsound DUKE_GET
quote 43
palfrom 16 0 32
killit
break
}
}
ifspritepal 13
{
ifvarand ACCESSKEY2 16 { break }
else
{
addvar ACCESSKEY2 16
setvar KEYCARD_TEMP7 30
globalsound DUKE_GET
quote 43
palfrom 16 0 32
killit
break
}
}
ifspritepal 14
{
ifvarand ACCESSKEY2 32 { break }
else
{
addvar ACCESSKEY2 32
setvar KEYCARD_TEMP7 30
globalsound DUKE_GET
quote 43
palfrom 16 0 32
killit
break
}
}
ifspritepal 16
{
ifvarand ACCESSKEY2 64 { break }
else
{
addvar ACCESSKEY2 64
setvar KEYCARD_TEMP7 30
globalsound DUKE_GET
quote 43
palfrom 16 0 32
killit
break
}
}
ifspritepal 30
{
ifvarand ACCESSKEY2 128 { break }
else
{
addvar ACCESSKEY2 128
setvar KEYCARD_TEMP7 30
globalsound DUKE_GET
quote 43
palfrom 16 0 32
killit
break
}
}
}
enda
eventloadactor ACCESSSWITCH3
{
getactor[THISACTOR].pal KEYCARD_TEMP
setactor[RETURN].pal KEYCARD_TEMP
getactor[THISACTOR].hitag HITAGSAVED
getactor[THISACTOR].lotag LOTAGSAVED
setactor[THISACTOR].hitag 0
setactor[THISACTOR].lotag 0
setactor[THISACTOR].cstat 17
setactor[THISACTOR].clipdist 64
}
enda
state checkcounterpart2
setvar KEYCARD_TEMP 0
whilevarn KEYCARD_TEMP 16384
{
getactor[KEYCARD_TEMP].statnum KEYCARD_TEMP4
ifvarn KEYCARD_TEMP4 1024
{
getactor[KEYCARD_TEMP].picnum KEYCARD_TEMP2
ifvare KEYCARD_TEMP2 ACCESSSWITCH3
{
getactorvar[KEYCARD_TEMP].LOTAGSAVED KEYCARD_TEMP3
ifvarvare LOTAGSAVED KEYCARD_TEMP3 { setactor[KEYCARD_TEMP].picnum 15177 }
}
}
addvar KEYCARD_TEMP 1
}
ends
state CUSTOMACCESSSWITCH
ifaction 0 { action LOCKED }
ifpdistl 1024
ifhitspace
ifaction LOCKED
{
ifvarg KEYCARD_TEMP7 0 { break }
getactor[THISACTOR].hitag KEYCARD_TEMP
ifvare KEYCARD_TEMP 0
{
setvar KEYCARD_TEMP7 1
}
ifvarand ACCESSKEY2 1 nullop
else ifvarand ACCESSKEY2 2 nullop
else ifvarand ACCESSKEY2 4 nullop
else ifvarand ACCESSKEY2 8 nullop
else ifvarand ACCESSKEY2 16 nullop
else ifvarand ACCESSKEY2 32 nullop
else ifvarand ACCESSKEY2 64 nullop
else ifvarand ACCESSKEY2 128 nullop
else break
ifspritepal 12
{
ifvarand ACCESSKEY2 1
{
setvar CKEYCARDTILE 2568
setvar CKEYCARDPAL 12
setvar CUSTOMKEYCARDPOS 21
setvar KEYCARD_TEMP2 1
action UNLOCKING
ifrnd 128
{
globalsound OPEN_SESAME
}
else
{
ifrnd 128
{
globalsound LETS_SEE
}
else
{
globalsound GETTIN_SOMEWHRE
}
}
}
else
{
globalsound NO_KEY1
quote 1014
}
}
ifspritepal 11
{
ifvarand ACCESSKEY2 2
{
setvar CKEYCARDTILE 2568
setvar CKEYCARDPAL 11
setvar CUSTOMKEYCARDPOS 21
setvar KEYCARD_TEMP2 1
action UNLOCKING
ifrnd 128
{
globalsound OPEN_SESAME
}
else
{
ifrnd 128
{
globalsound LETS_SEE
}
else
{
globalsound GETTIN_SOMEWHRE
}
}
}
else
{
globalsound NO_KEY2
quote 1013
}
}
ifspritepal 15
{
ifvarand ACCESSKEY2 4
{
setvar CKEYCARDTILE 2568
setvar CKEYCARDPAL 15
setvar CUSTOMKEYCARDPOS 21
setvar KEYCARD_TEMP2 1
action UNLOCKING
ifrnd 128
{
globalsound OPEN_SESAME
}
else
{
ifrnd 128
{
globalsound LETS_SEE
}
else
{
globalsound GETTIN_SOMEWHRE
}
}
}
else
{
globalsound NO_KEY1
quote 1015
}
}
ifspritepal 10
{
ifvarand ACCESSKEY2 8
{
setvar CKEYCARDTILE 2568
setvar CKEYCARDPAL 10
setvar CUSTOMKEYCARDPOS 21
setvar KEYCARD_TEMP2 1
action UNLOCKING
ifrnd 128
{
globalsound OPEN_SESAME
}
else
{
ifrnd 128
{
globalsound LETS_SEE
}
else
{
globalsound GETTIN_SOMEWHRE
}
}
}
else
{
globalsound NO_KEY1
quote 1015
}
}
ifspritepal 13
{
ifvarand ACCESSKEY2 16
{
setvar CKEYCARDTILE 2568
setvar CKEYCARDPAL 13
setvar CUSTOMKEYCARDPOS 21
setvar KEYCARD_TEMP2 1
action UNLOCKING
ifrnd 128
{
globalsound OPEN_SESAME
}
else
{
ifrnd 128
{
globalsound LETS_SEE
}
else
{
globalsound GETTIN_SOMEWHRE
}
}
}
else
{
globalsound NO_KEY1
quote 1015
}
}
ifspritepal 14
{
ifvarand ACCESSKEY2 32
{
setvar CKEYCARDTILE 2568
setvar CKEYCARDPAL 14
setvar CUSTOMKEYCARDPOS 21
setvar KEYCARD_TEMP2 1
action UNLOCKING
ifrnd 128
{
globalsound OPEN_SESAME
}
else
{
ifrnd 128
{
globalsound LETS_SEE
}
else
{
globalsound GETTIN_SOMEWHRE
}
}
}
else
{
globalsound NO_KEY1
quote 1015
}
}
ifspritepal 16
{
ifvarand ACCESSKEY2 64
{
setvar CKEYCARDTILE 2568
setvar CKEYCARDPAL 16
setvar CUSTOMKEYCARDPOS 21
setvar KEYCARD_TEMP2 1
action UNLOCKING
ifrnd 128
{
globalsound OPEN_SESAME
}
else
{
ifrnd 128
{
globalsound LETS_SEE
}
else
{
globalsound GETTIN_SOMEWHRE
}
}
}
else
{
globalsound NO_KEY1
quote 1015
}
}
ifspritepal 30
{
ifvarand ACCESSKEY2 128
{
setvar CKEYCARDTILE 2568
setvar CKEYCARDPAL 30
setvar CUSTOMKEYCARDPOS 21
setvar KEYCARD_TEMP2 1
action UNLOCKING
ifrnd 128
{
globalsound OPEN_SESAME
}
else
{
ifrnd 128
{
globalsound LETS_SEE
}
else
{
globalsound GETTIN_SOMEWHRE
}
}
}
else
{
globalsound NO_KEY1
quote 1015
}
}
}
ifaction UNLOCKING
{
ifvare KEYCARD_TEMP2 1
{
ifcount 8
{
subvar CUSTOMKEYCARDPOS 1
ifvare CUSTOMKEYCARDPOS 9
{
ifspritepal 12 { subvar ACCESSKEY2 1 }
ifspritepal 11 { subvar ACCESSKEY2 2 }
ifspritepal 15 { subvar ACCESSKEY2 4 }
ifspritepal 10 { subvar ACCESSKEY2 8 }
ifspritepal 13 { subvar ACCESSKEY2 16 }
ifspritepal 14 { subvar ACCESSKEY2 32 }
ifspritepal 16 { subvar ACCESSKEY2 64 }
ifspritepal 30 { subvar ACCESSKEY2 128 }
state checkcounterpart2
operateactivators LOTAGSAVED THISACTOR
operaterespawns LOTAGSAVED
operatemasterswitches LOTAGSAVED
setvar KEYCARD_TEMP2 0
setvar CUSTOMKEYCARDPOS 0
action UNLOCKED
}
}
ifvarl CUSTOMKEYCARDPOS 0
{
setvar CUSTOMKEYCARDPOS 0
setvar KEYCARD_TEMP2 0
action LOCKED
}
}
}
ends
useractor notenemy ACCESSSWITCH3
state CUSTOMACCESSSWITCH
enda
onevent EVENT_DISPLAYREST
ifvarand ACCESSKEY2 1 { rotatesprite 100 20 HALFSIZE 0 15175 0 12 512 0 0 xdim ydim }
ifvarand ACCESSKEY2 2 { rotatesprite 125 20 HALFSIZE 0 15175 0 11 512 0 0 xdim ydim }
ifvarand ACCESSKEY2 4 { rotatesprite 150 20 HALFSIZE 0 15175 0 15 512 0 0 xdim ydim }
ifvarand ACCESSKEY2 8 { rotatesprite 175 20 HALFSIZE 0 15175 0 10 512 0 0 xdim ydim }
ifvarand ACCESSKEY2 16 { rotatesprite 200 20 HALFSIZE 0 15175 0 13 512 0 0 xdim ydim }
ifvarand ACCESSKEY2 32 { rotatesprite 225 20 HALFSIZE 0 15175 0 14 512 0 0 xdim ydim }
ifvarand ACCESSKEY2 64 { rotatesprite 250 20 HALFSIZE 0 15175 0 16 512 0 0 xdim ydim }
ifvarand ACCESSKEY2 128 { rotatesprite 275 20 HALFSIZE 0 15175 0 30 512 0 0 xdim ydim }
endevent
onevent EVENT_DISPLAYWEAPON
ifvarg CUSTOMKEYCARDPOS 0
{
getplayer[THISACTOR].weapon_pos KEYCARD_TEMP3
getplayer[THISACTOR].kickback_pic KEYCARD_TEMP4
setplayer[THISACTOR].weapon_pos 10
setplayer[THISACTOR].kickback_pic 0
switch CUSTOMKEYCARDPOS
case 0: break
case 1: rotatesprite 80 134 NORMALSIZE 0 2565 0 0 0 0 0 xdim ydim
break
case 2: rotatesprite 80 134 NORMALSIZE 0 2565 0 0 0 0 0 xdim ydim
break
case 3: rotatesprite 80 134 NORMALSIZE 0 2565 0 0 0 0 0 xdim ydim
break
case 4: rotatesprite 80 134 NORMALSIZE 0 2565 0 0 0 0 0 xdim ydim
break
case 5: rotatesprite 120 134 NORMALSIZE 0 2564 0 0 0 0 0 xdim ydim
break
case 6: rotatesprite 120 134 NORMALSIZE 0 2564 0 0 0 0 0 xdim ydim
break
case 7: rotatesprite 120 134 NORMALSIZE 0 2564 0 0 0 0 0 xdim ydim
break
case 8: rotatesprite 120 134 NORMALSIZE 0 2564 0 0 0 0 0 xdim ydim
break
case 9: rotatesprite 160 134 NORMALSIZE 0 2563 0 0 0 0 0 xdim ydim
break
case 10: rotatesprite 160 134 NORMALSIZE 0 2563 0 0 0 0 0 xdim ydim
break
case 11: rotatesprite 160 134 NORMALSIZE 0 2563 0 0 0 0 0 xdim ydim
break
case 12: rotatesprite 160 134 NORMALSIZE 0 2563 0 0 0 0 0 xdim ydim
break
case 13: rotatesprite 160 134 NORMALSIZE 1024 CKEYCARDTILE 0 CKEYCARDPAL 260 0 0 xdim ydim
break
case 14: rotatesprite 160 134 NORMALSIZE 1024 CKEYCARDTILE 0 CKEYCARDPAL 260 0 0 xdim ydim
break
case 15: rotatesprite 160 134 NORMALSIZE 1024 CKEYCARDTILE 0 CKEYCARDPAL 260 0 0 xdim ydim
break
case 16: rotatesprite 160 134 NORMALSIZE 1024 CKEYCARDTILE 0 CKEYCARDPAL 260 0 0 xdim ydim
break
case 17: rotatesprite 160 134 NORMALSIZE 1024 CKEYCARDTILE 0 CKEYCARDPAL 260 0 0 xdim ydim
break
case 18: rotatesprite 160 134 NORMALSIZE 1024 CKEYCARDTILE 0 CKEYCARDPAL 260 0 0 xdim ydim
break
case 19: rotatesprite 160 134 NORMALSIZE 1024 CKEYCARDTILE 0 CKEYCARDPAL 260 0 0 xdim ydim
break
case 20: rotatesprite 160 134 NORMALSIZE 1024 CKEYCARDTILE 0 CKEYCARDPAL 260 0 0 xdim ydim
break
case 21: rotatesprite 160 134 NORMALSIZE 1024 CKEYCARDTILE 0 CKEYCARDPAL 260 0 0 xdim ydim
break
case 22: rotatesprite 160 134 NORMALSIZE 1024 CKEYCARDTILE 0 CKEYCARDPAL 260 0 0 xdim ydim
break
case 23: rotatesprite 160 134 NORMALSIZE 1024 CKEYCARDTILE 0 CKEYCARDPAL 260 0 0 xdim ydim
break
case 24: rotatesprite 160 134 NORMALSIZE 1024 CKEYCARDTILE 0 CKEYCARDPAL 260 0 0 xdim ydim
break
endswitch
ifvarl CUSTOMKEYCARDPOS 1
{
setplayer[THISACTOR].weapon_pos KEYCARD_TEMP3
setplayer[THISACTOR].kickback_pic KEYCARD_TEMP4
}
break
}
ifvarg KEYCARD_TEMP7 0
{
subvar KEYCARD_TEMP7 1
}
endevent
onevent EVENT_USE
ifvare KEYCARD_TEMP7 1
{
break
}
endevent
onevent EVENT_SPAWN
setvar ACCESSKEY2 0
setvar CUSTOMKEYCARDPOS 0
setvar KEYCARD_TEMP2 0
setvar KEYCARD_TEMP7 0
ifvare KEYCARD_TEMP 121
{
setvar ACCESSKEY2 7
}
endeventThe only thing you will probably have to change is the number of the sprite of the texture of the switch and the card, as well as the name of both, according to your needs. Keep in mind that I'm trying to add things to Duke Nukem Legacy 2.0 on my own. So if you're going to use this in some other mod or for your own mod, some small adjustments may be necessary, I think. I hope this code can serve as a basis to help newbies like me add new colors for cards and switches to the game in an easier and more accessible way, without having to spend time trying to figure out how to do it, as a facilitator. Don't forget that I'm still new to CON programming and therefore I still use artificial intelligence resources to help me identify, extract, assemble, organize and change codes for my needs, although even with this kind of help I don't always get what I need, so sometimes I have to come here and ask for help.
Here's an image to show what I did:


At least here in my PC it works.

Help
Duke4.net
DNF #1
Duke 3D #1




