Ambrosia Software Web Board: Cythera Bugfixes - Ambrosia Software Web Board

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Cythera Bugfixes Fetch bug nailed to the wall

#1 User is offline   BryceSchroeder 

  • Member
  • Group: Members
  • Posts: 29
  • Joined: 27-November 14

Posted 01 March 2016 - 04:09 AM

So, I'm starting my unofficial bugfix patch. Thanks to the people who participated in gathering that list of bugs. Lots to do. Current version for those of you with mag.py or redelv at your disposal to apply unsigned patches: Unofficial Bugfix Patch

Note that Magpie will not apply the patch above. If you need assistance patching your Cythera Data with a third-party patcher, send me an email or look for me on #cythera.

Current bug being fixed:
Bug 8: Edible strange device on dividing food (pending replication); Food Dividing Oddities (mushroom steaks &c.)

Fixing queue:
Runic magic.


Fixed so Far:
1. Fetch,
2. Fishing,
3. Aethon not responding to "Ask About..."
4. Aethon not picking locks
5. Darius and Sardis trying to sit in the same chair in the Green Goat
6. Paris' name not being remembered
7. Diomede name not being remembered.



Log of Fixed Bugs:

Quote

Bug 1:
Using the spell "Fetch" on an item will only make the item disappear,
it will not appear in the player's inventory. [BWM]


As a further elaboration on this bug report, many sorts of objects that should not really be fetchable can be targeted, e.g. cities and doors.

Fix: I've corrected both problems in the patch. It now gives an appropriate message when trying to fetch something inappropriate like a wall torch or a town. If you find anything that you aren't able to pick up normally that is nonetheless fetchable, please let me know. Also, fetching things is never considered stealing, which might be considered a bug.

As of patch version 0.2, the situation of fetching an item too heavy for your inventory is handled correctly, and the PutInside method of an object is called when it is fetched into the inventory, so e.g. lamps are extinguished when fetched.
Source code of this fix

Resources affected: 1A28 (Fetch Spell)

Quote

Bug 2:
There is no deep water in the game, making it impossible to fish. [BWM]


The fishing pole UseAt method now properly detects deep water (defined
as non-shore water on the overworld map in the original code; I do not
know why it you can't fish in towns given that there are many cases of
NPCs fishing in town, but that does seem to be the intended behavior so
I haven't changed it.) Note that fishing is not always successful.

Spoiler


Resources affected: 1091 (Fishing Pole)

Source code of this fix

Quote

Bug 3:
Aethon does not respond to his "Asked About..." action.


Now he does. The code for it was simply absent. Many items have an "informed response" coded for him, though, so this doesn't seem to be intentional (and having "Ask About..." but not having it do anything would be a bug in any case.)

Resources affected: 1861 (Aethon)

Spoiler


Quote

Bug 4:
Aethon does not pick locks when you tell him to. He says "Work the Lock!"
but he... doesn't actually do anything to the lock.


It appears that AddTask is supposed to be able to add a task consisting of the character using one item on another, but it doesn't work, at least as applied in this case. Perhaps it will be possible to fix it someday after AddTask is better understood. In the mean time, RPGUtil.PickLock is called directly by the skill 1AD5 when its .UseOn method is invoked (note that the player can't use Lock Picking directly, they have to use a lock pick in their inventory, so this only affects how NPCs pick locks.) To keep the lock from being unlocked instantaneously, we have a brief cutscene where Aethon walks over to the lock and says "Work the Lock!".

Resources affected: 1AD5 (Lock Picking), 1861 (Aethon)

Quote

Bug 5:
Darius and Sardis try to occupy the same chair at the Green Goat
(ignoring the three empty chairs at that table), from 5pm through 9pm.
[BWM]


Darius now occupies the north chair at the table instead. This was a simple change of coordinates in his schedule entry.

Resources affected: F00B (Schedules Data)

Quote

Bug 6:
Paris is always labelled as "man" instead of his name, even after learning
it. [BWM]


Fix:
Added the code to set the character bit on learning his name; it seems
to have inadvertantly been left out.
Resources affected: 1857 (Paris)

Quote

Bug 7:
Diomede is always labelled as "woman" instead of her name, even after
learning it. [BWM]


Fix:
Added the code to set the character bit on learning her name; it seems
to have inadvertently been left out.
Resources affected: 182E (Diomede)


Not fixing at this time:

Quote

