CON coding problems. "Improvements and progress."
#182 Posted 14 March 2019 - 12:15 PM
Firefly_Trooper, on 14 March 2019 - 11:37 AM, said:
It will not work, it's a global variable, also as its name implies, TEMPFIX1 is a temporary variable, it's used for small operations, not for stocking data. You'll have to create your own per-actor variable.
#183 Posted 15 March 2019 - 06:42 AM
1. create a gamevar (gamevar MRESPAWN)
2. create an EVENT_LOADACTOR with this gamevar.
3. Use the operaterespawns value with the saved gamevar.
A question ! The value operaterespawns must be placed in "EVENT_LOADACTOR" or in the code of an actor ?
I think I followed the steps and it does not work.
#184 Posted 15 March 2019 - 12:13 PM
gamevar MRESPAWN 0 2
Since hitag is not retained during gameplay, copy the value into your custom variable, by adding this with actors at EVENT_LOADACTOR:
setvarvar MRESPAWN sprite[THISACTOR].hitag setactor[THISACTOR].hitag 0
Finally, put this in the actor code (and also in EVENT_KILLIT) where you want to spawn monsters:
ifvarg MRESPAWN 0 { operaterespawns MRESPAWN setvar MRESPAWN 0 }
#185 Posted 16 March 2019 - 02:45 AM
#186 Posted 16 March 2019 - 01:47 PM
I had to add the "ifvarg MRESPAWN 0 {operaterespawns MRESPAWN setvar MRESPAWN 0}" line in the "hit states" of monsters that have a corpse.
I removed that same value for tanks (inside EVENT_KILLIT) for one reason only. When the pilot is alive, RESPAWN will not activate. If he's dead, it's better!
This post has been edited by Firefly_Trooper: 16 March 2019 - 01:49 PM
#187 Posted 16 March 2019 - 05:00 PM
Originally, the Liztroop stayput does not have a recognition sound. I would like to apply this for everyone.
I will also fix a clipdist problem for the bosses.
Activate a clipdist 40 to reduce them with the shrinker.
Enable a clipdist 80 to prevent them from moving in narrow areas.
This post has been edited by Firefly_Trooper: 16 March 2019 - 05:04 PM
#188 Posted 17 March 2019 - 11:27 AM
Prevent certain projectiles thrown by certain enemies from exploding on their own.
RPG and morter.
#189 Posted 18 March 2019 - 01:55 PM
Firefly_Trooper, on 16 March 2019 - 05:00 PM, said:
Originally, the Liztroop stayput does not have a recognition sound. I would like to apply this for everyone.
Not tested, but I think of EVENT_RECOGSOUND or Stopactorsound
Firefly_Trooper, on 17 March 2019 - 11:27 AM, said:
Prevent certain projectiles thrown by certain enemies from exploding on their own.
RPG and morter.
You mean you don't want to let projectiles explode or monsters inflicting self-damage?
#190 Posted 18 March 2019 - 02:15 PM
Darkus, on 18 March 2019 - 01:55 PM, said:
You mean you don't want to let projectiles explode or monsters inflicting self-damage?
No!
The problem of damage dealt by monster projectiles and already corrected.
Sometimes some projectiles do not launch properly. They sometimes explode on themselves.
#191 Posted 18 March 2019 - 02:23 PM
LIZTROOPSTAYPUT is related to LIZTROOP in the code.
With EVENT_SOUND and the value RETURN, I managed to stop the sound of LIZTROOPSTAYPUT, but I had to add LIZTROOP with this one. I tested with an ifspritepal and it works.
I wonder how to add only stayput, or add a gamevar only for all existing pal.
#193 Posted 18 March 2019 - 03:51 PM
appendevent EVENT_SOUND
ife RETURN PRED_RECOG
{
ifspritepal 4
ife sprite[].picnum LIZTROOP
set RETURN BLANK
else
ifspritepal 4
ife sprite[].picnum LIZTROOPSTAYPUT
set RETURN BLANK
}
endevent1. LIZTROOP is the main sprite.
2. LIZTROOPSTAYPUT is depend on the first sprite in the code.
3. in the "RETURN" value of LIZTROOP, the sound "BLANK" is played at the same time as LIZTROOPSTAYPUT.
4. When I change the sound of the first sprite, the LIZTROOPSTAYPUT plays the same sound.
I will have to find a solution to keep only the value amplified in the sprite LIZTROOPSTAYPUT and found the way to use the "ifspritepal from 0 to 25" without the basic LIZTROOP is affected.
#194 Posted 20 March 2019 - 10:27 AM
King Cobra attacks without even seeing the player.
Assault Commander Cari and Flying Frosty, remain stuck on the spot and do not advance towards the player.
#195 Posted 21 March 2019 - 09:21 AM
1. King Cobra - attacks without even seeing the player.
2. Assault Commander Cari / Flying Frosty - remain stuck on the spot and do not advance towards the player. They still fire projectiles while the player is dead.
3. Predator - The corpse drops ammunition and weapons when he explodes. Prevent doing that.
4. Mini-Battlelord / Captain Gorilla - The RPG and Mortier projectiles sometimes explode on the enemy without reason (once in four). Clipdist problem ?
5. Santa Claus - same problem as 4.
#196 Posted 23 March 2019 - 12:38 PM
Firefly_Trooper, on 21 March 2019 - 09:21 AM, said:
1. King Cobra - attacks without even seeing the player.
3. Predator - The corpse drops ammunition and weapons when he explodes. Prevent doing that.
Those should be easy to fix.
Firefly_Trooper, on 21 March 2019 - 09:21 AM, said:
Maybe they have the stayput flag. Changing htflags can resolve the problem... or not.
Firefly_Trooper, on 21 March 2019 - 09:21 AM, said:
5. Santa Claus - same problem as 4.
I think it's more a problem with EDuke rather than clipdist.
#197 Posted 24 March 2019 - 09:00 AM
Darkus, on 23 March 2019 - 12:38 PM, said:
Problems of Commander Cari / Flying Frosty not fixed.
For the problem of Eduke32, I use this version:
EDuke32 r6775
#198 Posted 24 March 2019 - 01:48 PM
This post has been edited by Mark: 24 March 2019 - 01:49 PM
#199 Posted 27 March 2019 - 01:17 PM
However, the code of these two monsters is a copy in conformity with the original Commander.
Maybe some actions are hard coded.
Once all Nuclear monsters are over, I'll settle those actions.
This post has been edited by Firefly_Trooper: 27 March 2019 - 01:19 PM
#200 Posted 27 March 2019 - 01:34 PM
Simply remove the shadow on the ground.
#201 Posted 31 March 2019 - 03:15 PM
I will post the codes to find out how.Hello ! I tried to solve these small problems of movement and action and I did not succeed.
I will post the codes to find out how.
----
1. King Cobra - attacks without even seeing the player.
//
//
// KING COBRA CODE
//
//
define COBRASTRENGTH 200
define COBRA_DODGEBULLET_FREQ 1
define COBRA_ATTACKFREQ 24
define COBRA_SHOOTLASER_FREQ 64
action ACOBRASTAND 16 3 5 1 16
action ACOBRASTAYSTAND -1 1 5
action ACOBRAWALKING 0 3 5 1 16
action ACOBRARUNNING 0 3 5 1 12
action ACOBRATHINK 16 2 5 1 40
action ACOBRASCREAM 0 1 5 1 2
action ACOBRAJUMP 0 3 5 1 20
action ACOBRAJUMPSTAND 5 1 5
action ACOBRAFALL 0 1 5
action ACOBRASHOOTING 21 2 3 1 14
action ACOBRADYING 28 6 1 1 20
action ACOBRALYINGDEAD 33 1 1 1 10
action ACOBRAFROZEN 0 1 5
action ACOBRAFROZENSHRUNK 0 1 5
action ACOBRAGROW 27
action ACOBRABITE 15 2 1 1 32
move COBRAWALKVEL 72
move COBRARUNVEL 140
move COBRAJUMPVEL 160
move COBRASTOP
ai AICOBRAGETENEMY ACOBRAWALKING COBRAWALKVEL seekplayer
ai AICOBRADODGE ACOBRARUNNING COBRARUNVEL dodgebullet
ai AICOBRACHARGEENEMY ACOBRARUNNING COBRARUNVEL seekplayer
ai AICOBRAFLEENEMY ACOBRAWALKING COBRAWALKVEL fleeenemy
ai AICOBRASHOOTENEMY ACOBRASHOOTING COBRASTOP faceplayer
ai AICOBRAJUMPENEMY ACOBRAJUMP COBRAJUMPVEL jumptoplayer
ai AICOBRATHINK ACOBRATHINK COBRASTOP faceplayerslow
ai AICOBRASHRUNK ACOBRAWALKING SHRUNKVELS fleeenemy
ai AICOBRAGROW ACOBRAGROW COBRASTOP faceplayerslow
ai AICOBRASPIT ACOBRASCREAM COBRASTOP faceplayerslow
ai AICOBRADYING ACOBRADYING COBRASTOP geth
ai AICOBRABITE ACOBRABITE COBRASTOP faceplayer
action POISONFRAMES 0 4 1 1 10
actor POISON 0 POISONFRAMES enda
defineprojectile POISON PROJ_WORKSLIKE 258
defineprojectile POISON PROJ_SPAWNS -1
defineprojectile POISON PROJ_EXTRA 6
defineprojectile POISON PROJ_HITRADIUS -1
defineprojectile POISON PROJ_PAL 8
defineprojectile POISON PROJ_VEL 292
defineprojectile POISON PROJ_DROP -50
defineprojectile POISON PROJ_OFFSET -100
defineprojectile POISON PROJ_XREPEAT 10
defineprojectile POISON PROJ_YREPEAT 10
defineprojectile POISON PROJ_SHADE 0
state cobrabitestate
ifpdistg 1280
ai AICOBRAGETENEMY
ifp pdead
ai AICOBRAGETENEMY
else
ifcount 18
{
resetcount
ifp palive
{ sound COBRA_BITE
palfrom 8 32
quote 130
getplayer[THISACTOR].i TEMPFIX1
getactor[TEMPFIX1].extra TEMPFIX2
setvar TEMPFIX1 -6
mulvar TEMPFIX1 -1 addvar TEMPFIX1 1
ifvarvarl TEMPFIX2 TEMPFIX1
setplayer[THISACTOR].wackedbyactor THISACTOR
addphealth -6
}
}
ends
state cobraseekstate
ifactornotstayput
{
ifcansee
ifp palive
ifpdistl 2048
ifcount 16
ifcanshoottarget
{
ai AICOBRASHOOTENEMY
break
}
ifai AICOBRACHARGEENEMY
{
ifcount 72
ifcanshoottarget
{
ai AICOBRASHOOTENEMY
break
}
ifp phigher
ifpdistg 2048
ifrnd 6
{
ai AICOBRAJUMPENEMY
break
}
}
else
ifpdistg 4096
{
ifrnd 92
{
ifcount 48
ifcanshoottarget
ai AICOBRASHOOTENEMY
}
else
ifcount 24
{
ai AICOBRACHARGEENEMY
break
}
}
iffloordistl 16
{
ifcount 48
ifnotmoving
ifcansee
{
ai AICOBRAJUMPENEMY
break
}
}
else
{
ifpdistg 1280
ai AICOBRAJUMPENEMY
break
}
ifrnd 4
ifnotmoving
operate
else
ifrnd COBRA_DODGEBULLET_FREQ
ifbulletnear
{
ifgapzl 128
ai AICOBRADODGE
else
ifactornotstayput
{
ifrnd 32
ai AICOBRAJUMPENEMY
else
ai AICOBRADODGE
}
}
}
else
{
ifactioncount 16
{
ifp palive
ifrnd 32
ifcansee
ifcanshoottarget
ai AICOBRASHOOTENEMY
}
ifcount 16
ifrnd 32
move COBRAWALKVEL randomangle geth
}
ifrnd 32
ifpdistl 1280
ai AICOBRABITE
ends
state cobrashrunkstate
ifcount SHRUNKDONECOUNT
{ sizeat 40 40 ai AICOBRAGETENEMY }
else
ifcount SHRUNKCOUNT
sizeto 40 40
else
state genericshrunkcode
ends
state cobrafleestate
ifcount 16
{
ifrnd 48
ifp palive
ifcansee
{ cactor KINGCOBRA ai AICOBRASPIT }
sound COBRA_SPIT
shoot FIRELASER
}
else
{
iffloordistl 16 nullop
else
ai AICOBRAGETENEMY
break
}
ends
state cobrathinkstate
ifrnd 8
soundonce COBRA_ROAM
ifactioncount 3
{
ifrnd 32
ifp palive
ifcansee
ai AICOBRASPIT
else
ifrnd 96
{ cactor KINGCOBRA ai AICOBRAGETENEMY }
sound COBRA_SPIT
shoot FIRELASER
}
else
ifactioncount 2
ifrnd COBRA_DODGEBULLET_FREQ
ifbulletnear
{
cactor KINGCOBRA
ifgapzl 96
ai AICOBRADODGE
else
{
ifrnd 128
ai AICOBRAJUMPENEMY
else
ai AICOBRADODGE
}
}
ends
state cobrashootstate
ifcount 20
ifrnd 8
{
ifcansee
ifpdistl 2048
{
ifrnd 72
ai AICOBRAFLEENEMY
break
}
ifrnd 80
{ cactor KINGCOBRA ai AICOBRATHINK }
else
ai AICOBRAGETENEMY
}
ifactioncount 1
ifrnd COBRA_SHOOTLASER_FREQ
shoot FIRELASER
ifactioncount 2
{
ifcansee
{
ifcanshoottarget
{
sound COBRA_SPIT
shoot POISON
resetactioncount
ifrnd COBRA_SHOOTLASER_FREQ
shoot FIRELASER
}
else
{ cactor KINGCOBRA ai AICOBRATHINK }
}
else
ai AICOBRAGETENEMY
}
ends
state cobrahitstate
ifdead
{
ifwasweapon FREEZEBLAST
{
ifactor KINGCOBRASPITTING cactor KINGCOBRA
sound SOMETHINGFROZE
spritepal 1
move 0
ifai AICOBRASHRUNK action ACOBRAFROZENSHRUNK
else action ACOBRAFROZEN
strength 0
break
}
ifai AICOBRASHRUNK nullop
else { }
ifwasweapon GROWSPARK
{
ifactor KINGCOBRASPITTING cactor KINGCOBRA
cstat 257
sound ACTOR_GROWING
addvar KILLCOUNTFIX 1
setvar ISDEADFIX 1
ai AICOBRAGROW
break
}
else
ifwasweapon RPG
{
spawn BLOOD
sound SQUISHED
state standard_jibs
killit
}
else
ifwasweapon RADIUSEXPLOSION
{
spawn BLOOD
sound SQUISHED
state standard_jibs
killit
}
else
{
ifvarg MRESPAWN 0 { operaterespawns MRESPAWN setvar MRESPAWN 0 }
ifactor KINGCOBRASPITTING cactor KINGCOBRA
spawn BLOOD
state rf
addkills 1
addvar KILLCOUNTFIX 1
setvar ISDEADFIX 1
ai AICOBRADYING
}
sound COBRA_DYING
}
else
{
sound COBRA_PAIN
ifwasweapon SHRINKSPARK
{
ifai AICOBRASHRUNK break
ifactor KINGCOBRASPITTING cactor KINGCOBRA
ai AICOBRASHRUNK
sound ACTOR_SHRINKING
break
}
ifwasweapon GROWSPARK
sound EXPANDERHIT
guts JIBS3 5
guts JIBS4 3
spawn BLOOD
state random_wall_jibs
ifp palive
ifcansee
ifcanshoottarget
{
ifai AICOBRASHRUNK break
ifactor KINGCOBRASPITTING cactor KINGCOBRA
ai AICOBRASHOOTENEMY
break
}
}
ends
state cobrafrozen
ifcount THAWTIME
{ ifaction ACOBRAFROZENSHRUNK
{ ai AICOBRASHRUNK
count SHRUNKCOUNT
}
else ai AICOBRAGETENEMY
getlastpal
}
else
ifcount FROZENDRIPTIME
{
ifactioncount 26
{
spawn WATERDRIP
resetactioncount
}
}
ifhitweapon
{
ifwasweapon FREEZEBLAST
{
strength 0
break
}
ifrnd 84
spawn BLOODPOOL
lotsofglass 30
sound GLASS_BREAKING
ifaction ACOBRAFROZEN
killit
}
ifp pfacing
ifpdistl FROZENQUICKKICKDIST
ifaction ACOBRAFROZEN
pkick
ends
state cobrajumpstate
ifaction ACOBRAFALL
{
iffloordistl 24
ai AICOBRAGETENEMY
soundonce COBRA_JUMPING
}
else
ifactioncount 5
action ACOBRAFALL
ends
state cobradyingstate
ifaction ACOBRALYINGDEAD
{
strength 0
ifhitweapon
ifwasweapon RADIUSEXPLOSION
{
sound SQUISHED
state standard_jibs
killit
}
ifrespawn
ifcount RESPAWNACTORTIME
{
spawn TRANSPORTERSTAR
sizeat 40 40
cstat 257
strength COBRASTRENGTH
setvar ISDEADFIX 0
ai AICOBRAGETENEMY
ifvarn userdef[THISACTOR].player_skill 4
subvar KILLCOUNTFIX 1
}
}
else
ifai AICOBRADYING
ifactioncount 4
{
iffloordistl 8
sound THUD
move COBRASTOP
action ACOBRALYINGDEAD
ifrnd 64
spawn BLOODPOOL
}
ends
state cobradodgestate
ifcount 13
ai AICOBRAGETENEMY
ends
state cobracode
state checksquished
ifai 0
{ ifactor KINGCOBRASPITTING ai AICOBRASPIT
else ai AICOBRAGETENEMY }
else
ifaction ACOBRALYINGDEAD
{
fall
state cobradyingstate
break
}
else
ifaction ACOBRAFROZEN
{ state cobrafrozen
break
}
else
ifaction ACOBRAFROZENSHRUNK
{ state cobrafrozen
break
}
else
ifai AICOBRAJUMPENEMY
state cobrajumpstate
else
{
fall
ifai AICOBRAGETENEMY
state cobraseekstate
else
ifai AICOBRACHARGEENEMY
state cobraseekstate
else
ifai AICOBRADODGE
state cobradodgestate
else
ifai AICOBRABITE
state cobrabitestate
else
ifai AICOBRASHOOTENEMY
state cobrashootstate
else
ifai AICOBRAFLEENEMY
state cobrafleestate
else
ifai AICOBRATHINK
state cobrathinkstate
else
ifai AICOBRASHRUNK
state cobrashrunkstate
else
ifai AICOBRAGROW
state genericgrowcode
else
ifai AICOBRADYING
state cobradyingstate
else
ifai AICOBRASPIT
{
ifcount 26
{ cactor KINGCOBRA ai AICOBRAGETENEMY }
else
ifcount 18
ifrnd COBRA_ATTACKFREQ
{
shoot POISON
sound COBRA_SPIT
}
}
}
ifrnd 1
{
ifrnd 32
soundonce COBRA_ROAM2
else
ifrnd 64
soundonce COBRA_ROAM3
}
ifhitweapon
state cobrahitstate
ifai AICOBRASHRUNK break
ifp pshrunk
state badguystomphit
ends
useractor enemystayput KINGCOBRASTAYPUT COBRASTRENGTH ACOBRASTAYSTAND
ai AICOBRAGETENEMY
cactor KINGCOBRA
enda
useractor enemy KINGCOBRASPITTING COBRASTRENGTH ACOBRASTAYSTAND
fall
state cobracode
enda
useractor enemy KINGCOBRAJUMP COBRASTRENGTH ACOBRAJUMPSTAND
ai AICOBRAJUMPENEMY
cactor KINGCOBRA
enda
useractor enemy KINGCOBRA COBRASTRENGTH ACOBRASTAND
fall
state cobracode
clipdist 40
spriteflags 5242880
enda
useractor enemy KINGCOBRADEADSPRITE
fall
state checksquished
cstat 0
strength 0
ifhitweapon
{
ifwasweapon RADIUSEXPLOSION
{
state standard_jibs
sound SQUISHED
killit
}
}
enda
appendevent EVENT_LOADACTOR
ifactor KINGCOBRA
{
sizeat 40 40
cstat 1
}
else
ifactor KINGCOBRASTAYPUT
{
sizeat 40 40
cstat 1
}
else
ifactor KINGCOBRASPITTING
{
sizeat 40 40
cstat 1
}
else
ifactor KINGCOBRAJUMP
{
sizeat 40 40
cstat 1
}
else
ifactor KINGCOBRADEADSPRITE
{
sizeat 40 40
}
endevent
appendevent EVENT_RECOGSOUND
ifactor KINGCOBRA
{
set RETURN -1
sound COBRA_RECOG
}
else
ifactor KINGCOBRASPITTING
{
set RETURN -1
sound COBRA_RECOG
}
else
ifactor KINGCOBRAJUMP
{
set RETURN -1
sound COBRA_RECOG
}
endevent
#202 Posted 31 March 2019 - 03:16 PM
//
//
// PREDATOR CODE
//
//
/* Spritepal Info
0 = Firelaser
9 = Heatseeker
10 = Chaingun
11 = Expander
12 = Freezethrower
13 = Shotgun
14 = Morter
15 = RPG
16 = Shrinker
18 = Pistol
21 = Spit
22 = Wierdshot fly
-------------- */
define PRED1STRENGTH 100
define PRED2STRENGTH 200
define PRED3STRENGTH 250
define PRED4STRENGTH 400
define PRED5STRENGTH 250
define PRED6STRENGTH 400
define PRED7STRENGTH 350
define PRED8STRENGTH 200
define PRED9STRENGTH 600
define PRED10STRENGTH 250
define PRED11STRENGTH 250
define PRED12STRENGTH 250
action APREDWALK 0 4 5 1 20
action APREDRUN 0 4 5 1 8
action APREDRUN2 -6 1 5 1 5
action APREDSTAND -12 1 5 1 1
action APREDSTAYSTAND -1 1 5
action APREDSHOOT 21 1 1 1 30
action APREDPAIN 25 1 1 1 6
action APREDFROZEN 0 1 5
action APREDDYING 25 5 1 1 16
action APREDDEAD 30 1 1 1 1
action APREDGROW 25
action APREDFROZENSHRUNK 15 1 5
move PREDWALKVELS 170
move PREDRUNVELS 400
move PREDMACH1 900
move PREDSLOWVELS 150
move PREDJUMPVELS 600
move PREDSTOPPED
ai AIPREDSEEK APREDWALK PREDWALKVELS seekplayer
ai AIPREDHUNT APREDRUN PREDRUNVELS faceplayerslow
ai AIPREDSHOOT APREDSHOOT PREDSTOPPED faceplayersmart
ai AIPREDHIDE APREDWALK PREDWALKVELS seekplayer
ai AIPREDHIDDEN APREDWALK PREDMACH1 faceplayerslow
ai AIPREDSHOW APREDWALK PREDWALKVELS seekplayer
ai AIPREDSTOMP APREDWALK PREDWALKVELS faceplayer
ai AIPREDFLEE APREDRUN PREDRUNVELS fleeenemy
ai AIPREDHIT APREDPAIN PREDSTOPPED faceplayer
ai AIPREDGROW APREDGROW PREDSTOPPED faceplayer
ai AIPREDSHRUNK APREDWALK PREDSLOWVELS fleeenemy
ai AIPREDDODGE APREDRUN2 PREDJUMPVELS dodgebullet
ai AIPREDFALL APREDWALK PREDSTOPPED faceplayer
ai AIPREDDYING APREDDYING PREDSTOPPED geth // NEW!!!
state predgrowstate
ifcount 32
{
state standard_jibs
sound SQUISHED
sound PIPEBOMB_EXPLODE
hitradius 2048 60 70 80 90
spawn BLOODPOOL
spawn EXPLOSION2
spawn BURNING
killit
}
else
{
sizeto MAXXSTRETCH MAXYSTRETCH
break
}
ends
state predstompstate
ifcansee { }
ifp pshrunk
{
ifpdistl 1280
{
addphealth -1000
palfrom 63 63
state standard_pjibs
break
}
}
else
ai AIPREDSEEK
ends
state predpalshootstate
ifspritepal 22
{
eshoot COOLEXPLOSION1
eshoot COOLEXPLOSION1
setactor[RETURN].x sprite[THISACTOR].x
setactor[RETURN].y sprite[THISACTOR].y
sound WIERDSHOT_FLY
}
else
ifspritepal 21
{
shoot SPIT
shoot SPIT
sound LIZARD_SPIT
}
else
ifspritepal 18
{
shoot SHOTSPARK1
shoot SHOTSPARK1
shoot SHOTSPARK1
shoot SHOTSPARK1
sound PISTOL_FIRE3
}
else
ifspritepal 16
{
eshoot SHRINKER
setactor[RETURN].x sprite[THISACTOR].x
setactor[RETURN].y sprite[THISACTOR].y
sound SHRINKER_FIRE
}
else
ifspritepal 15
{
shoot RPG
sound RPG_SHOOT
}
else
ifspritepal 14
{
shoot MORTER
sound BOS1_ATTACK2
}
else
ifspritepal 13
{
shoot SHOTGUN
shoot SHOTGUN
shoot SHOTGUN
sound SHOTGUN_FIRE
}
else
ifspritepal 12
{
shoot FREEZEBLAST
shoot FREEZEBLAST
shoot FREEZEBLAST
shoot FREEZEBLAST
sound SOMETHINGFROZE
}
else
ifspritepal 10
nullop
else
ifspritepal 11
{
shoot GROWSPARK
shoot GROWSPARK
shoot GROWSPARK
shoot GROWSPARK
sound EXPANDERSHOOT
}
else
ifspritepal 9
{
spawn HEATSEEKER
sound RPG_SHOOT
}
else
{
shoot FIRELASER
shoot FIRELASER
sound RECO_ATTACK
}
ends
state doshoot
ifcansee
ifpdistl 2096
{
ai AIPREDSHOOT
}
else
{
ifcanshoottarget
ai AIPREDSHOOT
}
ends
state predseekstate
ifrnd 1
{
ifrnd 128
sound PREDA_ROAM
}
ifrnd 1
{
ifrnd 128
{
ai AIPREDHIDE
break
}
}
ifpdistl 1024
{
ifrnd 1
ai AIPREDHIDE
else
ifrnd 32
ai AIPREDFLEE
}
else
ifpdistl 6000
{
ifrnd 16
{
state doshoot
break
}
}
else
ifpdistl 12000
{
ifrnd 4
state doshoot
else
ifai AIPREDHUNT nullop
else
ifcansee
ai AIPREDHUNT
}
else
{
ifrnd 2
state doshoot
else
ifai AIPREDSEEK nullop
else
ai AIPREDSEEK
}
ifcansee { }
ends
state predshootstate
ifcansee { }
ifspritepal 10
{
ifcanshoottarget
{
ifcount 3
{
ifcansee
{
shoot CHAINGUN
sound CHAINGUN_FIRE
resetcount
}
}
}
ifrnd 2
{
ai AIPREDHUNT
resetcount
break
}
ifactioncount 4
{
ifrnd 200
ai AIPREDHUNT
resetactioncount
break
}
}
else
ifactioncount 3
{
ifcansee
{
ifcanshoottarget
{
state predpalshootstate
resetactioncount
ifrnd 196
ai AIPREDSEEK
}
else
ai AIPREDSEEK
}
}
ends
state predhidestate
spawn FRAMEEFFECT1
ifai AIPREDHIDDEN
{
ifcount 64
{
ai AIPREDSHOW
resetcount
}
ifcansee { }
break
}
else
{
ifcount 10
nullop
else
ifcount 9
{
cstat 2
}
ifcount 20
nullop
else
ifcount 19
{
cstat 514
}
ifcount 30
nullop
else
ifcount 29
{
resetcount
cstat 32768
ai AIPREDHIDDEN
}
}
ends
state predammostate
ifrnd 128
{
ifspritepal 22
{ spawn COOLEXPLOSION1 }
else
ifspritepal 21
{ spawn SPIT }
else
ifspritepal 18
{ ifrnd 128 spawn FIRSTGUNSPRITE else spawn AMMO }
else
ifspritepal 16
{ ifrnd 128 spawn SHRINKERSPRITE else spawn CRYSTALAMMO }
else
ifspritepal 15
{ ifrnd 128 spawn RPGSPRITE else spawn RPGAMMO }
else
ifspritepal 14
{ spawn MORTER }
else
ifspritepal 13
{ ifrnd 128 spawn SHOTGUNSPRITE else spawn SHOTGUNAMMO }
else
ifspritepal 12
{ ifrnd 128 spawn FREEZESPRITE else spawn FREEZEAMMO }
else
ifspritepal 11
{ ifrnd 128 spawn GROWSPRITE else spawn GROWAMMO }
else
ifspritepal 10
{ ifrnd 128 spawn CHAINGUNSPRITE else spawn BATTERYAMMO }
}
ends
state predshowstate
spawn FRAMEEFFECT1
ifcount 10
nullop
else
ifcount 9
{
cstat 514
}
ifcount 20
nullop
else
ifcount 19
{
cstat 2
}
ifcount 30
nullop
else
ifcount 29
{
resetcount
cstat 257
ifrnd 192
state doshoot
else
ai AIPREDSEEK
}
ends
state predfleestate
ifcansee nullop
else
ai AIPREDSEEK
ifpdistg 3000
{
ai AIPREDSEEK
}
else
ifrnd 2
ai AIPREDHIDE
ifcount 5
ai AIPREDSEEK
ifrnd 1
state doshoot
ends
state preddodgestate
ifcansee nullop
else
ai AIPREDSEEK
ifcount 5
{
resetcount
ifbulletnear
nullop
else
ai AIPREDSEEK
}
ends
state predhitstate
ifdead
{
ifwasweapon FREEZEBLAST
{
sound SOMETHINGFROZE
spritepal 1
move 0
ifai AIPREDSHRUNK action APREDFROZENSHRUNK
else action APREDFROZEN
strength 0
break
}
ifai AIPREDSHRUNK nullop
else state predammostate
ifwasweapon GROWSPARK
{
cstat 257
sound ACTOR_GROWING
addvar KILLCOUNTFIX 1
setvar ISDEADFIX 1
ai AIPREDGROW
break
}
else
ifwasweapon RPG
{
sound SQUISHED
state standard_jibs
state standard_jibs
state standard_jibs
state standard_jibs
killit
}
else
ifwasweapon RADIUSEXPLOSION
{
sound SQUISHED
state standard_jibs
state standard_jibs
state standard_jibs
state standard_jibs
killit
}
else
{
ifvarg MRESPAWN 0 { operaterespawns MRESPAWN setvar MRESPAWN 0 }
addkills 1
addvar KILLCOUNTFIX 1
setvar ISDEADFIX 1
ai AIPREDDYING
}
sound PREDA_DYING
}
else
{
sound PREDA_PAIN
state random_wall_jibs
ifai AIPREDSHRUNK break
ifwasweapon SHRINKSPARK
{
sound ACTOR_SHRINKING
ai AIPREDSHRUNK
break
}
ifwasweapon GROWSPARK
sound EXPANDERHIT
{
ifrnd 24
state predpalshootstate
else
ifrnd 12
ai AIPREDHIDE
}
}
ifactioncount 2
{
resetactioncount
ai AIPREDSEEK
}
ends
state predshrunkstate
ifcount SHRUNKDONECOUNT
{ sizeat 42 36 ai AIPREDSEEK }
else
ifcount SHRUNKCOUNT
sizeto 40 40
else
state genericshrunkcode
ends
state predfrozen
ifcount THAWTIME
{
getlastpal
ifaction APREDFROZENSHRUNK
{ ai AIPREDSHRUNK
count SHRUNKCOUNT
}
else ai AIPREDSEEK
// spritepal 22
}
else
ifcount FROZENDRIPTIME
{
ifactioncount 26
{
spawn WATERDRIP
resetactioncount
}
}
ifhitweapon
{
ifwasweapon FREEZEBLAST
{
strength 0
break
}
lotsofglass 30
ifrnd 84
spawn BLOODPOOL
sound GLASS_BREAKING
state predammostate
killit
}
ifp pfacing
ifpdistl FROZENQUICKKICKDIST
ifaction APREDFROZEN
pkick
ends
state predsetstrength
ifspritepal 0
strength PRED1STRENGTH
else
ifspritepal 9
strength PRED9STRENGTH
else
ifspritepal 10
strength PRED2STRENGTH
else
ifspritepal 11
strength PRED3STRENGTH
else
ifspritepal 12
strength PRED4STRENGTH
else
ifspritepal 13
strength PRED5STRENGTH
else
ifspritepal 14
strength PRED6STRENGTH
else
ifspritepal 15
strength PRED7STRENGTH
else
ifspritepal 16
strength PRED8STRENGTH
else
ifspritepal 18
strength PRED10STRENGTH
else
ifspritepal 21
strength PRED11STRENGTH
else
ifspritepal 22
strength PRED12STRENGTH
ends
state preddyingstate
ifaction APREDDEAD
{
strength 0
ifhitweapon
ifwasweapon RADIUSEXPLOSION
{
sound SQUISHED
state standard_jibs
state standard_jibs
state standard_jibs
state standard_jibs
killit
}
ifrespawn
ifcount RESPAWNACTORTIME
{
spawn TRANSPORTERSTAR
sizeat 40 40
cstat 257
state predsetstrength
setvar ISDEADFIX 0
ai AIPREDSEEK
ifvarn userdef[THISACTOR].player_skill 4
subvar KILLCOUNTFIX 1
}
}
else
ifai AIPREDDYING
ifactioncount 5
{
iffloordistl 8
sound THUD
state rf
strength 0
move PREDSTOPPED
action APREDDEAD
ifrnd 64
spawn BLOODPOOL
}
ends
state predcode
ifaction APREDFROZEN
{ state predfrozen
break
}
else
ifaction APREDFROZENSHRUNK
{ state predfrozen
break
}
else
{
ifhitweapon
state predhitstate
}
ifai 0
{
state predsetstrength
ifrnd 150
{
ai AIPREDHUNT
state doshoot
}
else
{
ifrnd 128
{
ai AIPREDSEEK
}
else
{
ai AIPREDHIDE
}
}
}
else
ifaction APREDDEAD
{
state preddyingstate
break
}
ifrnd 2
operate
ifai AIPREDSHRUNK
{
state predshrunkstate
break
}
ifp pdead
{
ifcansee { }
break
}
else
ifp pshrunk
{
ifai AIPREDSTOMP nullop
else
{ ai AIPREDSTOMP break }
}
ifhitweapon
{
ai AIPREDHIT
}
else
{
ifbulletnear
{
ifai AIPREDHIDE nullop
else
ifai AIPREDHIDDEN nullop
else
ifai AIPREDSHOW nullop
else
ifrnd 256
{
ai AIPREDDODGE
}
}
}
state checksquished
ifai AIPREDSEEK
state predseekstate
else
ifai AIPREDHUNT
state predseekstate
else
ifai AIPREDSHOOT
state predshootstate
else
ifai AIPREDHIDE
state predhidestate
else
ifai AIPREDHIDDEN
state predhidestate
else
ifai AIPREDSHOW
state predshowstate
else
ifai AIPREDSTOMP
state predstompstate
else
ifai AIPREDFLEE
state predfleestate
else
ifai AIPREDHIT
state predhitstate
else
ifai AIPREDGROW
state predgrowstate
else
ifai AIPREDSHRUNK
state predshrunkstate
else
ifai AIPREDDODGE
state preddodgestate
else
ifai AIPREDDYING
state preddyingstate
else
ifai AIPREDSHRUNK break
ifp pshrunk
state predstompstate
ends
useractor enemystayput PREDATORSTAYPUT PRED1STRENGTH APREDSTAYSTAND
ai AIPREDSEEK
cactor PREDATOR
enda
useractor enemy PREDATOR PRED1STRENGTH APREDSTAND
fall
state predcode
clipdist 40
spriteflags 5242880
enda
useractor enemy PREDATORDEADSPRITE
state checksquished
cstat 0
strength 0
ifhitweapon
{
ifwasweapon RADIUSEXPLOSION
{ state standard_jibs
state standard_jibs
state standard_jibs
state standard_jibs
sound SQUISHED
killit
}
}
enda
appendevent EVENT_LOADACTOR
ifactor PREDATOR
{
sizeat 42 36
cstat 1
}
else
ifactor PREDATORSTAYPUT
{
sizeat 42 36
cstat 1
}
ifactor PREDATORDEADSPRITE // enemy corpse
{
sizeat 42 36
}
endevent
appendevent EVENT_RECOGSOUND
ifactor PREDATOR
{
set RETURN -1
sound PREDA_RECO
}
endevent
onevent EVENT_GAME // corrected jibs color
{ switch sprite[THISACTOR].picnum
case JIBS1
case JIBS2
case JIBS3
case JIBS4
case JIBS5
case JIBS6
ifspritepal 9
ifspawnedby PREDATOR
setactor[THISACTOR].pal 0
else
ifspritepal 9
ifspawnedby PREDATORSTAYPUT
setactor[THISACTOR].pal 0
else
ifspritepal 10
ifspawnedby PREDATOR
setactor[THISACTOR].pal 0
else
ifspritepal 10
ifspawnedby PREDATORSTAYPUT
setactor[THISACTOR].pal 0
else
ifspritepal 11
ifspawnedby PREDATOR
setactor[THISACTOR].pal 0
else
ifspritepal 11
ifspawnedby PREDATORSTAYPUT
setactor[THISACTOR].pal 0
else
ifspritepal 12
ifspawnedby PREDATOR
setactor[THISACTOR].pal 0
else
ifspritepal 12
ifspawnedby PREDATORSTAYPUT
setactor[THISACTOR].pal 0
else
ifspritepal 13
ifspawnedby PREDATOR
setactor[THISACTOR].pal 0
else
ifspritepal 13
ifspawnedby PREDATORSTAYPUT
setactor[THISACTOR].pal 0
else
ifspritepal 14
ifspawnedby PREDATOR
setactor[THISACTOR].pal 0
else
ifspritepal 14
ifspawnedby PREDATORSTAYPUT
setactor[THISACTOR].pal 0
else
ifspritepal 15
ifspawnedby PREDATOR
setactor[THISACTOR].pal 0
else
ifspritepal 15
ifspawnedby PREDATORSTAYPUT
setactor[THISACTOR].pal 0
else
ifspritepal 16
ifspawnedby PREDATOR
setactor[THISACTOR].pal 0
else
ifspritepal 16
ifspawnedby PREDATORSTAYPUT
setactor[THISACTOR].pal 0
else
ifspritepal 18
ifspawnedby PREDATOR
setactor[THISACTOR].pal 0
else
ifspritepal 18
ifspawnedby PREDATORSTAYPUT
setactor[THISACTOR].pal 0
else
ifspritepal 21
ifspawnedby PREDATOR
setactor[THISACTOR].pal 0
else
ifspritepal 21
ifspawnedby PREDATORSTAYPUT
setactor[THISACTOR].pal 0
else
ifspritepal 22
ifspawnedby PREDATOR
setactor[THISACTOR].pal 0
else
ifspritepal 22
ifspawnedby PREDATORSTAYPUT
setactor[THISACTOR].pal 0
break
endswitch
}
endevent
#203 Posted 31 March 2019 - 03:17 PM
//
//
// ASSAULT COMMANDER CARI CODE
//
//
action ACOMMCARISTAND 0 1 5
action ACOMMCARISTAYSTAND -1 1 5
action ACOMMCARIBREETH 0 3 5 1 40
action ACOMMCARIFROZEN 0 1 5
action ACOMMCARISPIN -5 1 5 1 12
action ACOMMCARIGET 0 3 5 1 30
action ACOMMCARISHOOT 19 1 5 1 35
action ACOMMCARIABOUTTOSHOOT 19 1 5 1 30
action ACOMMCARIDYING 30 8 1 1 12
action ACOMMCARIDEAD 38 1 1 1 1
action ACOMMCARIFROZENSHRUNK 0 1 5
action ACOMMCARIGROW 29
move COMMCARIGETUPVELS 128 -64
move COMMCARIGETVELS 128 64
move COMMCARISLOW 64 24
move COMMCARISTOPPED
ai AICOMMCARIWAIT ACOMMCARIBREETH COMMCARISTOPPED faceplayerslow
ai AICOMMCARIGET ACOMMCARIGET COMMCARIGETVELS seekplayer
ai AICOMMCARISHOOT ACOMMCARISHOOT COMMCARISTOPPED faceplayerslow
ai AICOMMCARIABOUTTOSHOOT ACOMMCARIABOUTTOSHOOT COMMCARISTOPPED faceplayerslow
ai AICOMMCARISPIN ACOMMCARISPIN COMMCARIGETVELS spin
ai AICOMMCARIDYING ACOMMCARIDYING COMMCARISTOPPED geth
ai AICOMMCARISHRUNK ACOMMCARIGET COMMCARISLOW furthestdir
ai AICOMMCARIGROW ACOMMCARIGROW COMMCARISTOPPED furthestdir
state commcarihitstate
ifhitweapon
{
ifdead
{
ifwasweapon FREEZEBLAST
{
sound SOMETHINGFROZE
spritepal 1
move 0
ifai AICOMMCARISHRUNK action ACOMMCARIFROZENSHRUNK
else action ACOMMCARIFROZEN
strength 0
break
}
else ifwasweapon GROWSPARK
{
cstat 257
sound ACTOR_GROWING
ai AICOMMCARIGROW
addvar KILLCOUNTFIX 1
setvar ISDEADFIX 1
break
}
else ifwasweapon RADIUSEXPLOSION
{
spawn BLOODPOOL
sound SQUISHED
state standard_jibs
killit
}
ifai AICOMMCARISHRUNK nullop
else { }
ifwasweapon RPG
{
sound SQUISHED
spawn BLOODPOOL
state standard_jibs
killit
}
ifvarg MRESPAWN 0 { operaterespawns MRESPAWN setvar MRESPAWN 0 }
guts JIBS6 2
sound COMM_DYING
ai AICOMMCARIDYING
ifrnd 128 cstator 4
addvar KILLCOUNTFIX 1
addkills 1
setvar ISDEADFIX 1
}
else
{
soundonce COMM_PAIN
ifwasweapon GROWSPARK
sound EXPANDERHIT
else
ifwasweapon SHRINKSPARK
{ ifai AICOMMCARISHRUNK break
sound ACTOR_SHRINKING
ai AICOMMCARISHRUNK
break
}
else
ifrnd 24
ai AICOMMCARIABOUTTOSHOOT
guts JIBS6 2
}
}
ends
state commcarifrozen
fall
ifcount THAWTIME
{
getlastpal
ifaction ACOMMCARIFROZENSHRUNK
{ ai AICOMMCARISHRUNK
count SHRUNKCOUNT
}
else ai AICOMMCARIWAIT
}
else
ifcount FROZENDRIPTIME
{
ifactioncount 26
{
spawn WATERDRIP
resetactioncount
}
}
ifhitweapon
{
ifwasweapon FREEZEBLAST
{
strength 0
break
}
ifrnd 84
spawn BLOODPOOL
lotsofglass 30
sound GLASS_BREAKING
killit
}
ifp pfacing
ifpdistl FROZENQUICKKICKDIST
ifaction ACOMMCARIFROZEN
pkick
ends
useractor enemystayput COMMANDERCARISTAYPUT COMMANDERSTRENGTH ACOMMCARISTAYSTAND
cactor COMMANDERCARI
ai AICOMMCARIABOUTTOSHOOT
enda
useractor enemy COMMANDERCARI COMMANDERSTRENGTH ACOMMCARISTAND
state checksquished
ifaction ACOMMCARIFROZEN
{ state commcarifrozen
break
}
ifaction ACOMMCARIFROZENSHRUNK
{ state commcarifrozen
break
}
ifai 0
ai AICOMMCARISHOOT
else
ifai AICOMMCARIWAIT
{
ifcount 20
{
ifcansee
{
ifcanshoottarget
{
ifrnd 96
ai AICOMMCARIGET
else
ai AICOMMCARIABOUTTOSHOOT
}
}
else
ai AICOMMCARIGET
}
}
else
ifai AICOMMCARIABOUTTOSHOOT
{
ifactioncount 2
{
ifcansee
ai AICOMMCARISHOOT
else
{
ai AICOMMCARIGET
break
}
}
ifrnd 32 soundonce COMM_ATTACK
}
else
ifai AICOMMCARISHOOT
{
ifcanshoottarget
{
ifcount 24
ifrnd 16
ai AICOMMCARIWAIT
ifactioncount 2
{
shoot COCOANUT
sound DRAGONSHOOTING
resetactioncount
}
}
else
ai AICOMMCARIGET
}
else
ifai AICOMMCARISHRUNK
{
ifcount SHRUNKDONECOUNT
{ sizeat 40 40 ai AICOMMCARIGET }
else
ifcount SHRUNKCOUNT
sizeto 48 40
else
state genericshrunkcode
}
else
ifai AICOMMCARIGROW
state genericgrowcode
else
ifai AICOMMCARIGET
{
ifnotmoving
ifrnd 4
operate
ifpdistl 1024
ifp palive
{
sound COMM_SPIN
ai AICOMMCARISPIN
break
}
ifcansee ifp palive
{
ifp phigher
move COMMCARIGETUPVELS getv geth faceplayer
else
move COMMCARIGETVELS getv geth faceplayer
}
ifactioncount 8
ifrnd 2
ai AICOMMCARIABOUTTOSHOOT
}
else
ifai AICOMMCARISPIN
{
soundonce COMM_SPIN
ifcount 16
{
ifpdistl 1280
{ ifp palive
{ getplayer[THISACTOR].i TEMPFIX1
getactor[TEMPFIX1].extra TEMPFIX2
setvar TEMPFIX1 CAPTSPINNINGPLAYER
mulvar TEMPFIX1 -1 addvar TEMPFIX1 1
ifvarvarl TEMPFIX2 TEMPFIX1
setplayer[THISACTOR].wackedbyactor THISACTOR
addphealth CAPTSPINNINGPLAYER
globalsound DUKE_GRUNT
palfrom 32 16
}
resetcount
}
else
ifpdistg 2300
ai AICOMMCARIWAIT
}
ifactioncount 52
ai AICOMMCARIWAIT
ifnotmoving
ifrnd 32
operate
}
ifai AICOMMCARIDYING
{
fall
strength 0
ifhitweapon
ifwasweapon RADIUSEXPLOSION
{
sound SQUISHED
spawn BLOODPOOL
state standard_jibs
killit
}
ifaction ACOMMCARIDYING
{ ifactioncount 8
{
iffloordistl 8
sound THUD
state rf_unblock
action ACOMMCARIDEAD
}
ifrespawn
ifcount RESPAWNACTORTIME
{
spawn TRANSPORTERSTAR
sizeat 40 40
cstat 257
strength COMMANDERSTRENGTH
setvar ISDEADFIX 0
ai AICOMMCARIGET
ifvarn userdef[THISACTOR].player_skill 4
subvar KILLCOUNTFIX 1
}
}
}
else
{
ifrnd 2
soundonce COMM_ROAM
ifvarg sprite[THISACTOR].htextra 0
ifvarvare sprite[THISACTOR].htowner THISACTOR
setactor[THISACTOR].htextra -1
state commcarihitstate
spriteflags SFLAG_HURTSPAWNBLOOD
}
spriteflags SFLAG_NODAMAGEPUSH
enda
useractor enemy COMMANDERCARIDEADSPRITE
fall
state checksquished
cstat 0
strength 0
ifhitweapon
{
ifwasweapon RADIUSEXPLOSION
{
state standard_jibs
sound SQUISHED
killit
}
}
enda
appendevent EVENT_LOADACTOR
ifactor COMMANDERCARI
{
sizeat 40 40
cstat 1
}
ifactor COMMANDERCARISTAYPUT
{
sizeat 40 40
cstat 1
}
ifactor COMMANDERCARIDEADSPRITE
{
sizeat 40 40
}
endevent
appendevent EVENT_RECOGSOUND
ifactor COMMANDERCARI
{
set RETURN -1
sound COMM_RECOG
}
endevent
#204 Posted 31 March 2019 - 03:25 PM
Firefly_Trooper, on 31 March 2019 - 03:15 PM, said:
Click 'Reply' to see how it's done.
#205 Posted 31 March 2019 - 04:10 PM
#206 Posted 31 March 2019 - 05:07 PM
ifp phigher
move COMMCARIGETUPVELS getv geth faceplayer
else
move COMMCARIGETVELS getv geth faceplayer
This is bad code in the AICOMMCARIGET block because it will constantly reset the actor's move, never giving it a chance to accelerate. When you copy and paste code from one of the original enemies with hardcoding (in this case COMMANDER), you can't assume it will work the same in a useractor.
Anyway, that's my best and only guess. The fix should be obvious.
#207 Posted 01 April 2019 - 09:21 AM
For the problem of King Cobra and Predator, you also have an idea?
#208 Posted 01 April 2019 - 09:50 AM
ifcansee ifp phigher
{
ifp palive
move COMMCARIGETUPVELS getv geth faceplayer
else
move COMMCARIGETVELS getv geth faceplayerOn the other hand, when the player is dead, he continues shooting shots.
#209 Posted 01 April 2019 - 10:00 AM
ifcansee ifp phigher
{
ifp palive
move COMMCARIGETUPVELS getv geth faceplayer
else
move COMMCARIGETVELS getv geth faceplayer
}
{ ifp pdead break }
ifactioncount 8
ifrnd 2
ai AICOMMCARIABOUTTOSHOOT
}
#210 Posted 01 April 2019 - 10:17 AM
In the Commander's original code, the "ifp phigher" function was in the same place and worked very well.
There, it is about reversing the two values and it works.

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


