[sorta OT] Looking for help :)

NOTICE: This forum is archived as read only.
Please use the Github Discussions at https://github.com/exult/exult/discussions
Forum rules
NOTICE: This forum is archived as read only.
Please use the Github Discussions at https://github.com/exult/exult/discussions
Wizardry Dragon
Posts: 1241
Joined: Thu May 14, 2020 1:34 pm

[sorta OT] Looking for help :)

Post by Wizardry Dragon »

Okay, I've (re-)started my little Ultima 7 mod project that's using Exult/ExultStudio to modify the Ultima 7/Serpent Isle game to reintegrate deleted plot elements, add new ones, etc.

I'm looking for people interested in lending a hand in the development of the project. If anyone's interested please contact me by replying to this post or by email at pdodge@crpgn.org

(I hope the Exult team doesn't mind me posting this)

~ Wizardry Dragon
"Not sea shanty again!"
Cheers, Wizardry Dragon
Lead Designer, Ultima VII: The Feudal Lands
www.thefeudallands.ca
Skutarth

Re: [sorta OT] Looking for help :)

Post by Skutarth »

I would be glad to help, if this will go anywhere. I run into people who want to start stuff all the time, then just mozy off.
Wizardry Dragon
Posts: 1241
Joined: Thu May 14, 2020 1:34 pm

Re: [sorta OT] Looking for help :)

Post by Wizardry Dragon »

It's been my pet project since RC 2, I've worked on it steadily since then (and boy, have my skills grown, god my old usecode looks like gibberish :) )

I don't plan on abandoning it :)

What can you contribute? I have what I'm going to add on for story (though Im open to suggestions), I need someone who can do usecode, map editing, and/or shape-making (that is, making new gfx for the game/addon as needed)

~ Wizardry Dragon
Cheers, Wizardry Dragon
Lead Designer, Ultima VII: The Feudal Lands
www.thefeudallands.ca
Skutarth

Re: [sorta OT] Looking for help :)

Post by Skutarth »

I really wanted to learn to make usecode and shape-making, but I can't find any good sources. Yes, I did check the documentation, and http://www.sophen.de/exult/ doesn't help much...
Wizardry Dragon
Posts: 1241
Joined: Thu May 14, 2020 1:34 pm

Re: [sorta OT] Looking for help :)

Post by Wizardry Dragon »

I am working on making Usecode documentation myself. If you're interested in learning it, I could definetly use an extra hand :)

~ Wizardry Dragon
Cheers, Wizardry Dragon
Lead Designer, Ultima VII: The Feudal Lands
www.thefeudallands.ca
Skutarth

Re: [sorta OT] Looking for help :)

Post by Skutarth »

That would be great! I will surely lend a hand if I had proper sources! I need the knowledge for future projects, anyway!
Wizardry Dragon
Posts: 1241
Joined: Thu May 14, 2020 1:34 pm

Re: [sorta OT] Looking for help :)

Post by Wizardry Dragon »

When it is up Ill post it at the old project page (I actually managed to remember my password :) )

http://www.sourceforge.net/projects/u7giridion

I have it in a semi-state of completeion right now, might just post it anyway :)

~ Wizardry Dragon
Cheers, Wizardry Dragon
Lead Designer, Ultima VII: The Feudal Lands
www.thefeudallands.ca
Skutarth

Re: [sorta OT] Looking for help :)

Post by Skutarth »

I'm on AIM right now, so you can contact me if you'd like.
I use the same screen-name: Skutarth
Wizardry Dragon
Posts: 1241
Joined: Thu May 14, 2020 1:34 pm

Re: [sorta OT] Looking for help :)

Post by Wizardry Dragon »

I don't have aim, but you can find me on the CRPGN chat sometimes (Im on now):

