Randomizing content

Feedback on past, current, and future development.
Post Reply
Ehthm
Posts: 3
Joined: 24 Jan 2015, 01:51

Randomizing content

Post by Ehthm » 24 Jan 2015, 02:05

Hello, I was wondering if it would ever be a feasible task to add a way to randomize certain aspects of Morrowind after openmw is finished. What I mean is for there to be a way of adding variety to one's multiple playthroughs, where, for example, the player wouldn't exactly know where the best items are found, as they could be potentially placed in different areas. Another possibility of randomization would be to change quests in minor ways, so that, were there to be a quest to discover who murdered someone, the murderer would maybe be a different person each time, so that the player would have to go through the quest as if it is his first playthrough, instead of simply knowing who the culprit is every time. Obviously this would make Morrowind very different, but I think a system like this could add a lot of replayability to this old game for the people who have already played it a hundred times.

User avatar
scrawl
Posts: 2152
Joined: 18 Feb 2012, 11:51

Re: Randomizing content

Post by scrawl » 24 Jan 2015, 02:20

You can already do this with scripting, at least the examples you mentioned.

Ehthm
Posts: 3
Joined: 24 Jan 2015, 01:51

Re: Randomizing content

Post by Ehthm » 24 Jan 2015, 02:22

scrawl wrote:You can already do this with scripting, at least the examples you mentioned.

Thank you.

qqqbbb
Posts: 19
Joined: 29 Aug 2012, 14:18

Re: Randomizing content

Post by qqqbbb » 25 Jan 2015, 00:11

In Skyrim they use aliases for that.

User avatar
sjek
Posts: 430
Joined: 22 Nov 2014, 10:51

Re: Randomizing content

Post by sjek » 25 Jan 2015, 13:08

...... writing off the window..

for the variable testing this could be used. in desert region 2.esm there is multiple vmet's script testing and vanilla limit commented scripts.

Code: Select all

begin vmet_facetest
	; This test (in both its forms) proved the face command
	; cant accept local or globol variables

	float zangle
	float tempfloat
	short intangle

;	float xpos
;	float ypos
;
;	set xpos to vmet_objscale
;	set ypos to vmet_pcscale
;
;	face xpos ypos
;	face vmet_objscale vmet_pcscale

	; each cell is 8192 * 8192
	; cells range from about -23 to + 23 in each direction perhaps a bit more
	; that leads to range from eg -200,000 to + 200,000
	; I use a +/- million and it worked fine.


;	if ( vmet_batforwardrun == 1 )
;		face 0 1000000
;	elseif ( vmet_batforwardrun == 2 )
;		face 1000000 0
;	elseif ( vmet_batforwardrun == 3 )
;		face 0 -1000000
;	elseif ( vmet_batforwardrun == 4 )
;		face -1000000 0
;	endif

	set zangle to ( player->getangle Z )

	; zangle ranges from -180 to +180
;	; convert to 0 to 360
;	set zangle to ( zangle + 180 )

