Talk:Enable and fix minibosses: Difference between revisions

From EDukeWiki
Jump to navigation Jump to search
Fox (talk | contribs)
 
(11 intermediate revisions by 2 users not shown)
Line 1: Line 1:
== I will change all ==
== I will change all ==


I have made codes that works totally correct in them. =)
I have made codes that works totally correct in them. [[Image:Smile.gif]]
In fact, your code is basic, but not full-working.
In fact, your code is basic, but not full-working.


Line 16: Line 16:
Edit: Shouldn't we too disable BOSS3 from going in sector lotag 1?
Edit: Shouldn't we too disable BOSS3 from going in sector lotag 1?


----
-[[User:Ilovefoxes|Ilovefoxes]]
 
== I am offended. ==
 
Frankly, you butchered this tutorial. I cannot understand the tutorial for what it is. Remember, it is supposed to be easy. For now, '''''I''''' will work on a fix that will not waste time with seperate actors. All you have to do to is integrate an "ifspritepal 0 nullop else { <insert miniboss-only code here> }" clause into the code.
Frankly, you butchered this tutorial. I cannot understand the tutorial for what it is. Remember, it is supposed to be easy. For now, '''''I''''' will work on a fix that will not waste time with seperate actors. All you have to do to is integrate an "ifspritepal 0 nullop else { <insert miniboss-only code here> }" clause into the code.


Line 55: Line 58:
6 - BOSS4 should have a different speed in pal.
6 - BOSS4 should have a different speed in pal.


== Sorry I got angry. ==
-[[User:Ilovefoxes|Ilovefoxes]]
 
== I am sorry I got angry. ==


1 - The same thing with state checkboss2hitstate and state checkboss2hitstate. The death sound.
1 - The same thing with state checkboss2hitstate and state checkboss2hitstate. The death sound.


2 - I will fix that soon.
2 - I thought that the opening quote was triggered by a [[sector]] effect… In any case, I will fix that soon.


3 - I will fix that soon.
3 - I will fix that soon.
Line 73: Line 78:
Cheers,<br />
Cheers,<br />
[[User:Hendricks 266|Hendricks266]]
[[User:Hendricks 266|Hendricks266]]
== So far… ==
I have edited the tutorial, and now all that is left to complete:
#Fixing BOSS3's freezing effect
#Adding the actors "BOSS1SHOOT" and "BOSS1LOB"  (Note: I have done this already, but I need to fix the code.)
#Adding a stayput for BOSS2 and BOSS3 (Note: See note that is above.)
#Removing BOSS2's and BOSS3's opening quotes (if they are there…)
#Making BOSS4 slower when shrunk
…but, other than that, I think that the tutorial is mostly finished.
If you are going to change my tutorial, please don't completely change it like you did before. I put a lot of effort into it. I know you did too, but yours "went against the grain", as so to speak. I did make a backup of yours, and I did add some of the better parts (like the clarification of the miniboss strengths).
Also, please make sure that your spelling and grammar are correct, and that you are concise and to-the-point.
If we work together, I bet we could finish it in two (2) days!
Cheers,<br />
[[User:Hendricks 266|Hendricks266]] @ 17:09, 8 November 2006 (PST)
== Further Discussion ==
There is an extended way to fix Queen pallete without using gamevars, but it is a big code. What should we use?
-[[User:Ilovefoxes|Ilovefoxes]]
----
Gamevars.
Can you provide some code for fixing BOSS3's freezing effect and put it here, '''''not''''' in the tutorial itself? I will look it over, check your spelling and grammar, and expand you documentation. It would help me very much. [[Image:Wink.gif]]
Thank you for cooperating so well! [[Image:Smile.gif]]
Also, could you put a page-width line (Syntax: <code><nowiki>----</nowiki></code>) between my messages and your messages from now on?
Cheers,<br />
[[User:Hendricks 266|Hendricks266]] @ 16:34, 9 November 2006 (PST)
----
I will show you the codes I have made, to work perfectly correct. Note the bold parts (added codes). If you could work on them, would be good. =)
Just remeber that it was made to be entire full-working mini-boss like Battlelord. Sample:
ai AIBOSS4SEEKENEMY ABOSS4WALK BOSS4WALKVELS seekplayer
state checkpalboss4seekstate
  ai AIBOSS4SEEKENEMY
    move PALBOSS4WALKVELS seekplayer
ends
You ask: Why did hell you set "BOSS4WALKVELS" and after put "move PALBOSS4WALKVELS"? At Battlelord, some times (after frozen, for what I remeber), the mini-boss move at the big-boss speed because is just set "ai AIBOSS4SEEKENEMY" instead "state checkpalboss4seekstate", and it is a detail, but the best to do with the mini-bosses and the hard-coded Queen, is make them works like Battlelord.
Defs
define BOSS2 2710
<b>define BOSS2STAYPUT 2711</b>
define BOSS3 2760
<b>define BOSS3STAYPUT 2761</b>
User
define BOSS1STRENGTH            4500
define BOSS1PALSTRENGTH        1000
define BOSS2STRENGTH            4500
<b>define BOSS2PALSTRENGTH        1000</b>
define BOSS3STRENGTH            4500
<b>define BOSS3PALSTRENGTH        1000</b>
define BOSS4STRENGTH            6000
<b>define BOSS4PALSTRENGTH        1333</b>
BOSS2 and BOSS3
action ABOSS2WALK        0  4  5  1  30
action ABOSS2FROZEN        0  1  5
action ABOSS2RUN        0  4  5  1  15
action ABOSS2SHOOT        20 2  5  1  15
action ABOSS2LOB        30 2  5  1  105
action ABOSS2DYING        40 8  1  1  35
action BOSS2FLINTCH      40 1  1  1  1
action ABOSS2DEAD        48
move PALBOSS2SHRUNKRUNVELS 32
move PALBOSS2RUNVELS 84
move BOSS2WALKVELS 192
move BOSS2RUNVELS 256
move BOSS2STOPPED
ai AIBOSS2SEEKENEMY ABOSS2WALK BOSS2WALKVELS seekplayer
ai AIBOSS2RUNENEMY ABOSS2RUN BOSS2RUNVELS faceplayer
ai AIBOSS2SHOOTENEMY ABOSS2SHOOT BOSS2STOPPED faceplayer
ai AIBOSS2LOBBED ABOSS2LOB BOSS2STOPPED faceplayer
ai AIBOSS2DYING ABOSS2DYING BOSS2STOPPED faceplayer
ai AIBOSS2PALSHRINK ABOSS2WALK PALBOSS2SHRUNKRUNVELS furthestdir
state boss2palshrunkstate
  ifcount SHRUNKDONECOUNT
  {
    cstat 257
    ai AITROOPSEEKENEMY
  }
  else
    ifcount SHRUNKCOUNT
      sizeto 40 40
  else
    state genericshrunkcode
ends
state checkboss2seekstate
  ai AIBOSS2SEEKENEMY
  ifspritepal 0 nullop
  else  // a fake way of doing a ifspritepal NOT.
    move PALBOSS2RUNVELS seekplayer
ends
state boss2runenemystate
  ifcansee
  {
    ifactioncount 3
    {
      ifcanshoottarget
      {
        resetactioncount
        sound BOS1_WALK
      }
      else
        ai AIBOSS2SEEKENEMY
    }
    ifcount 48
      ifrnd 2
    {
      ifp palive
      {
        sound BOS2_ATTACK
        ai AIBOSS2SHOOTENEMY
      }
      break
    }
  }
  else
    ai AIBOSS2SEEKENEMY
ends
state boss2seekenemystate
  ifrnd 2
    soundonce BOS2_ROAM
  else
    ifactioncount 3
  {
    resetactioncount
    sound BOS1_WALK
  }
  ifcansee
    ifcount 32
      ifp palive
        ifrnd 48
          ifcanshoottarget
  {
    ifrnd 64
      ifpdistg 4096
    {
      ai AIBOSS2RUNENEMY
      ifspritepal 0 nullop
      else
        move PALBOSS2RUNVELS seekplayer
      break
    }
    ifpdistl 10240
    {
      ifrnd 128
      {
        sound BOS2_ATTACK
        ai AIBOSS2LOBBED
      }
    }
    else
    {
      sound BOS2_ATTACK
      ai AIBOSS2SHOOTENEMY
    }
  }