http://crpgn.org/chat/phpMyChat.php3
Cheers, Wizardry Dragon
Lead Designer, Ultima VII: The Feudal Lands
www.thefeudallands.ca
artaxerxes
Site Admin
Posts: 1310
Joined: Thu May 14, 2020 1:34 pm

Re: [sorta OT] Looking for help :)

Post by artaxerxes »

Wizardry:
I desperatly need to master usecode (since I'm also involved in another project using ES).

I have tools for map editing. Provide the chunks and I'll make the map.

Sounds good to you?

Artaxerxes
Wizardry Dragon
Posts: 1241
Joined: Thu May 14, 2020 1:34 pm

Re: [sorta OT] Looking for help :)

Post by Wizardry Dragon »

Sounds good.

I have the beginnings of a map going :) The one addition that is my own to the world is a city Im working on. I can send you the mapfile from my patch dir if you want me too.

If someone has the NPC editor working then I desperately need them :)

~ Wizardry Dragon
Cheers, Wizardry Dragon
Lead Designer, Ultima VII: The Feudal Lands
www.thefeudallands.ca
Skutarth

Re: [sorta OT] Looking for help :)

Post by Skutarth »

I don't know how to use http://crpgn.org/chat/phpMyChat.php3...
Wizardry Dragon
Posts: 1241
Joined: Thu May 14, 2020 1:34 pm

Re: [sorta OT] Looking for help :)

Post by Wizardry Dragon »

Just type something into the line and you say it :) Make sure you select "Blackrock" under "Rooms created by users"

I know Artaxerxes has a sourceforge.net login, but do you? I need to know the unix names for your logins to add you to the SF.net project :)

I'm setting up a webpage at http://crpgn.org/u7blackrock/

~ Wizardry Dragon
Cheers, Wizardry Dragon
Lead Designer, Ultima VII: The Feudal Lands
www.thefeudallands.ca
artaxerxes
Site Admin
Posts: 1310
Joined: Thu May 14, 2020 1:34 pm

Re: [sorta OT] Looking for help :)

Post by artaxerxes »

let's get on irc (irc.freenode.net) and see each other in #exult
We'll talk more there.

Artaxerxes
Wizardry Dragon
Posts: 1241
Joined: Thu May 14, 2020 1:34 pm

Re: [sorta OT] Looking for help :)

Post by Wizardry Dragon »

I'm on the http://crpgn.org/chat/phpMyChat.php3 with Skutarth, if you want to join us :)

(I dont have an IRC client)

~ Wizardry Dragon
Cheers, Wizardry Dragon
Lead Designer, Ultima VII: The Feudal Lands
www.thefeudallands.ca
wjp
Site Admin
Posts: 1708
Joined: Thu May 14, 2020 1:34 pm

Re: [sorta OT] Looking for help :)

Post by wjp »

> (I dont have an IRC client)

That's easily fixed, you know ;-)
Wizardry Dragon
Posts: 1241
Joined: Thu May 14, 2020 1:34 pm

Re: [sorta OT] Looking for help :)

Post by Wizardry Dragon »

Tehehe, I have 18.8 mb left on a 50 gb drive :)

~ Wizardry Dragon
Cheers, Wizardry Dragon
Lead Designer, Ultima VII: The Feudal Lands
www.thefeudallands.ca
wjp
Site Admin
Posts: 1708
Joined: Thu May 14, 2020 1:34 pm

Re: [sorta OT] Looking for help :)

Post by wjp »

That should be plenty :-)
drcode
Site Admin
Posts: 2267
Joined: Thu May 14, 2020 1:34 pm

Re: [sorta OT] Looking for help :)

Post by drcode »

This sounds great. Let us know of any bugs you find (I'm sure you will:-)). One thought, although I'm not sure how to do this, would be some sort of 'patch' ability in usecode. One possibility would be to allow you to write a new function for an NPC which can call the old function.
Wizardry Dragon
Posts: 1241
Joined: Thu May 14, 2020 1:34 pm

Re: [sorta OT] Looking for help :)

