Random Events

Random Events; support/discussion/questions

Moderator: thunderchero

User avatar
Spocks-cuddly-tribble
Code Master
Code Master
Posts: 853
Joined: Sun Apr 27, 2008 2:00 am

Random Events

Post by Spocks-cuddly-tribble »

This topic gives a complete overview of the random events in BotF (with focus on subroutine 44BEA4 IncidentProcessTurn).



First of all some basic information in order to guard against misunderstandings:


:arrow: According to this post, there is a Bug with the Random Events Yes/No-button (-> Options).

Example: For savegame A (started/saved with random events = yes), after start of game B (with random events = no), you have to push: Options -> Random Events: yes and no in order to disable R-events in game A. The initial display (=no from last game B) is wrong.

Also note ini-setting Borg=ON + RandomEvents=OFF/no won't work (i.e. no Borg in game).


:arrow: Editing monsters (very limited anyway) will be treated in this topic (updated in future w.r.t. the static monsters, system attacks & Borg re-spawning), and there's also a topic about Domination victory conditions (Borg).


:arrow: System bonuses for high morale (loyal/fanatic -> sub_43F66C), penalties for low morale (rebellious/defiant -> sub_43FB90) and also Intel events are not part of the random events. However, there is a confusing overlapping regarding rebellions (and also terrorism) which is discussed in this topic (default limitation for rebellions in sub_43FB90: systems held 2+; home system seems possible).


:arrow: Case/type of random event = bitmask means no event, but event bit set at [systInfo 304-307h] resp. [empsInfo 1B0-1B3h]. Aside of loc_44BFA6 (see section 1.1) the relevance of this feature is unclear.

Also, some events are just paraphrased (e.g. Credits gained). For faithful ingame text, search for the event code in sub_463A78 (resp. sub_462600) then watch for the call of sub_48B2E0 (load lexicon.dic entry number[eax]).

And yes, this topic requires (dis)assembler basics to make effective use of it (use google for tools & tutorials) :!:




Let's get started.



Subroutine 44BEA4 (IncidentProcessTurn) divides the random events into 3 groups:
  • 1.) System-specific events (sub_44BF30 ->sub_44C04C)

    2.) Monster & global events (sub_44CBE0)

    3.) Empire-specific non-system events (sub_44C860)
The difficulty-level dependant delay time applies to the groups 2 & 3.

Defaults: 45 / 35 / 30 / 20 / 10 ; (same defaults for group 1, but separate values, see 1.3)


Time delay factor (turns) for difficulty levels 1-5 (5=impossible):

Code: Select all

44BECC            mov     edx, 2Dh
44BEE1            mov     edx, 23h
44BEA6            mov     edx, 1Eh
44BEF6            mov     edx, 14h
44BF0B            mov     edx, 0Ah


An example how to turn off whole groups of events:

Code: Select all

asm-address /hex-code /instruction -> replacement

-> no system events:
44BF30   53            push   ebx  -> C3 (retn)

-> no Monster & global events:
44BF20   E8BB0C0000    CALL 44CBE0 -> 9090909090

-> no empire-specific non-system events:
44BF25   E836090000    CALL 44C860 -> 9090909090





:arrow: 1. System-specific events


The subroutine 44BF30 reads a sort of empire province list (address from [EmpsInfo+50h]) to determine valid system-IDs for random events, i.e. uninhabitated & independent (free minor / rebel) systems are not scheduled. There's a small chance that bugs are hiding in this obfuscated code, though.


1.1 Base chance for system events

At the global loop, the default chance for system events (per turn for each empire) depends on event group 3 bitmask [empsInfo+1B0h]. If there is no entry yet then sub_44C04C will be called (no random 100%) else the chance is reduced to 60%.


Adjusting frequencies in BotF:

The divisor forces the output (i.e. the used remainder in edx) of random integer to the range 0 - [divisor-1].
Consequently, the event probability is given by the inclusion-exclusion check of the specific events (resp. exit-check for all events) vs. the divisor.


As a first example, we take the global chance for system events.


Once event (group 3 !) entry for that empire THEN 40% chance for no system events each turn:

Code: Select all

edi = 0   /  eax = [empsInfo+1B0h]

44BFB1         cmp     edi, eax   // if event group-3 bitmask = 0
44BFB3         jz      short loc_44BFD2 (skip random generator)
ELSE
44BFC3         mov     ecx, 0Ah (divisor 10)
Range of random integer [remainder in edx] is 0-9

