To put it another way: if you do not specify GLOB with COPY_EXISTING, WeiDU pretends that the override directory contains 0 files that are not in CHITIN.KEY.
I.e. without GLOB mod-added files will be ignored.
There have been 127 items by GeN1e (Search limited from 18-May 23)
Posted by GeN1e on 20 March 2018 - 11:45 AM in IE Help
To put it another way: if you do not specify GLOB with COPY_EXISTING, WeiDU pretends that the override directory contains 0 files that are not in CHITIN.KEY.
I.e. without GLOB mod-added files will be ignored.
Posted by GeN1e on 03 March 2018 - 08:00 PM in IE Help
As for actions, JumpToObject and MoveToObject only take script names or other definite objects.
I do believe it's your local environment playing tricks again. MoveToObject(LastBlah()) is an AI cornerstone, and I bet JumpToObject behaves no differently.
NearestXXX() does have a small problem of ignoring non-visible objects, however, maybe that's the case?
Posted by GeN1e on 02 March 2018 - 04:38 PM in IE Help
With them, it does not repeat even when there is Continue().
Continue() adds the current block to the action queue and continues reading the script without execution until it reaches the end or a true block without Continue(). After that it executes the queue.
So you can get both displays from this example:
IF Global("test","global",0) THEN RESPONSE #100 SetGlobal("test","global",1) DisplayStringHead(Player1,~One.~) Continue() END IF Global("test","global",0) THEN RESPONSE #100 SetGlobal("test","global",2) DisplayStringHead(Player1,~Two.~) END
BALDUR itself, with all of the regular content from previous mods and your mod, could be inserted at the OVERRIDE level and moved out of DEFAULT; I don't see why not.
I don't see why :shrug:
I would like to know whether these changes to the engine creature would be properly uninstalled?
Most unlikely.
Posted by GeN1e on 26 February 2018 - 04:15 PM in IE Help
LAF ds_resolve_stat INT_VAR ids=1 STR_VAR id=PROTECTION_FROM_EVIL RET bless_state=stat_ind END COPY_EXISTING sppr107.spl override LPF ADD_SPELL_EFFECT INT_VAR opcode=328 target=2 duration=36 parameter2=bless_state special=1 END CLEAR_IDS_MAP <<<<<<<<extend.baf IF CheckSpellState(Player1,PROTECTION_FROM_EVIL) THEN RESPONSE #1 DisplayStringHead(Player1,~Protected.~) END IF !CheckSpellState(Player1,PROTECTION_FROM_EVIL) THEN RESPONSE #1 DisplayStringHead(Player1,~Not protected.~) END >>>>>>>> EXTEND_TOP baldur25.bcs extend.baf
Posted by GeN1e on 26 February 2018 - 09:33 AM in IE Help
Negating a trigger don't seem to always be binary. E.g. neither TriggerOverride("ff_camp",IsOverMe("corwin")) nor !TriggerOverride("ff_camp",IsOverMe("corwin")) would return true if there was no ff_camp object.
I don't remember seeing such with spellstates, though/
Posted by GeN1e on 26 February 2018 - 09:27 AM in IE Help
You also get stripped of equipment in SoD epilogue, when they put you into jail, but you can get it back as soon as you're out of cage. This is basically just one scene.
The SCS mod also has an optional mod component that produces a party strip during the Spellhold story arc
I came to honestly believe it was vanilla
Posted by GeN1e on 21 February 2018 - 11:19 AM in IE Help
Pretty sure that if the AI scripts were not decentralized they would attain self-awareness and become Skynet. So I guess we can thank Bioware's pain-in-the-ass scripting implementation for averting the robot apocalypse.
Most other games use semi-hardcoded AI, controllable by flags. This actually is what I tried to simulate in SoD - BDSHOUT is shared by almost all actors who are not random wilderness encounters, and behavioral control variables are set/updated in their override scripts.
If you're going to patch AI scripts, then using specifics makes sense, since you'll have some degree of control anyway.No-no-no, nothing that drastic, I just need a way to tell PC simulacrums to attack exactly same creature whose original attack by real PC caused them to appear (I hope that makes sense)
In that case you might actually wanna ask Temnix, as iirc he's been actively exploring the possibilities of LastSummonerOf()-based controls.
Posted by GeN1e on 21 February 2018 - 09:14 AM in IE Help
Am I missing somethingNo, you've got it.
Posted by GeN1e on 20 February 2018 - 09:40 AM in IE Help
Btw, it is perfectly legit to use specifics with effects
Not really, unless you're talking about adding new type of actors (e.g. subrace or something) and 177/326-targeting them with custom effects.
If you go about changing the already existing value, it's no different from changing the race, class or allegiance - yes, you *can* technically do that, but unless you're working on new content you don't have enough control over environment to ensure stability. As long as the latter is high on your list of priorities, that is.
Posted by GeN1e on 20 February 2018 - 05:38 AM in IE Help
If you checked the IESDP, you'd see this in CRE file structure:
0x0274 1 (byte) Specific (SPECIFIC.IDS) 0x0275 1 (byte) Gender (GENDER.IDS). Dictates the casting voice, and checked for the summoning cap.
i.e. one byte aka 255 only.
Taking someone's pants off is forbidden, the minister said
It's irrelevant what value you use, as long as the actor has been assigned one. The mere fact of changing it will already remove them from their faction group.
But by all means, it's not my foot that you're pointing the shotgun at
Posted by GeN1e on 20 February 2018 - 03:47 AM in IE Help
SoD's AI system relies on specifics to distinguish friendly and hostile factions and subgroups within them (see InMyGroup() trigger). Feel free to throw rotten eggs and tomatoes at me for usurping that field
In any case, specifics is a scripting function. You may be able to re-purpose it for spell needs, but it doesn't change the fact you're doing something forbidden.
Posted by GeN1e on 19 February 2018 - 02:25 PM in IE Help
This works fine - casting level 1 Pro Evil onto Blessed target autocasts Pro Evil 10'.
////////////////////////////////////////////////////////////////////////////////////// DEFINE_ACTION_FUNCTION ds_resolve_stat INT_VAR ids=2 index=0 delete=0 RET stat_ind BEGIN OUTER_SPRINT ids_file stats OUTER_SET min_new=401 ACTION_IF ids=0 BEGIN OUTER_SPRINT ids_file extstate OUTER_SET min_new=0 END ACTION_IF ids=1 BEGIN OUTER_SPRINT ids_file splstate OUTER_SET min_new=0 END COPY_EXISTING ~%ids_file%.ids~ override stat_ind=0 found=0 READ_2DA_ENTRIES_NOW stats 2 FOR (row=0;row<stats;row+=1) BEGIN READ_2DA_ENTRY_FORMER stats row 0 ind READ_2DA_ENTRY_FORMER stats row 1 str SET $stat("%row%") = ind PATCH_IF index BEGIN PATCH_IF ind=index BEGIN REMOVE_2DA_ROW row 2 found=1 PATCH_IF delete=0 BEGIN INSERT_2DA_ROW row 2 ~%index% %id%~ END row=stats END END ELSE BEGIN PATCH_IF ~%str%~ STRING_EQUAL_CASE ~%id%~ BEGIN stat_ind=ind found=1 /* row=stats */ // don't stop looking, the same ID may be assigned to a greater index, which takes priority when compiling END END END PATCH_IF found=0 BEGIN stat_ind=min_new PHP_EACH stat AS row => ind BEGIN PATCH_IF found=0 && (row+1 < stats) BEGIN // not at the end of file next_row = row+1 next_ind = EVAL $stat("%next_row%") PATCH_IF index BEGIN PATCH_IF index<next_ind && index>ind BEGIN INSERT_2DA_ROW next_row 2 ~%index% %id%~ found=1 END END ELSE BEGIN PATCH_IF stat_ind<next_ind BEGIN PATCH_IF ind<stat_ind BEGIN INSERT_2DA_ROW next_row 2 ~%stat_ind% %id%~ found=1 END ELSE BEGIN stat_ind+=1 PATCH_IF stat_ind<next_ind BEGIN INSERT_2DA_ROW next_row 2 ~%stat_ind% %id%~ found=1 END END END END END ELSE BEGIN // at the end of file PATCH_IF found=0 BEGIN PATCH_IF index BEGIN INSERT_2DA_ROW stats 2 ~%index% %id%~ END ELSE BEGIN PATCH_IF stat_ind>ind BEGIN INSERT_2DA_ROW stats 2 ~%stat_ind% %id%~ END ELSE BEGIN stat_ind+=1 INSERT_2DA_ROW stats 2 ~%stat_ind% %id%~ END END END END END // PHP_EACH END END LAF ds_resolve_stat INT_VAR ids=1 STR_VAR id=AG_BLESS RET bless_state=stat_ind END COPY_EXISTING sppr101.spl override LPF ADD_SPELL_EFFECT INT_VAR opcode=328 target=2 duration=36 parameter2=bless_state special=1 END COPY_EXISTING sppr107.spl override LPF ADD_SPELL_EFFECT INT_VAR opcode=326 target=2 timing=1 parameter1=bless_state parameter2=110 STR_VAR resource=sppr408 special=1 END
Posted by GeN1e on 18 February 2018 - 06:21 PM in IE Modding Discussion
Also frustrating is when expression of that opinion gets decried as "censorship..." which, I mean look that word up in a dictionary - it does not apply here.
Also frustrating is when people act shitty towards others and justify it with "go find a safe space if you don't want people to be shitty!" ... but then start crying when you give it back to them.
I thought, for some reason, that you in particular would understand. Though perhaps the fault is mine for not recognizing the message in your first post
I apologize if anything in my posts has caused you frustration or offended you in some way, that was never the intent.
Posted by GeN1e on 17 February 2018 - 08:29 AM in IE Modding Discussion
No I suggest closing thread because some people lost their cool and started acting like immature assholes and nobody needs to deal with that shit. There's nothing wrong with arguments - even heated arguments. But trolling and flaming is not that. This thread mercifully died, and now it's been necro'd for no good reason and nothing productive has been added so... what's the point?
Probably because you can use the Beamdog forum if you need a safe space, and this forum if you need some freedom.
Posted by GeN1e on 16 February 2018 - 07:35 PM in IE Modding Discussion
God someone please lock this thread before it starts up again. Here's the tl;dr:
Modders: "please report bugs so that we can fix them."
Others: "No screw you! I shouldn't have to! And stop updating your damn mods, when you update them it screws up the fixpack! Also, update your damn mods more often and fix all the bugs that I refuse to tell you about!"
There, you've read the whole thread. Now please let it die.
Let censorship die instead
Community Forum Software by IP.Board
Licensed to: Spellhold Studios