Post by Wizardry Dragon »

Dynamic Usecode would be great. I hate having to use tons of flags to know whether a NPC has been talked to :)
Cheers, Wizardry Dragon
Lead Designer, Ultima VII: The Feudal Lands
www.thefeudallands.ca
Skutarth

Re: [sorta OT] Looking for help :)

Post by Skutarth »

The Met flag? You're just inexperienced with the NPC editor, noticing you can't use it for some reason...
Wizardry Dragon
Posts: 1241
Joined: Thu May 14, 2020 1:34 pm

Re: [sorta OT] Looking for help :)

Post by Wizardry Dragon »

If I could use the NPC editor that would not help much, I'm doing this in the code and as far as I know you cant access it through UCC (at least, my experimentation hasn't turned anything up - is it somewheres in the UI_get_item_property() 's list?)
Cheers, Wizardry Dragon
Lead Designer, Ultima VII: The Feudal Lands
www.thefeudallands.ca
drcode
Site Admin
Posts: 2267
Joined: Thu May 14, 2020 1:34 pm

Re: [sorta OT] Looking for help :)

Post by drcode »

There are functions for getting, setting, and clearing flags. Look in bgintrinsics.h or siintrinsics.h.
Wizardry Dragon
Posts: 1241
Joined: Thu May 14, 2020 1:34 pm

Re: [sorta OT] Looking for help :)

Post by Wizardry Dragon »

Okay, got that, but when I get a NPC to join my party in Black Gate, they follow me, I can manipulate their inventory, but they don't come up on the status bar. Any idea why?

~ Wizardry Dragon
Cheers, Wizardry Dragon
Lead Designer, Ultima VII: The Feudal Lands
www.thefeudallands.ca
Dominus
Site Admin
Posts: 5656
Joined: Thu May 14, 2020 1:34 pm

Re: [sorta OT] Looking for help :)

Post by Dominus »

The faces are hardcoded into Exult. Only faces of official
partymembers can be put there. Especially as those faces are off the
SI-paperdolls (or our substitutes).
--
Read the documentation and the FAQ! There is no excuse for not reading them! RTFM
Read the Rules!
We do not support Piracy/Abandonware/Warez!
Skutarth

Re: [sorta OT] Looking for help :)

Post by Skutarth »

Darn it! The face for Sentri is drawn incorrectly, though!
Wizardry Dragon
Posts: 1241
Joined: Thu May 14, 2020 1:34 pm

Re: [sorta OT] Looking for help :)

Post by Wizardry Dragon »

Could you program Exult so that it read the faces and their corresponding shape #s in faces.vga from a XML file?
Cheers, Wizardry Dragon
Lead Designer, Ultima VII: The Feudal Lands
www.thefeudallands.ca
Wizardry Dragon
Posts: 1241
Joined: Thu May 14, 2020 1:34 pm

Re: [sorta OT] Looking for help :)

Post by Wizardry Dragon »

Maybe something like this in Exult.cfg



face # in faces.vga


face # in faces.vga


face # in faces.vga

etc.


and for custom -added people can have it by NPC #

eg.


face # in faces.vga
Cheers, Wizardry Dragon
Lead Designer, Ultima VII: The Feudal Lands
www.thefeudallands.ca
Wizardry Dragon
Posts: 1241
Joined: Thu May 14, 2020 1:34 pm

Re: [sorta OT] Looking for help :)

Post by Wizardry Dragon »

Hmm, got this from Dominus, they're from the paperdolls. So change it from faces.vga to paperdoll.vga or whatever :)

(sorry for the triple-post :) )

~ Wizardry Dragon
Cheers, Wizardry Dragon
Lead Designer, Ultima VII: The Feudal Lands
www.thefeudallands.ca
Dominus
Site Admin
Posts: 5656
Joined: Thu May 14, 2020 1:34 pm

Re: [sorta OT] Looking for help :)

