onevent EVENT_GAME
{
getactor[THISACTOR].picnum picnum
switch picnum
{
case LADDER
{
ifvare monstflags 1
{
ifvare monstatus 0
{
setvar monstatus 1
setvar temp 0
whilevarn temp 16384
{
getactor[temp].picnum picnum
ifvare picnum LADDER ifvarvarn temp THISACTOR
{
getactorvar[temp].monstflags tempb
ifvare tempb 1
{
getactorvar[temp].hitag tempc
ifvarvare hitag tempc
{
setvarvar myspawner temp
setvar monstatus 1
setvar temp 16383
getactor[THISACTOR].z z
getactor[myspawner].z mz
ifvarvarg z mz
{
setvar mtype 1
setvarvar topladder mz
}
}
}
}
addvar temp 1
}
}
ifvare mtype 1 ifvare dodge 0
{
getplayer[THISACTOR].posz mz
ifp pducking subvar mz 4096
getactor[THISACTOR].z z
addvar z 1024
ifvarvarg mz topladder ifvarvarl mz z
{
getplayer[THISACTOR].i target
ldist xydist THISACTOR target
ifangdiffl 384 ifvarl xydist 384
{
ifvare onladder 0
{
getplayer[THISACTOR].posx lastladderx
getplayer[THISACTOR].posy lastladdery
}
setvar onladder 3
ifvarn lotag 0 setvarvar laddersound lotag else setvar laddersound -1
}
}
}
}
break
}
case APLAYER
{
ifvarg onladder 0 state ladderinteraction
break
}
}
endswitch
}
endeventAnd here were the missing codes for the effect to work:
state ladderinteraction
{
// Lógica de interação com a escada
ifvarg fpress 0 subvar fpress 1
ifvarg bpress 0 subvar bpress 1
ifvarl onladder 0 addvar onladder 1
ifvarg onladder 0 state laddercode
ifp ponground setvar nofalldamage 0
ifvarn nofalldamage 0 setplayer[THISACTOR].falling_counter 0
ifvarg bhold 7 { setvar btap 0 setvar bhold 0 }
ifvarg fhold 7 { setvar ftap 0 setvar fhold 0 }
ifvarg lhold 7 { setvar ltap 0 setvar lhold 0 }
ifvarg rhold 7 { setvar rtap 0 setvar rhold 0 }
ifvarvarn timer fpresstime setvar fhold 0
ifvarvarn timer bpresstime setvar bhold 0
setvarvar tempb timer
subvarvar tempb fpresstime
ifvarg tempb 4 setvar ftap 0
setvarvar tempb timer
subvarvar tempb bpresstime
ifvarg tempb 4 setvar btap 0
setvarvar tempb timer
subvarvar tempb lpresstime
ifvarg tempb 4 setvar ltap 0
setvarvar tempb timer
subvarvar tempb rpresstime
ifvarg tempb 4 setvar rtap 0
}
endsThese codes that I put in the "state ladderinteraction" were inside "onevent EVENT_GAME", but were outside the "case LADDER". I had to do this, put them inside a separate state, otherwise I wouldn't have been able to make it work. And the effect is working just like in the Dukeplus mod. My modification now uses 3 specific sounds for when the player climbs the ladder, which gives a bit more realism.
It's true that my codes don't have a more simplified format or shortcuts yet, but at the moment I'm more concerned with knowing the basics of how to add new effects and other things to the game. As I learn more about the CON language and become more familiar with it, I'll feel more confident in dealing with the game's performance.

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



