PDA

View Full Version : A thread to post any lich errors/bugs you find



Jaimaltz
06-22-2008, 03:50 PM
If you find any bugs, post 'em here. Maybe someone who knows how will fix them, or at least other people will know about the bugs and can work around them.

The one I found is with spell durations:

From spell-list.txt:

403:Picking Enhance
0.5 + Stats.level / 60:3:~
A scintillating light surrounds your hands\.
The scintillating light fades from your hands\.
#
404: Disarm Enhance
0.5 + Stats.level / 60:4:~
You become calm and focused\.
The focused look leaves you\.

This looks correct, but when they're cast, you only get the 30 seconds, and not the +1 second per level. Example:

inc 404
You gesture and invoke the powers of the elements for the Disarm Enhancement spell...
Your spell is ready.
You gesture.
You become calm and focused.
Cast Roundtime 3 Seconds.
>;magic

- Minor Elemental:
401: Elemental Defense I - 3:39:08
402: Presence - 3:01:57
404: Disarm Enhance - 0:00:29 (This char is level 44, should be ~74ish seconds, not 29)
406: Elemental Defense II - 3:38:52
414: Elemental Defense III - 3:38:36

mgoddess
06-22-2008, 06:07 PM
The one I found is with spell durations:
...
404: Disarm Enhance - 0:00:29 (This char is level 44, should be ~74ish seconds, not 29)
Drop the spell and then try doing the gamut of info-pulling commands (info, exp, health, skills base, skills full, etc.).

Infomonitor sometimes doesn't track track spells because it doesn't know your characters' stats & skills. Giving Infomonitor this info will allow it to track spells correctly (most of the time). Of course, there are times (and spells) when things go wrong and Infomonitor doesn't track spells correctly... and then you gotta run the gamut of info-pulling commands again. Annoying, but it works (or has worked for me). :shrug:

Of course, if you KNOW for certain that the spell does last for a certain amount of time, you can always ";magic set <spell number> <time in seconds>" (without quotes). This is cheating the system and not what you're looking for, I realize, but it's certainly better than nothing.

Jaimaltz
06-22-2008, 06:45 PM
Drop the spell and then try doing the gamut of info-pulling commands (info, exp, health, skills base, skills full, etc.).

Infomonitor sometimes doesn't track track spells because it doesn't know your characters' stats & skills. Giving Infomonitor this info will allow it to track spells correctly (most of the time). Of course, there are times (and spells) when things go wrong and Infomonitor doesn't track spells correctly... and then you gotta run the gamut of info-pulling commands again. Annoying, but it works (or has worked for me). :shrug:

Of course, if you KNOW for certain that the spell does last for a certain amount of time, you can always ";magic set <spell number> <time in seconds>" (without quotes). This is cheating the system and not what you're looking for, I realize, but it's certainly better than nothing.

Good tips. Did them, same result. If you don't mind taking the time to verify it, do you have a char that knows 404/403 just to make sure it's not just me?

Thanks.

Shaelun
06-22-2008, 09:05 PM
0.5 + Stats.level / 60

