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