;	if ( zangle > 256 )
;		if ( zangle > 384 )		; 256+128
;		else
;			if ( zangle > )		; 256+64
;				if ( zangle > )		; 256+64+32
;					if ( zangle > )		; 256+64+32+16
;						if ( zangle > )		; 256+64+32+16+8
;							if ( zangle > )		; 256+64+32+16+8+4
;								if ( zangle > )		; 256+64+32+16+8+4+2
;									if ( zangle > )		; 256+64+32+16+8+4+2+1
;
;									else
;
;									endif
;								else
;
;			else
;			endif
;		endif

	if ( zangle > 90 )
		if ( zangle > 177.5 )				; average 180
			face 0 -10000000
		elseif ( zangle > 172.5 )			; average 175
			face 871557 -9961947
		elseif ( zangle > 167.5 )			; avarage 170
			face 1736482 -9848078
		elseif ( zangle > 162.5 )			; average 165
			face 2588190 -9659258
		elseif ( zangle > 157.5 )			; average 160
			face 3420201 -9396926
		elseif ( zangle > 152.5 )			; average 155
			face 4226183 -9063078
		elseif ( zangle > 147.5 )			; average 150
			face 5000000 -8660254
		elseif ( zangle > 142.5 )			; average 145
			face 5735764 -8191520
		elseif ( zangle > 137.5 )			; average 140
			face 6427876 -7660444
		elseif ( zangle > 132.5 )			; average 135
			face 7071068 -7071068
		elseif ( zangle > 127.5 )			; average 130
			face 7660444 -6427876								; last real one
		elseif ( zangle > 122.5 )			; average 125
			face 8191520 -5735764
		elseif ( zangle > 117.5 )			; average 120
			face 8660254 -5000000
		elseif ( zangle > 112.5 )			; average 115
			face 9063078 -4226183
		elseif ( zangle > 107.5 )			; average 110
			face 9396926 -3420201
		elseif ( zangle > 102.5 )			; average 105
			face 9659258 -2588190
		elseif ( zangle > 97.5 )			; average 100
			face 9848078 -1736482
		elseif ( zangle > 92.5 )			; average 95
			face 9961947 -871557
		else									; average 90
			face 10000000 0
		endif
		return
	endif

	if ( zangle > 0 )
		if ( zangle > 87.5 )				; average 90
			face 10000000 0
		elseif ( zangle > 82.5 )		; average 85
			face 9961947 871557
		elseif ( zangle > 77.5 )		; average 80
			face 9848078 1736482
		elseif ( zangle > 72.5 )		; average 75
			face 9659258 2588190
		elseif ( zangle > 67.5 )		; average 70
			face 9396926 3420201
		elseif ( zangle > 62.5 )		; average 65
			face 9063078 4226183
		elseif ( zangle > 57.5 )		; average 60
			face 8660254 5000000
		elseif ( zangle > 52.5 )		; average 55
			face 8191520 5735764
		elseif ( zangle > 47.5 )		; average 50
			face 7660444 6427876
		elseif ( zangle > 42.5 )		; average 45
			face 7071068 7071068
		elseif ( zangle > 37.5 )		; average 40
			face 6427876 7660444
		elseif ( zangle > 32.5 )		; average 35
			face 5735764 8191520
		elseif ( zangle > 27.5 )		; average 30
			face 5000000 8660254
		elseif ( zangle > 22.5 )		; average 25
			face 4226183 9063078
		elseif ( zangle > 17.5 )		; average 20
			face 3420201 9396926
		elseif ( zangle > 12.5 )		; average 15
			face 2588190 9659258
		elseif ( zangle > 7.5 )			; average 10
			face 1736482 9848078
		elseif ( zangle > 2.5 )			; average 5
			face 871557 9961947
		else								; average 0
			face 0 10000000
		endif
		return
	endif


	if ( zangle < -90 )
		if ( zangle < -177.5 )				; average -180
			face 0 -10000000
		elseif ( zangle < -172.5 )			; average -175
			face -871557 -9961947
		elseif ( zangle < -167.5 )			; average -170
			face -1736482 -9848078
		elseif ( zangle < -162.5 )			; average -165
			face -2588190 -9659258
		elseif ( zangle < -157.5 )			; average -160
			face -3420201 -9396926
		elseif ( zangle < -152.5 )			; average -155
			face -4226183 -9063078
		elseif ( zangle < -147.5 )			; average -150
			face -5000000 -8660254
		elseif ( zangle < -142.5 )			; average -145
			face -5735764 -8191520
		elseif ( zangle < -137.5 )			; average -140
			face -6427876 -7660444
		elseif ( zangle < -132.5 )			; average -135
			face -7071068 -7071068
		elseif ( zangle < -127.5 )			; average -130
			face -7660444 -6427876								; last real one
		elseif ( zangle < -122.5 )			; average -125
			face -8191520 -5735764
		elseif ( zangle < -117.5 )			; average -120
			face -8660254 -5000000
		elseif ( zangle < -112.5 )			; average -115
			face -9063078 -4226183
		elseif ( zangle < -107.5 )			; average -110
			face -9396926 -3420201
		elseif ( zangle < -102.5 )			; average -105
			face -9659258 -2588190
		elseif ( zangle < -97.5 )			; average -100
			face -9848078 -1736482
		elseif ( zangle < -92.5 )			; average -95
			face -9961947 -871557
		else									; average -90
			face -10000000 0
		endif
		return
	endif

	if ( zangle < -0 )
		if ( zangle < -87.5 )				; average -90
			face -10000000 0
		elseif ( zangle < -82.5 )		; average -85
			face -9961947 871557
		elseif ( zangle < -77.5 )		; average -80
			face -9848078 1736482
		elseif ( zangle < -72.5 )		; average -75
			face -9659258 2588190
		elseif ( zangle < -67.5 )		; average -70
			face -9396926 3420201
		elseif ( zangle < -62.5 )		; average -65
			face -9063078 4226183
		elseif ( zangle < -57.5 )		; average -60
			face -8660254 5000000
		elseif ( zangle < -52.5 )		; average -55
			face -8191520 5735764
		elseif ( zangle < -47.5 )		; average -50
			face -7660444 6427876
		elseif ( zangle < -42.5 )		; average -45
			face -7071068 7071068
		elseif ( zangle < -37.5 )		; average -40
			face -6427876 7660444
		elseif ( zangle < -32.5 )		; average -35
			face -5735764 8191520
		elseif ( zangle < -27.5 )		; average -30
			face -5000000 8660254
		elseif ( zangle < -22.5 )		; average -25
			face -4226183 9063078
		elseif ( zangle < -17.5 )		; average -20
			face -3420201 9396926
		elseif ( zangle < -12.5 )		; average -15
			face -2588190 9659258
		elseif ( zangle < -7.5 )			; average -10
			face -1736482 9848078
		elseif ( zangle < -2.5 )			; average -5
			face -871557 9961947
		else								; average -0
			face 0 10000000
		endif
		return
	endif






