T_ScNews_Bellman_Spawner_Rare
Tamriel_Data.esm
Variables
9
Local Variables
pick1
pick2
weight1
weight2
doOnce
resetDay
randomPaperDiv
randomSpawn
randomPaper
Source
1Begin T_ScNews_Bellman_Spawner_Rare
2
3short pick1
4short pick2
5short weight1
6short weight2
7short doOnce
8short resetDay
9float randomPaper
10short randomPaperDiv
11short randomSpawn
12
13if ( MenuMode )
14 Return
15endif
16
17if ( doOnce >= 30 ) ; paper has been spawned, check if it should respawn
18 if ( CellChanged == 1 )
19 if ( resetDay <= DaysPassed ) ; if two days have passed, reset and respawn.
20 set doOnce to 0
21 endif
22 else
23 Return
24 endif
25endif
26
27if ( doOnce == 0 ) ; if we've reset the script, fire it up.
28 set doOnce to 10
29 ; disable the spawner
30 if ( GetDisabled == 0 )
31 Disable
32 endif
33endif
34
35if ( doOnce == 30 )
36 Return
37elseif ( doOnce == 10 )
38 ; only if no other script has initialized the randompicker scripts do we proceed
39 if ( ScriptRunning T_ScNews_Bellman_Picker1 == 0 )
40 if ( ScriptRunning T_ScNews_Bellman_Picker2 == 0 )
41 set doOnce to 20
42 StartScript T_ScNews_Bellman_Picker1
43 StartScript T_ScNews_Bellman_Picker2
44 endif
45; else
46; MessageBox "script already running"
47 endif
48elseif ( doOnce == 20 )
49 ; fetch the data on which paper was picked
50 if ( T_Glob_News_Bellman_Pick1 > 0 )
51 set pick1 to T_Glob_News_Bellman_Pick1
52 set weight1 to ( pick1 / 100 )
53 set pick1 to ( pick1 - 100*weight1 )
54 set T_Glob_News_Bellman_Pick1 to 0
55 elseif ( T_Glob_News_Bellman_Pick1 < 0 )
56 set pick1 to 0
57 set weight1 to 0
58 set T_Glob_News_Bellman_Pick1 to 0
59 else
60 Return
61 endif
62 if ( T_Glob_News_Bellman_Pick2 > 0 )
63 set pick2 to T_Glob_News_Bellman_Pick2
64 set weight2 to ( pick2 / 100 )
65 set pick2 to ( pick2 - 100*weight2 )
66 set T_Glob_News_Bellman_Pick2 to 0
67 elseif ( T_Glob_News_Bellman_Pick2 < 0 )
68 set pick2 to 0
69 set weight2 to 0
70 set T_Glob_News_Bellman_Pick2 to 0
71 else
72 Return
73 endif
74
75 set weight2 to ( weight1 + weight2 )
76; set weight3 to ( weight2 + weight3 ) ;etc if you have more pickers
77
78 if ( weight2 > 0 ) ; if there are papers in the pool
79 set randomPaper to ( Random 32767 )
80 set randomPaperDiv to ( randomPaper / weight2 )
81 set randomPaper to ( randomPaper - ( randomPaperDiv * weight2 ) ) + 0.1
82
83 if ( weight1 > randomPaper )
84; set pick1 to pick1
85 else
86 set pick1 to pick2
87; in case of 3 or more pick variables, the latter pick should be the final one in the else bracket here
88 endif
89
90 ; here's where you spawn the papers.
91 set randomSpawn to Random 100
92 if ( randomSpawn < 50 )
93 ; 50% chance to do nothing
94 elseif ( pick1 == 48 )
95 PlaceAtMe T_News_Bellman_48 1 0 1
96 elseif ( pick1 == 47 )
97 PlaceAtMe T_News_Bellman_47 1 0 1
98 elseif ( pick1 == 46 )
99 PlaceAtMe T_News_Bellman_46 1 0 1
100 elseif ( pick1 == 45 )
101 PlaceAtMe T_News_Bellman_45 1 0 1
102 elseif ( pick1 == 44 )
103 PlaceAtMe T_News_Bellman_44 1 0 1
104 elseif ( pick1 == 43 )
105 PlaceAtMe T_News_Bellman_43 1 0 1
106 elseif ( pick1 == 42 )
107 PlaceAtMe T_News_Bellman_42 1 0 1
108 elseif ( pick1 == 41 )
109 PlaceAtMe T_News_Bellman_41 1 0 1
110 elseif ( pick1 == 40 )
111 PlaceAtMe T_News_Bellman_40 1 0 1
112 elseif ( pick1 == 39 )
113 PlaceAtMe T_News_Bellman_39 1 0 1
114 elseif ( pick1 == 38 )
115 PlaceAtMe T_News_Bellman_38 1 0 1
116 elseif ( pick1 == 37 )
117 PlaceAtMe T_News_Bellman_37 1 0 1
118 elseif ( pick1 == 36 )
119 PlaceAtMe T_News_Bellman_36 1 0 1
120 elseif ( pick1 == 35 )
121 PlaceAtMe T_News_Bellman_35 1 0 1
122 elseif ( pick1 == 34 )
123 PlaceAtMe T_News_Bellman_34 1 0 1
124 elseif ( pick1 == 33 )
125 PlaceAtMe T_News_Bellman_33 1 0 1
126 elseif ( pick1 == 32 )
127 PlaceAtMe T_News_Bellman_32 1 0 1
128 elseif ( pick1 == 31 )
129 PlaceAtMe T_News_Bellman_31 1 0 1
130 elseif ( pick1 == 30 )
131 PlaceAtMe T_News_Bellman_30 1 0 1
132 elseif ( pick1 == 29 )
133 PlaceAtMe T_News_Bellman_29 1 0 1
134 elseif ( pick1 == 28 )
135 PlaceAtMe T_News_Bellman_28 1 0 1
136 elseif ( pick1 == 27 )
137 PlaceAtMe T_News_Bellman_27 1 0 1
138 elseif ( pick1 == 26 )
139 PlaceAtMe T_News_Bellman_26 1 0 1
140 elseif ( pick1 == 25 )
141 PlaceAtMe T_News_Bellman_25 1 0 1
142 elseif ( pick1 == 24 )
143 PlaceAtMe T_News_Bellman_24 1 0 1
144 elseif ( pick1 == 23 )
145 PlaceAtMe T_News_Bellman_23 1 0 1
146 elseif ( pick1 == 22 )
147 PlaceAtMe T_News_Bellman_22 1 0 1
148 elseif ( pick1 == 21 )
149 PlaceAtMe T_News_Bellman_21 1 0 1
150 elseif ( pick1 == 20 )
151 PlaceAtMe T_News_Bellman_20 1 0 1
152 elseif ( pick1 == 19 )
153 PlaceAtMe T_News_Bellman_19 1 0 1
154 elseif ( pick1 == 18 )
155 PlaceAtMe T_News_Bellman_18 1 0 1
156 elseif ( pick1 == 17 )
157 PlaceAtMe T_News_Bellman_17 1 0 1
158 elseif ( pick1 == 16 )
159 PlaceAtMe T_News_Bellman_16 1 0 1
160 elseif ( pick1 == 15 )
161 PlaceAtMe T_News_Bellman_15 1 0 1
162 elseif ( pick1 == 14 )
163 PlaceAtMe T_News_Bellman_14 1 0 1
164 elseif ( pick1 == 13 )
165 PlaceAtMe T_News_Bellman_13 1 0 1
166 elseif ( pick1 == 12 )
167 PlaceAtMe T_News_Bellman_12 1 0 1
168 elseif ( pick1 == 11 )
169 PlaceAtMe T_News_Bellman_11 1 0 1
170 elseif ( pick1 == 10 )
171 PlaceAtMe T_News_Bellman_10 1 0 1
172 elseif ( pick1 == 9 )
173 PlaceAtMe T_News_Bellman_09 1 0 1
174 elseif ( pick1 == 8 )
175 PlaceAtMe T_News_Bellman_08 1 0 1
176 elseif ( pick1 == 7 )
177 PlaceAtMe T_News_Bellman_07 1 0 1
178 elseif ( pick1 == 6 )
179 PlaceAtMe T_News_Bellman_06 1 0 1
180 elseif ( pick1 == 5 )
181 PlaceAtMe T_News_Bellman_05 1 0 1
182 elseif ( pick1 == 4 )
183 PlaceAtMe T_News_Bellman_04 1 0 1
184 elseif ( pick1 == 3 )
185 PlaceAtMe T_News_Bellman_03 1 0 1
186 elseif ( pick1 == 2 )
187 PlaceAtMe T_News_Bellman_02 1 0 1
188 elseif ( pick1 == 1 )
189 PlaceAtMe T_News_Bellman_01 1 0 1
190 endif
191; MessageBox "spawned paper"
192
193 endif
194
195 ; set resetday to something so that the same paper doesn't stay here forever
196 set resetDay to ( 2 + DaysPassed )
197
198 set doOnce to 30
199
200endif
201
202End