Post by Dominus »

*cough*
perhaps I was not very clear.
The faces you see in the status bar are obviously not the ones found in faces.vga.
Some are from Sperpent Isle's paperdoll.vga (the companions) but there are only the ones that can join you in SI.
The ones that can join you in BG are not found in any of the original game files but in one supplied by Exult. There we added only the ones that can possibly be a member of the party in BG.
The whole SI-paperdoll style in BG is only some kind of hack by us!

So what you ask for is not possible.

As for Sentri and the rest of the party members besides the three stooges we had to draw them ourselves (or better users from here made them actually) and so they obviously look not that good in parts.
--
Read the documentation and the FAQ! There is no excuse for not reading them! RTFM
Read the Rules!
We do not support Piracy/Abandonware/Warez!
Wizardry Dragon
Posts: 1241
Joined: Thu May 14, 2020 1:34 pm

Re: [sorta OT] Looking for help :)

Post by Wizardry Dragon »

Eh, I get the feeling I wasn't clear either, but since Exult is opensource I can try to do it myself ... :|

What I want is a file somewheres for the status bar that says this NPC # has this shape # from the exult_data.flx (or whatever its called) This way I can add my own NPcs. Then we have a system that check against a file. For example, when the NPC joins have it check the NPC number against the file to see what shape from the Exult data flex to use.

Probably not the most efficient way, it's not impossible, Ive done it before, but I don't know Exult enough to know how that would be implemented in the engine

BTW, where is the data hardcoded?

(Katrina doesnt look that bad BTW, but you got that from the original paperdoll :)

~ Wizardry Dragon
Cheers, Wizardry Dragon
Lead Designer, Ultima VII: The Feudal Lands
www.thefeudallands.ca
Dominus
Site Admin
Posts: 5656
Joined: Thu May 14, 2020 1:34 pm

Re: [sorta OT] Looking for help :)

Post by Dominus »

the file is actually exult_bg.flx (you can put into your patch dir and rename it to exult_bg.vga and look at it).

It is hardcoded in /gumps/Paperdoll_gump_info.cc in our code.

Okay, now that we are sure that we understand each other correctly (you really should get IRC btw) we can talk about it.

I'm not sure how much sense it would make to do this on source code level. It probably should be able to get this information (Npc#->shape# in custom.vga) from a special file that can be edited wihout need for recompiling Exult.

Something for Jeff to think about. You should make a feature request in our tracker system (not the bug tracker but the feature tracker).
--
Read the documentation and the FAQ! There is no excuse for not reading them! RTFM
Read the Rules!
We do not support Piracy/Abandonware/Warez!
Wizardry Dragon
Posts: 1241
Joined: Thu May 14, 2020 1:34 pm

Re: [sorta OT] Looking for help :)

Post by Wizardry Dragon »

Thats what I was talking about, have some file it looks to instead of hard coding it.

My programming teacher wouldnt even mark a program if it had things hard coded :)

~ Wizardry Dragon
Cheers, Wizardry Dragon
Lead Designer, Ultima VII: The Feudal Lands
www.thefeudallands.ca
wjp
Site Admin
Posts: 1708
Joined: Thu May 14, 2020 1:34 pm

Re: [sorta OT] Looking for help :)

Post by wjp »

Ah, but how far do you go with un-hard-coding things?

Numeric/string constants? (If so, all constants? Only some?)
Key shortcuts? (If so, how much flexibility do you allow?)
GUI layout?
Actual algorithms used? (Combat damage algorithm, monster AI, ...)
drcode
Site Admin
Posts: 2267
Joined: Thu May 14, 2020 1:34 pm

Re: [sorta OT] Looking for help :)

Post by drcode »