44BFCD         cmp     edx, 4 // no events if 0-3
44BFD0         jb      short loc_44BF72 (no system events for this major)
After that, sub_44C04C determines the events for the systems of the so selected empires:



1.2 Initial test for rebellions (-> the only random event without time delay factor!)

IF no home system, but rebellious and not last system held THEN there is a chance for a rebellion (depending on current morale value):

Code: Select all

44C077           test    ah, ah // if home system
44C079           jz      loc_44C18A (no rebellion / continue)

44C085           cmp     eax, 0FFFFFFFCh // if not rebellious
44C088           jnz     loc_44C18A (no rebellion / continue)

- Random Generator -
44C08E           cmp     word ptr [ebx+44h], 0Ah // minimum divisor 10
44C125           mov     dword ptr [esp+10h], 0Ah // minimum divisor 10
44C0B7           idiv    dword ptr [esp+10h] (divisor = morale value or minimum)
44C0BB           cmp     edx, 1    // default chance 1:[morale value or minimum]
44C0BE           jnz     loc_44C18A (no rebellion / continue)

44C0EE           cmp     eax, 1 // number of systems held
44C0F1           jle     loc_44C18A (no rebellion / continue)
Note: For bug fixes regarding inhabitants from a dead empire or conquered minors, see this post. :idea:



1.3 System-events time delay (turns) (difficulty levels 1-5)

Code: Select all

44C1A3             mov     ecx, 2Dh
44C1C4             mov     ecx, 23h
44C1CB             mov     ecx, 1Eh
44C1D2             mov     ecx, 14h
44C1D9             mov     ecx, 0Ah

1.4 Event frequencies for each difficulty level (loc_44C1E0)

The random engine for the following system events takes its divisor (dynamic range of remainder ->frequency) from data field ds:58FD58 depending on difficulty level.

Data field in trek.exe at 0x18DB5C: (actual used values i.e. not 0x18DB58!)

Code: Select all

34 08 00 00 D0 07 00 00 08 07 00 00 72 06 00 00 E8 03 00 00
Defaults: 2100 / 2000 / 1800 / 1650 / 1000 ; (divisor for difficulty levels 1-5)


Remainder [edx] = Event type: ( IF larger 0xD THEN no event / exit )


Code: Select all

44C014 switch/jump table: (case / 4byte address of code sequence)

0: bitmask
1: Rebellion (rebellious, defiant or disgruntled - even if last system held! but no home)
2: Comet Strike
3: Super Nova (if red star but no home system)
4: Terrorism (1 Building)
5: Earthquake
6: Planet Shift (positive)
7: Planet Shift (negative)
8: bitmask
9: bitmask
A: Plague
B: Immigration Boom
C: bitmask
D: Energy Meltdown





:arrow: 2. Monster & Global events (subspace anomaly & trade guild strike)


The structure of subroutine 44CBE0 is quite confusing due to two additional delay timer and the hidden F6-key monster feature which can trigger the subroutine 44B220. When calling subroutine 44B220, BotF tries to add a monster to the map (not necessarily with success, limitations see 2.4). I'll refer to this as a monster opportunity.

There are 3 paths to a monster opportunity in sub_44CBE0:


2.1 the F6-key (reference bit in ds:5A2B6C)

F6 = monster opportunity at the end of that turn, assuming random events=yes & delay time is over, else first turn if both conditions are met. E.g. impossible/unmodded the earliest monster opportunity is at turn 11, i.e. soonest at beginning of turn 12 a monster on the map.

The same limitations apply to this fix for a bitmask interference problem (regarding ds:5A2B6C) of the F6 button with the F11-cheat:

Code: Select all

44CCA8      and     dl, 0F8h -> 0x4C0AA set = FB
Side note: F6-key should be avoided in multiplayer games (potential sync errors).



2.2 the down counter (ds:58FDB0 / default: 75)

Every time subroutine 44CBE0 is called, this counter gets decreased. If it's zero when testing then we have a monster opportunity and ds:58FDB0 gets set to [random value + 50]:

Code: Select all

44CC19     mov     ecx, 19h (divisor 25 = random range 0-24)
44CC23     add     edx, 32h (+50)
Note: in the case of F6-key ds:58FDB0 gets ignored and overwritten with 41 (40 effectively / dec directly afterwards):