If you attempt to fill a pitcher with wine, it will say "the pitcher is now filled with wine" but the pitcher will still be empty.


Reason: Difficulty reproducing the bug completely (it didn't fill with wine like it presumably ought to, but neither did it give an incorrect message.)

This post has been edited by BryceSchroeder: 09 March 2016 - 06:21 PM


#2 User is offline   BryceSchroeder 

  • Member
  • Group: Members
  • Posts: 29
  • Joined: 27-November 14

Posted 02 March 2016 - 01:52 AM

Also, I need testers. Obviously you need to have the (sadly no longer trivial) ability to run Cythera, and ideally the ability to apply unsigned patches using mag.py (or ReDelv.)

Please let me know if you are interested on #cythera.

#3 User is offline   iKaterei 

  • lazy harp seal
  • PipPipPipPipPip
  • Group: Members
  • Posts: 2,812
  • Joined: 02-January 02
  • Gender:Female
  • Location:down under

Posted 03 March 2016 - 07:13 PM

View PostBryceSchroeder, on 01 March 2016 - 04:09 AM, said:

I do not know why it you can't fish in towns given that there are many cases of NPCs fishing in town, but that does seem to be the intended behavior so I haven't changed it.


Maybe it's something to do with rights to the land/fish? The people who live there have rights and you don't. In the Pacific Northwest, a First Nations family or tribe typically 'owns' a fishing location, especially for the salmon run up the rivers.

#4 User is offline   BryceSchroeder 

  • Member
  • Group: Members
  • Posts: 29
  • Joined: 27-November 14

Posted 03 March 2016 - 07:29 PM

View PostiKaterei, on 03 March 2016 - 07:13 PM, said:

Maybe it's something to do with rights to the land/fish? The people who live there have rights and you don't. In the Pacific Northwest, a First Nations family or tribe typically 'owns' a fishing location, especially for the salmon run up the rivers.


That would make sense, except that the message given is to the effect that there don't seem to be any fish around -- unless maybe the problem is overfishing near towns...

#5 User is offline   BryceSchroeder 

  • Member
  • Group: Members
  • Posts: 29
  • Joined: 27-November 14

Posted 04 March 2016 - 01:25 AM

No bug fixed today, but I did figure out how iterators work in the delver scripting system.

In the end, there was only one thing to do with this new capability.

Posted Image

Turn everything into goats. Even my trusty shovel.

This post has been edited by BryceSchroeder: 04 March 2016 - 01:26 AM


#6 User is offline   Buzzzzy 

  • ¯\ô_°/¯
  • PipPipPipPipPip
  • Group: Members
  • Posts: 1,987
  • Joined: 26-December 05
  • Gender:Not Telling
  • Location:Map

Posted 06 March 2016 - 12:41 PM

Nice work, this is really cool. Fishing is fun, but not being able to obliterate cities at will might take some getting used to. :P

I'll stop by #cythera if I can find some time.

Quote

Clicking the bottom right corner of a party member's status window makes it go completely blank

I have no idea if it's reproducible in Basilisk, but the pixel in question is just above the Abilities tab:

Posted Image –> Posted Image

This post has been edited by Buzzzzy: 06 March 2016 - 12:42 PM


#7 User is offline   BryceSchroeder 

  • Member
  • Group: Members
  • Posts: 29
  • Joined: 27-November 14

Posted 07 March 2016 - 06:59 PM

View PostBuzzzzy, on 06 March 2016 - 12:41 PM, said:

Nice work, this is really cool. Fishing is fun, but not being able to obliterate cities at will might take some getting used to. :P/>

I'll stop by #cythera if I can find some time.


I have no idea if it's reproducible in Basilisk, but the pixel in question is just above the Abilities tab:

Posted Image –> Posted Image


Ah, okay, I was able to reproduce that now. Thanks!

Progress -- ReDelv has a script editor now. This comprises both and assembler and a disassembler for the Delver virtual machine that executes scripts.

Posted Image

The python package name is redelvlib.

#8 User is offline   BryceSchroeder 

  • Member
  • Group: Members
  • Posts: 29
  • Joined: 27-November 14

Posted 09 March 2016 - 01:46 AM

ReDelv now has a schedule editor, and some other improvements, on the github version. (It now uses the invisible prop / egg symbols gandreas helpfully left in the final version of the data file.)

Posted Image


Posted Image

#9 User is offline   BreadWorldMercy453 

  • Minion #453
  • PipPipPipPipPip
  • Group: Members
  • Posts: 1,634
  • Joined: 02-October 05
  • Gender:Not Telling

Posted 09 March 2016 - 09:04 AM

Wow wow wow, imagine all you could do with that! ^_^ And these bug fixes are amazing, I've been having a lot of fun beta-testing them. Ah, Cythera <3

Also, nice to see you, Buzzy!

View PostBryceSchroeder, on 01 March 2016 - 04:09 AM, said:

Fixing queue:
Runic magic.
Edible strange device on dividing food (pending replication); Food Dividing Oddities (mushroom steaks &c.)

I've found it way easier to get those items when I start the game as the Rogue archtype. If it's helpful, here is Seldane's instructions for getting the edible strange device (it worked for me every time). For the mushroom steak, I always seem to get it the first time I divide food after training in lockpicking, but I'm not sure whether I need to be a rogue for that to work. I've also gotten the mushroom steak using one of Slayer's save-files, which I don't think was a rogue? Sorry, I still don't understand what makes the mushroom steak appear :\

Quote

Difficulty reproducing the bug completely (it didn't fill with wine like it presumably ought to, but neither did it give an incorrect message.)

When I use a pitcher on an urn of wine, it just says "the pitcher is empty," but if I use an urn of wine on a pitcher, it will say "the pitcher is now filled with wine" (but it the pitcher will still be empty).
I'll become even more undignified than this

#10 User is offline   Selax 

  • Lord Rapierian of the Sith
  • PipPipPipPipPip
  • Group: Moderators
  • Posts: 3,026
  • Joined: 21-July 04
  • Gender:Male

Posted 13 March 2016 - 06:32 PM

Excellent work, Bryce :) . As I mentioned on #cythera, I'll be happy to help out when I can.
Long Live Cythera! Long Live the Cythera Web Board!

I now run a TS Character Killing Service.

Selax

#11 User is offline   BryceSchroeder 

  • Member
  • Group: Members
  • Posts: 29
  • Joined: 27-November 14

Posted 21 March 2016 - 09:22 PM

Quick update: I haven't been doing much bug-fixing the last few days because I'm trying to get redelv to be able to disassemble/assemble 100% of the script code. There are as it stands a dozen-odd scripts that still cause the disassembler to crash. These all seem to be scripts that include certain kinds of subroutines. The scripting system allows for having nested subroutines, something I did not know at the time that I started writing the disassembler, and which it hence handles rather poorly because it wasn't really designed to accommodate that sort of thing. It's actually formally impossible to deal with subroutines like this in the fully general case, because knowing where the subroutine ends reduces to the famously non-solvable halting problem.

I've also been going through systematically and figuring out all the system calls. Many details of the functions of parameters to calls remain unknown, but I have at this point a complete or nearly-complete list of the calls themselves. (It is possible that some of the gaps in the list are populated by system calls that only occur in the scripts that crash the disassembler, but it is also possible that these gaps simply represent system calls not used in the final version of the Cythera scenario.)

It's a bit of a slog at this point. There are only a couple of outstanding big mysteries left (and it's unclear how important they actually are), but tons and tons of grunt work is left - there's quite a lot of figuring out which bit flags and constants do what... I also got halfway through figuring out the music system last year, and then quit. It appears to be one of those half-documented sort-of-proprietary... things... Apple liked to make ever so much in the 90s. It should be possible to translate it into MIDI, though.

