1# package Jacint;
2
3
4require 'DataHelper.pl';
5use strict;
6
7sub LoadJacint
8{
9	my ( @Frames, %FrameLookup, %Frames, %States, %Shorthands,
10		$Doodad, $Con, $Con2,
11		@States1,
12		$framedesc, $key, $value, $framename, $nextst, $st, $lastchar, $nextchar, $codename );
13
14$codename = 'Jacint';
15
16@Frames = LoadFrames( "$codename.dat.txt", 285, 90 );
17%FrameLookup = CreateFrameLookup( scalar @Frames -1,
18'stand',                  4,
19'start',                  17,
20'block',                  3,
21'onknees',                1,
22'kneeling',               4,
23'kneelingkick',           5, 'dummyknk', 1,
24'kneelingkicked',         4,
25'kneelingpunch',          3, 'dummyknp', 1,
26'kneelingpunched',        4,
27'elbow',                  5,
28'getup',                  17,
29'laying',                 1,
30'turn',                   8,
31'fun',                    28,
32'grenade',                9,
33'kneekick',               6,
34'groinkicked',            7,
35'falling',                7,
36'highkick',               10,
37'highpunch',              4,
38'highpunched',            5,
39'hurt',                   11,
40'groinkick',              7,
41'swept',                  5,
42'sweep',                  8,
43'lowkick',                6,
44'lowpunch',               3, 'dummylp', 1,
45'lowpunched',             5,
46'walk',                   10,
47'speciala',               14,
48'specialb',               9,
49'spin',                   9,
50'threat',                 15,
51'throw',                  11,
52'thrown',                 10,
53'uppercut',               8,
54'won',                    16,
55
56);
57
58
59
60$Con = {
61'forw'=>'Walk',
62'back'=>'Back',
63'jump'=>'Jump',
64'jumpfw'=>'JumpFW',
65'jumpbw'=>'JumpBW',
66'block'=>'Block',
67'down'=>'Kneeling',
68
69'hpunch'=>'HighPunch',
70'lpunch'=>'LowPunch',
71'hkick'=>'HighKick',
72'lkick'=>'LowKick',
73'lkickBF'=>'GroinKick',
74'lkickF'=>'KneeKick',
75'hpunchD'=>'Uppercut',
76'hpunchF'=>'Elbow',
77'hkickB'=>'Spin',
78'lkickB'=>'Sweep',
79
80'lpunchBD'=>'Grenade',
81'lpunchFF'=>'Udder',
82'hpunchFF'=>'SpecPunch',
83};
84
85
86$Con2 = {
87'lkick'=>'KneelingKick',
88'hkick'=>'KneelingKick',
89'hpunch'=>'KneelingUppercut',
90'lpunch'=>'KneelingPunch',
91};
92
93
94
95@States1 = (
96# 1. BASIC MOVES
97
98{ 'N'=>'Start',			'DEL'=>5,	'S'=>'+start', 'SOUND2'=>'JACINT' },
99{ 'N'=>'Stand',			'DEL'=>7,	'S'=>'+stand,-stand', 'CON'=>$Con, 'SITU'=>'Ready' },
100{ 'N'=>'Turn',			'DEL'=>5,	'S'=>'+turn',	'TURNN'=>1, },
101{ 'N'=>'Hurt',			'DEL'=>8,	'S'=>'+hurt' },
102{ 'N'=>'Won',			'DEL'=>8,	'S'=>'+won',	'NEXTSTN'=> 'Won2' },
103{ 'N'=>'Won2',			'DEL'=>1000,'S'=>'won n',	'NEXTST'=>'Won2', },
104{ 'N'=>'Fun',			'DEL'=>8,	'S'=>'+fun', 'CON'=>$Con, 'SITU'=>'Ready' },
105{ 'N'=>'Threat',		'DEL'=>5,	'S'=>'+threat', 'CON'=>$Con, 'SITU'=>'Ready' },
106WalkingFrames( \%FrameLookup, \@Frames, 0, 110, $Con ),
107BlockStates( FindLastFrame( \%FrameLookup, 'block' ), 7 ),
108KneelingStates( FindLastFrame( \%FrameLookup, 'kneeling' ),
109	FindLastFrame( \%FrameLookup, 'onknees' ), 7, $Con2 ),
110JumpStates( \%FrameLookup,
111	{'lkick'=>'JumpKick', 'hkick'=>'JumpKick',
112	'lpunch'=>'JumpPunch', 'hpunch'=>'JumpPunch'} ),
113
114# 2. OFFENSIVE MOVES
115
116{ 'N'=>'KneelingPunch',	'DEL'=>7,	'S'=>'+kneelingpunch,-kneelingpunch', 'SITU'=>'Crouch',
117	'HIT'=>'Hit', 'NEXTSTN'=>'Onknees' },
118{ 'N'=>'KneelingKick',	'DEL'=>5,	'S'=>'+kneelingkick,-kneelingkick', 'SITU'=>'Crouch',
119	'HIT'=>'Hit', 'NEXTSTN'=>'Onknees' },
120{ 'N'=>'KneelingUppercut','DEL'=>5,	'S'=>'kneeling 3-2,uppercut 2-n',
121	'HIT'=>'Uppercut' },
122{ 'N'=>'HighPunch',		'DEL'=>7,	'S'=>'+highpunch',
123	'HIT'=>'Highhit' },
124{ 'N'=>'LowPunch',		'DEL'=>7,	'S'=>'+lowpunch,-lowpunch',
125	'HIT'=>'Hit' },
126{ 'N'=>'HighKick',		'DEL'=>7,	'S'=>'+highkick',
127	'HIT'=>'Hit' },
128{ 'N'=>'LowKick',		'DEL'=>7,	'S'=>'+lowkick',
129	'HIT'=>'Leghit' },
130{ 'N'=>'GroinKick',		'DEL'=>7,	'S'=>'+groinkick',
131	'HIT'=>'Groinhit' },
132{ 'N'=>'KneeKick',		'DEL'=>7,	'S'=>'+kneekick',
133	'HIT'=>'Hit' },
134{ 'N'=>'Elbow',			'DEL'=>7,	'S'=>'+elbow',
135	'HIT'=>'Highhit' },
136{ 'N'=>'Spin',			'DEL'=>5,	'S'=>'+spin',
137	'HIT'=>'Hit' },
138{ 'N'=>'Sweep',			'DEL'=>7,	'S'=>'+sweep',
139	'HIT'=>'Hit' },
140{ 'N'=>'Grenade',		'DEL'=>5,	'S'=>'+grenade',
141	'DEL12'=>15, 'DOODAD'=>'ZoliShot' },
142{ 'N'=>'Uppercut',		'DEL'=>6,	'S'=>'+uppercut',
143	'HIT'=>'Uppercut' },
144{ 'N'=>'Throw',			'DEL'=>8,	'S'=>'+throw' },
145
146{ 'N'=>'Udder',			'DEL'=>7,	'S'=>'+speciala',
147	'HIT'=>'Hit', },
148{ 'N'=>'SpecPunch',		'DEL'=>7,	'S'=>'+specialb',
149	'HIT'=>'Uppercut',	'SOUND1'=>'moo2.voc', 'MOVE'=>3  },
150
151# 3. HURT MOVES
152
153{ 'N'=>'Falling',		'DEL'=>12,	'S'=>'+falling',
154	'DELN'=>500, 'NEXTN'=>'Laying', 'SITU'=>'Falling', },
155{ 'N'=>'Laying',		'DEL'=>1000,'S'=>'laying n',
156	'SITU'=>'Falling' },
157{ 'N'=>'Getup',			'DEL'=>5,	'S'=>'+getup',
158	'SITU'=>'Falling',
159	'CON8'=>{'down'=>'Onknees'},
160	'CON8'=>{'down'=>'Onknees'},
161},
162{ 'N'=>'Dead',			'DEL'=>10000, 'S'=>'laying 1',
163	'SITU'=>'Falling', 'NEXTST'=>'Dead' },
164
165{ 'N'=>'Swept',			'DEL'=>8,	'S'=>'+swept' },
166
167{ 'N'=>'KneelingPunched', 'DEL'=>5,	'S'=>'+kneelingpunched,_kneelingpunched',
168	'SITU'=>'Crouch', 'NEXTSTN'=>'Onknees' },
169{ 'N'=>'KneelingKicked', 'DEL'=>5,	'S'=>'+kneelingkicked,_kneelingkicked',
170	'SITU'=>'Crouch', 'NEXTSTN'=>'Onknees' },
171
172{ 'N'=>'HighPunched',	'DEL'=>8,	'S'=>'+highpunched' },
173{ 'N'=>'LowPunched',	'DEL'=>5,	'S'=>'+lowpunched' },
174{ 'N'=>'GroinKicked',	'DEL'=>7,	'S'=>'+groinkicked,-groinkicked' },
175{ 'N'=>'Thrown',		'DEL'=>5,	'S'=>'+thrown' },
176
177);
178
179
180
181# 2. CREATE STATES
182
183foreach $framedesc (@States1)
184{
185	AddStates( \%States, \%FrameLookup, $framedesc );
186}
187
188
189
190# Automatically add NEXTST for states which don't have one.
191
192FixStates( \%FrameLookup, \%States );
193
194TravelingStates( \%FrameLookup, \@Frames, \%States, "falling", 0, 0 );
195TravelingStates( \%FrameLookup, \@Frames, \%States, "won", 0, 0 );
196
197%States = ( FindShorthands( \%States ), %States );
198
199# %::UPiStates = %States;
200# @::UPiFrames = @Frames;
201
202::RegisterFighter( {
203	'ID'			=> 102,
204	'GENDER'		=> 1,
205	'DATAVERSION'	=> 1,
206	'STARTCODE'		=> sub 	{},
207	'FRAMES'		=> \@Frames,
208	'STATES'		=> \%States,
209	'CODENAME'		=> $codename,
210	'DATASIZE'		=> 5534158,
211
212	    'NAME'  =>'Jacint',
213        'TEAM'  =>'Schiman',
214        'STYLE' =>'thei-fu',
215        'AGE'   =>'13',
216        'WEIGHT'=>'200kg',
217        'HEIGHT'=>'140 cm',
218        'SHOE'  =>'don\'t wear shoes',
219        'STORY' =>
220'Eats grass. Wanna win the qpa.',
221
222        'EMAIL' =>'jimmi@sch.bme.hu',
223
224} );
225
226}
227
228LoadJacint();
229
230return 1;
231
232