Page 1 of 1
Randomizing content
Posted: 24 Jan 2015, 02:05
by Ehthm
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.
Re: Randomizing content
Posted: 24 Jan 2015, 02:20
by scrawl
You can already do this with scripting, at least the examples you mentioned.
Re: Randomizing content
Posted: 24 Jan 2015, 02:22
by Ehthm
scrawl wrote:You can already do this with scripting, at least the examples you mentioned.
Thank you.
Re: Randomizing content
Posted: 25 Jan 2015, 00:11
by qqqbbb
In Skyrim they use
aliases for that.
Re: Randomizing content
Posted: 25 Jan 2015, 13:08
by sjek
...... 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