Code: Select all

44CCA3    mov     ecx, 29h (41)

2.3 the random generator (additional monster time delay factor)


Test random value (remainder of integer division by 700):

zero => Trade Guild Strike (loc_44CCC2)
1or2 => Subspace Anomaly (loc_44CD22)
3-24 => check additional time delay factor for monster opportunity

Code: Select all

44CC3D      mov     ecx, 2BCh (divisor 700)
Remainder in [edx]
44CC47      cmp     edx, 1Eh   // exit if not below 30
ELSE
44CC59      test    edx, edx     // if zero
44CC5B      jz      short loc_44CCC2 (Trade Guild Strike)
ELSE
44CC5D      cmp     edx, 3     // if 1 or 2
44CC60      jl      loc_44CD22 (Subspace Anomaly)
ELSE
44CC69      cmp     edx, 19h  // exit if not below 25
ELSE (for 3-24)
-> Monster time delay factor:
44CC6E      cmp     ds: 5A2B44(difficulty_level), 3
IF difficulty level lower or equal (1, 2 or 3):
44CD82      cmp     ds: 5A2918(Turn_Number), 4Bh (75)
ELSE (4 or 5):
44CC7C      cmp     ds: 5A2918(Turn_Number), 28h (40)
IF turn number reached THEN monster opportunity ELSE exit.


2.4 => Monster Opportunity (sub_44B220)


Subroutine 44B220 can be called with eax [monster race-ID] or [-1] = 1:7 random chance for each mobile monster (i.e. Edo God & Combat Drone are invalid).

Valide monster race IDs are read from ds:5A36D4 via index value.

Code: Select all

index limits (for experimental purposes)

for random monster:
44B35B         mov     ecx, 0Eh (divisor 14)
44B36B         shr     ebx, 1 (remainder / 2)

for a given monster race:
44B373         cmp     bx, 7
44B377         jb      loc_44B25D // test next index
44B37D         jmp     loc_44B27A // add monster [index 7] -> Bug?
 -> should be: jmp     loc_44B347 // exit no monster
Borg selected, or not borg - that is the question:

For Borg the subroutine 44F264 will be used, which is detailed explained in this post. :idea:


Otherwise, bitmask ds:5A2B78 checks whether the selected monster has already previously been generated:

Code: Select all

44B27F     cmp     [esp+eax*2], 24h // borg race-ID
44B284     jz      loc_ 44B382 // if borg (-> sub_44F264)
44B28A     mov     eax, 1
44B28F     mov     ecx, ebx
44B291     mov     edx, ds: 5A2B78
44B297     shl     eax, cl
44B299     test    edx, eax // if monster previously added
44B29B     jnz     loc_44B347 // exit no monster
44B2A1     mov     ecx, edx
44B2A3     or      ecx, eax
44B2A5     mov     ds: 5A2B78, ecx // update bitmask
Note: Due to inproper programming, ds:5A2B78 is not stored in the savegames i.e. works only for the current session :!:

Fix example by switching to an unused savegame area: ([alienInfo+3C] untouched cardassian entry/since for minors only)
-> at 0x4A693 & 0x4A6A7 change: 78 2B to: 4C 20



But even if a monster gets the green light from sub_44B220, there are additional limitations as well. Testing a vanilla/small map, I got 5 monster max, barring borg and static ones. Maybe this has something to do with a mapsize value or a minimum distance to other monsters when adding to the map (like the 1 monster per sector limitation).







:arrow: 3. Empire-specific non-system events (sub_44C860)


For adjusting the overall frequency of events, try changing (each for integer division of random value):

Code: Select all

44C8E5      mov     ecx, 320h (divisor 800)
44C8EF      cmp     edx, 0Bh
IF remainder greater or equal THEN no event, test next empire

ELSE -> new random value
44C905      mov     ecx, 14h (divisor 20)
Remainder of the second division (by the value from 44C905) determines the case/type of event (if above 0xB then case A: no event):

Code: Select all

44C830 switch/jump table: (case / 4byte address of code sequence)

0: bitmask
1: Credits gained
2: Credits lost
3: diplomatic / attitude change
4: bitmask
5: Hull Virus
6: no event (end code for all events / test next empire)
7: bitmask
8: bitmask
9: Research points lost
A: no event
B: Research points gained
Remember: Bitmask = no event (see notes above & section 1.1)






And that's it so far.