ends
state boss2dyingstate
  ifaction ABOSS2DEAD
  {
    ifspritepal 0
      break
    ifrespawn
      ifcount RESPAWNACTORTIME
    {
      spawn TRANSPORTERSTAR
      cstat 257
      strength PIGCOPSTRENGTH
      state checkboss2seekstate
    }
    else
    {
      strength 0
      ifhitweapon
        ifwasweapon RADIUSEXPLOSION
      {
        sound SQUISHED
        state standard_jibs
        killit
      }
      break
    }
  }
  ifactioncount 8
  {
    iffloordistl 8
      sound THUD
    action ABOSS2DEAD
    cstat 0
    ifspritepal 0
      endofgame 52
  }
ends
state boss2lobbedstate
  ifcansee
  {
    ifactioncount 2
      resetactioncount
    else
      ifactioncount 1
    {
      ifrnd 128
        shoot COOLEXPLOSION1
    }
    else
      ifcount 64
        ifrnd 16
          state checkboss2seekstate
  }
  else
    state checkboss2seekstate
ends
state boss2shootenemy
  ifcount 72
    state checkboss2seekstate
  else
    ifaction ABOSS2SHOOT
      ifactioncount 2
  {
    shoot RPG
    resetactioncount
  }
ends
state checkboss2hitstate
  ifrnd 2
    spawn BLOODPOOL
  ifdead
  {
    ifspritepal 0
      globalsound DUKE_TALKTOBOSSFALL
    else
    {
      ifrnd 64
        globalsound DUKE_TALKTOBOSSFALL
      ifwasweapon FREEZEBLAST
      {
        sound SOMETHINGFROZE
        spritepal 1
        move 0
        action ABOSS2FROZEN
        strength 0
        break
      }
    }
    sound BOS2_DYING
    addkills 1
    ai AIBOSS2DYING
  }
  else
  {
    ifrnd 144
    {
      ifrnd 32
      {
        action BOSS2FLINTCH
        move 0
      }
      else
      {
        sound BOS2_ATTACK
        ai AIBOSS2SHOOTENEMY
      }
    }
    ifspritepal 0 nullop
    else
      ifwasweapon SHRINKSPARK
    {
      sound ACTOR_SHRINKING
      ai AIBOSS2PALSHRINK
      break
    }
    soundonce BOS2_PAIN
    debris SCRAP1 1
    guts JIBS6 1
  }
ends
state boss2code
  ifaction ABOSS2FROZEN
  {
    ifcount THAWTIME
    {
      ai AIBOSS2SEEKENEMY
        spritepal 21
    }
    else
      ifcount FROZENDRIPTIME
    {
      ifactioncount 26
      {
        spawn WATERDRIP
        resetactioncount
      }
    }
    ifhitweapon
    {
      ifwasweapon FREEZEBLAST
      {
        strength 0
        break
      }
      addkills 1
      lotsofglass 30
      sound GLASS_BREAKING
      ifrnd 84 spawn BLOODPOOL
      killit
    }
    ifp pfacing
      ifpdistl FROZENQUICKKICKDIST
        pkick
    break
  }
  ifai 0
  {
    ifspritepal 0
      ai AIBOSS2RUNENEMY
    else
    {
      strength <b>BOSS2PALSTRENGTH
      stopallsounds
      sound BOS2_RECOG</b>
      sound BOS2_ATTACK ai AIBOSS2SHOOTENEMY
      <b>clipdist 16</b>
    }
  }
  else
    ifaction BOSS2FLINTCH
  {
    ifactioncount 3
      ai AIBOSS2SEEKENEMY
  }
  else
    ifai AIBOSS2SEEKENEMY
      state boss2seekenemystate
  else
    ifai AIBOSS2RUNENEMY
      state boss2runenemystate
  else
    ifai AIBOSS2SHOOTENEMY
      state boss2shootenemy
  else
    ifai AIBOSS2LOBBED
      state boss2lobbedstate
  else
    ifai AIBOSS2PALSHRINK
      state boss2palshrunkstate
  ifai AIBOSS2DYING
    state boss2dyingstate
  else
  {
    ifhitweapon state checkboss2hitstate
    else
      ifp palive
        ifspritepal 0 ifpdistl
          1280
    {
      addphealth -1000
      palfrom 63 63
    }
  }
ends
<b>useractor enemystayput BOSS2STAYPUT BOSS2STRENGTH
  cactor BOSS2
  ifaction 0
  {
    ifspritepal 0
      sizeat 80 80
    else
      sizeat 40 40
    cstat 257
    action ANULLACTION
  }
enda</b>
actor BOSS2 BOSS2STRENGTH fall state boss2code enda
action ABOSS3WALK        0  4  5  1  30
action ABOSS3FROZEN        0  1  5
action ABOSS3RUN        0  4  5  1  15
action ABOSS3LOB        20 4  5  1  50
action ABOSS3LOBBING      30 2  5  1  15
action ABOSS3DYING        40 8  1  1  20
action BOSS3FLINTCH      40 1  1  1  1
action ABOSS3DEAD        48
move PALBOSS3SHRUNKRUNVELS 32
move PALBOSS3RUNVELS 84
move BOSS3WALKVELS 208
move BOSS3RUNVELS 270
move BOSS3STOPPED
ai AIBOSS3SEEKENEMY ABOSS3WALK BOSS3WALKVELS seekplayer
ai AIBOSS3RUNENEMY ABOSS3RUN BOSS3RUNVELS faceplayerslow
ai AIBOSS3LOBENEMY ABOSS3LOB BOSS3STOPPED faceplayer
ai AIBOSS3DYING ABOSS3DYING BOSS3STOPPED faceplayer
ai AIBOSS3PALSHRINK ABOSS3WALK PALBOSS3SHRUNKRUNVELS <b>furthestdir</b>
state boss3palshrunkstate
  ifcount SHRUNKDONECOUNT
    ai AITROOPSEEKENEMY
  else
    ifcount SHRUNKCOUNT
      sizeto 40 40
  else
    state genericshrunkcode
ends
state checkboss3seekstate
  ai AIBOSS3SEEKENEMY
  ifspritepal 0 nullop
  else  // a fake way of doing a ifspritepal NOT.
    move PALBOSS3RUNVELS seekplayer
ends
state boss3runenemystate
  ifcansee
  {
    ifactioncount 3
    {
      ifcanshoottarget
      {
        resetactioncount
        sound BOS1_WALK
      }
      else
        ai AIBOSS3SEEKENEMY
    }
  }
  else
    ai AIBOSS3SEEKENEMY
ends
state boss3seekenemystate
  ifrnd 2
    soundonce BOS3_ROAM
  else
    ifactioncount 3
    {
      resetactioncount
      sound BOS1_WALK
    }
  ifcansee
    ifcount 32
      ifrnd 48
        ifcanshoottarget
  {
    ifrnd 64
      ifpdistg 4096
      {
        ai AIBOSS3RUNENEMY
        ifspritepal 0
          break
        move PALBOSS3RUNVELS seekplayer
        break
      }
    ifp palive
      ai AIBOSS3LOBENEMY
  }
ends
state boss3dyingstate
  ifaction ABOSS3DEAD
  {
    ifspritepal 0
      break
    ifrespawn
      ifcount RESPAWNACTORTIME
    {
      spawn TRANSPORTERSTAR
      cstat 257
      strength PIGCOPSTRENGTH
      state checkboss3seekstate
    }
    else
    {
      strength 0
      ifhitweapon
        ifwasweapon RADIUSEXPLOSION
      {
        sound SQUISHED
        state standard_jibs
        killit
      }
      break
    }
  }
  ifactioncount 8
  {
    iffloordistl 8
      sound THUD
    action ABOSS3DEAD
    cstat 0
    ifspritepal 0
    endofgame 52
  }
ends
state boss3lobbedstate
  ifcansee
  {
    ifaction ABOSS3LOBBING
      ifactioncount 2
    {
      shoot RPG
      resetactioncount
      ifrnd 8
        ai AIBOSS3SEEKENEMY
    }
    ifactioncount 3
    {
      action ABOSS3LOBBING
      resetcount
    }
  }
  else
    state checkboss3seekstate