Another big piece of work remaining is documentation. I've been fairly good about putting stuff constants and binary formats on the wiki or in the header files on github as they're discovered, but other things - basically, how stuff works, how these little pieces are used together to make a game - is harder to put into understandable archival form. I'm not sure how much effort to put into that, given the lack of serious interest in this project by other programmers (at least so far). Ah well, that's what I get for not doing all this ten years ago when upwards of a dozen people would have cared instead of, like, three...

This post has been edited by BryceSchroeder: 21 March 2016 - 09:23 PM


#12 User is offline   BryceSchroeder 

  • Member
  • Group: Members
  • Posts: 29
  • Joined: 27-November 14

Posted 23 March 2016 - 12:08 AM

Okay, got that done - redelv's assembly language system (disassembler and assembler) can now cope with all the scripting code in Cythera, with six exceptions. Two of them are just plain weird things that may in fact be broken (One appears to have an array cut off part-way through, the other of which has a bunch of references to strings in other resources... but in fact the strings are in itself.) The other four contain complex instances of nested subroutines. One of these is the Strange Device object class, and the other are the character classes for Tros, Palaestra and Pheres, whose lecturing dialog is implemented in an... interesting sort of way. Redelv can assemble all these things, it's just a matter of manually correcting the output of the disassembler, so it doesn't actually prevent you from editing any of those characters/items.

