Trouble shoot this for me?

Login to reply  Page: « < 1 of 1 > »
05 Nov 2009 - 03:442000
Trouble shoot this for me?
On my MUD we have given the mobs access to player skills. I am trying to create a random by level script by combining switch actor.level and switch random.#. I keep getting SCRIPT ERROR: Trigger VNum 3017 has 'if' without 'end'. (error 5). The script follows:


 #30501

dg_action random~

0 k 65

~

switch %actor.level%

  case 1

  case 2

  case 3

  case 4

    switch %random.2%

      case 1

	dg_action 'bash' %actor%

     	break

      case 2

	dg_action 'kick' %actor%

     	break

  case 5

  case 6

  case 7

  case 8

  case 9

  case 10

    switch %random.3%

      case 1

	dg_action 'bash' %actor%

      	break

      case 2

	dg_action 'kick' %actor%

      	break

      case 3

	dg_action 'disarm' %actor%

     	break

  case 11

  case 12

  case 13

  case 14

  case 15

  case 16

  case 17

  case 18

  case 19

  case 20

    switch %random.5%

      case 1

	dg_action 'bash' %actor%

     	break

      case 2

	dg_action 'kick' %actor%

	break

      case 3

	dg_action 'disarm' %actor%

      	break

      case 4

	dg_action 'whirlwind' %actor%

      	break

      case 5

	dg_action 'slay' %actor%

      	break

  case 21

  case 22

  case 23

  case 24

  case 25

    switch %random.3%

      case 1

	dg_action 'slay' %actor%

      	break

      case 2

	dg_action 'deathblow' %actor%

      	break

      case 3

	dg_action 'whirlwind' %actor%

      	break

  default

    dg_action 'kick' %actor%

    break

end
done
~

$~


05 Nov 2009 - 09:412001
switch %actor.level%
  case 1
  case 2
  case 3
  case 4
    switch %random.2%
      case 1
        dg_action 'bash' %actor%
      break
      case 2
        dg_action 'kick' %actor%
      break
    done
  break
  case 5
  case 6
  case 7
  case 8
  case 9
  case 10
    switch %random.3%
      case 1
        dg_action 'bash' %actor%
      break
      case 2
        dg_action 'kick' %actor%
      break
      case 3
        dg_action 'disarm' %actor%
      break
    done
  break
  case 11
  case 12
  case 13
  case 14
  case 15
  case 16
  case 17
  case 18
  case 19
  case 20
    switch %random.5%
      case 1
        dg_action 'bash' %actor%
      break
      case 2
        dg_action 'kick' %actor%
      break
      case 3
        dg_action 'disarm' %actor%
      break
      case 4
        dg_action 'whirlwind' %actor%
      break
      case 5
        dg_action 'slay' %actor%
      break
    done
  break
  case 21
  case 22
  case 23
  case 24
  case 25
    switch %random.3%
      case 1
        dg_action 'slay' %actor%
      break
      case 2
        dg_action 'deathblow' %actor%
      break
      case 3
        dg_action 'whirlwind' %actor%
      break
    done
  break
  default
    dg_action 'kick' %actor%
  break
done

All switch's must be terminated with a 'done', none of your switch %random.#% switches had them to begin with, you were also missing a few breaks, the above should work.

To be honest though in this case I'd simply do this:

if %actor.level% < 5
  switch %random.2%
    case 1
      dg_action 'bash' %actor%
    break
    case 2
      dg_action 'kick' %actor%
    break
  done
elseif %actor.level% < 11
  switch %random.3%
    case 1
      dg_action 'bash' %actor%
    break
    case 2
      dg_action 'kick' %actor%
    break
    case 3
      dg_action 'disarm' %actor%
    break
  done
elseif %actor.level% < 21
  switch %random.5%
    case 1
      dg_action 'bash' %actor%
    break
    case 2
      dg_action 'kick' %actor%
    break
    case 3
      dg_action 'disarm' %actor%
    break
    case 4
      dg_action 'whirlwind' %actor%
    break
    case 5
      dg_action 'slay' %actor%
    break
  done
elseif %actor.level% < 26
  switch %random.3%
    case 1
      dg_action 'slay' %actor%
    break
    case 2
      dg_action 'deathblow' %actor%
    break
    case 3
      dg_action 'whirlwind' %actor%
    break
  done
else
  dg_action 'kick' %actor%
end

You have so many bottom-less cases that the switch case simply loses its benefit of making the script shorter and neater and actually makes it longer and more complicated.


__________________

Last edited by Fizban (05 Nov 2009 - 10:02)
05 Nov 2009 - 11:242002
Ah, thank you. I am such a newb. Your second solution is better for the number of skills I have now, but I hope to add a few more so the switch might come in handy after all. Either way, this is an important component of my MUD and I thank you.


Login to reply  Page: « < 1 of 1 > »