Jump to content

Photo

.ini spawn clarification

iwd iwdee

22 replies to this topic

#1 Avenger

Avenger
  • Modders
  • 3803 posts
  • Gender:Male
  • Location:Hungary

Posted 11 March 2015 - 09:27 AM

spec = [xxx.yyy.zzz.vvv.qqq]
xxx, yyy, zzz, vvv, qqq - integer numbers  - I have no idea what do they mean

 

 

 

These numbers are the ID values. (IDs targeting, EA/General/..etc). If there is a creature fulfilling the 'specification', then the spawn won't occur. It should be set to the ID values of the creature, or infinite spawning will occur.

 



#2 lynx

lynx
  • Modders
  • 3139 posts
  • Gender:Male
  • Location:Ljubljana, Slovenija

Posted 11 March 2015 - 11:38 AM

Doesn't it take into account spec_qty for deciding if more should be spawned or not?

GemRB - IE anywhere.
Mages needed! Looking for Planescape: Torment testers
Play android version IS NOT SUPPORTED ANYMORE: reported bugs will be ignored! Still looking for builders ...


#3 Avenger

Avenger
  • Modders
  • 3803 posts
  • Gender:Male
  • Location:Hungary

Posted 11 March 2015 - 01:50 PM

A lot more fields are taken into account, but if these numbers aren't the same as those in the spawned critter, you're gonna have a bad time.



#4 K4thos

K4thos
  • Modders
  • 1198 posts
  • Gender:Male

Posted 16 March 2015 - 05:17 PM

spec = [xxx.yyy.zzz.vvv.qqq]
xxx, yyy, zzz, vvv, qqq - integer numbers  - I have no idea what do they mean

 

These numbers are the ID values. (IDs targeting, EA/General/..etc). If there is a creature fulfilling the 'specification', then the spawn won't occur. It should be set to the ID values of the creature, or infinite spawning will occur.

thanks for clarification, but I'm afraid this is not precise enough. I read somewhere that you were porting IWD features to EE engine for Beamdog, so it would be great if you could share with us more about this file format, if you have that knowledge that is (not sure if Beamdog received full ini documentation, or if it is obvious from the source code. Hope it's not under NDA). Some truly amazing spawn mods are now possible for BG2:EE (yep, this feature has been backported from IWD:EE to BG2:EE in patch 1.3 and will be probably added to BG:EE in next patch)

xxx = spawned creature Allegiance. If you set wrong value here than you will end up with this problem
yyy = ? always set to 0 in default IWD/IWD2 ini files)
zzz = ? as above
vvv = ? as above
qqq = probably refers to SPECIFIC.IDS, but from my tests you just need to add the same value to ai_specifics entry and it will work without expanding SPECIFIC.IDS

For IESDP maintainers - whole INI documentation is lacking. There are many undocumented options available

 

spawn_point = [xxxx.yyyy:z]
xxxx - is x position on the area
yyyy - is y position on the area
z - is the face direction of spawned creature.

this can have multiple values assigned, for example: [0765.0305],[0820.0375],[0680.0330],[0765.0430],[0835.0490],[0600.0355]. Not sure if the spawn will be random or if it will be present in all these places (probably the former based on how cre_file works)
 

cre_file = CRE_file_name
File name of CRE file without extension that is used for spawned creatures.

this one accepts multiple cre files as well. They will be spawned randomly (also see spec_qty)

 

spec_qty = integer number 
some number,  I have seen only value 1, usage unknown,

you can set how many cre files will be spawned at once. If you choose multiple cre_file than there will be random spawn, for example: cre_file=wolf01,bearbl,worg and spec_qty=3 will spawn any variation of these 3 creatures (3 wolfs, 2 worgs and 1 black bear, 3 bears etc.).

 

------

 

