Combat
Forum rules
NOTICE: This forum is archived as read only.
Please use the Github Discussions at https://github.com/exult/exult/discussions
NOTICE: This forum is archived as read only.
Please use the Github Discussions at https://github.com/exult/exult/discussions
-
- Posts: 565
- Joined: Thu May 14, 2020 1:34 pm
Combat
From what I could tell looking at the exult code it's pretty advanced stuff... but I'm wondering if it COULD be fixed to where the distance between targets isn't such a mess? It seems like in the original, they would move around more, such as moving back a few tiles (maybe the max range of the melee weapon?) and striking again. It looked like the various combat types were implemented as far as I could tell but whether or not they work I have no clue.
Additionally, if one were to make individual scripts for all party members on how they behave in combat, would it be possible? Such as if someone was assigned to "Flank", if it would be possible for that party member's script to calculate their distance from the Avatar during combat every so often and actually "flank" them such as it did in U6 engine, relocating to that tile and attacking the nearest enemy?
It's time we take a good look at combat... especially since there have been several new mod work springing up and the forums are active again!
Additionally, if one were to make individual scripts for all party members on how they behave in combat, would it be possible? Such as if someone was assigned to "Flank", if it would be possible for that party member's script to calculate their distance from the Avatar during combat every so often and actually "flank" them such as it did in U6 engine, relocating to that tile and attacking the nearest enemy?
It's time we take a good look at combat... especially since there have been several new mod work springing up and the forums are active again!
-------------------------------------------------------------------------------------
Ultima 6 Mod for Exult site: http://www.ultima6.realmofultima.com/
Ultima 6 Mod for Exult site: http://www.ultima6.realmofultima.com/
Re: Combat
It'd be great if this would be looked into.
This and the broken npc schedules (npc's not setting tables, not using shutters/streetlights etc.) are the only two things keeping Exult away from near-perfection.
This and the broken npc schedules (npc's not setting tables, not using shutters/streetlights etc.) are the only two things keeping Exult away from near-perfection.
-
- Posts: 1219
- Joined: Thu May 14, 2020 1:34 pm
Re: Combat
Agreed, these areas need love. It looks silly when a bowman walks up to his target.
-
- Posts: 565
- Joined: Thu May 14, 2020 1:34 pm
Re: Combat
Yeah, it's almost like they shoot once then run up to the target like they are carrying a melee weapon and shoot them at point blank range. I'm wondering if a distance check is off somehow?
-------------------------------------------------------------------------------------
Ultima 6 Mod for Exult site: http://www.ultima6.realmofultima.com/
Ultima 6 Mod for Exult site: http://www.ultima6.realmofultima.com/
-
- Posts: 565
- Joined: Thu May 14, 2020 1:34 pm
Re: Combat
If someone wanted to do a minor fix to ranged combat, would it be possible to add code to a ranged weapon to have the user check proper ranges from their target or would it not override the main combat functions?
-------------------------------------------------------------------------------------
Ultima 6 Mod for Exult site: http://www.ultima6.realmofultima.com/
Ultima 6 Mod for Exult site: http://www.ultima6.realmofultima.com/
-
- Posts: 1219
- Joined: Thu May 14, 2020 1:34 pm
Re: Combat
It would have to be done in the Exult engine itself, and should affect all ranged weapons. For example, if Luther has a halberd and Templar has a sword, Luther should step back so Templar can't hit him.
-
- Posts: 565
- Joined: Thu May 14, 2020 1:34 pm
Re: Combat
It's depressing combat is the red headed stepchild of Exult lol. It's downright awful and is detrimental to gameplay... is anyone still actively looking into it?
-------------------------------------------------------------------------------------
Ultima 6 Mod for Exult site: http://www.ultima6.realmofultima.com/
Ultima 6 Mod for Exult site: http://www.ultima6.realmofultima.com/
Re: Combat
Yeah, NPC schedules and combat are what is holding Exult back. I really enjoy messing around with Exult for the mods and extended features, but whenever I want to experience the world of Ultima 7 in its fantastic glory, I boot up the original in Dosbox.
It's just a joy to watch Sentri shoot a few arrows at his archery target and then pull out his sword to have a go at the training dummy. In Exult he weirdly walks back and forth between the two and gives each a single whack of his sword.
And of course the crazy intricate waiter schedules where they walk back and forth between kitchen and clients, ask them what they want to have and place food on the plates that actually gets eaten. Ultima 7 might be the only game in the world that has this kind of detail, much of which is still quite wonky in Exult.
Some of the schedules are already quite good in Exult, such as baking or tailoring, but they don't look as fluid or natural as in the original. For example, the tailor in Exult will arrange clothing items in a pattern starting from the very top left of a table, which looks very unnatural. In the original the NPC simply puts the clothes on the table nearby, next to a position from where she is standing.
Also the combat system of the original might look deceptively simple and chaotic at first glance, but is actually quite complex and smart about a few things. Characters with high agility/combat will actually strike an enemy, take a few steps back to avoid getting hit by the enemy on his next strike, and then strike again when the enemy moves within range. You can observe agile characters wear down stronger opponents like this, using their superior mobility. And still the stronger, slower opponent is not at complete disadvantage. Sometimes the timing will be a bit off and the stronger guy land a hit, possibly taking out the agile fighter. Great stuff.
Kinda like that fight between the Mountain and Oberyn in Game of Thrones.
I'm really looking forward to the day I can drop Dosbox and boot up Exult with all its modded glory to serve my nostalgic needs and then some, but that day has not yet come.
It's just a joy to watch Sentri shoot a few arrows at his archery target and then pull out his sword to have a go at the training dummy. In Exult he weirdly walks back and forth between the two and gives each a single whack of his sword.
And of course the crazy intricate waiter schedules where they walk back and forth between kitchen and clients, ask them what they want to have and place food on the plates that actually gets eaten. Ultima 7 might be the only game in the world that has this kind of detail, much of which is still quite wonky in Exult.
Some of the schedules are already quite good in Exult, such as baking or tailoring, but they don't look as fluid or natural as in the original. For example, the tailor in Exult will arrange clothing items in a pattern starting from the very top left of a table, which looks very unnatural. In the original the NPC simply puts the clothes on the table nearby, next to a position from where she is standing.
Also the combat system of the original might look deceptively simple and chaotic at first glance, but is actually quite complex and smart about a few things. Characters with high agility/combat will actually strike an enemy, take a few steps back to avoid getting hit by the enemy on his next strike, and then strike again when the enemy moves within range. You can observe agile characters wear down stronger opponents like this, using their superior mobility. And still the stronger, slower opponent is not at complete disadvantage. Sometimes the timing will be a bit off and the stronger guy land a hit, possibly taking out the agile fighter. Great stuff.
Kinda like that fight between the Mountain and Oberyn in Game of Thrones.
I'm really looking forward to the day I can drop Dosbox and boot up Exult with all its modded glory to serve my nostalgic needs and then some, but that day has not yet come.
Re: Combat
Of course one thing Exult could certainly improve on the original is to stop projectiles from hitting your own party members in their backs, making ranged weapons a little less self destructive and a little more feasible.
Everybody knows the most dangerous enemy in U7 is a triple-crossbow armed Iolo.
Everybody knows the most dangerous enemy in U7 is a triple-crossbow armed Iolo.
Re: Combat
I think, while Exult needs a lot of combat work, hitting your own party members in the back has been eliminated (or it was at one point).
Sadly no one wants to take on combat
Sadly no one wants to take on combat
--
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!
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!
-
- Posts: 565
- Joined: Thu May 14, 2020 1:34 pm
Re: Combat
I believe in the original if you used magic arrows/bolts they wouldn't hit you in the back.
If I knew what I was doing, I'd totally take a look at combat and fix it. It's been a long neglected area of Exult.
If I knew what I was doing, I'd totally take a look at combat and fix it. It's been a long neglected area of Exult.
-------------------------------------------------------------------------------------
Ultima 6 Mod for Exult site: http://www.ultima6.realmofultima.com/
Ultima 6 Mod for Exult site: http://www.ultima6.realmofultima.com/
Re: Combat
I also noticed the List Field has some issues.
A lot of the time when training, my companions will attack the wrong person - going after Templar, for example, who doesn't even train people, when they're supposed to be attacking Caladin or Shazzanna.
A couple times they'll even defeat the (wrong) person they're attacking, who will run away yelling "I give up!", only for them to keep attacking the fleeing, wrong opponent - meanwhile their real trainer is beating on them with a sword or shooting them full of arrows. I guess mercy isn't one of the eight Virtues.
A lot of the time when training, my companions will attack the wrong person - going after Templar, for example, who doesn't even train people, when they're supposed to be attacking Caladin or Shazzanna.
A couple times they'll even defeat the (wrong) person they're attacking, who will run away yelling "I give up!", only for them to keep attacking the fleeing, wrong opponent - meanwhile their real trainer is beating on them with a sword or shooting them full of arrows. I guess mercy isn't one of the eight Virtues.
-
- Posts: 565
- Joined: Thu May 14, 2020 1:34 pm
Re: Combat
I was digging around in the combat.cc file, and found this:
From what I gather, that determines distance from the target? Is there something missing from this to make them swarm the target? Please Exult gurus, combat must be fixed... it needs some much needed love!
Code: Select all
/*
* Begin a strike at the opponent.
*/
void Combat_schedule::start_strike(
) {
Game_object *opponent = npc->get_target();
bool check_lof = !no_blocking;
// Get difference in lift.
Weapon_info *winf = weapon_shape >= 0 ?
ShapeID::get_info(weapon_shape).get_weapon_info() : 0;
int dist = npc->distance(opponent);
int reach;
if (!winf) {
Monster_info *minf = npc->get_info().get_monster_info();
reach = minf ? minf->get_reach() : Monster_info::get_default()->get_reach();
} else
reach = winf->get_range();
bool ranged = not_in_melee_range(winf, dist, reach);
// Out of range?
if (!spellbook && npc->get_effective_range(winf, reach) can_do_spell(npc);
else if (winf) {
// See if we can fire spell/projectile.
Game_object *ammo = 0;
int need_ammo = npc->get_weapon_ammo(weapon_shape,
winf->get_ammo_consumed(), winf->get_projectile(),
ranged, &ammo);
if (need_ammo && !ammo && !npc->ready_ammo())
weapon_dead = true;
}
if (weapon_dead) {
// Out of ammo/reagents/charges.
if (npc->get_schedule_type() != Schedule::duel) {
// Look in pack for ammo.
if (Swap_weapons(npc))
Combat_schedule::set_weapon();
else
set_hand_to_hand();
}
if (!npc->get_info().has_strange_movement())
npc->change_frame(npc->get_dir_framenum(
Actor::standing));
state = approach;
npc->set_target(0);
npc->start(200, 500);
return;
}
state = fire; // Clear to go.
} else {
check_lof = (reach > 1);
state = strike;
}
// At this point, we're within range, with state set.
if (check_lof &&
!Fast_pathfinder_client::is_straight_path(npc, opponent)) {
state = approach;
approach_foe(true); // Try to get adjacent.
return;
}
if (!started_battle)
start_battle(); // Play music if first time.
// Some battle cries. Guessing at where to do it, and how often.
if (yelled && !(rand() % 20)) {
if (npc->is_goblin())
npc->say(first_goblin_taunt, last_goblin_taunt);
else if (can_yell)
npc->say(first_taunt, last_taunt);
}
if (combat_trace) {
cout get_name() get_name() get_direction(opponent);
signed char frames[12]; // Get frames to show.
int cnt = npc->get_attack_frames(weapon_shape, ranged, dir, frames);
if (cnt)
npc->set_action(new Frames_actor_action(frames, cnt, gwin->get_std_delay()));
npc->start(); // Get back into time queue.
int sfx = -1; // Play sfx.
if (winf)
sfx = winf->get_sfx();
if (sfx get_shapenum()).get_monster_info();
if (minf)
sfx = minf->get_hitsfx();
}
if (sfx >= 0) {
int delay = ranged ? cnt : cnt / 2;
new Object_sfx(npc, sfx, delay * gwin->get_std_delay());
}
dex_points -= dex_to_attack;
}
-------------------------------------------------------------------------------------
Ultima 6 Mod for Exult site: http://www.ultima6.realmofultima.com/
Ultima 6 Mod for Exult site: http://www.ultima6.realmofultima.com/
-
- Posts: 1219
- Joined: Thu May 14, 2020 1:34 pm
Re: Combat
That's why it doesn't include backing up when you have more melee range than your opponent.
-
- Posts: 565
- Joined: Thu May 14, 2020 1:34 pm
Re: Combat
Keep the dream alive! Combat should be fixed so all the townspeople will rejoice!
-------------------------------------------------------------------------------------
Ultima 6 Mod for Exult site: http://www.ultima6.realmofultima.com/
Ultima 6 Mod for Exult site: http://www.ultima6.realmofultima.com/
-
- Posts: 1219
- Joined: Thu May 14, 2020 1:34 pm
Re: Combat
Hopefully some of the Dragons will check us out and help here.
Re: Combat
I'm getting re-acquainted with the Exult code after a few years' break, starting with the waiter schedule. So maybe combat too someday soon.
-
- Posts: 1219
- Joined: Thu May 14, 2020 1:34 pm
Re: Combat
Is there any way we can help? Like describe the DOS engine's behavior in detail?
-
- Posts: 565
- Joined: Thu May 14, 2020 1:34 pm
Re: Combat
Cool! Yes, anything we can do to help or test things let us know!
-------------------------------------------------------------------------------------
Ultima 6 Mod for Exult site: http://www.ultima6.realmofultima.com/
Ultima 6 Mod for Exult site: http://www.ultima6.realmofultima.com/
Re: Combat
Yes, thanks! Right now I'm working on the 'waiter' schedule, and seeing lots of flaws. Recent checkins support placing the right plate (instead of the oversized one), and getting everyone served.
Other things to do:
1. Give plates first, then come back with food.
2. Use the right 'prep' table in the kitchen.
3. Clear away food and plates when the customers have gone.
4. Use the stove and prep table to 'cook'.
5. Move bottles around the various tables.
6. Serve ale to the customers?
So I'm happy to get suggestions for anything I've missed (or for anything I mess up in the process).
Other things to do:
1. Give plates first, then come back with food.
2. Use the right 'prep' table in the kitchen.
3. Clear away food and plates when the customers have gone.
4. Use the stove and prep table to 'cook'.
5. Move bottles around the various tables.
6. Serve ale to the customers?
So I'm happy to get suggestions for anything I've missed (or for anything I mess up in the process).
-
- Posts: 1219
- Joined: Thu May 14, 2020 1:34 pm
Re: Combat
Are the plates used based on the diner's table? So wooden plates on wooden tables, etc? That could allow me to set the Silver Seed NPCs to sit and be served with the Ophidian yellowy plates.
I'm excited to see you back making this better as the mod work increases.
I'm excited to see you back making this better as the mod work increases.
-
- Posts: 565
- Joined: Thu May 14, 2020 1:34 pm
Re: Combat
Now that you mention it, it would be kind of cool to see the servers serve different ales to customers That seems to be what they used to do, randomly go to the cauldron, picking up and moving kitchen items and bottles, serving, cleaning up, things like that.
Very cool to see someone back and working on Exult schedules! (and combat someday! )
Very cool to see someone back and working on Exult schedules! (and combat someday! )
-------------------------------------------------------------------------------------
Ultima 6 Mod for Exult site: http://www.ultima6.realmofultima.com/
Ultima 6 Mod for Exult site: http://www.ultima6.realmofultima.com/
Re: Combat
From what I saw browsing in Dosbox, the plates were randomly white or wood. I'm pretty sure I saw different ones used at the same table. That's how I have it now in Exult. But I could change that to match the tables.
Re: Combat
I think matching tables would be a nice touch, otoh people might complain about non-random then. Personally I kind of like the matching tables idea.
--
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!
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!
-
- Posts: 1219
- Joined: Thu May 14, 2020 1:34 pm
Re: Combat
Watching this a bit in SI with SS installed, and just saw Lucilla put a skull-shaped cup on the circular table in the SW of the room.
-
- Posts: 1219
- Joined: Thu May 14, 2020 1:34 pm
Re: Combat
The small plates look a little silly when foods that are larger are placed on top of them.
-
- Posts: 1219
- Joined: Thu May 14, 2020 1:34 pm
Re: Combat
And the intended shimmering wine bottle was dropped by Lucilla in the DOS version:
-
- Posts: 1219
- Joined: Thu May 14, 2020 1:34 pm
Re: Combat
Pardon, intended to be a plot-item-only shimmering wine bottle. That was what was supposed to have been used in the storm sequence, rather than plain old ice wine.
-
- Posts: 1219
- Joined: Thu May 14, 2020 1:34 pm
Re: Combat
Here's both wooden and white plates being used:
-
- Posts: 1219
- Joined: Thu May 14, 2020 1:34 pm
Re: Combat
Looking at the WAITER activity in both BG and SI, they are identical, as far as I can tell. This means they have the same behaviors:
Using different colored plates, both the small white and small wooden ones.
Collecting any plate shapes put down if there are no diners, or diners not sitting at that spot.
Putting down jars, cups, and bottles, and moving them around if no diners are present.
Standing at the empty caldron, but never filling it or emptying it.
Even preparing food in the dining area:
This will largely depend on how much complication DrCode is willing to do, of course, but I think there's a few ways to do this.
Using different colored plates, both the small white and small wooden ones.
Collecting any plate shapes put down if there are no diners, or diners not sitting at that spot.
Putting down jars, cups, and bottles, and moving them around if no diners are present.
Standing at the empty caldron, but never filling it or emptying it.
Even preparing food in the dining area:
This will largely depend on how much complication DrCode is willing to do, of course, but I think there's a few ways to do this.
-
- Posts: 1219
- Joined: Thu May 14, 2020 1:34 pm
Re: Combat
Wikipedia states the medieval meals were larger during midday than the smaller suppers in the evening. I wonder if we can use that to make the game more realistic?
To break this down a bit, a Waiter should have many subroutines:
A) Check for customers.
B) Prepare food.
C) Prepare drinks.
D) Place plates for customers.
E) Place utensils for customers (new!)
F) Place cups for customers. (sooner)
G) Place food for customers.
H) Place drinks for customers.
I) Check on customers.
J) Respond to calls for "Waiter!"
K) Check for dirty plates and collect everything.
To break this down a bit, a Waiter should have many subroutines:
A) Check for customers.
B) Prepare food.
C) Prepare drinks.
D) Place plates for customers.
E) Place utensils for customers (new!)
F) Place cups for customers. (sooner)
G) Place food for customers.
H) Place drinks for customers.
I) Check on customers.
J) Respond to calls for "Waiter!"
K) Check for dirty plates and collect everything.
-
- Posts: 1219
- Joined: Thu May 14, 2020 1:34 pm
Re: Combat
Here's the general shapes, minus bottles, cups, and utensils:
-
- Posts: 1219
- Joined: Thu May 14, 2020 1:34 pm
Re: Combat
DrCode, can you speculate as to why the business activities were not done via Usecode but in the engine itself?
-
- Posts: 1219
- Joined: Thu May 14, 2020 1:34 pm
Re: Combat
I've done some code that will use the larger plates on larger tables, and smaller plates on smaller tables. It also use the right plate for the area based on the chair colors (frames). This seems to be what the original designers intended but did not implement.
It's in Usecode C but readable and hopefully convertible.
It's in Usecode C but readable and hopefully convertible.
Re: Combat
Thanks for trying to tackle this, DrCode.
About the plates usage, if it were me I'd go for one type of plate per establishment.
Brown/Wooden plates for less classy places, White/Porcelain plates for fancy taverns and Gold plates for LB/Filbercio.
Britain: Big wealthy city; white plates
Britain, LB's Castle: gold plates (tax money well spent)
Buccaneer's Den: Rough, dirty place; Wooden plates
Cove: I don't think they care about shiny porcelain, judging from the nearby lake, also, they're not a rich town; wooden plates
Jhelom: Rough, dirty place; Wooden plates (keeps all these fighters from breaking the porcelain)
Minoc: Wealthy place, craftsmen; white porcelain plates
Moonglow: Farmers don't care about porcelain; wooden plates
New Magincia: Like Paws, a poor place; wooden plates
Paws: Poor place; wooden plates
Serpent's Hold: Warriors don't care about porcelain, besides their roughness would break them; wooden plates
Terfin: I'd go with wooden
Trinsic: A well-doing upper class town; white plates
Vesper: Rough mining town; they're better off with unbreakable wooden plates
Yew: Abbey; wooden plates
Monitor: crude warrior men who possibly don't even remove their gauntless when scooping out their plates, bunch of pigs; wooden plates
Sleeping Bull Inn: A simple place, lots of wood; wooden plates
Fawn: No-brainer; white porcelain plates to match the whiteness of the city.
Moonshade, Blue Boar: a well-doing establishment in a city filled with *cough*refined*cough* individuals; white plates
Moonshade, Several mages' automatons: white plates
Moonshade, Filbercio's place: gold plates
Just my two gold coins.
About the plates usage, if it were me I'd go for one type of plate per establishment.
Brown/Wooden plates for less classy places, White/Porcelain plates for fancy taverns and Gold plates for LB/Filbercio.
Britain: Big wealthy city; white plates
Britain, LB's Castle: gold plates (tax money well spent)
Buccaneer's Den: Rough, dirty place; Wooden plates
Cove: I don't think they care about shiny porcelain, judging from the nearby lake, also, they're not a rich town; wooden plates
Jhelom: Rough, dirty place; Wooden plates (keeps all these fighters from breaking the porcelain)
Minoc: Wealthy place, craftsmen; white porcelain plates
Moonglow: Farmers don't care about porcelain; wooden plates
New Magincia: Like Paws, a poor place; wooden plates
Paws: Poor place; wooden plates
Serpent's Hold: Warriors don't care about porcelain, besides their roughness would break them; wooden plates
Terfin: I'd go with wooden
Trinsic: A well-doing upper class town; white plates
Vesper: Rough mining town; they're better off with unbreakable wooden plates
Yew: Abbey; wooden plates
Monitor: crude warrior men who possibly don't even remove their gauntless when scooping out their plates, bunch of pigs; wooden plates
Sleeping Bull Inn: A simple place, lots of wood; wooden plates
Fawn: No-brainer; white porcelain plates to match the whiteness of the city.
Moonshade, Blue Boar: a well-doing establishment in a city filled with *cough*refined*cough* individuals; white plates
Moonshade, Several mages' automatons: white plates
Moonshade, Filbercio's place: gold plates
Just my two gold coins.
-
- Posts: 1219
- Joined: Thu May 14, 2020 1:34 pm
Re: Combat
DrCode, I don't have your email. Send me one and I'll send my code.
Gotcha, gold plates are only in SI, and only used in Ophidian areas. But I think my method will do most of what you want.
Gotcha, gold plates are only in SI, and only used in Ophidian areas. But I think my method will do most of what you want.
Re: Combat
@Gotcha, I think this would be the wrong kind of hard coding.
Hard coding plate style to correspond to chair style is a general thing that will benefit all games and mods.
Doing it per location would add a lot of code and hardcoding things that shouldn't be. That's something a mod should do and not Exult on its own. IMO
Hard coding plate style to correspond to chair style is a general thing that will benefit all games and mods.
Doing it per location would add a lot of code and hardcoding things that shouldn't be. That's something a mod should do and not Exult on its own. IMO
--
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!
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!
-
- Posts: 565
- Joined: Thu May 14, 2020 1:34 pm
Re: Combat
I like the idea of the plates being used based on what type of chairs the establishment has. I was also looking around in BG and SI in Dosbox, seems like there was a random timer or something from the time a food item would be placed on the plate, then when they'd finish it and eat with a "Burp!" or something like that.
I was looking at the changes in the latest Exult build and it seemed to crash on me randomly in the taverns but not quite sure why yet.
I was looking at the changes in the latest Exult build and it seemed to crash on me randomly in the taverns but not quite sure why yet.
-------------------------------------------------------------------------------------
Ultima 6 Mod for Exult site: http://www.ultima6.realmofultima.com/
Ultima 6 Mod for Exult site: http://www.ultima6.realmofultima.com/
Re: Combat
Ooh random crashes... might have time to investigate tomorrow. Possible reason, as in the desk schedule, Jeff might have forgotten to clean up and the waitress or customer might have too much in his hand and tries to add another thing...
--
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!
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!
-
- Posts: 1219
- Joined: Thu May 14, 2020 1:34 pm
Re: Combat
Code is over to you, Dominus.
Basically, it has logic for:
Large tables get large plates, small tables get small plates.
Nice tables get nice plates, wooden tables get wooden plates.
If the table is nice but the chair is plain wood, nice plates are used.
Only if the table and chair are plain unpolished wood are wood plates used.
Golden seats (used in the Silver Seed dining room, Skullcrusher, etc) at large tables get the large yellow+red plate, smaller tables would get smaller brass plates.
Then any non-plain-wood chair would get a fancy plate, so the red, blue, black, burnt red, and white chairs would get fancy plates. White chairs would get the off-white plates in the MageLord's hall and in White Dragon Castle.
Then if the chair is plain wood, to fit canon I had to make per-table-frame if statements. In other words, how the table looks. Ones with a table cloth or polished top, as in Fawn's inn, would still get small white plates. Ones placed on a banquet table, as on Monk Isle, would consistently get large plates. Only raw unpolished wood tables with wood chairs would get wooden plates. If time allows I'll setup the rectangular wood plates for rectangular wooden tables, and use the circular wooden plates on circular tables.
This would also cause the plates used in Lord British's tiny banquet hall to get large plates, which would make sense given the size of the table. The dining hall in Minoc would get circular wooden plates instead of small rectangular ones*. Not sure about Cove, but that should be it for non-canon changes.
*I think the DOS engine will use any plate that is already placed, but also will collect them, so they don't last if pre-set.
Basically, it has logic for:
Large tables get large plates, small tables get small plates.
Nice tables get nice plates, wooden tables get wooden plates.
If the table is nice but the chair is plain wood, nice plates are used.
Only if the table and chair are plain unpolished wood are wood plates used.
Golden seats (used in the Silver Seed dining room, Skullcrusher, etc) at large tables get the large yellow+red plate, smaller tables would get smaller brass plates.
Then any non-plain-wood chair would get a fancy plate, so the red, blue, black, burnt red, and white chairs would get fancy plates. White chairs would get the off-white plates in the MageLord's hall and in White Dragon Castle.
Then if the chair is plain wood, to fit canon I had to make per-table-frame if statements. In other words, how the table looks. Ones with a table cloth or polished top, as in Fawn's inn, would still get small white plates. Ones placed on a banquet table, as on Monk Isle, would consistently get large plates. Only raw unpolished wood tables with wood chairs would get wooden plates. If time allows I'll setup the rectangular wood plates for rectangular wooden tables, and use the circular wooden plates on circular tables.
This would also cause the plates used in Lord British's tiny banquet hall to get large plates, which would make sense given the size of the table. The dining hall in Minoc would get circular wooden plates instead of small rectangular ones*. Not sure about Cove, but that should be it for non-canon changes.
*I think the DOS engine will use any plate that is already placed, but also will collect them, so they don't last if pre-set.
-
- Posts: 1219
- Joined: Thu May 14, 2020 1:34 pm
Re: Combat
This would also allow me to set the Silver Seed NPCs to Eat_at_Inn and be served canon plates and such, so I think that's a positive addition.
WAITER schedule also needs to not allow barks if the NPC is mute, but there's no flag for that? (Maybe we need to add one in the 40+ range.)
WAITER schedule also needs to not allow barks if the NPC is mute, but there's no flag for that? (Maybe we need to add one in the 40+ range.)
Re: Combat
can you control barks via custom usecode? Then it could be done for mods. Adding it in plain Exult is hardcoding stuff but you could file feature request for this. Maybe Marzo would add this.
--
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!
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!
-
- Posts: 1219
- Joined: Thu May 14, 2020 1:34 pm
Re: Combat
Barks generally are done in Usecode, yes. But there's some things that you can't control via Usecode, and business activity barks are one of them.
You also cannot set/get/control flags for:
Mute - Silent monks, brass automatons shouldn't bark at all.
Swim - Ran into this with my mod, just needed a quick walk across a few tiles. Might be do-able via clear tiles, like done near Erstam's cheat area?
Fly - Same as Swim.
Ethereal - Same.
These are all low-priority items above.
I wonder if setting the Intelligence to under 2 would work for Mute? That's a check in one of the SI Utility Usecode pieces, anyway.
You also cannot set/get/control flags for:
Mute - Silent monks, brass automatons shouldn't bark at all.
Swim - Ran into this with my mod, just needed a quick walk across a few tiles. Might be do-able via clear tiles, like done near Erstam's cheat area?
Fly - Same as Swim.
Ethereal - Same.
These are all low-priority items above.
I wonder if setting the Intelligence to under 2 would work for Mute? That's a check in one of the SI Utility Usecode pieces, anyway.
Re: Combat
@Knight Captain, Dominus: You're the experts.
Whichever way it's going to be done, I am already so happy it's being looked into.
Thanks to all involved.
Whichever way it's going to be done, I am already so happy it's being looked into.
Thanks to all involved.
Re: Combat
I like Knight's idea for setting the plates.
As to why schedules were hard-coded instead of done in usecode, we can only guess. Maybe it was too slow, thought that probably wouldn't be a problem now.
Dominus: Not surprised if I broke something. Hopefully we'll get an example I can look at. My only testing was with the inn outside the Mountains of Freedom in SI, and the one at the south of Trinsic in BG.
For the waiter schedule, I still need to do:
Clean up after customers leave.
Place bottles and pots on the tables.
Mess around in the kitchen.
I also noticed that the innkeeper in SI doesn't approach the Avatar. This looks like an enhancement in SI over BG (where I don't think they ever did, but need to check).
As to why schedules were hard-coded instead of done in usecode, we can only guess. Maybe it was too slow, thought that probably wouldn't be a problem now.
Dominus: Not surprised if I broke something. Hopefully we'll get an example I can look at. My only testing was with the inn outside the Mountains of Freedom in SI, and the one at the south of Trinsic in BG.
For the waiter schedule, I still need to do:
Clean up after customers leave.
Place bottles and pots on the tables.
Mess around in the kitchen.
I also noticed that the innkeeper in SI doesn't approach the Avatar. This looks like an enhancement in SI over BG (where I don't think they ever did, but need to check).
Re: Combat
ok, Exult always crashes for me with a new game in Monitor's Pub after one or two minutes. Created a bug report with some backtrace.
--
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!
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!
Re: Combat
Thanks! Easy fix.
Still have lots to do, but I'm happy with how it's turning out. The waiter now goes around and takes orders, then goes to the kitchen (if we find it, which is sometimes a problem), comes back, and gives them all their food. She then waits at a counter for a bit (if there is a counter), and repeats the process.
Problems I've seen occur if the kitchen is too far away. And sometimes if the waiter goes outside to turn a light on or off, things go bad. Trouble is, it's hard to duplicate this problem.
Still have lots to do, but I'm happy with how it's turning out. The waiter now goes around and takes orders, then goes to the kitchen (if we find it, which is sometimes a problem), comes back, and gives them all their food. She then waits at a counter for a bit (if there is a counter), and repeats the process.
Problems I've seen occur if the kitchen is too far away. And sometimes if the waiter goes outside to turn a light on or off, things go bad. Trouble is, it's hard to duplicate this problem.
Re: Combat
Maybe the street maintenance schedule needs to guide npcs back to their starting point if it kicks in during a schedule.
--
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!
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!
Re: Combat
That's probably the solution.