Make sure there is a tab character between the 'EN.' portion and the text. Not a space. It parses the line based on tabs, so if you accidentally use a space instead, it will not read correctly.
The range limitation is copied from the default AI. Unless something has changed in the past few versions (the latest ver I have with me at work is 1.67), 5 is the max range.
The limitation for shadowstep is not handled by the custom AI (for spells & spacts, custom AI just sets the action then calls the appropriate handler from the normal E+ code). So the distance discrepancy is there regardless of default/custom AI.
if ( distance < 6 ) { if ( fov_los(cdata(1, cc), cdata(2, cc), cdata(1, tc), cdata(2, tc)) ) { gosub *FindRangeWeapon if ( stat == 1 ) { gosub *act_fire goto *turn_end } } }
This is usually because the scene files are missing. Do you have scene2.hsp and scene3.hsp in the folder with the executable?
>[Please don't make it possible to connect to noaneko.squares.net% by modification.]
Does anyone understand the point of this? Why is Ano against the new chat server?
Everything was basically laid out for you earlier in the thread, if you go back up and read it.
At a minimum, to expand inventory, you have to do this:
1) Increase the size of the inv variable (look for the dim statement).
2) Modify inv_getheader based on your new sizes / specifications.
3) Modify the save function (look at label game_ctrlFile). Your modifications here will be based on your modifications in step 1.
4) If you want to port an existing save to this, you will need to write and run a bit of code to shift everything in the inv variable.
That's about as in-depth as I'm going to go into it. To contradict BloodyShade a little bit (sorry!), it's not a technically difficult change, and if you spend any length of time examining the mentioned pieces of code, you should be able to figure it out.
Note that I mentioned these are the minimum changes you would need to make. There may be additional ones that I don't know of off-hand, but I believe most other inventory functions rely on inv_getheader, so if you do the modification there properly I think most other things will work without modification. That's based primarily on my experience with working on other parts of the code that deal with inventory things, so it may not be entirely accurate. I'm not willing to investigate further at the moment, so anything past the steps I mentioned above, you're on your own unless someone else wants to step in.
Namely, I have to dedicate two slots for each debuff, one for the condition of the target not having the debuff and another for it to be within a certain range. The range condition, I find necessary as else, if the target is not visible, the AI gets stuck
(I secretly hope I have been doing the AI wrong, if so, please give some pointers!)
Thanks!
If you're a bit creative, you actually don't have to do it that way :) At least, assuming you want to apply all the debuffs.
Consider for a moment what you're currently doing. For each debuff, you're using an extra slot to set the same condition. Instead, why not use a single line first to check for that condition, and then do all the debuffs? If you're trying to do five debuffs, that would take your slot usage from 10 to 6! If that's not too clear, let me try to explain a little better.
Don't think of the instruction slots as only being conditionals for that particular command. You can effectively use them as gates for all commands after that. For example, do you want your pet to use spells (buffs, debuffs, attack, whatever) when it has MP, but otherwise use a ranged attack? Then don't waste instructions checking for MP on each spell. Set a single instruction before the spell instructions to gate all the others. In this example, something simple like:
Self MP < 10% Attack (Ranged)
Self Buff != Feather Feather
Target Buff != Nightmare Nightmare
Target HP <= 100% Nether Arrow
In this case, not a single one of those spells will be used if the pet has less than 10% MP. We've eliminated the needs to use two slots for each one.
In your case, you'd want to do something like...
Target Distance >= 6 Move (Forward)
Target Buff != Nightmare Nightmare
Target Buff != Slow Slow
Target Buff != (Mist of Frailness) (Mist of Frailness)
Hopefully that will help you out.
In general, you want to set up your AI in this order:
1) Instructions that should happen regardless, if any. (Heals, special action buffs)
2) Gate for MP
3) Spells that don't care about range (spell buffs)
4) Gate for distance
5) Attacks (whether that is melee, ranged, spells)
Now, that's not some rule, and in many cases the optimal setup doesn't conform to that. But it's usually a good starting point. Hybrid characters are the ones who will break from it the most often, at least unless you get Harvest Mana for them (which provides a far more effective gate for MP).
Anyways, hope it helps!
Add to the 'z' button sub menu that displays item elemental resistances, skill bonuses.
z -> resistances -> skill set 1 -> skill set 2 -> skill set 3 -> etc...
so that it's easier to check on your inventory or shopkeeper's if there is an item with bonus to investing/negotiation/jeweler, etc...
It will probably take a while to figure out the abbreviations (limited to 2 characters per skill), but the implementation for this is written.
Just to confirm, yes, myself and BloodyShade are working on it together now, so there's no need for an "Unofficial" in the title (not that I think it really needed it before either :P )
Adding atrophy shouldn't be a big deal, but updating the evolutions is a pain because of how it's done. But I'll try to get those updated before the next version hits.
The inv_getspace function just returns 1 if there is open inventory space, or 0 if there is no open inventory space. It doesn't actually control the inventory itself. Your code has it check another variable (your invext) to see if it has space, but it doesn't actually do anything to it :P Although I did forget you would need to modify that function as well to expand the inventory. Even more things haha
But yes, unfortunately, using a seperate variable for the extra space isn't trivial either.
Possible new map type? Archimedean Spiral.
Still playing with various parameters on it, so I don't know if I'll actually post the code to implement it. Can be a bit of a slog to traverse too if you get stuck on the outside edges of the spirals.
But since I have a handle on the mapgen code now, if you have suggestions for a map type, throw them my way. I know knew random maps are something people have been requesting in general.
@177.154.139.201:
It's possible, but it's not as simple as just changing a value.
Elona stores player items, map items, and active npc items in one big array. When you look at inventories, it just changes the offset that you look at.
Currently, it's set to 200 items for the player, 20 for each npc, and 400 for the map. If you look at the inv_getheader function, it should be pretty easy to tell how that's set up. So let's assume you want to double the player's inventory. Step by step...
1) Expand the inv variable by another 200 sets (note that it's a 2D array)
2) Update the save/load function to accomodate the additional 200 sets
3) Modify the range of the player's inventory in the inv_getheader function (double it, in this example)
4) Modify the start position and range of other npc's and the map inventories
5) Write a script that will shift all items, starting from set 200, up in the array by 200 sets.
This will, of course, break E+ compatability. If you loaded your save into vanilla E+ after this, your first 10 pets (by ID) would have items from your old inventory. All other npc inventories would be wrong (shifted by 10 IDs). The current map would have items from some of the npc's (and possibly crash, without location data?). And 200 items would disappear from the map entirely.
I am no longer the maintainer for Custom, so I don't have the say on what goes in the builds, but I was pretty set on not doing anything that would break E+ compatability (and I hope my 5 month or so absence showed why that's important, even if BloodyShade did pick up the build). But it is possible, and not insanely complicated.
Actually, if you want to implement the filter, it's literally 3 lines of code.
Insert:
if(ItemHighlight(inv(3,cnt)) == 2){ continue }
after
if ( invctrl == 11 | invctrl == 12 | invctrl == 25 | invctrl == 27 ) { showmoney = 1 } else { showmoney = 0 } repeat invrange, invhead
In the *com_inventory label. This will filter out anything marked with "2" in ItemList.txt from (all?) inventory screens.
You could optionally add a tweak to enable/disable the filter, to remove the need of having to restart Elona if you needed to remove the filter. Or even add a tweak to re-initialize from ItemList.txt if people wanted to change while playing.
Wikia ate my first comment, but I'll try to replicate it as best I can. I will add the code and text files to pastebin, with my comments here.
Code Pastebin: https://pastebin.com/iinpBTrs
ItemList Pastebin: https://pastebin.com/u82wrxjV
Hi there.
I'm happy to see you enjoyed E+ Custom. Honestly a lot of my coding in it was sloppy, but if it's helped you out, then I'm glad.
As for marking important items, it will definitely save me a little bit of time after seeing where you've done the work. Honestly, I think it will be very simple to do, since I already know about file handling with HSP (or knew... I might have forgotten!). I don't think it's a big enough thing to require collaboration on, but I'll post anything I do publicly if you want to incorporate it into your own builds.
Essentially what I have in mind is this:
1) Look for a txt file in the Elona directory
2) If it exists, load up to 25 lines into a string array.
3) When displaying names, check to see if the item string contains any of the lines that were loaded, highlighting them if so.
I might even try to whip up something tomorrow if I have some time in the morning. Anyways, we'll see.
Thanks for the link, and let me know if I can help with anythng.
After about a week I should have some free time each day, though I will be working a little on something else also.
Bloodyshade, is there anything in particular you'd like me to work on? I'm not too sure what all has happened since I've been away. Coding or translation is fine.
I see you mention about highlighting "important" items in some way. I think there's an external program that does that, but I think it wouldn't be too difficult to have a text file in the elona directory with a list of strings, and then highlight the names of items in that list whenever they're in an inventory. If you want me to look into it, I can starting from Saturday.
You can message me on google hangouts / gchat / whatever you want to call it any time.
Hey Guys.
So.... This post is really overdue. Sorry about that. I'm sure a lot of people of a bit angry with me, and rightfully so. I should have at least checked in.
Let's see... Since the last update, I got married (everyone knew that). It was great. No, I didn't get killed or anything in Ethiopia (obviously!). I'll add a picture or two to the end of this post.
After I got back, I've been working on quite a few different things. As far as work goes, we're transitioning to a new version of Oracle - specifically, moving from EBS (E-Business Suite) to Fusion - so I've been working overtime a lot and don't have a ton of free time during my work hours anymore. Not to mention we're going to keep both systems running for a while, so developing and testing the integration for that is a pain... Hopefully it will all be finished up next month. Anyways, enough about work!
Beyond that, I'm also working on moving to the country neighboring where I currently work. The process is basically done now - in fact, I am moving on Friday. It's going to cost me a fair amount of extra travel time each day, but that country is far more open and generally better to live in as a family than where I am currently staying.
All that aside, it's really not an excuse - I still have had some time where I could work on Custom, but I haven't been doing it. And while I may not technically "owe" anyone to work on it, I should have at least checked in and updated everyone. Sorry about that.
I'm glad to see BloodyShade has taken up maintaining the builds - and it sounds like some progress might have been made on keeping variable names? That's an amazing change if so! Sorry you've had to deal with the really bad code for the AI and other things - I really wanted to refactor that at some point, but well... haha. If you need anything from me on that, please let me know. I think everything was available except for my code to export the NPC/Item/Card descriptions (because they aren't compatible with the other changes, so they weren't in the spreadsheet) and the program I wrote to replace the code - which it sounds like you don't need/want at this point. It was basically just a find/replace with ^ representing lines that didn't have to match (for where the replacement was longer than the original).
Anyways, I can't promise to work on anything again any time soon - and to be quite honest, if I did, I'd be happy if somebody else maintained the code and just let me contribute translations (and possibly code for tweaks). But I'm glad to see it's still going. The community has never needed it, but of course, any work I've done on E+C, translation or otherwise, everyone has my permission to use as they see fit.
Here are two pictures from my wedding. Given my name, I'm sure quite a few people are in for a surprise, but it might make more sense why we went to Ethiopia :) Sorry, I don't have scans of these on my phone, so you'll have to deal with pictures of pictures :P
Take care, everyone.
Hi everyone.
Sorry to bring the bad news, but it looks like I won't release a version for 1.63 until December. I'm leaving today to go to Ethiopia and will be gone through December 1. I was hoping to get the 1.63 build up before today, but I ended up being sick from last Thursday and haven't felt like doing anything at all to be honest.
Sorry for the delay. Hope everyone is doing well. Have a happy Thanksgiving to those of you in the US.
No. If you enable custom AI, it will only follow the tactical instructions that are set up, and there should be no way for pets to have meteor in their list of known abilities/spells without editing the aidata.s1 file or using a memory editor like CheatEngine. The only check is when adding it to the action list, so if it was modded in another way, the pet could cast it as normal with the custom ai.
Here is a flavor text release. No new executable; just text files to drop in.
Download: Flavor Pack 1 (MEGA)
This pack contains:
These will of course be distributed with the next version release also; this is only if you want these in your game right at this moment.