;	set tempfloat to ( zangle / 5 )			; -36 to + 36
;	set intangle to tempfloat
;
;	if ( intangle < 64 )
;		if ( intangle < 32 )
;			if ( intangle < 16 )
;				if ( intangle < 8 )
;					if ( intangle < 4 )
;						if ( intangle < 2 )
;							if ( intangle < 1 )
;							else
;							endif
;						else
;							if ( intangle < 3 )
;							else
;							endif
;						endif
;					else
;						if ( intangle < 6 )
;							if ( intangle < 5 )
;							else
;							endif
;						else
;							if ( intangle < 7 )
;							else
;							endif
;						endif
;					endif
;				else
;					if ( intangle < 12 )
;						if ( intangle < 10 )
;							if ( intangle < 9 )
;							else
;							endif
;						else
;							if ( intangle < 11 )
;							else
;							endif
;						endif
;					else
;						if ( intangle < 14 )
;							if ( intangle < 13 )
;							else
;							endif
;						else
;							if ( intangle < 15 )
;							else
;							endif
;						endif
;					endif
;				endif



end
for that randomising would placing the cell ID's to number variables and picking one with random generator work ?
then placing that variable inside dialogue and such where needed.
or is the taking ID's position from another cell possible and placing for example scroll to a stable.
if that's manual reference placing then it's in development section as is.
In Skyrim they use aliases for that.
those looks nice and some could be placed as function extension later as placing them via creation kit looks kinda tedious.

for scripting have been wondering why haven't heard of skyrim besides it's hack and flash nature althought those mod reviews on yotube are kinda something.

http://www.creationkit.com/Keyword_Reference
http://www.creationkit.com/Papyrus_Intr ... ng_scripts
that seems kinda hard to pull out of the hat scripted mod. small redefined library althougt here are script modpacks what have heard. diffigulty mods use them and that the game mechanics is hardcoded in big parts
althought those mod reviews on youtube are kinda something .p
the placing and execution of actions is done good
+ custom animations

http://www.creationkit.com/Arrays_(Papyrus) arrays could be needed for particle effect manipulation, lists and group reference control after 1.0. framerate for fraphic stuff thought.
makes the set of handled variables possibly smaller
"life is crazy"
"craziness has beauty which only crazies understand" some movie clip in the head.
https://wiki.openmw.org/index.php?title=Testing

Post Reply