Like I wrote above, a bit assembler knowledge is a necessary catalyst for the interesting things like in-depth editing of specific events or even adding new events. Don't expect these kind of things are done (or even learned) in a few minutes, but given the available info on the dynamic data resp. savegame files and also the collected information in the AFC-Forums - it will pay off - as told in the Assembler Offsets topic. :)
I don't know how many bugs is too many but that point is reached somewhere before however many in BotF is.
Chernabog
Lieutenant-Commander
Lieutenant-Commander
Posts: 102
Joined: Fri Oct 02, 2009 2:00 am

Post by Chernabog »

This all looks like realy good stuff, nice work SCT.

I downloadded IDA Pro (freeware version) fired it up and ... OMG ... im used to a bit of code, scripting and the like but ... well lets just say that I think it would take me a very long time to get my head around assembler (I couldn't even get to the address I wanted to find :oops: ).

Regarding the F6 key, I guess you need to have -Mudd set to use this?

I'm going to post a sneaky request over on the monster modding topic, feel free to hurl abuse at me :)

Regards,

C.
User avatar
Flocke
BORG Trouble Maker
BORG Trouble Maker
Posts: 2584
Joined: Sun Apr 27, 2008 2:00 am
Location: Hamburg, Germany
Contact:

Post by Flocke »

wow, just wow at this huge piece of information!
Hopefully modders will now start to disable the supernova and earthquake events. They always bothered me the most. :D
KrazeeXXL
BORG Trouble Maker
BORG Trouble Maker
Posts: 2270
Joined: Sat Jan 03, 2009 3:00 am
Location: the 36th Chamber

Post by KrazeeXXL »

A mega interesting thread! I hope now after posting it you won't lose your pace tribble. although I'd understand if you'd need a break after this piece of awesome work.

> Interesting thing with the F6 key.

> I guess there are quite a bit more things that aren't saved correctly and which create errors.

> Flocke, I don't like the idea of completely disabling some random events. yea they can be very annoying but now as we have the info about the delay time we should change this to something which enriches the game positivly.

> Dang nice to finally get the confirmation that free minors/uninhabitant systems aren't affected. I always suspected it. That's a thing I'd like to change. Mainly because I like realism (Feds often helped races they barely knew to get new friends). If all available systems could be affected by random events then you might not have to change anything in the delay-direction at all. The chance that one of your systems will suffer from one of the bad things should be fairly decreased with changing this. :) more systems affectable = lesser chance to get hit (at least in the beginning).

One big dream of me stays. With the help of ships solving catastrophes. so you should get a msg that something bad is going to happen in system Tribble [42.13] and you got a specific amount of turns to send your ships to the system. Which should have a percentage to solve the problem depending of the xp and kind of ship and tech-level. (perhaps using the unused thingy of the artillery...).

So you should have to send at best a Galaxy or Nebula class to solve a seismic problem or even fix a star.

Flocke I know what you're thinking ;) but I'd like to think that the glass is half-full.

I hope you don't consider my post as spam...
Last edited by KrazeeXXL on Tue May 11, 2010 6:03 pm, edited 1 time in total.
User avatar
Tethys
Past Administrator
Past Administrator
Posts: 2065
Joined: Fri Jul 18, 2008 2:00 am
Location: Your mom's bed ;)
Contact:

Post by Tethys »

I cant wait to delve into this article as soon as I get some free time (which should be here in a few hours) maybe I can finally get the other minors some system protection :D
Not for the weak of heart...
Image
GALM <--- GALM/Galaxies Mod
User avatar
DCER
Code Master
Code Master
Posts: 683
Joined: Sat Apr 26, 2008 2:00 am

Post by DCER »

Nice work, SCT. You really dissected random events :)

I'd be nice if we could assign percentages to events so that positive events would happen as often as the negative ones. Looking at your findings this would be a major undertaking if at all possible.
User avatar
Spocks-cuddly-tribble
Code Master
Code Master
Posts: 853
Joined: Sun Apr 27, 2008 2:00 am

Post by Spocks-cuddly-tribble »