In Ruby (and indeed any language I've worked in), if you divide an integer by an integer then you get an integer result. e.g. 50 / 60 = 0. 65 / 60 = 1.

It should read 0.5 + Stats.level / 60.0 -- divide an integer by a fractional number (float, decimal, rational non-integer, whatever you want to call them) and you get a fractional number result; 30 / 60.0 = 0.5, for example.

Fixed it, thanks.

Jaimaltz
06-22-2008, 11:56 PM
0.5 + Stats.level / 60

In Ruby (and indeed any language I've worked in), if you divide an integer by an integer then you get an integer result. e.g. 50 / 60 = 0. 65 / 60 = 1.

It should read 0.5 + Stats.level / 60.0 -- divide an integer by a fractional number (float, decimal, rational non-integer, whatever you want to call them) and you get a fractional number result; 30 / 60.0 = 0.5, for example.

Fixed it, thanks.

Thanks!

LordRaven
06-24-2008, 11:19 PM
There appears to be a small issue with the goto script. I am outside the west gate of the landing and ... well here is the log.

[Wehnimer's, Exterior]
The muted sounds of loud bartering from within Wehnimer's Landing, and the lonely calls of a pair of mated fenvaoks high up in the air vie for your attention as you march along the outer western edge of the town. You also see the XXXXX disk, a town guard and a large wooden gate.
Also here: Lord XXXXX
Obvious paths: north, south
>
>;goto wl_gate
--- Lich: goto active.
ETA: 0:01:10. 141 rooms between this room (#420) and:
#223:
[Wehnimer's, Land's End Rd.]
Vigilant night guardsmen scrutinize the citizens and travelers arriving and departing through the wide gateway spanning the land route into Wehnimer's Landing. The cluttered streets of the city to the south are a far cry from the deceptively calm expanse of the wilds of Elanith outside. Two daunting towers survey the countryside and protect the town, flanking the road to the east and west.
Obvious paths: south

To go here, unpause the script. To abort, kill the script.
--- Lich: goto paused.

Woden
06-26-2008, 09:18 PM
I'm having an issue with the walk command. I downloaded walk.lic from the repository, and the first couple of times I ran it, it worked beautifully (except that it walked me out of my hunting area, heh). On subsequent invocations, it was only able to walk two or three rooms before it tried to go in a direction the room didn't have, thus hanging the script.

From what I can tell, there's no way to tell walk it made a mistake. Better yet would be if walk didn't do that, obviously. Heh.

Some Rogue
06-26-2008, 10:16 PM
The only time walk screwed up for me was after I downloaded Psinet.

Shaelun
06-27-2008, 05:43 PM
LordRaven: Sounds like a result of varying room descriptions... the map database probably includes enough information to get there, but the shortest path it can find is 141 rooms. You can fix that yourself -- see mapper.lic on the repository.

Woden/Some Rogue: Dunno what to say about that... in all of my testing, walk.lic is flawless. If PsiNet is changing that (mind you I'm saying if it is, not stating that it is), then I'm not gonna be of much help -- all I can think of is to try putting a slight pause in the script so that it hangs around momentarily after walking into a new room. Hopefully the problem is nothing more than the script trying to move before the moveable-directions have been changed from the prior room to the current one (pay attention to whether the non-existent direction the script tries to move in existed in the prior room or not, for instance). If you can establish a predictable pattern to its errors, fixing the problem is trivial.

Renian
06-29-2008, 05:35 PM
Things like checkpcs and checknpcs sometimes won't return anything, causing you to have to use weird workarounds in order to get values.

>;exec echo checkpcs
--- Lich: exec1 active.

--- Lich: exec1 has finished.
;exec echo checkpcs > 0
--- Lich: exec1 active.

--- Lich: exec1 has finished.
;exec echo checkpcs < 0
--- Lich: exec1 active.

--- Lich: exec1 has finished.
;exec echo !checkpcs < 0
--- Lich: exec1 active.
[exec1: true]
--- Lich: exec1 has finished.

My main gripe is that checkpcs > 0 doesn't work. :/

Shaelun
06-29-2008, 05:58 PM
That's by design, actually, so that this will work:


if checkpcs
# People in the room, move on
move se
else
# Nobody here, kill it
fput "kill"
end

It's not that it isn't returning anything, it's that it's returning nil (which is, granted, a value representing nothing). If you echo checkpcs.inspect instead of just checkpcs, it won't just print out nothing like that.

Notice though that checkpcs and checknpcs return an array filled with the names of people or critters in the room -- it doesn't return the number of people in the room (you can get more info by typing ;man checkpcs I think). You can always ask an array for its size with array.size, or ask if it's empty with array.empty?.

If you want to use it the way you mention, stick this at the front of your script:


class NilClass
def >(num)
return 0 > num
end
end

What that does is add the method ">" to the NilClass, so that you can compare nil to other numbers and it'll get treated as 0. You can add a less-than check by defining the "<" method the same way, or whatever else you want to be able to do.

Jaimaltz
08-07-2008, 04:31 PM
Error with ;goto (most likely from map.dat)

>;goto town square central
--- Lich: goto active.

Loading database...

--- Error: goto: marshal data too short
--- Lich: goto has exited.

Happens even when I restart Lich, but only with one character, if I play a different one, I don't get that error. I redownloaded map.dat from the repository and it works again. Was using the Linux version of Lich. FYI, if you get that error, redownloading map.dat is the fix.