The sort of thing you're asking for has been suggested before (I think by Tristan). You wouldn't want to have the information in exult.cfg, since each user has his/her own version of this. But there could be a 'game.cfg' for each game that Exult supports (BG, SI, and user-created games) that have most of the constants that are currently hard-coded in Exult.
Wizardry Dragon
Posts: 1241
Joined: Thu May 14, 2020 1:34 pm

Re: [sorta OT] Looking for help :)

Post by Wizardry Dragon »

That would help a ton for us mod crews if you implemented it :)

~ Wizardry Dragon
Cheers, Wizardry Dragon
Lead Designer, Ultima VII: The Feudal Lands
www.thefeudallands.ca
Skutarth

Re: [sorta OT] Looking for help :)

Post by Skutarth »

I agree. I can't shape modify for our team if it's not changed!
Wizardry Dragon
Posts: 1241
Joined: Thu May 14, 2020 1:34 pm

Re: [sorta OT] Looking for help :)

Post by Wizardry Dragon »

I put in a feature request for that :)

Okay a question for the Usecode-savvy out there: how do I determine the party's gold, and how do I take away and add to this amount? Also, how do I give the party items? (I need this for commerence)
Cheers, Wizardry Dragon
Lead Designer, Ultima VII: The Feudal Lands
www.thefeudallands.ca
drcode
Site Admin
Posts: 2267
Joined: Thu May 14, 2020 1:34 pm

Re: [sorta OT] Looking for help :)

Post by drcode »

This is vague, as it's from memory: There are usecode functions for counting, adding, and deleting party objects. And gold's item # is, I think, 644, but you can check by looking for 'gold' in bgitems or in EStudio's shape browser.
Wizardry Dragon
Posts: 1241
Joined: Thu May 14, 2020 1:34 pm

Re: [sorta OT] Looking for help :)

Post by Wizardry Dragon »

Maybe a c_gold item constant would be good! :)

What I cant figure how to do the parameters for the count add and delete functions.

~ Wizardry Dragon
Cheers, Wizardry Dragon
Lead Designer, Ultima VII: The Feudal Lands
www.thefeudallands.ca
Wizardry Dragon
Posts: 1241
Joined: Thu May 14, 2020 1:34 pm

Re: [sorta OT] Looking for help :)

Post by Wizardry Dragon »

Can someone help me with the parameters of the count, add, and delete?

~ Wizardry Dragon
Cheers, Wizardry Dragon
Lead Designer, Ultima VII: The Feudal Lands
www.thefeudallands.ca
wjp
Site Admin
Posts: 1708
Joined: Thu May 14, 2020 1:34 pm

Re: [sorta OT] Looking for help :)

Post by wjp »

count_objects(npc#, shape, quality, frame)

npc# can also be -357 for entire party, -356 for avatar
quality can be -359 for any quality
frame can be -359 for any frame


add_party_items(count, shape, quality, frame, true/false)

not a clue what the true/false at the end does


remove_party_items(count, shape, quality, frame, true/false)

frame/quality can again be -359 to mean any frame/quality
not a clue what the true/false at the end does
Wizardry Dragon
Posts: 1241
Joined: Thu May 14, 2020 1:34 pm

Re: [sorta OT] Looking for help :)

Post by Wizardry Dragon »

So if I want to check for x amount of gold it'd be

count_objects(-357, (gold shape #), -359, -359)

Maybe you should have constants to make it easier, as well as easier to understand:

count_objects(c_party, c_gold, c_any_quality, c_any_frame);

Is the t/f a required parameter?

~ Wizardry Dragon
Cheers, Wizardry Dragon
Lead Designer, Ultima VII: The Feudal Lands
www.thefeudallands.ca
wjp
Site Admin
Posts: 1708
Joined: Thu May 14, 2020 1:34 pm

Re: [sorta OT] Looking for help :)

Post by wjp »

> So if I want to check for x amount of gold it'd be


looks good

> Is the t/f a required parameter?

yes
Wizardry Dragon
Posts: 1241
Joined: Thu May 14, 2020 1:34 pm

Re: [sorta OT] Looking for help :)