Chernabog wrote:I downloadded IDA Pro (freeware version) fired it up and ... OMG ... im used to a bit of code, scripting and the like but ... well lets just say that I think it would take me a very long time to get my head around assembler (I couldn't even get to the address I wanted to find :oops: ).

Regarding the F6 key, I guess you need to have -Mudd set to use this?
I suggest we make a "learning assembler" sticky in the modding section. So myself, DCER, Flocke, Gowron & Co can give some hints and collect useful links to tutorials.

And no, F6 doesn't require mudd (you can test within one minute, btw).

KrazeeXXL wrote:With the help of ships solving catastrophes. so you should get a msg that something bad is going to happen in system Tribble [42.13] and you got a specific amount of turns to send your ships to the system. Which should have a percentage to solve the problem depending of the xp and kind of ship and tech-level. (perhaps using the unused thingy of the artillery...).
Yes would be be a nice thing (among others), but due to the limitation of the BotF code itself, the required amount of time would be better spend with developing BotF2 (assuming you're so craze as to waste that much lifetime with computer/gaming stuff).

And you didn't get the frequencies correctly, I'm afraid. Try reading again.

In fact I'd suggest disabling of all system events for AI, otherwise the game is easier to win w.r.t. the AI, since AI can't adapt to the crippling by random events. Basically the same issue as with the minor start ELs depending on difficulty level.

DCER wrote:I'd be nice if we could assign percentages to events so that positive events would happen as often as the negative ones.
There are many possibilities to play with, as you can see.
I don't know how many bugs is too many but that point is reached somewhere before however many in BotF is.
User avatar
barashkukor
Cadet 1st Year
Cadet 1st Year
Posts: 3
Joined: Sun Jun 14, 2009 2:00 am

Re: Scheme of the Random Events

Post by barashkukor »

Thanks for this great post! :)
Spocks-cuddly-tribble wrote:

Code: Select all

44C014 switch/jump table: (case / 4byte address of code sequence)

0: bitmask
1: Rebellion (rebellious, defiant or disgruntled - even if last system held! but no home)
2: Comet Strike
3: Super Nova (if red star but no home system)
4: Terrorism (1 Building)
5: Earthquake
6: Planet Shift (positive)
7: Planet Shift (negative)
8: bitmask
9: bitmask
A: Plague
B: Immigration Boom
C: bitmask
D: Energy Meltdown
So, does this mean, if I i.e. change 29 C4 44 00 --> D0 C3 44 00 at 0x04B430 in trek.exe that I'll only get positive climate shifts from then on?

Spocks-cuddly-tribble wrote:Yes, you got it! :)
KrazeeXXL
BORG Trouble Maker
BORG Trouble Maker
Posts: 2270
Joined: Sat Jan 03, 2009 3:00 am
Location: the 36th Chamber

Re: Scheme of the Random Events

Post by KrazeeXXL »

barashkukor wrote:
Spocks-cuddly-tribble wrote:

Code: Select all

44C014 switch/jump table: (case / 4byte address of code sequence)

0: bitmask
1: Rebellion (rebellious, defiant or disgruntled - even if last system held! but no home)
2: Comet Strike
3: Super Nova (if red star but no home system)
4: Terrorism (1 Building)
5: Earthquake
6: Planet Shift (positive)
7: Planet Shift (negative)
8: bitmask
9: bitmask
A: Plague
B: Immigration Boom
C: bitmask
D: Energy Meltdown
So, does this mean, if I i.e. change 29 C4 44 00 --> D0 C3 44 00 at 0x04B430 in trek.exe that I'll only get positive climate shifts from then on?

Spocks-cuddly-tribble wrote:Yes, you got it! :)
So I decided to dig a bit into this whole matter.
The last post in here bugged me a little since I'm not able to recreate it with the few information from this thread. :/

What would I have to do to deactivate comet strikes and earthquakes f.e. ? I don't have a clue where and how to begin. :?

In another thread you wrote that BotF doesn't seem to determine correctly between positive and negative changes. So I'm kinda stunned here as well.

Spocks-cuddly-tribble wrote:
KrazeeXXL wrote:
What would I have to do to deactivate comet strikes and earthquakes f.e. ? I don't have a clue where and how to begin. :?
Goto asm [44C014 + event ID*4] and change 4 bytes to exit address (or one of the unused bitmask locations).
(side effect of above method is doubling the positive climate shifts)

KrazeeXXL wrote:In another thread you wrote that BotF doesn't seem to determine correctly between positive and negative changes. So I'm kinda stunned here as well.
A comment w.r.t. changed planet types (not vanllia default).
User avatar
Peter1981
Rear-Admiral
Rear-Admiral
Posts: 1118
Joined: Tue May 06, 2008 2:00 am
Location: England