In case someone is interested in helping with testing here is a code that will disable vanilla BG2:EE spawns (useless for IWD:EE as it doesn't have ARE spawn points):

COPY_EXISTING_REGEXP GLOB ~.+\.ARE~ ~override~
    PATCH_IF NOT ("%SOURCE_SIZE%" = 0) BEGIN
        READ_LONG 0x60 "spawn_off" ELSE 0
        READ_LONG 0x64 "spawn_num" ELSE 0
        FOR (index = 0 ; index < spawn_num ; index = index + 1) BEGIN
            WRITE_SHORT (spawn_off + 0x86 + (0xc8 * index)) 0
        END
    END
BUT_ONLY
interval= integer number
Time interval before creatures from [name_of_section1] will be spawned. Time is counted in relation 1 minute (of real or game time ?) = 900.
The similar definition is given in case of [name_of_section2] or other sections defined by user in [spawn_main] section.
At last spawned creatures identifier definitions.

and change above mentioned value to 1 in order to make the spawn work without delays.

 

edit: updated list of working BG2:EE arguments is available in this post.


Edited by K4thos, 24 August 2017 - 04:58 AM.


#5 lynx

lynx
  • Modders
  • 3139 posts
  • Gender:Male
  • Location:Ljubljana, Slovenija

Posted 17 March 2015 - 05:56 AM

My guess is the vars from Avenger's note are likely from the targetting list:
[EA.FACTION.TEAM.GENERAL.RACE.CLASS.SPECIFIC.GENDER.ALIGNMNT.SUBRACE.AVCLASS.CLASSMSK]

GemRB - IE anywhere.
Mages needed! Looking for Planescape: Torment testers
Play android version IS NOT SUPPORTED ANYMORE: reported bugs will be ignored! Still looking for builders ...


#6 K4thos

K4thos
  • Modders
  • 1198 posts
  • Gender:Male

Posted 17 March 2015 - 08:30 AM

Yeah, I understand that, but we need to know more details to make it reliable. First value is Allegiance (EA), last is SPECIFIC. Which ones are between them. If you mess up order (at least the first value based on my tests) than you get infinite spawns, so IESDP can't have such vague explanation.


Edited by K4thos, 17 March 2015 - 12:31 PM.


#7 Avenger

Avenger
  • Modders
  • 3803 posts
  • Gender:Male
  • Location:Hungary

Posted 17 March 2015 - 11:21 AM

7 numbers: ea/general/race/class/specific/gender/alignment

 

They don't use faction, team etc. (At least in IWDEE/IWD/HoW).

You can use fewer numbers, they default to 0, this is why there are only five numbers, ending with specific.



#8 K4thos

K4thos
  • Modders
  • 1198 posts
  • Gender:Male

Posted 17 March 2015 - 12:29 PM

thanks, now it makes sense and we know the exact order :)



#9 lynx

lynx
  • Modders
  • 3139 posts
  • Gender:Male
  • Location:Ljubljana, Slovenija

Posted 11 August 2015 - 04:50 AM

Ok, some more notes.

 

Previous reverse engineering suggested interval has a lower cap in pst:

http://gibberlings3....=23623&p=194547

 

pst also has partyarea and partypoint, used at least for entering tno's tomb. Keeps the party out of it. For some reason, the same nice solution wasn't used for the fortress. Neither for the player maze, but that one has multiple entry points, so it's understandable.


GemRB - IE anywhere.
Mages needed! Looking for Planescape: Torment testers
Play android version IS NOT SUPPORTED ANYMORE: reported bugs will be ignored! Still looking for builders ...


#10 K4thos

K4thos
  • Modders
  • 1198 posts
  • Gender:Male

Posted 24 August 2017 - 04:42 AM

Some more notes based on BG2:EE patch 2.x

[spawn_main]     //section of the file where 'enter' and 'events' type spawns are assigned
enter            //list of all 'enter' type spawns (spawns that should happen when you enter the area)
events           //list of all 'events' type spawns (repeating spawns)
critters         //list of all spawn point names associated with 'events' or 'enter' type spawns
interval         //how much time should pass before engine re-checks conditions for another spawn (measured in game ticks)
spec_var         //if GLOBAL variable referenced here is not set, then the spawn won't occur
spec             //if there is a creature fulfilling the 'spec', then the spawn won't occur. It should be set either to the CRE DV or ID values of the creature [EA.GENERAL.RACE.CLASS.SPECIFIC.GENDER.ALIGN]
spec_qty         //how many creatures will be spawned (spawn point will re-spawn death creature even if other spawned creatures are still alive)
create_qty       //how many creatures will be spawned (spawn point will re-spawn creatures only if all of them are death)
cre_file         //filename of the CRE that should be spawned
script_name      //overwrite spawned CRE script name (DV)
ai_ea            //overwrite spawned CRE ea value
ai_general       //overwrite spawned CRE general value
ai_race          //overwrite spawned CRE race value
ai_class         //overwrite spawned CRE class value
ai_gender        //overwrite spawned CRE gender value
ai_specifics     //overwrite spawned CRE specifics value
ai_alignment     //overwrite spawned CRE alignment value
script_override  //overwrite spawned CRE override script
script_class     //overwrite spawned CRE class script
script_race      //overwrite spawned CRE race script
script_general   //overwrite spawned CRE general script
script_default   //overwrite spawned CRE default script
script_area      //overwrite spawned CRE area script (not remembered after game load)
script_specifics //overwrite spawned CRE specifics script
dialog           //overwrite spawned CRE dialog file
spawn_point      //spawn point coordinates eg. [1200.600:14] (the last argument is facing and can be omitted, several spawn point coordinates can be separated with commas)
facing           //CRE facing after spawn (can be also set via 'spawn_point')
ignore_can_see   //if set to 1 spawn point will be active even if you're in a view of a spawn point (default = 0)
do_not_spawn     //disables spawn point (useless considering there is no way to enable it in-game)