ends
state checkboss3hitstate
  ifrnd 2
    spawn BLOODPOOL
  ifdead
  {
    ifspritepal 0
      globalsound DUKE_TALKTOBOSSFALL
    else
    {
      ifrnd 64
        globalsound DUKE_TALKTOBOSSFALL
      ifwasweapon FREEZEBLAST
      {
        sound SOMETHINGFROZE
        spritepal 1
        move 0
        action ABOSS3FROZEN
        strength 0
        break
      }
    }
    addkills 1
    ai AIBOSS3DYING
    sound BOS3_DYING
    sound JIBBED_ACTOR9
  }
  else
  {
    ifrnd 32
    {
      action BOSS3FLINTCH
      move 0
    }
    ifspritepal 0 nullop
    else
      ifwasweapon SHRINKSPARK
    {
      sound ACTOR_SHRINKING
      ai AIBOSS3PALSHRINK
      break
    }
    soundonce BOS3_PAIN
    debris SCRAP1 1
    guts JIBS6 1
  }
ends
state boss3code
  ifaction ABOSS3FROZEN
<b>  {
    ifcount THAWTIME
    {
      ai AIBOSS3SEEKENEMY
      spritepal 21
    }
    else
      ifcount FROZENDRIPTIME
    {
      ifactioncount 26
      {
        spawn WATERDRIP
        resetactioncount
      }
    }</b>
    ifhitweapon
    {
      ifwasweapon FREEZEBLAST
      {
        strength 0
        break
      }
      addkills 1
      lotsofglass 30
      ifrnd 84
        spawn BLOODPOOL
      sound GLASS_BREAKING
      killit
    }
    ifp pfacing
      ifpdistl FROZENQUICKKICKDIST
        pkick
    break
  }
  ifai 0
  {
    ifspritepal 0
      ai AIBOSS3RUNENEMY
    else
    {
      strength <b>BOSS3PALSTRENGTH
      stopallsounds
      sound BOS3_RECOG</b>
      ai AIBOSS3LOBENEMY
      <b>clipdist 16</b>
    }
  }
  else
    ifaction BOSS3FLINTCH
    {
      ifactioncount 3
      ai AIBOSS3SEEKENEMY
    }
  else
    ifai AIBOSS3SEEKENEMY
      state boss3seekenemystate
  else
    ifai AIBOSS3RUNENEMY
      state boss3runenemystate
  else
    ifai AIBOSS3LOBENEMY
      state boss3lobbedstate
  else
    ifai AIBOSS3PALSHRINK
      state boss3palshrunkstate
  ifai AIBOSS3DYING
    state boss3dyingstate
  else
  {
    ifhitweapon
      state checkboss3hitstate
    else
      ifp palive
        ifspritepal 0
          ifpdistl 1280
      {
        addphealth -1000
        palfrom 63 63
      }
  }
ends
<b>useractor enemystayput BOSS3STAYPUT BOSS3STRENGTH
  cactor BOSS3
  ifaction 0
  {
    ifspritepal 0
      sizeat 80 80
    else
      sizeat 40 40
    cstat 257
  }
enda</b>
actor BOSS3 BOSS3STRENGTH fall state boss3code enda
BOSS4
action ABOSS4WALK          0 4  5  1  30
<b>action ABOSS4FROZEN        0 1  5</b>
action ABOSS4DYING        40 9  1  1  20
action ABOSS4ABOUTTOSHOOT 20 1  5  1  40
action ABOSS4SHOOT        25 2  5  1  10
action ABOSS4LAYIT        50 3  5  1  120
action BOSS4FLINTCH      40 1  1  1  1
action ABOSS4DEAD        49
<b>move PALBOSS4WALKVELS 48</b>
move BOSS4WALKVELS 128
move BOSS4STOPPED
<b>ai AIBOSS4SEEKENEMY ABOSS4WALK BOSS4WALKVELS seekplayer</b>
ai AIBOSS4LAYEGGS ABOSS4WALK BOSS4WALKVELS randomangle geth
ai AIBOSS4SHOOT ABOSS4ABOUTTOSHOOT BOSS4STOPPED faceplayer
ai AIBOSS4DYING ABOSS4DYING BOSS4STOPPED faceplayer
state boss4shootstate
  ifaction ABOSS4ABOUTTOSHOOT
    ifactioncount 3
      action ABOSS4SHOOT
  ifaction ABOSS4SHOOT
  {
    ifcount 48
    {
      ifrnd 4
        ai AIBOSS4LAYEGGS
    }
    ifcount 26
      ifrnd 32
    {
      ifrnd 128
      {
        sound SHORT_CIRCUIT
        addphealth -2
      }
      else
      {
        sound DUKE_GRUNT
        addphealth -1
      }
      palfrom 32 32 0 0
    }
  }
ends
state boss4layeggs
  ifrnd 2
    sound BOS4_ROAM
  ifaction ABOSS4LAYIT
  {
    ifactioncount 3
      ifcount 32
    {
      ai AIBOSS4LAYEGGS
      ifrnd 32
        move BOSS4WALKVELS furthestdir geth
      spawn NEWBEASTHANG
    }
  }
  else
    ifcount 64
      ifrnd 4
  {
    move 0
    ifrnd 88
    {
      action ABOSS4LAYIT
      sound BOS4_LAY
    }
    else
      ifp palive
        ifcansee
    {
      ai AIBOSS4SHOOT
      sound BOS4_ATTACK
    }
  }
ends
state boss4dyingstate
  ifaction ABOSS4DEAD
    break
  else
    ifactioncount 9
  {
    iffloordistl 8
      sound THUD
    endofgame 52
    action ABOSS4DEAD
    cstat 0
  }
ends
state checkboss4hitstate
  ifrnd 2
    spawn BLOODPOOL
  ifdead
  {
    globalsound DUKE_TALKTOBOSSFALL
    addkills 1
    ai AIBOSS4DYING
    sound BOS4_DYING
    sound BOSS4_DEADSPEECH
  }
  else
  {
    soundonce BOS4_PAIN
    debris SCRAP1 1
    guts JIBS6 1
    ifaction ABOSS4LAYIT
      break
    ifrnd 16
    {
      action BOSS4FLINTCH
      move 0
    }
  }
ends
state boss4code
  ifai 0
    ai AIBOSS4LAYEGGS
  else
    ifaction BOSS4FLINTCH
    {
      ifactioncount 3
        ai AIBOSS4LAYEGGS
    }
  else
    ifai AIBOSS4LAYEGGS
      state boss4layeggs
  else
    ifai AIBOSS4SHOOT
      state boss4shootstate
  ifai AIBOSS4DYING
    state boss4dyingstate
  else
  {
    ifhitweapon
      state checkboss4hitstate
    else
      ifp palive
        ifpdistl 1280
      {
        addphealth -1000
        palfrom 63 63
      }
  }
ends
<b>state checkpalboss4seekstate
  ai AIBOSS4SEEKENEMY
    move PALBOSS4WALKVELS seekplayer
ends
state palboss4seekenemystate
  ifrnd 2
    sound BOS4_ROAM
    ifcount 64
      ifrnd 4
  {
    move 0
      ifp palive
        ifcansee
    {
      ai AIBOSS4SHOOT
      sound BOS4_ATTACK
    }
  }
ends
state palboss4shootstate
  ifaction ABOSS4ABOUTTOSHOOT
    ifactioncount 3
      action ABOSS4SHOOT
  ifaction ABOSS4SHOOT
  {
    ifcount 48
    {
      ifrnd 4
      {
        state checkpalboss4seekstate
      }
    }
    ifcount 26
      ifrnd 32
    {
      ifrnd 128
      {
        sound SHORT_CIRCUIT
        addphealth -2
      }
      else
      {
        sound DUKE_GRUNT
        addphealth -1
      }
      palfrom 32 32 0 0
    }
  }
ends
state palboss4dyingstate
  ifaction ABOSS4DEAD
  {
    ifrespawn
      ifcount RESPAWNACTORTIME
    {
      spawn TRANSPORTERSTAR
      cstat 257
      strength PIGCOPSTRENGTH
      state checkpalboss4seekstate
    }
    else
    {
      strength 0
      ifhitweapon
        ifwasweapon RADIUSEXPLOSION
      {
        sound SQUISHED
        state standard_jibs
        killit
      }
      break
    }
  }
    ifactioncount 9
  {
    iffloordistl 8
      sound THUD
    action ABOSS4DEAD
    cstat 0
  }