Re: Scheme of the Random Events

Post by Peter1981 »

the key to this KrazzeeXXL is in trek.exe all you need to do is replace switches 2 and 5 with a bitmask (like switch 0, 8, 9 or C) in the EDIT: 44C014 [opps typo 44C830] switch/jump table: (case / 4byte address of code sequence)
in trek.exe at 0x4B414

1b c2 44 00 2d c2 44 00 c5 c2 44 00 e7 c2 44 00
8f c3 44 00 ae c3 44 00 d0 c3 44 00 29 c4 44 00
72 c4 44 00 84 c4 44 00 96 c4 44 00 01 c5 44 00
8b c5 44 00 9d c5 44 00
so replacing the two pieces of 4-byte code highlighted above in green with the code for a bitmask, say, 1b c2 44 00 should work.

Hope this helps.

EDIT: Fixed jump table location - Tethys
Last edited by Peter1981 on Sun Oct 02, 2011 1:59 pm, edited 1 time in total.
User avatar
Flocke
BORG Trouble Maker
BORG Trouble Maker
Posts: 2584
Joined: Sun Apr 27, 2008 2:00 am
Location: Hamburg, Germany
Contact:

Re: Scheme of the Random Events

Post by Flocke »

I gave him a little introduction to ida yesterday
wondered about the bitmask event type but as already stated by sct it just sets a bitmask telling which events occured and relevance of this feature is unclear. So yeah, to disable use one of these bitmask events, or if you want, try to skip setting the bitmask by using an adress right after the bitmask gets set in one of those bitmask events (use ida, go to the adress of one of the bitmask event implementations, see the 'or' command which sets the bitmask, use the adress of the asm command thereafter)
And don't forget to give other n00bs some hints on learning to work with ida, Krazee dude :mrgreen:
User avatar
Quintaine
Lieutenant-Junior Grade
Lieutenant-Junior Grade
Posts: 68
Joined: Mon Apr 19, 2010 2:00 am
Location: Germany, Berlin

Re: Random Events

Post by Quintaine »

i can not found this:

asm-address /hex-code /instruction -> replacement

-> no system events:
44BF30 53 push ebx -> C3 (retn)

-> no Monster & global events:
44BF20 E8BB0C0000 CALL 44CBE0 -> 9090909090

-> no empire-specific non-system events:
44BF25 E836090000 CALL 44C860 -> 9090909090

in trek not exist 44BF30 and 44BF20 and 44BF25 how can i find them? I will not in my botf Monsters and global events and i will not empire-specific non systems events in my mod, because the Ai the to stupid to kill a monster (Borg) and i not like if All planets are Borg. Yes i can push the botton to no for no random events but in trek respawn the Monster -.-! I delit in stbotf all monsters!
User avatar
Flocke
BORG Trouble Maker
BORG Trouble Maker
Posts: 2584
Joined: Sun Apr 27, 2008 2:00 am
Location: Hamburg, Germany
Contact:

Re: Random Events

Post by Flocke »

Quintaine wrote:i can not found this:

asm-address /hex-code /instruction -> replacement
viewtopic.php?f=4&t=598&p=8288&hilit=Assembler+Offsets
to be found in Structured Modding Index viewtopic.php?f=9&t=1284#p18377 first topic of this forum

you can use UE to convert, I think
or read into assembler coding and use ida and ollydbg :)
User avatar
starfleet
Cadet 2nd Year
Cadet 2nd Year
Posts: 8
Joined: Sun Apr 11, 2010 2:00 am

Re: Random Events

Post by starfleet »

I think these Lexicon entries are also a random event:

39 => Artifacts have been discovered in the %1 system which use advanced technology. Scientists have acquired %d2 teraquads of research data from studying the artifacts.
40 => ALIEN ARTIFACTS DISCOVERED
User avatar
matilija
Cadet 1st Year
Cadet 1st Year
Posts: 1
Joined: Sat Mar 14, 2015 2:08 am

Re: Random Events

Post by matilija »

Has anyone by chance ever edited the .EXE yet to disable all system specific events? By chance? I would love to disable those while leaving monsters/non system events in place.

So if I change 44BF30 53 to 44BF30 C3, I won't have any system specific random events? Is that correct?

Edit: Please be gentle, I'm a noob.
Post Reply

Return to “Random Events”