Running some regression tests now, but so far things are looking good.

#13 User is offline   BreadWorldMercy453 

  • Minion #453
  • PipPipPipPipPip
  • Group: Members
  • Posts: 1,634
  • Joined: 02-October 05
  • Gender:Not Telling

Posted 24 March 2016 - 08:01 PM

I feel bad that I hardly understood anything you said ): I'm the one benefitting from all your hard work, and I'm doing nothing to help. I love Cythera-related grunt work too! But I can't make heads or tails of this programming stuff :x
I'll become even more undignified than this

#14 User is offline   BryceSchroeder 

  • Member
  • Group: Members
  • Posts: 29
  • Joined: 27-November 14

Posted 25 March 2016 - 12:08 AM

You absolutely have done stuff to help. I used your meticulously gathered NPC schedules to find and understand the data for that. Other people have helped me too - I used Selax's list of zoneports when I was figuring out how that worked. (And previously, when I figured out how the world model was stored.) I go to The Wizard's Cythera Guides site frequently to reference stuff. I used Sfiera's Cythera CLUT when I reverse engineered the compressed graphics format.

I'm just disappointed that given how rich in programmers our small community is, how I seem to be the only one writing any code to advance this, or doing much analytical work. (Habnabit has helped some, particularly early on, in the not-to-be-under-appreciated role of "other programmer to bounce ideas around with") It's slightly discouraging that after well over a year, I have had zero pull requests on github, just saying, and only a handful of wiki edits by people other than me.

I'll keep working on this anyway, though, because I actually do enjoy working on it, so I'm not really depressed about it or anything. Also, I suppose I haven't exactly been clear that I wanted or would appreciate help, I guess, so, I'll just put it out here that I would - I've no desire to monopolize the work on the technical documentation project, anyone who wants to help is more than welcome.

This post has been edited by BryceSchroeder: 25 March 2016 - 12:20 AM


#15 User is offline   BryceSchroeder 

  • Member
  • Group: Members
  • Posts: 29
  • Joined: 27-November 14

Posted 27 March 2016 - 11:41 PM

Working on figuring out how the AI works. This is obviously a wonderful excuse to find out what happens if I put twenty undead and six liches right out from of the castle in Cademia.

Posted Image

Unfortunately, it did not turn into a battle royale. Berossus declined to participate in the battle taking place in his castle, even when a lich hit him with a lightning bolt meant for the jester. Neither did his guards. You would think that "horrid undead monster shooting the judge with lightning" would fall into the category of behavior that a guard should prevent. I guess the guards were too busy watching me in case I accidentally attacked a chicken.

