*** March 03, 2009 (Exult Revision 6035) ***
Added ready event for legs, feet, torso, ears_spot, and cloak_spot.
Fixed bug where party members with NPC numbers greater than 10 in Dev games and BG games without SI installed and SI paperdolls enabled would do their normal double click usecode instead of displaying their paperdoll when a gump is open.
fixed sit for paralyzed and asleep
Added adjustable flags that can be set to remove flag timers or make someone immune or vulnerable to some flags. Also made a flag for hunger and food loss immunity and causing a person to freeze no matter how much warmth they have.
Made it possible to have npcs not heal over time when starving, freezing, and/or poisoned.
Fixed temperature messages that were 0x400 too high.
Wave sfx dehardcoded and are no longer converted.
Finished implementing hit sfx information. The previous hardcoded values are still default.
Fixed crash when related to paperdolls in Dev games.
Fixed: Bake_schedule, poor retrieval of previously placed dough, improved implementation in SI
Fixed: SI podiums for use with preacher schedule (added icon support)
Dehardcoded lots of shapes, gumps, and a few usecodes. (See bggame.cc for BG and sigame.cc for SI and Dev games.
Partially dehardcoded spellbook that won't automatically remove reagents and mana.
Dev games can choose to use SI slot types or BG.
Stopped combat stat keybinding from making endless duplicates in SI.
Combat stat gumps usable in all games (by key binding and/or button). (It also fixes problem with more than 6 party members in SI.)
Combat stats gumps that show mana for all party members in all games are also implemented.
This is just a start of a patch. I'm mainly trying to make a decent framework, finish schedules, and garner interest. That's why I hadn't added it to the tracker. I mostly tried to get things working.
I'd really like the answer to how you would prefer I handle adding add_shape throughout the code so it is consistently done and has less changes needed to be done by you (or another developer).
I'm not really sure how much better the tracker is than the forums since I think this simple code that helps discussions will not work.
~~~[i]It appears that you are making Audio::game_sfx obsolete; however, you still keep using it everywhere.[/i]
I know I left some stuff related to the conversion but haven't checked all of it and might not even know for sure what needs fixed.
~~~[i]- I have concerns about the way you handled swamp boots and the reagent ring -- I have been giving that problem some thought, and I think it ought to be more like frame names (say, "frame powers" or "frame flags").[/i]
~~~[i]- Also, in one location, you remove a vital check if paperdolls are available[/i]
Well, one can conceivably have paperdolls even if they don't have SI installed, but I doubt they would. I can have a check for SI style background gumps for Dev games (BG too if they for some reason don't have them.)
~~~[i]Virtue stones have their own shape class; it probably would be better to use that than moving the shape constant to another file; for one, it increases the range of objects that could be used as "virtue stones". Likewise, monsters that cause the screen to quake and slimes should be handled by shape properties -- most likely, additional flags in the 'NPC flags' tab.[/i]
~~~[i]- Many of the shape constants are being replaced by other data-file-defined constants when they should be shape properties instead. For example: cartwheels, draft horses and (ice) rafts should all be shape properties (maybe "barge flags") rather soft-coded constants; a mod might add carts pulled by (say) donkeys, or wooden rafts in addition to ice rafts.[/i]
Unfortunately, I realize that problem but I am unable to make such a change myself. I couldn't even get the virtue stone to work in non-BG games.
diffs and whole files (revision 6035)
Changes to paperdol checks and calls to Audio::game_sfx removed
I removed the calls to Audio::game_sfx. (I'm not sure what else needs changed with audio atm.)
I forced SI to use SI paperdols and forced BG to have SI installed in order to use SI paperdols.
File Added: audio_and_paperdol_update.zip
added missing check for actorgump
added missing check for actorgump
File Added: Gump_manager.cc.diff
Well, I learned a bit about adding Actor flags and added a few (Quakes and Special Combat messages). I fixed a bug I introduced where I set special ouch messages to the wrong number.
I'll see if I can implement the other flags you mentioned.
File Added: March_11_2009.zip
Added Quakes and Special Combat Messages flag, fixed wrong msg # for special ouch,
> Added ready event for legs, feet, torso, ears_spot, and cloak_spot.
This part works better by making the whole function into a loop. In fact, given that Exult already calls usecode for all objects equipped with the correct flag set, it is best if Actor::init_readied does so too. I just made this modification, so you can remove it from your patch.
> Fixed bug where party members with NPC numbers greater than 10
This, like all other bugs you fixed, would have been better to file as a bug report or to submit as separate bugfix patches rather than as part of a giant patch. I added also the Actor::activate changes.
> Added adjustable flags [...] make someone immune or vulnerable to some flags.
> [...]made a flag for hunger and food loss immunity[...]
Not sure I understood what this is supposed to do; all such immunities are either, monster immunities or NPC flags that give immunities. And now, items can give them too.
> Dev games can choose to use SI slot types or BG.
This has become obsolete with the changes I just made; BG and SI now share the same spot set (though with different values in ready.dat) and paperdoll code, the only difference being in the game data. Dev games will now use the SI ready.dat values, but should have no problem emulating BG by setting the correct data.
> Fixed temperature messages that were 0x400 too high.
Fixed in the bug report.
> I have concerns about the way you handled swamp boots and the reagent ring
Swamp boots are done; reagent ring is another matter, but I have a pretty good idea of how to do it. (but maybe the way I am thinking is overkill... and simply adding a frame power for the ring too would be the way to go. Still need to think)
> Well, one can conceivably have paperdolls even if they don't have
> SI installed, but I doubt they would.
It happened in the past (someone had copied the exult.cfg from a computer with SI installed to one without SI, but didn't disable paperdolls).
> For example: cartwheels, draft horses and (ice) rafts
All done.
I am still reviewing the rest of the patch; if you could update it compensating for the recent snapshot, I'd appreciate.
I'd be glad to update the code and make further changes listed below. Thanks for your continued efforts in improving Exult.
> [...]made a flag for hunger and food loss immunity[...]
Not sure I understood what this is supposed to do; all such immunities are
either, monster immunities or NPC flags that give immunities. And now,
items can give them too.
> It was meant to be usable on items, spells, etc. through usecode (mostly for items though). I see that invisibility rings are still hardcoded. Now that you have frame powers added, I can probably see what you did and implement flag timer removal through them.
>reagent ring is another matter, but I have a pretty
good idea of how to do it. (but maybe the way I am thinking is overkill...
and simply adding a frame power for the ring too would be the way to go.
Still need to think)
> I really don't understand why frame powers wouldn't be enough. I am curious as to what your idea is though.
> Well, one can conceivably have paperdolls even if they don't have
> SI installed, but I doubt they would.
It happened in the past (someone had copied the exult.cfg from a computer
with SI installed to one without SI, but didn't disable paperdolls).
> I meant paperdolls can be used without SI installed (if allowed through the engine), but I doubt that they would due to all the graphics required. It might be nice to add an override just in case.
> I see that invisibility rings are still hardcoded.
Forgot about them.
> I really don't understand why frame powers wouldn't be
> enough. I am curious as to what your idea is though.
My idea is a more general spell framework; the reagent part would be, more or less: there would be a list of reagents containing a list of shapes (and frames) that count as a reagent of the given type. That would allow, for example, a reagent-ring-type object that counts as (say) ginseng reagents only, or to have substitute reagents that work as well as the originals.
Patch up to date with revision 6046 (some stuff only partially implemented)
I'm likely unable to finish these (at least in a reasonable amount of time).
BG_paperdoll information in dev games still fits gloves and rings if the left finger is unoccupied. No brown frames cover up the slot either. (only tested with default settings so far.) Some way is needed to differentiate between the two types in dev games. (not sure how to do it with the update)
Higher frame_powers don't seem to be read even some those that are below 65535 like invisibility_item (saving doesn't work either)
shinfo_actor_flag8 isn't being read or saved properly
gamemap.cc needs virtue stone dehardcoded (still uses shape number instead of info)
Spellbook*.*:
*need to finish the code for spells past the normal amount
*need a second gump starting point for spells past the normal number
*Left reagent ring alone for Marzo to implement
Lowest Priority :
*Slime behavior, (syncing, leaving slime behind, etc) needs dehardcoded through a flag
*What something bleeds should be setable through ES
File Added: Revision_6046.zip
> *need a second gump starting point for spells past the normal number
That was stupid of me since they really aren't that useful and was thinking of something else.
> BG_paperdoll information in dev games still fits gloves and rings
> if the left finger is unoccupied.
Did you set the gloves' ready type to "Exclusive gloves" in ES?
Also: is this patch supposed to be extracted on top of the previous patches? If so, could you submit a file containing the full patch (i.e., all the modified files)?
Another thing I just thought: using Game::get_shape for the SFX might be too computationally expensive to be used for getting SFX on a regular basis. I think I will resurrect Audio::game_sfx in a modified form, having an enum giving the index into the table and build this table at construction of BG_Game and SI_Game.
The last file I included should contain all changes needed (minus the things I said I left for you to finish).
>Did you set the gloves' ready type to "Exclusive gloves" in ES?
Unfortunately, I didn't have much time to look at the changes you made. It works perfectly. Saving the BG paperdol gump in ES should be done for dev games though.
Missing files from last zip
File Added: oops.zip