Spelare47.adb 'Leland Gaunt'
-- This briefing is from FILE spelare47.adb
-- CLASSIFIED
-- TOP SECRET
-- SUBJECT is Leland Gaunt.
-- A ms 1- attack player with the most advanced AI-implementation in the
-- system today.
-- It's been created somewhere in the western wildernes by development
-- team f1pt-47 - f1pt-47 has promised to reveal the code only after the
-- project is closed.
-- We suspect that Spy, an unofficial GameEngine of the agency that built
-- Leland Gaunt, is secretly helping Mr Gaunt in return for his
-- services.
-- Generated in LEARN-mode: This version is highly specialized and only
-- work together with Spy. It's sole purpose is to take exact orders about
-- what to do in order to test itself, hence it learns about and become
-- able to match the other players' tactics long before they know they've
-- been studied.
-- Generated in COMBAT-mode: This is the version whose object-code is
-- public.
-- Generated in FINISH_THEM-mode: This version contains one or two
-- additional tricks, and is therefore not to be released until a short
-- time before times up. <Now obsolete>
-- With Leland and Spy operating as a team - with effectivity rivalling the
-- brightest politicians, backed by unmatched firepower, Leland Gaunt
-- is too dangerous to be left in unenlighted hands. - Keeping it secret is
-- your first priority. EOF
package body Spelare47 is
-----------------------------------------------------------
-- Global variables part 1
type TacticsArray is array(1 .. 2) of Integer;
type ExpectArray is array(1 .. 2) of Payoff;
type OppSpecsRec is record
Name : PlayerNameType;
Tactics : TacticsArray;
Expect : ExpectArray;
MatchNum : Integer;
end record;
type MoveArray is range 0..(2**32-1);
type MoveList is array(1 .. 2,0 .. 31) of MoveArray;
type MoveSpecsRec is record
Name : PlayerNameType;
List : MoveList;
end record;
-----------------------------------------------------------
type OppSpecsArray is array(1 .. 59) of OppSpecsRec; -- auto-generated
type MoveSpecsArray is array(1 .. 6) of MoveSpecsRec; -- auto-generated
-----------------------------------------------------------
-- Global variables part 2
OpponentSpecs : OppSpecsArray;
MoveSpecs : MoveSpecsArray;
TotalNofMoves : Integer := 1000; -- remove or change if necessary
TotalNofMovesThisMatch : Integer := 0;
MaxNofMoves : constant Integer := 1000;
type MoveRecord is array (1 .. MaxNofMoves) of Move;
MyMoves, OppMoves : MoveRecord; -- moves in this game
MN : Integer;
ON : PlayerNameType;
OL : Move;
OS : Integer;
MS : Integer;
CurrentOpponent : Integer;
CurrentMoveSpecs : Integer;
UseTactics : Integer;
-----------------------------------------------------------
-- Patternmatching with variable patterns
-- try patterns length 25 downto 5 moves.
-- If no pattern or not 10 moves yet play TitForTat
function TitForTat return Move; -- forward declaration
function Default return Move is
Pattern: MoveRecord;
PatternLength: integer;
I: Integer;
Foundpattern: Boolean:=False;
-- Return smallest value.
function Min(x,y: integer) return Integer is
begin
if x>y then return y;
else
return x;
end if;
end Min;
begin
if MN >10 then
PatternLength:=min(MN-1,50); -- How long pattern should we start with?
while (PatternLength>19) loop
Pattern(1..PatternLength):=OppMoves(MN-PatternLength..MN-1);
I:=MN-PatternLength-1;
while(I>0) loop -- Find pattern
if Pattern(1..PatternLength)=OppMoves(I..I+PatternLength-1) then
return OppMoves(I+PatternLength);
end if;
I:=I-1;
end loop;
PatternLength:=PatternLength-5; -- If no pattern found try shorter pattern
end loop;
end if;
return TitForTat; -- If no pattern or not enough moves yet play titfortat
end Default;
-----------------------------------------------------------
-- Plays old TitForTat
function TitForTat return Move is
begin
if MN = 1 then
return Cooperate;
else
return OL;
end if;
end TitForTat;
-----------------------------------------------------------
-- Plays against TitForTat players.
-- Try for extra point at end.
function HandleTitForTat return Move is
begin
if MN = 1 then
return Cooperate;
elsif MN = TotalNofMoves then
return Defect;
else
return OL;
end if;
end HandleTitForTat;
-----------------------------------------------------------
-- Always cooperates
function AlwaysCooperate return Move is
begin
return Cooperate;
end AlwaysCooperate;
-----------------------------------------------------------
-- Always defect
function AlwaysDefect return Move is
begin
return Defect;
end AlwaysDefect;
-----------------------------------------------------------
-- Plays inverse TitForTat
-- Only works good on very very nice players
function InverseTitForTat return Move is
begin
if MN = 1 then
return Cooperate;
elsif OL = Cooperate then
return Defect;
else
return Cooperate;
end if;
end InverseTitForTat;
-----------------------------------------------------------
-- Plays a pattern 35 moves long
-- Trying to be nice :)
function InSomeOrder return Move is
begin
case MN mod 35 is
when 3 .. 4 => return Defect;
when 9 .. 12 => return Defect;
when 19 .. 22 => return Defect;
when 29..31 => return Defect;
when others => return Cooperate;
end case;
end InSomeOrder;
-----------------------------------------------------------
-- Plays in a crazy pattern
-- Can maybe fool some patternmatching
function CrazyPlayer return Move is
Choice : Integer;
begin
Choice := MN mod 10;
Choice := CHoice + (100+Integer(Character'Pos((ON(ON'First)))-Integer(Character'Pos('0')))) mod 10;
if OL = Cooperate then
Choice := Choice + 5;
else
CHoice := CHoice - 1;
end if;
if OS > MS then
CHoice := Choice - 4;
end if;
if abs(Choice rem 10) < 7 then
return Cooperate;
else
return Defect;
end if;
end CrazyPlayer;
-----------------------------------------------------------
-- Another crazy player.
-- Also trys to mess upp patternmatching.'
function CrazyPlayer2 return Move is
Choice : Integer;
PD: Integer; -- Player Dependant
begin
for I in ON'Range loop
PD:=PD+Integer(Character'Pos((ON(I))));
end loop;
PD:=(abs(PD)mod 10 )-5;
Choice:=PD+MN/20;
if OL = Cooperate then
Choice := Choice - 5;
end if;
if OS > MS then
CHoice := Choice+2;
end if;
if (Choice<1) then
return Cooperate;
else
return Defect;
end if;
end CrazyPlayer2;
-----------------------------------------------------------
-- Defect all even moves
function DefWhen2 return Move is
begin
if (MN rem 2)= 0 then
return Defect;
else
return Cooperate;
end if;
end DefWhen2;
-----------------------------------------------------------
-- Defect every fifth move
function DefWhen5 return Move is
begin
if (MN rem 5)= 0 then
return Defect;
else
return Cooperate;
end if;
end DefWhen5;
-----------------------------------------------------------
-- Defect every eigth move
function DefWhen8 return Move is
begin
if (MN rem 8)= 0 then
return Defect;
else
return Cooperate;
end if;
end DefWhen8;
-----------------------------------------------------------
-- Returns move depending of how other player
-- played last ten moves. Uses TitForTat.
function Logic1 return Move is
NDef: Integer;
begin
if MN >10 then
NDef:=0;
for I in MN-10..MN-1 loop
if(OppMoves(I)=Defect) then NDef:=NDef+1; end if;
end loop;
case NDef is
when 9..10 => return Defect;
when 6..8 =>
if OppMoves(MN-1)=Defect then
return Defect;
else return Cooperate;
end if;
when 3..5 =>
if ((OppMoves(MN-1)=Cooperate)
and (OppMoves(MN-2)=Cooperate)) then
return Cooperate;
else return TitForTat;
end if;
when others => return Cooperate;
end case;
else
return TitForTat;
end if;
end Logic1;
-----------------------------------------------------------
-- Returns move defending of other players
-- last 10 moves. Cooperates a lot.
function Logic2 return Move is
NDef: Integer;
begin
if MN >10 then
NDef:=0;
for I in MN-10..MN-1 loop
if(OppMoves(I)=Defect) then NDef:=NDef+1; end if;
end loop;
case NDef is
when 9..10 => return Defect;
when 6..8 =>
if OppMoves(MN-1)=Defect then
return Defect;
else return Cooperate;
end if;
when 3..5 =>
if ((OppMoves(MN-1)=Cooperate)
and (OppMoves(MN-1)=Cooperate)) then
return Cooperate;
else return Cooperate;
end if;
when others => return Cooperate;
end case;
else
return TitForTat;
end if;
end Logic2;
-----------------------------------------------------------
-- Returns move depending on other players
-- last 10 moves. When in doubt cooperate.
function Logic3 return Move is
NDef: Integer;
begin
if MN >10 then
NDef:=0;
for I in MN-10..MN-1 loop
if(OppMoves(I)=Defect) then NDef:=NDef+1; end if;
end loop;
case NDef is
when 9..10 => return Defect;
when 6..8 =>
if OppMoves(MN-1)=Defect then
return Defect;
else return Cooperate;
end if;
when 3..5 =>
if ((OppMoves(MN-1)=Cooperate)
and (OppMoves(MN-2)=Cooperate)) then
return Cooperate;
else return Cooperate;
end if;
when others => return Cooperate;
end case;
else
return Cooperate;
end if;
end Logic3;
-----------------------------------------------------------
-- Try to find patterns with length 10 moves
-- If no pattern play or not more then 20 moves
-- play TitForTat
function Pattern1 return Move is
Pattern: MoveRecord;
I: Integer;
begin
if MN >20 then
Pattern(1..10):=OppMoves(MN-10..MN-1);
I:=MN-11;
while(I>0) loop
if Pattern(1..10)=OppMoves(I..I+9) then
return OppMoves(I+10);
end if;
I:=I-1;
end loop;
return TitForTat;
else
return TitForTat;
end if;
end Pattern1;
-----------------------------------------------------------
-- Find patterns with 5 moves
-- If no pattern or not more than 11 moves
-- play TitForTat
function Pattern2 return Move is
Pattern: MoveRecord;
I: Integer;
begin
if MN >11 then
Pattern(1..5):=OppMoves(MN-5..MN-1);
I:=MN-6;
while(I>0) loop
if Pattern(1..5)=OppMoves(I..I+4) then
return OppMoves(I+5);
end if;
I:=I-1;
end loop;
return TitForTat;
else
return TitForTat;
end if;
end Pattern2;
-----------------------------------------------------------
function TitFor2Tat1 return Move is
begin
if MN = 1 then
return Cooperate;
elsif MN = 2 then
return OL;
elsif OL = Defect and then OppMoves(MN-2) = Defect then
return Defect;
else
return Cooperate;
end if;
end TitFor2Tat1;
-----------------------------------------------------------
function TitFor2Tat2 return Move is
begin
if MN = 1 then
return Cooperate;
elsif MN = 2 or else OL = OppMoves(MN-2) then
return OL;
else
return Mymoves(Mn-2);
end if;
end TitFor2Tat2;
-----------------------------------------------------------
-- Use predefined pattern
function PredefPattern return Move is
begin
if MoveSpecs(CurrentMoveSpecs).List(OpponentSpecs(CurrentOpponent).MatchNum,MN/32)/2**(MN mod 32) mod 2 = 1 then
return Cooperate;
else
return Defect;
end if;
end PredefPattern;
-----------------------------------------------------------
function Player47 (MoveNum : Integer;
OppName : PlayerNameType;
OppLast : Move;
OppScore, MyScore : Integer) return Move is
DoMove : Move;
begin
MN := MoveNum;
ON := OppName;
OL := OppLast;
OS := OppScore;
MS := MyScore;
if MoveNum = 1 and TotalNofMovesThisMatch /= 0 then
TotalNofMoves := TotalNofMovesThisMatch;
end if;
TotalNofMovesThisMatch := MoveNum;
if MoveNum > 1 then
OppMoves(MoveNum-1) := OppLast;
end if;
if MoveNum > TotalNofMoves-1 then
return Defect;
end if;
if MoveNum = 1 then -- new game started, reinitialize
UseTactics := 0;
CurrentOpponent := OpponentSpecs'Last;
while CurrentOpponent >= OpponentSpecs'First
loop
exit when OpponentSpecs(CurrentOpponent).Name = OppName;
CurrentOpponent := CurrentOpponent - 1;
end loop;
if CurrentOpponent /= 0 then
if OpponentSpecs(CurrentOpponent).MatchNum < 2 then
OpponentSpecs(CurrentOpponent).MatchNum := OpponentSpecs(CurrentOpponent).MatchNum + 1;
end if;
UseTactics := OpponentSpecs(CurrentOpponent).Tactics(OpponentSpecs(CurrentOpponent).MatchNum);
if UseTactics = -1 then
CurrentMoveSpecs := MoveSpecs'Last;
while CurrentMoveSpecs >= MoveSpecs'First
loop
exit when MoveSpecs(CurrentMoveSpecs).Name = OppName;
CurrentMoveSpecs := CurrentMoveSpecs - 1;
end loop;
if (CurrentMoveSpecs < MoveSpecs'First) then
UseTactics := 0;
end if;
end if;
end if;
if TotalNofMoves < 20 then UseTactics:=0; end if;
elsif MoveNum = 21 and UseTactics /= 0 then
if MyScore < OpponentSpecs(CurrentOpponent).Expect(OpponentSpecs(CurrentOpponent).MatchNum).Player1 or
OppScore > OpponentSpecs(CurrentOpponent).Expect(OpponentSpecs(CurrentOpponent).MatchNum).Player2 then
OpponentSpecs(CurrentOpponent).Tactics(2) := 0;
UseTactics := 0;
CurrentOpponent := 0;
MyMoves(MoveNum) := Cooperate; -- try to start a friendly game
return Cooperate;
end if;
elsif MoveNum > 25 and then (MyScore < MoveNum/2 or MyScore <y -5) and then CurrentOpponent /= 0 then
OpponentSpecs(CurrentOpponent).Tactics(2) := 0;
UseTactics := 0;
CurrentOpponent := 0;
MyMoves(MoveNum) := Cooperate; -- try to start a friendly game
return Cooperate;
end if;
case UseTactics is
when 1 => DoMove := Default;
when 2 => DoMove := TitForTat;
when 3 => DoMove := HandleTitForTat;
when 4 => DoMove := InverseTitForTat;
when 5 => DoMove := Pattern1;
when 6 => DoMove := Pattern2;
when 7 => DoMove := Logic1;
when 8 => DoMove := Logic2;
when 9 => DoMove := Logic3;
when 10 => DoMove := TitFor2Tat1; -- need 2 defect to defect
when 11 => DoMove := TitFor2Tat2; -- need 2 similar to change action
when 12 => DoMove := DefWhen2;
when 13 => DoMove := DefWhen5;
when 14 => DoMove := DefWhen8;
when 15 => DoMove := AlwaysCooperate;
when 16 => DoMove := AlwaysDefect;
when 17 => DoMove := InSomeOrder;
when 18 => DoMove := CrazyPlayer;
when 19 => DoMove := CrazyPlayer2;
when -1 => DoMove := PredefPattern;
when others => DoMove := Default;
end case;
MyMoves(MoveNum) := DoMove;
return DoMove;
end Player47;
-----------------------------------------------------------
begin
OpponentSpecs( 1) := ("Buttersmurfen ",(11,11),((40,40),(40,40)),0);
OpponentSpecs( 2) := ("The champions ",(12,12),((45,20),(45,20)),0);
OpponentSpecs( 3) := ("El Zorro ",(5,5),((40,40),(40,40)),0);
OpponentSpecs( 4) := ("Jason ",(1,1),((40,40),(40,40)),0);
OpponentSpecs( 5) := ("johndoe ",(6,6),((40,40),(40,40)),0);
OpponentSpecs( 6) := ("Looser ",(5,5),((40,40),(40,40)),0);
OpponentSpecs( 7) := ("Picard ",(19,19),((42,37),(42,37)),0);
OpponentSpecs( 8) := ("Bramserud ",(13,13),((48,28),(48,28)),0);
OpponentSpecs( 9) := ("Uffe Ekman ",(2,2),((40,40),(40,40)),0);
OpponentSpecs(10) := ("Mohammad ",(1,1),((40,40),(40,40)),0);
OpponentSpecs(11) := ("Rotary pub ",(9,9),((37,42),(37,42)),0);
OpponentSpecs(12) := ("SET_PAGE_LENGTH ",(7,7),((40,40),(40,40)),0);
OpponentSpecs(13) := ("Einstein ",(13,13),((48,28),(48,28)),0);
OpponentSpecs(14) := ("Becky ",(1,1),((40,40),(40,40)),0);
OpponentSpecs(15) := ("Ey_Paco ",(6,6),((40,40),(40,40)),0);
OpponentSpecs(16) := ("Wedge Antilles ",(6,6),((40,40),(40,40)),0);
OpponentSpecs(17) := ("Nu jävlar! ",(8,8),((40,40),(40,40)),0);
OpponentSpecs(18) := ("ångvälten ",(4,4),((78,-17),(78,-17)),0);
OpponentSpecs(19) := ("!!!! ",(-1,-1),((29,44),(29,44)),0);
OpponentSpecs(20) := ("Mithrandir ",(-1,-1),((44,34),(42,37)),0);
OpponentSpecs(21) := ("Tant Gredelin ",(6,6),((40,40),(40,40)),0);
OpponentSpecs(22) := ("LOKET ",(-1,-1),((24,29),(24,29)),0);
OpponentSpecs(23) := ("Hekla_o_Cajo ",(12,12),((60,10),(60,10)),0);
OpponentSpecs(24) := ("#Flossy ",(2,2),((40,40),(40,40)),0);
OpponentSpecs(25) := ("Akilles_ny ",(8,8),((40,40),(40,40)),0);
OpponentSpecs(26) := ("Jansson ",(6,6),((41,36),(41,36)),0);
OpponentSpecs(27) := ("Kinkyboy ",(12,12),((60,10),(60,10)),0);
OpponentSpecs(28) := ("Nerd-patrol(lam)",(6,6),((40,40),(40,40)),0);
OpponentSpecs(29) := ("Ohoj Postbanken!",(18,18),((32,37),(32,37)),0);
OpponentSpecs(30) := ("Kanon en o en ",(1,1),((40,40),(40,40)),0);
OpponentSpecs(31) := ("Dr Jylke ",(6,6),((40,40),(40,40)),0);
OpponentSpecs(32) := ("Bert-Knut ",(3,3),((40,40),(40,40)),0);
OpponentSpecs(33) := ("My little pony ",(5,5),((40,40),(40,40)),0);
OpponentSpecs(34) := ("Ville Vessla I ",(2,2),((40,40),(40,40)),0);
OpponentSpecs(35) := ("Mulo ",(12,12),((60,10),(60,10)),0);
OpponentSpecs(36) := ("Skalman ",(3,3),((40,40),(40,40)),0);
OpponentSpecs(37) := ("Nurse Ratched ",(6,6),((40,40),(40,40)),0);
OpponentSpecs(38) := ("John Silver ",(9,9),((40,40),(40,40)),0);
OpponentSpecs(39) := ("Mitt namn är Nej",(6,6),((40,40),(40,40)),0);
OpponentSpecs(40) := ("Madde Albright ",(1,1),((40,40),(40,40)),0);
OpponentSpecs(41) := ("Bluff & båg ",(1,1),((39,39),(39,39)),0);
OpponentSpecs(42) := ("JAS ",(-1,-1),((60,10),(60,10)),0);
OpponentSpecs(43) := ("Fallos ",(-1,-1),((45,20),(45,20)),0);
OpponentSpecs(44) := ("Si solutions-55 ",(19,19),((40,40),(40,40)),0);
OpponentSpecs(45) := ("You Bastard ",(2,2),((40,40),(40,40)),0);
OpponentSpecs(46) := ("Groover ",(3,3),((40,40),(40,40)),0);
OpponentSpecs(47) := ("Badger ",(8,8),((40,40),(40,40)),0);
OpponentSpecs(48) := ("Numb ",(5,5),((40,40),(39,39)),0);
OpponentSpecs(49) := ("**Dark Avenger**",(10,10),((40,40),(40,40)),0);
OpponentSpecs(50) := ("File not found ",(2,2),((40,40),(40,40)),0);
OpponentSpecs(51) := ("Fluortanten ",(16,16),((60,-15),(60,-15)),0);
OpponentSpecs(52) := ("spelare68 ",(16,16),((40,-10),(40,-10)),0);
OpponentSpecs(53) := ("Gud ",(16,16),((80,-20),(80,-20)),0);
OpponentSpecs(54) := ("Xerxes ",(6,6),((40,40),(40,40)),0);
OpponentSpecs(55) := ("The Staff of Law",(6,6),((40,40),(40,40)),0);
OpponentSpecs(56) := ("psycho ",(-1,-1),((39,29),(39,29)),0);
OpponentSpecs(57) := ("Brecht DDF3 ",(8,8),((40,40),(40,40)),0);
OpponentSpecs(58) := ("Kjell_Kriminell ",(1,1),((40,40),(40,40)),0);
OpponentSpecs(59) := ("TitforTat ",(2,2),((40,40),(40,40)),0);
MoveSpecs( 1) := ("!!!! ",
((4158619134,2113396605,3749574623,4158619127,
2113396605,3749574623,4158619127,2113396605,
3749574623,4158619127,2113396605,3749574623,
4158619127,2113396605,3749574623,4158619127,
2113396605,3749574623,4158619127,2113396605,
3749574623,4158619127,2113396605,3749574623,
4158619127,2113396605,3749574623,4158619127,
2113396605,3749574623,4158619127,125),
(4158619134,2113396605,3749574623,4158619127,
2113396605,3749574623,4158619127,2113396605,
3749574623,4158619127,2113396605,3749574623,
4158619127,2113396605,3749574623,4158619127,
2113396605,3749574623,4158619127,2113396605,
3749574623,4158619127,2113396605,3749574623,
4158619127,2113396605,3749574623,4158619127,
2113396605,3749574623,4158619127,125)));
MoveSpecs( 2) := ("Mithrandir ",
((4160224254,1844305659,3681400539,1840700262,
3681400539,3067833782,1840700269,3681400539,
3067833782,1840700269,3681400539,3067833782,
1840700269,3681400539,3067833782,1840700269,
3681400539,3067833782,1840700269,3681400539,
3067833782,1840700269,3681400539,3067833782,
1840700269,3681400539,3067833782,1840700269,
3681400539,3067833782,1840700269,91),
(4294966270,4294967295,4294967295,4294967279,
4294967295,4294967295,4294967295,4294967295,
4294967295,4294967295,4294967295,4294967295,
4294967295,4294967295,4294967295,4294967295,
4294967295,4294967295,4294967295,4294967295,
4294967295,4294967295,4294967295,4294967295,
4294967295,4294967295,4294967295,4294967295,
4294967295,4294967295,4294967295,127)));
MoveSpecs( 3) := ("LOKET ",
((24574,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0),
(24574,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0)));
MoveSpecs( 4) := ("JAS ",
((1431655764,1431655765,1431655765,1431655749,
1431655765,1431655765,1431655765,1431655765,
1431655765,1431655765,1431655765,1431655765,
1431655765,1431655765,1431655765,1431655765,
1431655765,1431655765,1431655765,1431655765,
1431655765,1431655765,1431655765,1431655765,
1431655765,1431655765,1431655765,1431655765,
1431655765,1431655765,1431655765,85),
(1431655764,1431655765,1431655765,1431655749,
1431655765,1431655765,1431655765,1431655765,
1431655765,1431655765,1431655765,1431655765,
1431655765,1431655765,1431655765,1431655765,
1431655765,1431655765,1431655765,1431655765,
1431655765,1431655765,1431655765,1431655765,
1431655765,1431655765,1431655765,1431655765,
1431655765,1431655765,1431655765,85)));
MoveSpecs( 5) := ("Fallos ",
((1431655764,1431655765,1431655765,1431655749,
1431655765,1431655765,1431655765,1431655765,
1431655765,1431655765,1431655765,1431655765,
1431655765,1431655765,1431655765,1431655765,
1431655765,1431655765,1431655765,1431655765,
1431655765,1431655765,1431655765,1431655765,
1431655765,1431655765,1431655765,1431655765,
1431655765,1431655765,1431655765,85),
(1431655764,1431655765,1431655765,1431655749,
1431655765,1431655765,1431655765,1431655765,
1431655765,1431655765,1431655765,1431655765,
1431655765,1431655765,1431655765,1431655765,
1431655765,1431655765,1431655765,1431655765,
1431655765,1431655765,1431655765,1431655765,
1431655765,1431655765,1431655765,1431655765,
1431655765,1431655765,1431655765,85)));
MoveSpecs( 6) := ("psycho ",
((3222273848,4294967295,2147483407,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0),
(3222273848,4294967295,2147483407,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0)));
end Spelare47;
Tillbaka till huvudsidan