I'm surprised guards aren't Good-aligned. Only the hero(ine), fools and kings seem to be. (Magpie isn't in my party, that jester is a generic fool to give the liches something other than me to attack.)

This post has been edited by BryceSchroeder: 27 March 2016 - 11:47 PM


#16 User is offline   BreadWorldMercy453 

  • Minion #453
  • PipPipPipPipPip
  • Group: Members
  • Posts: 1,634
  • Joined: 02-October 05
  • Gender:Not Telling

Posted 28 March 2016 - 08:38 AM

Huh, this reminds me of a chronicle...
I'll become even more undignified than this

#17 User is offline   BryceSchroeder 

  • Member
  • Group: Members
  • Posts: 29
  • Joined: 27-November 14

Posted 28 March 2016 - 09:02 AM

Oh man. That story.

Quote

"Is the problem solved?" Chevodocus asked.


Chevodocus. I do at least like how the author went to the trouble of making up a vaguely (if only vaguely) "Cytherian"-sounding name instead of pinching a name from the Odyssey.

#18 User is offline   BreadWorldMercy453 

  • Minion #453
  • PipPipPipPipPip
  • Group: Members
  • Posts: 1,634
  • Joined: 02-October 05
  • Gender:Not Telling

Posted 28 March 2016 - 02:39 PM

I just love bellerophen's stories so much :D A couple of years ago, I wrote four more chapters to complete it, but mine can't be compared with the brilliance of the original ^_^ (Nor could it be compared with the epic 32-chapter Grapper's Return!)
I'll become even more undignified than this

#19 User is offline   BryceSchroeder 

  • Member
  • Group: Members
  • Posts: 29
  • Joined: 27-November 14

Posted 28 March 2016 - 06:46 PM

Obligatory log update -- no particular progress is likely today, I need to build a thermostatic ventilation control for my solar greenhouse, which is in danger of working a bit too well on sunny days...

View PostBreadWorldMercy453, on 28 March 2016 - 02:39 PM, said:

I just love bellerophen's stories so much :D A couple of years ago, I wrote four more chapters to complete it, but mine can't be compared with the brilliance of the original ^_^ (Nor could it be compared with the epic 32-chapter Grapper's Return!)


Got a link?

#20 User is offline   BreadWorldMercy453 

  • Minion #453
  • PipPipPipPipPip
  • Group: Members
  • Posts: 1,634
  • Joined: 02-October 05
  • Gender:Not Telling

Posted 28 March 2016 - 08:23 PM

This post should have links to all the hijacked chapters of old abandoned chronicle series ^_^ (Links to the original chapters would be in the first post of that thread)

Good luck with the thermostatic ventilation control! @_@
I'll become even more undignified than this

#21 User is offline   Selax 

  • Lord Rapierian of the Sith
  • PipPipPipPipPip
  • Group: Moderators
  • Posts: 3,026
  • Joined: 21-July 04
  • Gender:Male

Posted 09 April 2016 - 10:22 PM

View PostBryceSchroeder, on 25 March 2016 - 12:08 AM, said:

I'm just disappointed that given how rich in programmers our small community is, how I seem to be the only one writing any code to advance this, or doing much analytical work. (Habnabit has helped some, particularly early on, in the not-to-be-under-appreciated role of "other programmer to bounce ideas around with") It's slightly discouraging that after well over a year, I have had zero pull requests on github, just saying, and only a handful of wiki edits by people other than me.

I'll keep working on this anyway, though, because I actually do enjoy working on it, so I'm not really depressed about it or anything. Also, I suppose I haven't exactly been clear that I wanted or would appreciate help, I guess, so, I'll just put it out here that I would - I've no desire to monopolize the work on the technical documentation project, anyone who wants to help is more than welcome.


I'll have a look at the code (if time permits), but my own personal programming ability is virtually nil. I'm sorry to have not been more helpful (especially in the beta-testing); unfortunately, the last month or two have been quite busy, and I don't really expect that to change for at least another month or two.

View PostBryceSchroeder, on 27 March 2016 - 11:41 PM, said:

Unfortunately, it did not turn into a battle royale. Berossus declined to participate in the battle taking place in his castle, even when a lich hit him with a lightning bolt meant for the jester. Neither did his guards. You would think that "horrid undead monster shooting the judge with lightning" would fall into the category of behavior that a guard should prevent. I guess the guards were too busy watching me in case I accidentally attacked a chicken.


Well, clearly attacking a chicken is a more serious offense than attacking a judge!
Long Live Cythera! Long Live the Cythera Web Board!

I now run a TS Character Killing Service.

Selax

#22 User is offline   BryceSchroeder 

  • Member
  • Group: Members
  • Posts: 29
  • Joined: 27-November 14

Posted 17 April 2016 - 11:38 PM

I finished that greenhouse project, so hopefully I'll be getting back to this soonish, just FYI. Thanks for your patience.

#23 User is offline   BreadWorldMercy453 

  • Minion #453
  • PipPipPipPipPip
  • Group: Members
  • Posts: 1,634
  • Joined: 02-October 05
  • Gender:Not Telling

Posted 18 April 2016 - 08:16 AM

Congrats, Bryce! ^_^ As usual, all I can do is admire your wide range of skills from a distance @_@
I'll become even more undignified than this

#24 User is offline   Selax 

  • Lord Rapierian of the Sith
  • PipPipPipPipPip
  • Group: Moderators
  • Posts: 3,026
  • Joined: 21-July 04
  • Gender:Male

Posted 26 March 2017 - 06:01 PM

So, I'm still alive. I still mean to look further into this when time provides (which may still be awhile). I'll try to see if I can poke Wizard into looking at it when he has time as well.
Long Live Cythera! Long Live the Cythera Web Board!

I now run a TS Character Killing Service.

Selax

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users