Example usage:

[spawn_main]
enter=ENTER
events=8_HOURS

[ENTER]
critters=SpawnPoint1
interval=1

[8_HOURS]
critters=SpawnPoint2
interval=432000

[SpawnPoint1]
spec = AASIM
cre_file = AASIM
spawn_point = [1200.600:14]
ignore_can_see = 1

[SpawnPoint2]
spec = ABELA
cre_file = ABELA
spawn_point = [1200.600:14]
ignore_can_see = 1

INI spawn points don't work with SpawnPtActivate, SpawnPtDeactivate, SpawnPtSpawn actions.

 

There are several other arguments that either don't work at all (leftovers from other games?) or I don't know what they do or how to use them. If someone has more information regarding them please share the knowledge.

[locals]
spec_area
control_var
ai_faction
ai_team
good_mod
law_mod
lady_mod
murder_mod
death_scriptname
death_faction
death_team
point_select
point_select_var
check_crowd
find_safest_point
save_selected_point
save_selected_facing
spawn_point_global
spawn_facing_global
inc_spawn_point_index
hold_selected_point_key
check_by_view_port
spawn_time_of_day
time_of_day

Edited by K4thos, 24 August 2017 - 06:14 AM.


#11 lynx

lynx
  • Modders
  • 3139 posts
  • Gender:Male
  • Location:Ljubljana, Slovenija

Posted 24 August 2017 - 04:50 AM

about a third look like from pst, just from their names.


GemRB - IE anywhere.
Mages needed! Looking for Planescape: Torment testers
Play android version IS NOT SUPPORTED ANYMORE: reported bugs will be ignored! Still looking for builders ...


#12 argent77

argent77
  • Modders
  • 823 posts
  • Gender:Male

Posted 24 August 2017 - 06:18 AM

These creature options are only relevant for PST/PST:EE
good_mod    // Increment global "Good" by specified amount when killed (can be negative)
law_mod     // Increment global "Law" by specified amount when killed (can be negative)
lady_mod    // Increment global "Lady" by specified amount when killed (can be negative)
murder_mod  // Increment global "Murder" by specified amount when killed (can be negative)


#13 lynx

lynx
  • Modders
  • 3139 posts
  • Gender:Male
  • Location:Ljubljana, Slovenija

Posted 24 August 2017 - 06:36 AM

Same for the faction ones, right?

 

 the law and good are for TNO's alignment system, lady is her piss-me-off counter and murder something similar (for that evil book?).


GemRB - IE anywhere.
Mages needed! Looking for Planescape: Torment testers
Play android version IS NOT SUPPORTED ANYMORE: reported bugs will be ignored! Still looking for builders ...


#14 Avenger

Avenger
  • Modders
  • 3803 posts
  • Gender:Male
  • Location:Hungary

Posted 24 August 2017 - 07:33 AM

Many of these don't work (because they were unneeded in the official campaign). Just talking about IWDEE (and BG*).

It is probably easier to tell which ones from that list actually do more than parsing the .ini:

 

spec_area - it allows defining a rectangular/circle area, where it looks for the specific creature (other spec stuff). So you can theoretically limit your respawn condition to a portion of the area. (Untested).

You can have 2 3 or 4 data elements.

2 - defines a point, checks if the creature is in that point

3 - defines a point and a radius, checks if the creature is in that circle

4 - defines a rectangular area....

 

point_select and point_select_var also work. Also the save_* keywords. 


Edited by Avenger, 24 August 2017 - 07:37 AM.


#15 K4thos

K4thos
  • Modders
  • 1198 posts
  • Gender:Male

Posted 24 August 2017 - 08:02 AM

thanks for the info.

 

spec_area - it allows defining a rectangular/circle area, where it looks for the specific creature (other spec stuff). So you can theoretically limit your respawn condition to a portion of the area. (Untested).

You can have 2 3 or 4 data elements.

2 - defines a point, checks if the creature is in that point

3 - defines a point and a radius, checks if the creature is in that circle

4 - defines a rectangular area....

can't get this one to work as intended. I've just tried following variants with spawn_point set to [1200.600] (confirmed that CRE is spawned exactly at that point via ctrl+M)

1. spec_area = [1200.600]

2. spec_area = [1200.600.100]

3. spec_area = [1000.500.2000.1000]

 

Each one results in infinite spawn from the very beginning.

 

edit: also not exactly sure how this can be tested:

point_select and point_select_var also work. Also the save_* keywords.

please clarify. In IWD:EE AR6006.INI uses:

point_select          = R

what is R? What "var" refers to in point_select_var? What those save_* keywords are used for? (can't find any examples of them in IWD:EE, PST:EE and IWD2) Thanks in advance.


Edited by K4thos, 24 August 2017 - 10:46 AM.




Reply to this topic



  



Also tagged with one or more of these keywords: iwd, iwdee

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users