Post by Wizardry Dragon »

Hmm. Does it make any difference either way?

How do I make the conversation pause and do out of conversation stuff? Like the Frigidazzi sequence or the wall of lights? Maybe you can't in BG? Been trying to figure that out to no avail...

~ Wizardry Dragon
Cheers, Wizardry Dragon
Lead Designer, Ultima VII: The Feudal Lands
www.thefeudallands.ca
drcode
Site Admin
Posts: 2267
Joined: Thu May 14, 2020 1:34 pm

Re: [sorta OT] Looking for help :)

Post by drcode »

You probably don't want to hear this, but you'd have to study the disassembled Usecode from SI. My guess is that you end the conversation, then schedule the sequence using the first couple of intrinsics. You'd want to set the 'dont_move' flag on the Avatar so that the user can't do anything else while the animation takes place.

I wonder if they had a special tool to set this up in SI, since it seems like it would be hard to program by hand.
Wizardry Dragon
Posts: 1241
Joined: Thu May 14, 2020 1:34 pm

Re: [sorta OT] Looking for help :)

Post by Wizardry Dragon »

Maybe you could program a UI_remove_npc_face that doesn't break out of the script? Cause everything up to that function works but nothing after.

~ Wizardry Dragon
Cheers, Wizardry Dragon
Lead Designer, Ultima VII: The Feudal Lands
www.thefeudallands.ca
wjp
Site Admin
Posts: 1708
Joined: Thu May 14, 2020 1:34 pm

Re: [sorta OT] Looking for help :)

Post by wjp »

UI_remove_npc_face doesn't break out of the script.
Wizardry Dragon
Posts: 1241
Joined: Thu May 14, 2020 1:34 pm

Re: [sorta OT] Looking for help :)

Post by Wizardry Dragon »

Well, whatever it does, it seems like breaking, because as soon as it hits that point in my script, nothing else works.

I have

case "bye":
{
say("Good day!");
UI_remove_npc_face(item);
UI_item_say(item, "Walk in Courage!");
}

and I doubt it's a problem with UI_item_say as it also doesn't work with UI_lightning(), UI_set_weather(2) or 1 or 3, UI_obj_sprite_effect() )which works BTW, but you have to loop through each frame) Nothing works after UI_remove_npc_face(item);, no matter what it is I put there. They work fine with the face up there but the text is overlaid on whatever happens, not exactly what I want :|

~ Wizardry Dragon
Cheers, Wizardry Dragon
Lead Designer, Ultima VII: The Feudal Lands
www.thefeudallands.ca
drcode
Site Admin
Posts: 2267
Joined: Thu May 14, 2020 1:34 pm

Re: [sorta OT] Looking for help :)

Post by drcode »

There's a bit you have to know about Exult's internals. When the game is running normally, there's a 'time queue' that schedules things to happen. This includes everything, from each NPC taking a step to sprites and the text shown by UI_item_say. Within a usecode function, the queue is stopped, and that's why you don't see anyone walking around during animations. The way U7 scripts things is it uses two of the intrinsics, 'execute_usecode_array' and 'delayed_execute_usecode_array'. Our usecode language (we don't know what the original looked like) has some support for this using the 'script' construct, like this example in the 'Island Patch':
if (UI_get_npc_object(AMY) in UI_get_party_list())
script AMY
{
wait 1; step 6;
wait 1; step 6;
wait 1; frame 11;
wait 1; frame 12;
wait 2; frame 11;
wait 1; frame 0;
wait 1; call 0x568;
}

This doesn't have a delay (which would look like "script AMY after 12 ticks'), and it causes the Amy character to take a couple steps, bend down, and then another usecode function (0x568) is called. This could definitely use some work (and documentation when it's done), since you ought to be able to use names for the frames (like 'kneel', 'stand', 'sit') as well as the directions.
Locked