I have run the simulation again using the reels posted by CJB.
The value of the free spins is an extremely important parameter.
Here are the results for the value 0,40,45 times betsize.
total iterations:35640000
-------------------
free spins = 0 * bet
payback:0.7026915824915825
-------------------
free spins = 40*bet
payback:0.983237037037037
-------------------
free spins = 45 * bet.
payback:1.0183052188552189
-------------------
As you can see, using 45*bet as value for 15 spins at 3 times multiplier gives
a payout% just over 100%. But I have changed my mind after realizing how important
the parameter is and agree it is lower. This comes from the fact that without freespins the payout% is only 70%. I will think some more about it.
Still I need to check my program for bugs, but it passed the first tests.
I will modify it to collect some more data for now.
This is the template for thunderstruck:
(The forum formatter inserted a few spaces that shouldnt be there)
public static ReelSymbol thor = new ReelSymbol("T",true,false,false,new int[]{0,10,200,2000,10000});
public static ReelSymbol ram = new ReelSymbol("R",false,true,false,new int[]{0,2,5,20,500});
public static ReelSymbol staff = new ReelSymbol("S",false,false,true,new int[]{0,2,25,100,750});
public static ReelSymbol hammer = new ReelSymbol("H",false,false,true,new int[]{0,2,25,100,750});
public static ReelSymbol castle = new ReelSymbol("C",false,false,true,new int[]{0,0,15,100,400});
public static ReelSymbol lightning = new ReelSymbol("L",false,false,true,new int[]{0,0,10,75,250});
public static ReelSymbol horn = new ReelSymbol("I",false,false,true,new int[]{0,0,10,50,250});
public static ReelSymbol ace = new ReelSymbol("A",false,false,true,new int[]{0,0,10,50,125});
public static ReelSymbol king = new ReelSymbol("K",false,false,true,new int[]{0,0,5,50,125});
public static ReelSymbol queen = new ReelSymbol("Q",false,false,true,new int[]{0,0,5,25,100});
public static ReelSymbol jack = new ReelSymbol("J",false,false,true,new
int[]{0,0,5,25,100});
public static ReelSymbol ten = new ReelSymbol("10",false,false,true,new int[]{0,0,5,25,100});
public static ReelSymbol nine = new ReelSymbol("9",false,false,true,new int[]{0,2,5,25,100});
public static ReelSymbol[] reel1Symbols= new ReelSymbol[]{jack,queen,castle,staff,hammer,castle,jack,ten,horn,ace,jack,queen,nine,jack,queen,lightning,horn,thor,staff,nine,horn,hammer,staff,king,ten,jack,horn,lightning,ace,ram};
public static ReelSymbol[] reel2Symbols= new ReelSymbol[]{jack,ten,castle,jack,staff,lightning,castle,ace,jack,lightning,nine,king,queen,jack,thor,nine,ram,lightning,staff,hammer,nine,jack,horn,ace,king,jack,nine,lightning,horn,castle};
public static ReelSymbol[] reel3Symbols= new ReelSymbol[]{ten,queen,horn,ace,ten,king,castle,queen,lightning,hammer,queen,ten,jack,queen,thor,staff,ten,queen,hammer,lightning,king,ten,queen,ace,ten,ram,castle,hammer,ace,nine};
public static ReelSymbol[] reel4Symbols= new
ReelSymbol[]{ten,jack,castle,king,lightning,horn,nine,king,castle,ram,ace,staff,hammer,horn,ace,ten,nine,thor,lightning,jack,king,nine,ace,horn,hammer,staff,king,queen,king,nine};
public static ReelSymbol[] reel5Symbols= new ReelSymbol[]{jack,hammer,ten,ace,queen,king,horn,castle,queen,jack,castle,hammer,staff,horn,ten,ace,lightning,jack,hammer,horn,ram,staff,lightning,thor,castle,staff,jack,queen,lightning,hammer,staff,horn,king,nine,ace,ten,queen,king,staff,lightning,ten,castle,ace,nine};
public static int wildMultiplier= 2;
If anyone makes the template for another similar slot, I can run it through my program.
The 3 boolean are: isWild,isScatter,symbolCanBeReplacedByWild. You should be able to
figure it you if you know Thunderstruck allready.