I am attempting to make a speedwalking script in a MUD that is highly resistant to scripting and has many clever safeguards. Normally it would simply be a matter of making an alias with ALL the directions from point A to point B, but the obstacles in this particular MUD include:
---> A 5-command buffer limit, that deletes any commands entered if there are already 5 non-resolved commands entered.
---> The ability for hostile NPCs to occasionally 'block me from leaving!' and cancel a direction command.
---> The possibility that gates through which I attempt to move are closed or locked in which case "open gate" and "unlock gate <ENTER> open gate" are needed, respectively.
Here is the code I have come up with in its current nightmarish, spagetti form:
WARNING: ATTEMPTING TO READ THE FOLLOWING MAY RESULT IN SPONTANEOUS FORMATION OF BRAIN TUMORS. DO SO AT YOUR OWN RISK.
sub squarelair
world.addtrigger "counter", "Obvious paths", "", 33, -1, 0, "", "counter"
world.addtrigger "counter2", "Obvious exits", "", 33, -1, 0, "", "counter"
world.addtrigger "movement2", "blocks you from leaving!", "", 33, -1, 0, "", "movement"
world.addtrigger "opengate", "It's closed!", "open gate", 33, -1, 0, "", "movement"
dim glide
glide = world.getvariable("glide")
glide = 0
world.setvariable "glide", glide
end sub
sub lairsquare
world.addtrigger "counter", "Obvious paths", "", 33, -1, 0, "", "bcounter"
world.addtrigger "counter2", "Obvious exits", "", 33, -1, 0, "", "bcounter"
world.addtrigger "movement2", "blocks you from leaving!", "", 33, -1, 0, "", "bmovement"
world.addtrigger "opengate", "It's closed!", "open gate", 33, -1, 0, "", "bmovement"
dim glide
glide = world.getvariable("glide")
glide = 0
world.setvariable "glide", glide
end sub
sub counter (strTriggerName, strTriggerLine, arrWildCards)
dim glide
glide = world.getvariable("glide")
glide = glide + 1
world.setvariable "glide", glide
if (glide = 1) or (glide = 2) or (glide = 3) or _
(glide = 4) or (glide = 5) or (glide = 6) or _
(glide = 8) or (glide = 9) or (glide = 11) or _
(glide = 12) or (glide = 15) or (glide = 16) or _
(glide = 17) or (glide = 18) or (glide = 19) or _
(glide = 20) or (glide = 21) or (glide = 23) or _
(glide = 24) or (glide = 25) or (glide = 28) or _
(glide = 29) or (glide = 30) or (glide = 32) or _
(glide = 45) or (glide = 46) then
world.send "s"
end if
if (glide = 7) or (glide = 22) or (glide = 33) or _
(glide = 40) or (glide = 43) then
world.send "go gate"
end if
if (glide = 10) or (glide = 26) or (glide = 27) or _
(glide = 31) or (glide = 34) or (glide = 35) or _
(glide = 36) or (glide = 37) or (glide = 38) or _
(glide = 39) or (glide = 41) or (glide = 42) then
world.send "sw"
end if
if (glide = 13) or (glide = 14) or (glide = 47) or _
(glide = 48) then
world.send "se"
end if
if (glide = 44) then
world.send "go bridge"
end if
if glide = 48 then
world.deletetrigger "counter"
world.deletetrigger "counter2"
world.deletetrigger "movement2"
world.deletetrigger "opengate"
end if
end sub
sub movement (strTriggerName, strTriggerLine, arrWildCards)
dim glide
glide = world.getvariable("glide")
if (glide = 1) or (glide = 2) or (glide = 3) or _
(glide = 4) or (glide = 5) or (glide = 6) or _
(glide = 8) or (glide = 9) or (glide = 11) or _
(glide = 12) or (glide = 15) or (glide = 16) or _
(glide = 17) or (glide = 18) or (glide = 19) or _
(glide = 20) or (glide = 21) or (glide = 23) or _
(glide = 24) or (glide = 25) or (glide = 28) or _
(glide = 29) or (glide = 30) or (glide = 32) or _
(glide = 45) or (glide = 46) then
world.send "s"
end if
if (glide = 7) or (glide = 22) or (glide = 33) or _
(glide = 40) or (glide = 43) then
world.send "go gate"
end if
if (glide = 10) or (glide = 26) or (glide = 27) or _
(glide = 31) or (glide = 34) or (glide = 35) or _
(glide = 36) or (glide = 37) or (glide = 38) or _
(glide = 39) or (glide = 41) or (glide = 42) then
world.send "sw"
end if
if (glide = 13) or (glide = 14) or (glide = 47) or _
(glide = 48) then
world.send "se"
end if
if (glide = 44) then
world.send "go bridge"
end if
if glide = 48 then
world.deletetrigger "counter"
world.deletetrigger "counter2"
world.deletetrigger "movement2"
world.deletetrigger "opengate"
end if
end sub
sub stopit
world.deletetrigger "counter"
world.deletetrigger "counter2"
world.deletetrigger "movement2"
world.deletetrigger "opengate"
end sub
|