ends
state checkpalboss4hitstate
  ifrnd 2
    spawn BLOODPOOL
  ifdead
  {
    ifrnd 64
      globalsound DUKE_TALKTOBOSSFALL
    ifwasweapon FREEZEBLAST
    {
      sound SOMETHINGFROZE
      spritepal 1
      move 0
      action ABOSS4FROZEN
      strength 0
      break
    }
    addkills 1
    ai AIBOSS4DYING
    sound BOS4_DYING
    sound BOSS4_DEADSPEECH
  }
  else
  {
    soundonce BOS4_PAIN
    debris SCRAP1 1
    guts JIBS6 1
    ifaction ABOSS4LAYIT
      break
    ifrnd 16
    {
      action BOSS4FLINTCH
      move 0
    }
  }
ends
state palboss4code
  ifaction ABOSS4FROZEN
  {
    ifcount THAWTIME
    {
      ai AIBOSS4SEEKENEMY
      spritepal 3
    }
    else
      ifcount FROZENDRIPTIME
    {
      ifactioncount 26
      {
        spawn WATERDRIP
        resetactioncount
      }
    }
    ifhitweapon
    {
      ifwasweapon FREEZEBLAST
      {
        strength 0
        break
      }
      addkills 1
      lotsofglass 30
      ifrnd 84
        spawn BLOODPOOL
      sound GLASS_BREAKING
      killit
    }
    ifp pfacing
      ifpdistl FROZENQUICKKICKDIST
        pkick
    break
  }
  ifai 0
  {
    strength BOSS4PALSTRENGTH
    stopallsounds
    sound BOS4_RECOG
    sound BOS4_ATTACK
    ai AIBOSS4SHOOT
  }
  else
    ifaction BOSS4FLINTCH
    {
      ifactioncount 3
        ai AIBOSS4SEEKENEMY
    }
  else
    ifai AIBOSS4SEEKENEMY
      state palboss4seekenemystate
  else
    ifai AIBOSS4SHOOT
      state palboss4shootstate
  ifai AIBOSS4DYING
    state palboss4dyingstate
  else
  {
    ifhitweapon
      state checkpalboss4hitstate
  }
ends
</b>
actor BOSS4STAYPUT BOSS4STRENGTH
  fall
  cactor BOSS4
<b>  ifspritepal 0
  {</b>
    spritepal 6
    state boss4code
    getlastpal
<b>  }
  else
  ifaction ABOSS4FROZEN
    state palboss4code
  else
  {
    spritepal 6
    state palboss4code
    ifaction ABOSS4FROZEN
      break
    getlastpal
  }</b>
enda
actor BOSS4 BOSS4STRENGTH
  fall
  cactor BOSS4
<b>  ifspritepal 0
  {</b>
    spritepal 6
    state boss4code
    getlastpal
<b>  }
  else
  ifaction ABOSS4FROZEN
    state palboss4code
  else
  {
    spritepal 6
    state palboss4code
    ifaction ABOSS4FROZEN
      break
    getlastpal
  }</b>
enda
-[[User:Ilovefoxes|Ilovefoxes]]
----
Thank you very very much! [[Image:Smile.gif]] [[Image:Smile.gif]] [[Image:Smile.gif]]
I am finished with BOSS1, BOSS2, and BOSS3 for the most part. My modification of BOSS4 will take longer because I want to integrate your code with the existing code using <code>ifvarn BOSSSPRPAL 0 { <insert code here> }</code>.
Cheers,<br />
[[User:Hendricks 266|Hendricks266]] @ 14:58, 11 November 2006 (PST)
----
useractor enemy BOSS1SHOOT BOSS1STRENGTH fall cactor BOSS1 ai AIBOSS1SHOOTENEMY enda // This actor automatically shoots the player.
The reason why they don't give to the boss that is because his first action already is shoots. =p
  ifdead
  {
    ifspritepal 0
      globalsound DUKE_TALKTOBOSSFALL
    else
    {
      <b>ifrnd 64
        globalsound DUKE_TALKTOBOSSFALL</b>
      ifwasweapon FREEZEBLAST
      {
        sound SOMETHINGFROZE
        spritepal 1
        move 0
        action ABOSS1FROZEN
        strength 0
        break
      }
    }
    sound BOS1_DYING
    addkills 1
    ai AIBOSS1DYING
  }
  ifaction ABOSS1FROZEN
  {
    ifcount THAWTIME
    {
      ai AIBOSS1SEEKENEMY
      <b>spritepal 21</b>
    }
    else
      ifcount FROZENDRIPTIME
    {
      ifactioncount 26
      {
        spawn WATERDRIP
        resetactioncount
      }
    }
I don't agree in those changes. This tutorial is to add mini-bosses to Overlord, Cycloid Emperor and Queen, not to fix wathever bug you think that there are in Battlelord coding. Including adding a BOSS1LOBBING tile.
And we shouldn't change a original enemy, anyway.
As long as if we do that, we have a very big list of things coming with:
Allow bosses to grow with expander;
Fix Octabrain addskill -1;
Add "ifaction ENEMYSHRUNK break action ENEMYHIT" to all enemies to them don't have the bug "shrunk enemy attacking";
And, how can you see, we cannot set what change along adding mini-bosses to the others, we should do.
There is no needed to add a code to disable boss from going in water on the cases of Battlelord and Cycloid Emperor, because mini-Battlelord works perfectly, and Cycloid Emperor mini-boss is most done (as there is no frozen error and he don't go to water).
useractor enemystayput BOSS2STAYPUT BOSS2STRENGTH fall cactor BOSS2 enda
Is needed to put cstat and sizeat (mini 40 40 and big boss 80 80) at new actors for the bosses.
I see you have replaced codes in BOSS3 at frozen, but there is only required add some.
And at the end I don't know what risk in BOSS4 are you talking about, the one I have works perfectly, I just feel missing some codes at yours. =/
Edit:
I related that Battlelord at stayput do not screm, so, I have made changes to the new mini-bosses scream only at non-stayput:
  ifai 0
  {
    ifspritepal 0
      ai AIBOSS2RUNENEMY
    else
    {
      strength BOSS2PALSTRENGTH
      sound BOS2_ATTACK ai AIBOSS2SHOOTENEMY
      clipdist 16
    }
  }
useractor enemystayput BOSS2STAYPUT BOSS2STRENGTH
  cactor BOSS2
  ifaction 0
  {
    ifspritepal 0
      sizeat 80 80
    else
      sizeat 40 40
    cstat 257
    action ANULLACTION
  }
enda
actor BOSS2 BOSS2STRENGTH fall state boss2code
  ifspritepal 0
    nullop
  else
    ifaction 0
    {
      stopallsounds
      sound BOS2_RECOG
      action ANULLACTION
    }
enda
  ifai 0
  {
    ifspritepal 0
      ai AIBOSS3RUNENEMY
    else
    {
      strength BOSS3PALSTRENGTH
      ai AIBOSS3LOBENEMY
      clipdist 16
    }
  }
useractor enemystayput BOSS3STAYPUT BOSS3STRENGTH
  cactor BOSS3
  ifaction 0
  {
    ifspritepal 0
      sizeat 80 80
    else
      sizeat 40 40
    cstat 257
  }
enda
actor BOSS3 BOSS3STRENGTH fall state boss3code
  ifspritepal 0
    nullop
  else
    ifaction 0
    {
      stopallsounds
      sound BOS3_RECOG
      action ANULLACTION
    }
enda
  ifai 0
  {
    strength BOSS4PALSTRENGTH
    sound BOS4_ATTACK
    ai AIBOSS4SHOOT
  }
actor BOSS4STAYPUT BOSS4STRENGTH
  fall
  cactor BOSS4
  ifspritepal 0
  {
    spritepal 6
    state boss4code
    getlastpal
  }
  else
  ifaction ABOSS4FROZEN
    state palboss4code
  else
  {
    ifai 0
    {
      stopallsounds
      action ANULLACTION
    }
    spritepal 6
    state palboss4code
    ifaction ABOSS4FROZEN
      break
    getlastpal
  }
enda
actor BOSS4 BOSS4STRENGTH
  fall
  cactor BOSS4
  ifspritepal 0
  {
    spritepal 6
    state boss4code
    getlastpal
  }
  else
  ifaction ABOSS4FROZEN
    state palboss4code
  else
  {
    ifai 0
    {
      stopallsounds
      sound BOS4_RECOG
      action ANULLACTION
    }
    spritepal 6
    state palboss4code
    ifaction ABOSS4FROZEN
      break
    getlastpal
  }
enda

Latest revision as of 11:15, 12 November 2006

I will change all

I have made codes that works totally correct in them. In fact, your code is basic, but not full-working.

BOSS3 doesn't frozen correctly.

If you cannot shrinker a Newbeast, why should you be annolwed to do this with Alien Queen?

There should be good have a Stayput for Overlord and Cycloid Emperor.

There is duke talks, wich shouldn't be used to non gathering enemies, and if more than one togheder, is crap the sound. =p

BOSS4 is very hard to configure. You cannot just set a "IFSPRITEPAL", if you look to the blood color, you will report that this doesn't work totally.

Edit: Shouldn't we too disable BOSS3 from going in sector lotag 1?

-Ilovefoxes

I am offended.

Frankly, you butchered this tutorial. I cannot understand the tutorial for what it is. Remember, it is supposed to be easy. For now, I will work on a fix that will not waste time with seperate actors. All you have to do to is integrate an "ifspritepal 0 nullop else { <insert miniboss-only code here> }" clause into the code.

*tries to stop his pointless anger* *succeeds*

Well, what I mean is that all you had to do was change my tutorial, not overwrite it. I am going to change some things back because I had it perfectly organized and presented. (Smilies, anyone?) You need to be much more concise with tutorials. The key here is that this is for beginners, not experts.

Also, I don't know why you would want to keep the Cycloid Emperors out of water, other than that they don't behave very well.

*gets angry again*

One of the main points of my documentation is that you should not put a spritepal of 21 because of the changes in the sprite. Spritepal 3 is the way to go. Period.

-Hendricks266

What is the point?

BOSS3 is Overlord. Cycloid and Battlelord cannot go to onwater sectors, but why Overlord can?


Sorry if you got angry, but... what is the point in create a tutorial to begginers and not experts, if at all, the minibosses doesn't work correctly?

I know that you can think that it is not good for the Wiki, but if we cannot put the full-working mod, why should we put a half-working?


I can find many erros in the new tutorial:

1 - What's the point with checkboss1hitstate?

2 - I see some changes in DUKE_TALKTOBOSSFALL, but wasn't about it that I was talking about "I will strip you head... Kick your eye..." Duke talks everytime see a boss. Those are related with the tiles, and should be defined new tiles to activate them.

3 - Overlord still frozen with error.

4 - Queen shouldn't be shrinker, as Newbeast.

5 - A simply "ifspritepal" doesn't works for BOSS4, because of the green blood color, related to "spritepal 6 getlastpal".

6 - BOSS4 should have a different speed in pal.

-Ilovefoxes

I am sorry I got angry.

1 - The same thing with state checkboss2hitstate and state checkboss2hitstate. The death sound.

2 - I thought that the opening quote was triggered by a sector effect… In any case, I will fix that soon.

3 - I will fix that soon.

4 - I will fix that soon.

5 - So that is what that is for... I will fix that by getting the contents of the original spritepal to a gamevar.

6 - I will fix that soon.

To fix the issue about it being half-working, I will create a notice at the top of the page. Is that OK?

Cheers,
Hendricks266

So far…

I have edited the tutorial, and now all that is left to complete:

  1. Fixing BOSS3's freezing effect
  2. Adding the actors "BOSS1SHOOT" and "BOSS1LOB" (Note: I have done this already, but I need to fix the code.)
  3. Adding a stayput for BOSS2 and BOSS3 (Note: See note that is above.)
  4. Removing BOSS2's and BOSS3's opening quotes (if they are there…)
  5. Making BOSS4 slower when shrunk

…but, other than that, I think that the tutorial is mostly finished.

If you are going to change my tutorial, please don't completely change it like you did before. I put a lot of effort into it. I know you did too, but yours "went against the grain", as so to speak. I did make a backup of yours, and I did add some of the better parts (like the clarification of the miniboss strengths).

Also, please make sure that your spelling and grammar are correct, and that you are concise and to-the-point.

If we work together, I bet we could finish it in two (2) days!

Cheers,
Hendricks266 @ 17:09, 8 November 2006 (PST)

Further Discussion

There is an extended way to fix Queen pallete without using gamevars, but it is a big code. What should we use?

-Ilovefoxes


Gamevars.

Can you provide some code for fixing BOSS3's freezing effect and put it here, not in the tutorial itself? I will look it over, check your spelling and grammar, and expand you documentation. It would help me very much.

Thank you for cooperating so well!

Also, could you put a page-width line (Syntax: ----) between my messages and your messages from now on?

Cheers,
Hendricks266 @ 16:34, 9 November 2006 (PST)


I will show you the codes I have made, to work perfectly correct. Note the bold parts (added codes). If you could work on them, would be good. =)

Just remeber that it was made to be entire full-working mini-boss like Battlelord. Sample:

ai AIBOSS4SEEKENEMY ABOSS4WALK BOSS4WALKVELS seekplayer
state checkpalboss4seekstate
  ai AIBOSS4SEEKENEMY
    move PALBOSS4WALKVELS seekplayer
ends

You ask: Why did hell you set "BOSS4WALKVELS" and after put "move PALBOSS4WALKVELS"? At Battlelord, some times (after frozen, for what I remeber), the mini-boss move at the big-boss speed because is just set "ai AIBOSS4SEEKENEMY" instead "state checkpalboss4seekstate", and it is a detail, but the best to do with the mini-bosses and the hard-coded Queen, is make them works like Battlelord.



Defs

define BOSS2 2710
define BOSS2STAYPUT 2711
define BOSS3 2760
define BOSS3STAYPUT 2761

User

define BOSS1STRENGTH            4500
define BOSS1PALSTRENGTH         1000
define BOSS2STRENGTH            4500
define BOSS2PALSTRENGTH         1000
define BOSS3STRENGTH            4500
define BOSS3PALSTRENGTH         1000
define BOSS4STRENGTH            6000
define BOSS4PALSTRENGTH         1333

BOSS2 and BOSS3

action ABOSS2WALK        0  4  5  1  30
action ABOSS2FROZEN        0  1  5
action ABOSS2RUN         0  4  5  1  15
action ABOSS2SHOOT         20 2  5  1  15
action ABOSS2LOB         30 2  5  1  105
action ABOSS2DYING        40 8  1  1  35
action BOSS2FLINTCH       40 1  1  1  1
action ABOSS2DEAD         48

move PALBOSS2SHRUNKRUNVELS 32
move PALBOSS2RUNVELS 84
move BOSS2WALKVELS 192
move BOSS2RUNVELS 256
move BOSS2STOPPED

ai AIBOSS2SEEKENEMY ABOSS2WALK BOSS2WALKVELS seekplayer
ai AIBOSS2RUNENEMY ABOSS2RUN BOSS2RUNVELS faceplayer
ai AIBOSS2SHOOTENEMY ABOSS2SHOOT BOSS2STOPPED faceplayer
ai AIBOSS2LOBBED ABOSS2LOB BOSS2STOPPED faceplayer
ai AIBOSS2DYING ABOSS2DYING BOSS2STOPPED faceplayer
ai AIBOSS2PALSHRINK ABOSS2WALK PALBOSS2SHRUNKRUNVELS furthestdir

state boss2palshrunkstate
  ifcount SHRUNKDONECOUNT
  {
    cstat 257
    ai AITROOPSEEKENEMY
  }
  else
    ifcount SHRUNKCOUNT
      sizeto 40 40
  else
    state genericshrunkcode
ends

state checkboss2seekstate
  ai AIBOSS2SEEKENEMY
  ifspritepal 0 nullop
  else   // a fake way of doing a ifspritepal NOT.
    move PALBOSS2RUNVELS seekplayer
ends

state boss2runenemystate
  ifcansee
  {
    ifactioncount 3
    {
      ifcanshoottarget
      {
        resetactioncount
        sound BOS1_WALK
      }
      else
        ai AIBOSS2SEEKENEMY
    }
    ifcount 48
      ifrnd 2
    {
      ifp palive
      {
        sound BOS2_ATTACK
        ai AIBOSS2SHOOTENEMY
      }
      break
    }
  }
  else
    ai AIBOSS2SEEKENEMY
ends

state boss2seekenemystate
  ifrnd 2
    soundonce BOS2_ROAM
  else
    ifactioncount 3
  {
    resetactioncount
    sound BOS1_WALK
  }

  ifcansee
    ifcount 32
      ifp palive
        ifrnd 48
          ifcanshoottarget
  {
    ifrnd 64
      ifpdistg 4096
    {
      ai AIBOSS2RUNENEMY
      ifspritepal 0 nullop
      else
        move PALBOSS2RUNVELS seekplayer
      break
    }

    ifpdistl 10240
    {
      ifrnd 128
      {
        sound BOS2_ATTACK
        ai AIBOSS2LOBBED
      }
    }
    else
    {
      sound BOS2_ATTACK
      ai AIBOSS2SHOOTENEMY
    }
  }
ends

state boss2dyingstate
  ifaction ABOSS2DEAD
  {
    ifspritepal 0
      break
    ifrespawn
      ifcount RESPAWNACTORTIME
    {
      spawn TRANSPORTERSTAR
      cstat 257
      strength PIGCOPSTRENGTH
      state checkboss2seekstate
    }
    else
    {
      strength 0
      ifhitweapon
        ifwasweapon RADIUSEXPLOSION
      {
        sound SQUISHED
        state standard_jibs
        killit
      }
      break
    }
  }
  ifactioncount 8
  {
    iffloordistl 8
      sound THUD
    action ABOSS2DEAD
    cstat 0
    ifspritepal 0
      endofgame 52
  }
ends

state boss2lobbedstate
  ifcansee
  {
    ifactioncount 2
      resetactioncount
    else
      ifactioncount 1
    {
      ifrnd 128
        shoot COOLEXPLOSION1
    }
    else
      ifcount 64
        ifrnd 16
          state checkboss2seekstate
  }
  else
    state checkboss2seekstate
ends

state boss2shootenemy
  ifcount 72
    state checkboss2seekstate
  else
    ifaction ABOSS2SHOOT
      ifactioncount 2
  {
    shoot RPG
    resetactioncount
  }
ends

state checkboss2hitstate
  ifrnd 2
    spawn BLOODPOOL
  ifdead
  {
    ifspritepal 0
      globalsound DUKE_TALKTOBOSSFALL
    else
    {
      ifrnd 64
        globalsound DUKE_TALKTOBOSSFALL
      ifwasweapon FREEZEBLAST
      {
        sound SOMETHINGFROZE
        spritepal 1
        move 0
        action ABOSS2FROZEN
        strength 0
        break
      }
    }

    sound BOS2_DYING

    addkills 1

    ai AIBOSS2DYING
  }
  else
  {
    ifrnd 144
    {
      ifrnd 32
      {
        action BOSS2FLINTCH
        move 0
      }
      else
      {
        sound BOS2_ATTACK
        ai AIBOSS2SHOOTENEMY
      }
    }

    ifspritepal 0 nullop
    else
      ifwasweapon SHRINKSPARK
    {
      sound ACTOR_SHRINKING
      ai AIBOSS2PALSHRINK
      break
    }

    soundonce BOS2_PAIN

    debris SCRAP1 1
    guts JIBS6 1
  }
ends

state boss2code

  ifaction ABOSS2FROZEN
  {
    ifcount THAWTIME
    {
      ai AIBOSS2SEEKENEMY
        spritepal 21
    }
    else
      ifcount FROZENDRIPTIME
    {
      ifactioncount 26
      {
        spawn WATERDRIP
        resetactioncount
      }
    }

    ifhitweapon
    {
      ifwasweapon FREEZEBLAST
      {
        strength 0
        break
      }
      addkills 1

      lotsofglass 30
      sound GLASS_BREAKING
      ifrnd 84 spawn BLOODPOOL
      killit
    }
    ifp pfacing
      ifpdistl FROZENQUICKKICKDIST
        pkick
    break
  }
  ifai 0
  {
    ifspritepal 0
      ai AIBOSS2RUNENEMY
    else
    {
      strength BOSS2PALSTRENGTH
      stopallsounds
      sound BOS2_RECOG
      sound BOS2_ATTACK ai AIBOSS2SHOOTENEMY
      clipdist 16
    }
  }
  else
    ifaction BOSS2FLINTCH
  {
    ifactioncount 3
      ai AIBOSS2SEEKENEMY
  }
  else
    ifai AIBOSS2SEEKENEMY
      state boss2seekenemystate
  else
    ifai AIBOSS2RUNENEMY
      state boss2runenemystate
  else
    ifai AIBOSS2SHOOTENEMY
      state boss2shootenemy
  else
    ifai AIBOSS2LOBBED
      state boss2lobbedstate
  else
    ifai AIBOSS2PALSHRINK
      state boss2palshrunkstate

  ifai AIBOSS2DYING
    state boss2dyingstate
  else
  {
    ifhitweapon state checkboss2hitstate
    else
      ifp palive
        ifspritepal 0 ifpdistl
          1280
    {
      addphealth -1000
      palfrom 63 63
    }
  }


ends

useractor enemystayput BOSS2STAYPUT BOSS2STRENGTH
  cactor BOSS2
  ifaction 0
  {
    ifspritepal 0
      sizeat 80 80
    else
      sizeat 40 40
    cstat 257
    action ANULLACTION
  }
enda

actor BOSS2 BOSS2STRENGTH fall state boss2code enda

action ABOSS3WALK        0  4  5  1  30
action ABOSS3FROZEN        0  1  5
action ABOSS3RUN         0  4  5  1  15
action ABOSS3LOB        20 4  5  1  50
action ABOSS3LOBBING      30 2  5  1  15
action ABOSS3DYING        40 8  1  1  20
action BOSS3FLINTCH       40 1  1  1  1
action ABOSS3DEAD         48

move PALBOSS3SHRUNKRUNVELS 32
move PALBOSS3RUNVELS 84
move BOSS3WALKVELS 208
move BOSS3RUNVELS 270
move BOSS3STOPPED

ai AIBOSS3SEEKENEMY ABOSS3WALK BOSS3WALKVELS seekplayer
ai AIBOSS3RUNENEMY ABOSS3RUN BOSS3RUNVELS faceplayerslow
ai AIBOSS3LOBENEMY ABOSS3LOB BOSS3STOPPED faceplayer
ai AIBOSS3DYING ABOSS3DYING BOSS3STOPPED faceplayer
ai AIBOSS3PALSHRINK ABOSS3WALK PALBOSS3SHRUNKRUNVELS furthestdir

state boss3palshrunkstate
  ifcount SHRUNKDONECOUNT
    ai AITROOPSEEKENEMY
  else
    ifcount SHRUNKCOUNT
      sizeto 40 40
  else
    state genericshrunkcode
ends

state checkboss3seekstate
  ai AIBOSS3SEEKENEMY
  ifspritepal 0 nullop
  else   // a fake way of doing a ifspritepal NOT.
    move PALBOSS3RUNVELS seekplayer
ends

state boss3runenemystate
  ifcansee
  {
    ifactioncount 3
    {
      ifcanshoottarget
      {
        resetactioncount
        sound BOS1_WALK
      }
      else
        ai AIBOSS3SEEKENEMY
    }
  }
  else
    ai AIBOSS3SEEKENEMY
ends

state boss3seekenemystate
  ifrnd 2
    soundonce BOS3_ROAM
  else
    ifactioncount 3
    {
      resetactioncount
      sound BOS1_WALK
    }

  ifcansee
    ifcount 32
      ifrnd 48
        ifcanshoottarget
  {
    ifrnd 64
      ifpdistg 4096
      {
        ai AIBOSS3RUNENEMY
        ifspritepal 0
          break
        move PALBOSS3RUNVELS seekplayer
        break
      }

    ifp palive
      ai AIBOSS3LOBENEMY
  }
ends

state boss3dyingstate
  ifaction ABOSS3DEAD
  {
    ifspritepal 0
      break
    ifrespawn
      ifcount RESPAWNACTORTIME
    {
      spawn TRANSPORTERSTAR
      cstat 257
      strength PIGCOPSTRENGTH
      state checkboss3seekstate
    }
    else
    {
      strength 0
      ifhitweapon
        ifwasweapon RADIUSEXPLOSION
      {
        sound SQUISHED
        state standard_jibs
        killit
      }
      break
    }
  }
  ifactioncount 8
  {
    iffloordistl 8
      sound THUD
    action ABOSS3DEAD
    cstat 0
    ifspritepal 0
    endofgame 52
  }
ends

state boss3lobbedstate
  ifcansee
  {
    ifaction ABOSS3LOBBING
      ifactioncount 2
    {
      shoot RPG
      resetactioncount
      ifrnd 8
        ai AIBOSS3SEEKENEMY
    }

    ifactioncount 3
    {
      action ABOSS3LOBBING
      resetcount
    }
  }
  else
    state checkboss3seekstate
ends

state checkboss3hitstate
  ifrnd 2
    spawn BLOODPOOL
  ifdead
  {
    ifspritepal 0
      globalsound DUKE_TALKTOBOSSFALL
    else
    {
      ifrnd 64
        globalsound DUKE_TALKTOBOSSFALL
      ifwasweapon FREEZEBLAST
      {
        sound SOMETHINGFROZE
        spritepal 1
        move 0
        action ABOSS3FROZEN
        strength 0
        break
      }
    }

    addkills 1
    ai AIBOSS3DYING

    sound BOS3_DYING
    sound JIBBED_ACTOR9

  }
  else
  {
    ifrnd 32
    {
      action BOSS3FLINTCH
      move 0
    }

    ifspritepal 0 nullop
    else
      ifwasweapon SHRINKSPARK
    {
      sound ACTOR_SHRINKING
      ai AIBOSS3PALSHRINK
      break
    }

    soundonce BOS3_PAIN

    debris SCRAP1 1
    guts JIBS6 1
  }
ends

state boss3code

  ifaction ABOSS3FROZEN
  {
    ifcount THAWTIME
    {
      ai AIBOSS3SEEKENEMY
      spritepal 21
    }
    else
      ifcount FROZENDRIPTIME
    {
      ifactioncount 26
      {
        spawn WATERDRIP
        resetactioncount
      }
    }

    ifhitweapon
    {
      ifwasweapon FREEZEBLAST
      {
        strength 0
        break
      }

      addkills 1
      lotsofglass 30

      ifrnd 84
        spawn BLOODPOOL
      sound GLASS_BREAKING
      killit
    }
    ifp pfacing
      ifpdistl FROZENQUICKKICKDIST
        pkick
    break
  }
  ifai 0
  {
    ifspritepal 0
      ai AIBOSS3RUNENEMY
    else
    {
      strength BOSS3PALSTRENGTH
      stopallsounds
      sound BOS3_RECOG
      ai AIBOSS3LOBENEMY
      clipdist 16
    }
  }
  else
    ifaction BOSS3FLINTCH
    {
      ifactioncount 3
      ai AIBOSS3SEEKENEMY
    }
  else
    ifai AIBOSS3SEEKENEMY
      state boss3seekenemystate
  else
    ifai AIBOSS3RUNENEMY
      state boss3runenemystate
  else
    ifai AIBOSS3LOBENEMY
      state boss3lobbedstate
  else
    ifai AIBOSS3PALSHRINK
      state boss3palshrunkstate

  ifai AIBOSS3DYING
    state boss3dyingstate
  else
  {
    ifhitweapon
      state checkboss3hitstate
    else
      ifp palive
        ifspritepal 0
          ifpdistl 1280
      {
        addphealth -1000
        palfrom 63 63
      }
  }
ends

useractor enemystayput BOSS3STAYPUT BOSS3STRENGTH
  cactor BOSS3
  ifaction 0
  {
    ifspritepal 0
      sizeat 80 80
    else
      sizeat 40 40
    cstat 257
  }
enda

actor BOSS3 BOSS3STRENGTH fall state boss3code enda

BOSS4

action ABOSS4WALK          0 4  5  1  30
action ABOSS4FROZEN        0 1  5
action ABOSS4DYING        40 9  1  1  20
action ABOSS4ABOUTTOSHOOT 20 1  5  1  40
action ABOSS4SHOOT        25 2  5  1  10
action ABOSS4LAYIT        50 3  5  1  120
action BOSS4FLINTCH       40 1  1  1  1
action ABOSS4DEAD         49

move PALBOSS4WALKVELS 48
move BOSS4WALKVELS 128
move BOSS4STOPPED

ai AIBOSS4SEEKENEMY ABOSS4WALK BOSS4WALKVELS seekplayer
ai AIBOSS4LAYEGGS ABOSS4WALK BOSS4WALKVELS randomangle geth
ai AIBOSS4SHOOT ABOSS4ABOUTTOSHOOT BOSS4STOPPED faceplayer
ai AIBOSS4DYING ABOSS4DYING BOSS4STOPPED faceplayer

state boss4shootstate
  ifaction ABOSS4ABOUTTOSHOOT
    ifactioncount 3
      action ABOSS4SHOOT

  ifaction ABOSS4SHOOT
  {
    ifcount 48
    {
      ifrnd 4
        ai AIBOSS4LAYEGGS
    }
    ifcount 26
      ifrnd 32
    {
      ifrnd 128
      {
        sound SHORT_CIRCUIT
        addphealth -2
      }
      else
      {
        sound DUKE_GRUNT
        addphealth -1
      }
      palfrom 32 32 0 0
    }
  }

ends

state boss4layeggs
  ifrnd 2
    sound BOS4_ROAM

  ifaction ABOSS4LAYIT
  {
    ifactioncount 3
      ifcount 32
    {
      ai AIBOSS4LAYEGGS
      ifrnd 32
        move BOSS4WALKVELS furthestdir geth
      spawn NEWBEASTHANG
    }
  }
  else
    ifcount 64
      ifrnd 4
  {
    move 0

    ifrnd 88
    {
      action ABOSS4LAYIT
      sound BOS4_LAY
    }
    else
      ifp palive
        ifcansee
    {
      ai AIBOSS4SHOOT
      sound BOS4_ATTACK
    }
  }

ends

state boss4dyingstate
  ifaction ABOSS4DEAD
    break
  else
    ifactioncount 9
  {
    iffloordistl 8
      sound THUD

    endofgame 52
    action ABOSS4DEAD
    cstat 0
  }
ends

state checkboss4hitstate
  ifrnd 2
    spawn BLOODPOOL

  ifdead
  {
    globalsound DUKE_TALKTOBOSSFALL

    addkills 1
    ai AIBOSS4DYING

    sound BOS4_DYING
    sound BOSS4_DEADSPEECH
  }
  else
  {
    soundonce BOS4_PAIN
    debris SCRAP1 1
    guts JIBS6 1

    ifaction ABOSS4LAYIT
      break

    ifrnd 16
    {
      action BOSS4FLINTCH
      move 0
    }
  }
ends

state boss4code

  ifai 0
    ai AIBOSS4LAYEGGS
  else
    ifaction BOSS4FLINTCH
    {
      ifactioncount 3
        ai AIBOSS4LAYEGGS
    }
  else
    ifai AIBOSS4LAYEGGS
      state boss4layeggs
  else
    ifai AIBOSS4SHOOT
      state boss4shootstate

  ifai AIBOSS4DYING
    state boss4dyingstate
  else
  {
    ifhitweapon
      state checkboss4hitstate
    else
      ifp palive
        ifpdistl 1280
      {
        addphealth -1000
        palfrom 63 63
      }
  }
ends

state checkpalboss4seekstate
  ai AIBOSS4SEEKENEMY
    move PALBOSS4WALKVELS seekplayer
ends

state palboss4seekenemystate
  ifrnd 2
    sound BOS4_ROAM

    ifcount 64
      ifrnd 4
  {
    move 0

      ifp palive
        ifcansee
    {
      ai AIBOSS4SHOOT
      sound BOS4_ATTACK
    }
  }

ends

state palboss4shootstate
  ifaction ABOSS4ABOUTTOSHOOT
    ifactioncount 3
      action ABOSS4SHOOT

  ifaction ABOSS4SHOOT
  {
    ifcount 48
    {
      ifrnd 4
      {
        state checkpalboss4seekstate
      }
    }
    ifcount 26
      ifrnd 32
    {
      ifrnd 128
      {
        sound SHORT_CIRCUIT
        addphealth -2
      }
      else
      {
        sound DUKE_GRUNT
        addphealth -1
      }
      palfrom 32 32 0 0
    }
  }

ends

state palboss4dyingstate
  ifaction ABOSS4DEAD
  {
    ifrespawn
      ifcount RESPAWNACTORTIME
    {
      spawn TRANSPORTERSTAR
      cstat 257
      strength PIGCOPSTRENGTH
      state checkpalboss4seekstate
    }
    else
    {
      strength 0
      ifhitweapon
        ifwasweapon RADIUSEXPLOSION
      {
        sound SQUISHED
        state standard_jibs
        killit
      }
      break
    }
  }
    ifactioncount 9
  {
    iffloordistl 8
      sound THUD

    action ABOSS4DEAD
    cstat 0
  }
ends

state checkpalboss4hitstate
  ifrnd 2
    spawn BLOODPOOL

  ifdead
  {
    ifrnd 64
      globalsound DUKE_TALKTOBOSSFALL
    ifwasweapon FREEZEBLAST
    {
      sound SOMETHINGFROZE
      spritepal 1
      move 0
      action ABOSS4FROZEN
      strength 0
      break
    }

    addkills 1
    ai AIBOSS4DYING

    sound BOS4_DYING
    sound BOSS4_DEADSPEECH
  }
  else
  {
    soundonce BOS4_PAIN
    debris SCRAP1 1
    guts JIBS6 1

    ifaction ABOSS4LAYIT
      break

    ifrnd 16
    {
      action BOSS4FLINTCH
      move 0
    }
  }
ends

state palboss4code

  ifaction ABOSS4FROZEN
  {
    ifcount THAWTIME
    {
      ai AIBOSS4SEEKENEMY
      spritepal 3
    }
    else
      ifcount FROZENDRIPTIME
    {
      ifactioncount 26
      {
        spawn WATERDRIP
        resetactioncount
      }
    }

    ifhitweapon
    {
      ifwasweapon FREEZEBLAST
      {
        strength 0
        break
      }
      addkills 1
      lotsofglass 30

      ifrnd 84
        spawn BLOODPOOL
      sound GLASS_BREAKING
      killit
    }
    ifp pfacing
      ifpdistl FROZENQUICKKICKDIST
        pkick
    break
  }
  ifai 0
  {
    strength BOSS4PALSTRENGTH
    stopallsounds
    sound BOS4_RECOG
    sound BOS4_ATTACK
    ai AIBOSS4SHOOT
  }
  else
    ifaction BOSS4FLINTCH
    {
      ifactioncount 3
        ai AIBOSS4SEEKENEMY
    }
  else
    ifai AIBOSS4SEEKENEMY
      state palboss4seekenemystate
  else
    ifai AIBOSS4SHOOT
      state palboss4shootstate

  ifai AIBOSS4DYING
    state palboss4dyingstate
  else
  {
    ifhitweapon
      state checkpalboss4hitstate
  }
ends

actor BOSS4STAYPUT BOSS4STRENGTH

  fall
  cactor BOSS4
  ifspritepal 0
  {
    spritepal 6
    state boss4code
    getlastpal
  }
  else
  ifaction ABOSS4FROZEN
    state palboss4code
  else
  {
    spritepal 6
    state palboss4code
    ifaction ABOSS4FROZEN
      break
    getlastpal
  }

enda

actor BOSS4 BOSS4STRENGTH

  fall
  cactor BOSS4
  ifspritepal 0
  {
    spritepal 6
    state boss4code
    getlastpal
  }
  else
  ifaction ABOSS4FROZEN
    state palboss4code
  else
  {
    spritepal 6
    state palboss4code
    ifaction ABOSS4FROZEN
      break
    getlastpal
  }

enda

-Ilovefoxes


Thank you very very much!

I am finished with BOSS1, BOSS2, and BOSS3 for the most part. My modification of BOSS4 will take longer because I want to integrate your code with the existing code using ifvarn BOSSSPRPAL 0 { <insert code here> }.

Cheers,
Hendricks266 @ 14:58, 11 November 2006 (PST)


useractor enemy BOSS1SHOOT BOSS1STRENGTH fall cactor BOSS1 ai AIBOSS1SHOOTENEMY enda // This actor automatically shoots the player.

The reason why they don't give to the boss that is because his first action already is shoots. =p


  ifdead
  {
    ifspritepal 0
      globalsound DUKE_TALKTOBOSSFALL
    else
    {
      ifrnd 64
        globalsound DUKE_TALKTOBOSSFALL
      ifwasweapon FREEZEBLAST
      {
        sound SOMETHINGFROZE
        spritepal 1
        move 0
        action ABOSS1FROZEN
        strength 0
        break
      }
    }

    sound BOS1_DYING

    addkills 1
    ai AIBOSS1DYING
  }
 ifaction ABOSS1FROZEN
 {
   ifcount THAWTIME
   {
     ai AIBOSS1SEEKENEMY
     spritepal 21
   }
   else
     ifcount FROZENDRIPTIME
   {
     ifactioncount 26
     {
       spawn WATERDRIP
       resetactioncount
     }
   }

I don't agree in those changes. This tutorial is to add mini-bosses to Overlord, Cycloid Emperor and Queen, not to fix wathever bug you think that there are in Battlelord coding. Including adding a BOSS1LOBBING tile.

And we shouldn't change a original enemy, anyway.

As long as if we do that, we have a very big list of things coming with: Allow bosses to grow with expander;

Fix Octabrain addskill -1;

Add "ifaction ENEMYSHRUNK break action ENEMYHIT" to all enemies to them don't have the bug "shrunk enemy attacking";

And, how can you see, we cannot set what change along adding mini-bosses to the others, we should do.


There is no needed to add a code to disable boss from going in water on the cases of Battlelord and Cycloid Emperor, because mini-Battlelord works perfectly, and Cycloid Emperor mini-boss is most done (as there is no frozen error and he don't go to water).


useractor enemystayput BOSS2STAYPUT BOSS2STRENGTH fall cactor BOSS2 enda

Is needed to put cstat and sizeat (mini 40 40 and big boss 80 80) at new actors for the bosses.


I see you have replaced codes in BOSS3 at frozen, but there is only required add some.


And at the end I don't know what risk in BOSS4 are you talking about, the one I have works perfectly, I just feel missing some codes at yours. =/


Edit:

I related that Battlelord at stayput do not screm, so, I have made changes to the new mini-bosses scream only at non-stayput:

  ifai 0
  {
    ifspritepal 0
      ai AIBOSS2RUNENEMY
    else
    {
      strength BOSS2PALSTRENGTH
      sound BOS2_ATTACK ai AIBOSS2SHOOTENEMY
      clipdist 16
    }
  }
useractor enemystayput BOSS2STAYPUT BOSS2STRENGTH
  cactor BOSS2
  ifaction 0
  {
    ifspritepal 0
      sizeat 80 80
    else
      sizeat 40 40
    cstat 257
    action ANULLACTION
  }
enda

actor BOSS2 BOSS2STRENGTH fall state boss2code
  ifspritepal 0
    nullop
  else
    ifaction 0
    {
      stopallsounds
      sound BOS2_RECOG
      action ANULLACTION
    }
enda
  ifai 0
  {
    ifspritepal 0
      ai AIBOSS3RUNENEMY
    else
    {
      strength BOSS3PALSTRENGTH
      ai AIBOSS3LOBENEMY
      clipdist 16
    }
  }
useractor enemystayput BOSS3STAYPUT BOSS3STRENGTH
  cactor BOSS3
  ifaction 0
  {
    ifspritepal 0
      sizeat 80 80
    else
      sizeat 40 40
    cstat 257
  }
enda

actor BOSS3 BOSS3STRENGTH fall state boss3code
  ifspritepal 0
    nullop
  else
    ifaction 0
    {
      stopallsounds
      sound BOS3_RECOG
      action ANULLACTION
    }
enda
  ifai 0
  {
    strength BOSS4PALSTRENGTH
    sound BOS4_ATTACK
    ai AIBOSS4SHOOT
  }
actor BOSS4STAYPUT BOSS4STRENGTH

  fall
  cactor BOSS4
  ifspritepal 0
  {
    spritepal 6
    state boss4code
    getlastpal
  }
  else
  ifaction ABOSS4FROZEN
    state palboss4code
  else
  {
    ifai 0
    {
      stopallsounds
      action ANULLACTION
    }
    spritepal 6
    state palboss4code
    ifaction ABOSS4FROZEN
      break
    getlastpal
  }

enda

actor BOSS4 BOSS4STRENGTH

  fall
  cactor BOSS4
  ifspritepal 0
  {
    spritepal 6
    state boss4code
    getlastpal
  }
  else
  ifaction ABOSS4FROZEN
    state palboss4code
  else
  {
    ifai 0
    {
      stopallsounds
      sound BOS4_RECOG
      action ANULLACTION
    }
    spritepal 6
    state palboss4code
    ifaction ABOSS4FROZEN
      break
    getlastpal
  }

enda