From: <ave...@us...> - 2009-03-29 20:07:33
|
Revision: 5839 http://gemrb.svn.sourceforge.net/gemrb/?rev=5839&view=rev Author: avenger_teambg Date: 2009-03-29 20:07:27 +0000 (Sun, 29 Mar 2009) Log Message: ----------- DLTCEP update Modified Paths: -------------- chitem/trunk/2DAEdit.cpp chitem/trunk/Chitem.cpp chitem/trunk/Chitem.h chitem/trunk/ScriptEdit.cpp chitem/trunk/chitem.clw chitem/trunk/chitem.rc chitem/trunk/chitemDlg.cpp chitem/trunk/chitemDlg.h chitem/trunk/resource.h chitem/trunk/seekers.cpp Modified: chitem/trunk/2DAEdit.cpp =================================================================== --- chitem/trunk/2DAEdit.cpp 2009-03-29 17:36:00 UTC (rev 5838) +++ chitem/trunk/2DAEdit.cpp 2009-03-29 20:07:27 UTC (rev 5839) @@ -1198,7 +1198,7 @@ } if(match&2) // full word trick { - tmp2=" "+tlk_entries[choosedialog][idx].text+" "; //in this + tmp2=" "+tmp2+" "; //in this } if(tmp2.Find(srch) !=-1) return true; } @@ -1256,6 +1256,16 @@ //matchcase is cheaper, therefore it is marked 0 match=!m_searchdlg->MatchCase()+(!!m_searchdlg->MatchWholeWord())*2; search=m_searchdlg->GetFindString(); + + if(match&1) //we can do this here + { + search.MakeLower(); + } + if(match&2) //this too + { + search=" "+search+" "; + } + do_search(direction,match,search); return 0; } Modified: chitem/trunk/Chitem.cpp =================================================================== --- chitem/trunk/Chitem.cpp 2009-03-29 17:36:00 UTC (rev 5838) +++ chitem/trunk/Chitem.cpp 2009-03-29 20:07:27 UTC (rev 5839) @@ -2266,7 +2266,7 @@ return tmpstr; } -CString spellnames[]={"SPPR","SPWI","SPIN","SPCL"}; +static CString spellnames[]={"SPPR","SPWI","SPIN","SPCL"}; CString format_spell_id(int id) { Modified: chitem/trunk/Chitem.h =================================================================== --- chitem/trunk/Chitem.h 2009-03-29 17:36:00 UTC (rev 5838) +++ chitem/trunk/Chitem.h 2009-03-29 20:07:27 UTC (rev 5839) @@ -874,6 +874,7 @@ CString format_animtype(int animtype); int getanimationidx(int animtype); int find_animtype(unsigned short *percents); +CString format_spell_id(int id); CString convert_degree(int value); CString convert_radius(int value, int direction=0); CString get_face_value(int fvalue); Modified: chitem/trunk/ScriptEdit.cpp =================================================================== --- chitem/trunk/ScriptEdit.cpp 2009-03-29 17:36:00 UTC (rev 5838) +++ chitem/trunk/ScriptEdit.cpp 2009-03-29 20:07:27 UTC (rev 5839) @@ -31,13 +31,6 @@ #define MAX_SCRIPT_LEN 6553599 #define LINES 30 -#define TA_ACTION 0 -#define TA_TRIGGER 1 -#define TA_IF 2 -#define TA_RESPONSE 3 -#define TA_THEN 4 -#define TA_ENDIF 5 - //static function //displays compiler data in human readable format CString format_parameters(compiler_data &compiler_data) @@ -301,24 +294,19 @@ else { tmpname = filepath; - } + } y = tmpname.ReverseFind('.'); if (y>0) { - filepath=tmpname.Left(y); + tmpname=tmpname.Left(y); } - else - { - filepath=tmpname; - } //setting up compiler with options - res = scmp->Compile(filepath, bgfolder+"\\"+outpath+"\\"+filepath+".bcs"); + res = scmp->Compile(filepath, bgfolder+"\\"+outpath+"\\"+tmpname+".bcs"); //actually this is not needed, delete will close all anyway - scmp->CloseAll(); delete scmp; if (res) { - MessageBox("Decompiler error.","Script editor",MB_OK|MB_ICONSTOP); + MessageBox("Compiler error.","Script editor",MB_OK|MB_ICONSTOP); res = 0; } } @@ -610,7 +598,7 @@ else if(newname.Right(4)==".BAF") newname=newname.Left(newname.GetLength()-4); if(newname.GetLength()>8 || newname.GetLength()<1 || newname.Find(" ",0)!=-1) { - tmpstr.Format("The resource name '%s' is bad, it should be 8 characters long and without spaces.",newname); + tmpstr.Format("The resource name '%s' is wrong, it should be 8 characters long and without spaces.",newname); MessageBox(tmpstr,"Warning",MB_ICONEXCLAMATION|MB_OK); goto restart; } @@ -626,7 +614,7 @@ { chdir(bgfolder); tmpstr=bgfolder+weidudecompiled; - mkdir(tmpstr); + assure_dir_exists(tmpstr); if(!dir_exists(tmpstr) ) { res=-3; @@ -1376,8 +1364,18 @@ int tmp = IDSKey("OBJECT",tmpstr); if (tmp!=-1) { - MessageBox(tmpstr,"Script Object", MB_ICONINFORMATION|MB_OK); + helpstr.Format("%s=%d", tmpstr, tmp); + MessageBox(helpstr,"Script Object", MB_ICONINFORMATION|MB_OK); + return false; } + + tmp = IDSKey("SPELL", tmpstr); + if (tmp!=-1) + { + helpstr.Format("%s=%s", tmpstr, format_spell_id(tmp)); + MessageBox(helpstr,"Spell", MB_ICONINFORMATION|MB_OK); + return false; + } return false; } Modified: chitem/trunk/chitem.clw =================================================================== --- chitem/trunk/chitem.clw 2009-03-29 17:36:00 UTC (rev 5838) +++ chitem/trunk/chitem.clw 2009-03-29 20:07:27 UTC (rev 5839) @@ -2,7 +2,7 @@ [General Info] Version=1 -LastClass=CCreatureItem +LastClass=CChitemDlg LastTemplate=CDialog NewFileInclude1=#include "stdafx.h" NewFileInclude2=#include "chitem.h" @@ -232,136 +232,136 @@ Resource123=IDD_GAMEGENERAL Class98=IcewindCre Resource124=IDR_SHORTCUT -Resource125=IDD_STOREGENERAL (English (U.S.)) -Resource126=IDD_CREATURERES (English (U.S.)) -Resource127=IDD_TISDIALOG (English (U.S.)) -Resource128=IDD_CREATUREIWD2 (English (U.S.)) -Resource129=IDD_PROGRESS (English (U.S.)) -Resource130=IDD_AREAENTRANCE (English (U.S.)) -Resource131=IDR_TLKMENU (English (U.S.)) -Resource132=IDD_EDIT (English (U.S.)) -Resource133=IDD_IDSEDIT (English (U.S.)) -Resource134=IDD_IMAGEVIEW (English (U.S.)) -Resource135=IDD_ITEMDESC (English (U.S.)) -Resource136=IDD_ITEMGENERAL (English (U.S.)) -Resource137=IDD_DIALOGEDIT (English (U.S.)) -Resource138=IDD_SPELLTOOL (English (U.S.)) -Resource139=IDD_AREAINT (English (U.S.)) -Resource140=IDD_GAMEPCINFO (English (U.S.)) -Resource141=IDD_CREATUREGENERAL (English (U.S.)) -Resource142=IDD_WEDPOLY (English (U.S.)) -Resource143=IDD_MUSEDIT (English (U.S.)) -Resource144=IDD_CHITEM_DIALOG (English (U.S.)) -Resource145=IDR_MENUBAR (English (U.S.)) -Resource146=IDD_ABOUTBOX (English (U.S.)) -Resource147=IDD_POLYGON (English (U.S.)) -Resource148=IDR_CHUI (English (U.S.)) -Resource149=IDD_CREATUREICONS (English (U.S.)) -Resource150=IDD_ITEMUSE (English (U.S.)) -Resource151=IDD_WEDEDIT (English (U.S.)) -Resource152=IDD_ITEMEFFECT (English (U.S.)) -Resource153=IDD_CREATUREEFF (English (U.S.)) -Resource154=IDD_SHOWLOG (English (U.S.)) -Resource155=IDD_STOREDRINKS (English (U.S.)) -Resource156=IDD_MAPLINK (English (U.S.)) -Resource157=IDR_SCRIPT (English (U.S.)) -Resource158=IDD_FINDITEM (English (U.S.)) -Resource159=IDD_STOREEDIT (English (U.S.)) -Resource160=IDR_TILE (English (U.S.)) -Resource161=IDD_AREASONGS (English (U.S.)) -Resource162=IDD_MOSEDIT (English (U.S.)) -Resource163=IDD_AREASPAWN (English (U.S.)) -Resource164=IDD_STORERENTAL (English (U.S.)) -Resource165=IDR_CREATURE (English (U.S.)) -Resource166=IDD_CFB (English (U.S.)) -Resource167=IDD_TEXTVIEW (English (U.S.)) -Resource168=IDD_CHECK (English (U.S.)) -Resource169=IDD_CREATUREEDIT (English (U.S.)) -Resource170=IDR_PROJECT (English (U.S.)) -Resource171=IDD_KEYEDIT (English (U.S.)) -Resource172=IDD_EXTRACT2 (English (U.S.)) -Resource173=IDD_CREATUREIWD (English (U.S.)) -Resource174=IDD_COMPAT (English (U.S.)) -Resource175=IDD_WEIDU (English (U.S.)) -Resource176=IDR_MUSIC (English (U.S.)) -Resource177=IDD_PROJEDIT (English (U.S.)) -Resource178=IDR_CHITIN (English (U.S.)) -Resource179=IDD_CREATUREOVR (English (U.S.)) -Resource180=IDD_CREATUREUNKNOWN (English (U.S.)) -Resource181=IDD_COLORPICKER (English (U.S.)) -Resource182=IDR_SRC (English (U.S.)) -Resource183=IDD_IAPDIALOG (English (U.S.)) -Resource184=IDR_2DA (English (U.S.)) -Resource185=IDD_SEARCHNODE (English (U.S.)) -Resource186=IDD_VVCEDIT (English (U.S.)) -Resource187=IDD_AREAMAP (English (U.S.)) -Resource188=IDD_CREATURESKILLS (English (U.S.)) -Resource189=IDD_VARIABLES (English (U.S.)) -Resource190=IDD_STOREEXTRA (English (U.S.)) -Resource191=IDD_CREATURESTRINGS (English (U.S.)) -Resource192=IDD_SCHEDULE (English (U.S.)) -Resource193=IDR_AREA (English (U.S.)) -Resource194=IDD_SPELLEQUIP (English (U.S.)) -Resource195=IDD_AREADOOR (English (U.S.)) -Resource196=IDD_WEDTILE (English (U.S.)) -Resource197=IDD_ITEMEXTRA (English (U.S.)) -Resource198=IDD_AREATRIGGER (English (U.S.)) -Resource199=IDD_SRCEDIT (English (U.S.)) -Resource200=IDD_SAVHANDLE (English (U.S.)) -Resource201=IDD_BAMEDIT (English (U.S.)) -Resource202=IDD_CHUIEDIT (English (U.S.)) -Resource203=IDR_WEDMENU (English (U.S.)) -Resource204=IDD_SPELLEXTRA (English (U.S.)) -Resource205=IDD_ANIMDIALOG -Resource206=IDD_ITEMPICKER (English (U.S.)) -Resource207=IDD_SPELLGENERAL (English (U.S.)) -Resource208=IDD_ITEMEQUIP (English (U.S.)) -Resource209=IDD_SPELLDESC (English (U.S.)) -Resource210=IDD_PALETTE (English (U.S.)) -Resource211=IDD_PROJEXT (English (U.S.)) -Resource212=IDR_GAME (English (U.S.)) -Resource213=IDD_AREAAMBIENT (English (U.S.)) -Resource214=IDD_SPELLEFFECT (English (U.S.)) -Resource215=IDR_VVC (English (U.S.)) -Resource216=IDR_WORLDMAP (English (U.S.)) -Resource217=IDD_CREATUREITEMS (English (U.S.)) -Resource218=IDD_AREAANIM (English (U.S.)) -Resource219=IDR_TREEMENU (English (U.S.)) -Resource220=IDD_MASSCLEAR (English (U.S.)) -Resource221=IDR_STORE (English (U.S.)) -Resource222=IDR_EFFECT (English (U.S.)) -Resource223=IDR_SPELL (English (U.S.)) -Resource224=IDD_ITEMEDIT (English (U.S.)) -Resource225=IDD_STOREITEMS (English (U.S.)) -Resource226=IDD_2DAEDIT (English (U.S.)) -Resource227=IDD_CREATURELEVELS (English (U.S.)) -Resource228=IDD_PANICBUTTON (English (U.S.)) -Resource229=IDD_ADDLINK (English (U.S.)) -Resource230=IDD_EXTRACT (English (U.S.)) -Resource231=IDR_BAMMENU (English (U.S.)) -Resource232=IDD_STRREFDLG (English (U.S.)) -Resource233=IDD_AREACONTAINER (English (U.S.)) -Resource234=IDD_CREATUREPST (English (U.S.)) -Resource235=IDD_SPELLEDIT (English (U.S.)) -Resource236=IDD_AREAACTOR (English (U.S.)) -Resource237=IDD_GAMESTATS (English (U.S.)) -Resource238=IDR_ITEM (English (U.S.)) -Resource239=IDD_MAPEDIT (English (U.S.)) -Resource240=IDD_EFFEDIT (English (U.S.)) -Resource241=IDR_IDS (English (U.S.)) -Resource242=IDD_AREAGENERAL (English (U.S.)) -Resource243=IDD_GAMEEDIT (English (U.S.)) -Resource244=IDD_GAMEGENERAL (English (U.S.)) -Resource245=IDD_AREATRIGGERSTRINGS (English (U.S.)) +Resource125=IDD_AREATRIGGER (English (U.S.)) +Resource126=IDD_SHOWLOG (English (U.S.)) +Resource127=IDR_EFFECT (English (U.S.)) +Resource128=IDR_CHITIN (English (U.S.)) +Resource129=IDD_SPELLEQUIP (English (U.S.)) +Resource130=IDD_2DAEDIT (English (U.S.)) +Resource131=IDD_ITEMPICKER (English (U.S.)) +Resource132=IDD_GAMESTATS (English (U.S.)) +Resource133=IDD_CREATUREPST (English (U.S.)) +Resource134=IDD_PALETTE (English (U.S.)) +Resource135=IDD_AREAINT (English (U.S.)) +Resource136=IDD_SPELLEFFECT (English (U.S.)) +Resource137=IDD_TISDIALOG (English (U.S.)) +Resource138=IDR_WORLDMAP (English (U.S.)) +Resource139=IDD_CREATUREEFF (English (U.S.)) +Resource140=IDR_CHUI (English (U.S.)) +Resource141=IDD_COLORPICKER (English (U.S.)) +Resource142=IDR_SPELL (English (U.S.)) +Resource143=IDR_BAMMENU (English (U.S.)) +Resource144=IDD_ITEMDESC (English (U.S.)) +Resource145=IDD_EDIT (English (U.S.)) +Resource146=IDD_SPELLGENERAL (English (U.S.)) +Resource147=IDR_PROJECT (English (U.S.)) +Resource148=IDR_2DA (English (U.S.)) +Resource149=IDD_AREAANIM (English (U.S.)) +Resource150=IDD_AREACONTAINER (English (U.S.)) +Resource151=IDR_ITEM (English (U.S.)) +Resource152=IDD_AREAGENERAL (English (U.S.)) +Resource153=IDR_TREEMENU (English (U.S.)) +Resource154=IDD_CREATUREIWD2 (English (U.S.)) +Resource155=IDR_VVC (English (U.S.)) +Resource156=IDD_AREAMAP (English (U.S.)) +Resource157=IDD_EXTRACT (English (U.S.)) +Resource158=IDD_SPELLEXTRA (English (U.S.)) +Resource159=IDD_AREAENTRANCE (English (U.S.)) +Resource160=IDD_EFFEDIT (English (U.S.)) +Resource161=IDD_PANICBUTTON (English (U.S.)) +Resource162=IDD_POLYGON (English (U.S.)) +Resource163=IDD_IMAGEVIEW (English (U.S.)) +Resource164=IDD_CREATUREICONS (English (U.S.)) +Resource165=IDD_ITEMICONS (English (U.S.)) +Resource166=IDD_PROJEDIT (English (U.S.)) +Resource167=IDD_AREASPAWN (English (U.S.)) +Resource168=IDD_ITEMUSE (English (U.S.)) +Resource169=IDD_IAPDIALOG (English (U.S.)) +Resource170=IDD_CFB (English (U.S.)) +Resource171=IDR_AREA (English (U.S.)) +Resource172=IDD_PROJEXT (English (U.S.)) +Resource173=IDR_SRC (English (U.S.)) +Resource174=IDD_CREATURESKILLS (English (U.S.)) +Resource175=IDD_BAMEDIT (English (U.S.)) +Resource176=IDD_STOREITEMS (English (U.S.)) +Resource177=IDD_MOSEDIT (English (U.S.)) +Resource178=IDD_ITEMEXTRA (English (U.S.)) +Resource179=IDD_ANIMDIALOG +Resource180=IDD_SAVHANDLE (English (U.S.)) +Resource181=IDD_GAMEPCINFO (English (U.S.)) +Resource182=IDD_STORERENTAL (English (U.S.)) +Resource183=IDD_GAMEGENERAL (English (U.S.)) +Resource184=IDD_STOREEDIT (English (U.S.)) +Resource185=IDD_KEYEDIT (English (U.S.)) +Resource186=IDD_SCHEDULE (English (U.S.)) +Resource187=IDR_SCRIPT (English (U.S.)) +Resource188=IDD_SCRIPTEDIT (English (U.S.)) +Resource189=IDD_CREATUREGENERAL (English (U.S.)) +Resource190=IDD_CREATURESTRINGS (English (U.S.)) +Resource191=IDD_STRREFDLG (English (U.S.)) +Resource192=IDD_CREATUREITEMS (English (U.S.)) +Resource193=IDD_ITEMGENERAL (English (U.S.)) +Resource194=IDD_AREADOOR (English (U.S.)) +Resource195=IDD_WEDPOLY (English (U.S.)) +Resource196=IDR_CREATURE (English (U.S.)) +Resource197=IDD_CREATURERES (English (U.S.)) +Resource198=IDD_IDSEDIT (English (U.S.)) +Resource199=IDR_TLKMENU (English (U.S.)) +Resource200=IDD_CREATURELEVELS (English (U.S.)) +Resource201=IDD_CREATUREUNKNOWN (English (U.S.)) +Resource202=IDR_GAME (English (U.S.)) +Resource203=IDD_COMPAT (English (U.S.)) +Resource204=IDD_AREAVARIABLE (English (U.S.)) +Resource205=IDD_AREATRIGGERSTRINGS (English (U.S.)) +Resource206=IDD_AREAEDIT (English (U.S.)) +Resource207=IDD_AREAAMBIENT (English (U.S.)) +Resource208=IDD_EXTRACT2 (English (U.S.)) +Resource209=IDD_DIALOGEDIT (English (U.S.)) +Resource210=IDD_AREASONGS (English (U.S.)) +Resource211=IDD_SPELLTOOL (English (U.S.)) +Resource212=IDD_ITEMEFFECT (English (U.S.)) +Resource213=IDD_MUSEDIT (English (U.S.)) +Resource214=IDD_SEARCHNODE (English (U.S.)) +Resource215=IDD_VVCEDIT (English (U.S.)) +Resource216=IDD_ITEMEQUIP (English (U.S.)) +Resource217=IDD_STOREDRINKS (English (U.S.)) +Resource218=IDD_CREATUREIWD (English (U.S.)) +Resource219=IDD_CHITEM_DIALOG (English (U.S.)) +Resource220=IDR_STORE (English (U.S.)) +Resource221=IDD_FINDITEM (English (U.S.)) +Resource222=IDD_ITEMEDIT (English (U.S.)) +Resource223=IDD_PROGRESS (English (U.S.)) +Resource224=IDD_SPELLDESC (English (U.S.)) +Resource225=IDD_VARIABLES (English (U.S.)) +Resource226=IDD_TEXTVIEW (English (U.S.)) +Resource227=IDD_WEIDU (English (U.S.)) +Resource228=IDR_MENUBAR (English (U.S.)) +Resource229=IDD_WEDTILE (English (U.S.)) +Resource230=IDD_AREAACTOR (English (U.S.)) +Resource231=IDD_ABOUTBOX (English (U.S.)) +Resource232=IDD_CREATUREOVR (English (U.S.)) +Resource233=IDD_WEDEDIT (English (U.S.)) +Resource234=IDR_IDS (English (U.S.)) +Resource235=IDD_ADDLINK (English (U.S.)) +Resource236=IDD_MAPLINK (English (U.S.)) +Resource237=IDR_MUSIC (English (U.S.)) +Resource238=IDD_CHECK (English (U.S.)) +Resource239=IDD_SRCEDIT (English (U.S.)) +Resource240=IDD_CREATUREEDIT (English (U.S.)) +Resource241=IDD_STOREGENERAL (English (U.S.)) +Resource242=IDD_GAMEEDIT (English (U.S.)) +Resource243=IDD_CHUIEDIT (English (U.S.)) +Resource244=IDR_TILE (English (U.S.)) +Resource245=IDR_WEDMENU (English (U.S.)) Class99=CAreaTriggerString Class100=CPCInfo -Resource246=IDD_AREAEDIT (English (U.S.)) +Resource246=IDD_MAPEDIT (English (U.S.)) Class101=CCreatureOverlay -Resource247=IDD_SCRIPTEDIT (English (U.S.)) +Resource247=IDD_STOREEXTRA (English (U.S.)) Class102=IWD2Creature -Resource248=IDD_AREAVARIABLE (English (U.S.)) +Resource248=IDD_MASSCLEAR (English (U.S.)) Class103=CAnimDialog -Resource249=IDD_ITEMICONS (English (U.S.)) +Resource249=IDD_SPELLEDIT (English (U.S.)) Class104=CCreatureLevels Resource250=IDR_SHORTCUT (English (U.S.)) @@ -379,7 +379,7 @@ Filter=D BaseClass=CDialog VirtualFilter=dWC -LastObject=ID_EXTRACTION_RECOMPRESSSAV +LastObject=ID_CHECK_WORLDMAP [CLS:CAboutDlg] Type=0 @@ -9590,43 +9590,44 @@ Command57=ID_CHECK_UI Command58=ID_CHECK_VVC Command59=ID_CHECK_WORLDMAP -Command60=ID_FILE_EXTRACT -Command61=ID_FILE_SEARCH -Command62=ID_UNCOMPRESSBIF -Command63=ID_UNCOMPRESSSAV -Command64=ID_UNCOMPRESSCBF -Command65=ID_SKIMSAV -Command66=ID_EXTRACTION_RECOMPRESSSAV -Command67=ID_FILE_BUILDBIF -Command68=ID_REORDERBIF -Command69=ID_COMPRESSBIF -Command70=ID_COMPRESSCBF -Command71=ID_WAVCTOWAV -Command72=ID_WAVCTOWAV2 -Command73=ID_WAVTOWAVC -Command74=ID_ACMTOWAV -Command75=ID_ACMTOWAV2 -Command76=ID_WAVTOACM -Command77=ID_ADDCFBTOSPELLS -Command78=ID_CLEARCFBFROMSPELLS -Command79=ID_TOOLS_DECOMPILE -Command80=ID_TOOLS_LOOKUPSTRREF -Command81=ID_AVATARS -Command82=ID_SCANVARIABLES -Command83=ID_TOOLS_SCANJOURNALENTRIES -Command84=ID_TISPACK -Command85=ID_LOGGING_NONE -Command86=ID_LOGGING_SCREEN -Command87=ID_LOGGING_FILE -Command88=ID_PROGRESS -Command89=ID_READONLY -Command90=ID_USEDIALOGF -Command91=ID_COMPAT -Command92=ID_SAVESETTINGS -Command93=IDM_ABOUTBOX -Command94=ID_TOOLTIPS -Command95=ID_HELP_README -CommandCount=95 +Command60=ID_CHECK_AVATAR2DA +Command61=ID_FILE_EXTRACT +Command62=ID_FILE_SEARCH +Command63=ID_UNCOMPRESSBIF +Command64=ID_UNCOMPRESSSAV +Command65=ID_UNCOMPRESSCBF +Command66=ID_SKIMSAV +Command67=ID_EXTRACTION_RECOMPRESSSAV +Command68=ID_FILE_BUILDBIF +Command69=ID_REORDERBIF +Command70=ID_COMPRESSBIF +Command71=ID_COMPRESSCBF +Command72=ID_WAVCTOWAV +Command73=ID_WAVCTOWAV2 +Command74=ID_WAVTOWAVC +Command75=ID_ACMTOWAV +Command76=ID_ACMTOWAV2 +Command77=ID_WAVTOACM +Command78=ID_ADDCFBTOSPELLS +Command79=ID_CLEARCFBFROMSPELLS +Command80=ID_TOOLS_DECOMPILE +Command81=ID_TOOLS_LOOKUPSTRREF +Command82=ID_AVATARS +Command83=ID_SCANVARIABLES +Command84=ID_TOOLS_SCANJOURNALENTRIES +Command85=ID_TISPACK +Command86=ID_LOGGING_NONE +Command87=ID_LOGGING_SCREEN +Command88=ID_LOGGING_FILE +Command89=ID_PROGRESS +Command90=ID_READONLY +Command91=ID_USEDIALOGF +Command92=ID_COMPAT +Command93=ID_SAVESETTINGS +Command94=IDM_ABOUTBOX +Command95=ID_TOOLTIPS +Command96=ID_HELP_README +CommandCount=96 [MNU:IDR_BAMMENU (English (U.S.))] Type=1 Modified: chitem/trunk/chitem.rc =================================================================== --- chitem/trunk/chitem.rc 2009-03-29 17:36:00 UTC (rev 5838) +++ chitem/trunk/chitem.rc 2009-03-29 20:07:27 UTC (rev 5839) @@ -6271,6 +6271,8 @@ MENUITEM "&UI", ID_CHECK_UI MENUITEM "&VVC", ID_CHECK_VVC MENUITEM "&Worldmap", ID_CHECK_WORLDMAP + MENUITEM SEPARATOR + MENUITEM "Avatar.&2da", ID_CHECK_AVATAR2DA END POPUP "E&xtraction" BEGIN Modified: chitem/trunk/chitemDlg.cpp =================================================================== --- chitem/trunk/chitemDlg.cpp 2009-03-29 17:36:00 UTC (rev 5838) +++ chitem/trunk/chitemDlg.cpp 2009-03-29 20:07:27 UTC (rev 5839) @@ -241,6 +241,7 @@ ON_COMMAND(ID_RESCAN3, OnRescan3) ON_COMMAND(ID_RESCAN4, OnRescan4) ON_COMMAND(ID_RESCAN5, OnRescan5) + ON_COMMAND(ID_CHECK_AVATAR2DA, OnCheckAvatar2da) //}}AFX_MSG_MAP END_MESSAGE_MAP() @@ -2238,6 +2239,7 @@ return gret; } + void CChitemDlg::OnCheckItem() { if(bgfolder.IsEmpty()) @@ -2599,9 +2601,36 @@ } return; } - MessageBox("No problem found!","Game check",MB_OK|MB_ICONINFORMATION); + MessageBox("No problem found!","Worldmap check",MB_OK|MB_ICONINFORMATION); } +void CChitemDlg::OnCheckAvatar2da() +{ + if(bgfolder.IsEmpty()) + { + MessageBox("Use the setup first!","Warning",MB_ICONEXCLAMATION|MB_OK); + return; + } + + m_event.Empty(); + UpdateData(UD_DISPLAY); + + if(check_avatar()) + { + switch(logtype) + { + case 0: + MessageBox("There were inconsistencies, change the logging type to see them!","Avatar check",MB_OK|MB_ICONINFORMATION); + break; + case 2: + MessageBox("See the chitem.log for details on the inconsistencies!","Avatar check",MB_OK|MB_ICONINFORMATION); + break; + } + return; + } + MessageBox("No problem found!","Avatar check",MB_OK|MB_ICONINFORMATION); +} + void CChitemDlg::OnRescan() { if(bgfolder.IsEmpty()) Modified: chitem/trunk/chitemDlg.h =================================================================== --- chitem/trunk/chitemDlg.h 2009-03-29 17:36:00 UTC (rev 5838) +++ chitem/trunk/chitemDlg.h 2009-03-29 20:07:27 UTC (rev 5839) @@ -215,6 +215,27 @@ int check_kits(); int check_statdesc(); int check_songlist(); + int check_avatar(); + int check_ani_code_mirror(CString prefix); + int check_ani_code_mirror_2(CString prefix); + int check_ani_one_file(CString prefix); + int check_ani_two_files(CString prefix); + int check_ani_two_files_2(CString prefix); + int check_ani_two_files_3(CString prefix); + int check_ani_four_files(CString prefix); + int check_ani_six_files(CString prefix); + int check_ani_six_files_2(CString prefix); + int check_ani_twentytwo(CString prefix); + int check_ani_bird(CString prefix); + int check_ani_four_frames(CString prefix); + int check_ani_nine_frames(CString prefix); + int check_ani_pst_animation_1(CString prefix); + int check_ani_pst_animation_2(CString prefix); + int check_ani_pst_animation_3(CString prefix); + int check_ani_pst_ghost(CString prefix); + int check_ani_pst_stand(CString prefix); + int check_all_types(CString prefix, int except); + int check_or_scan_trigger(const trigger *tpoi, int checkflags, int check_or_scan, int bcnt); int check_or_scan_action(const action *apoi, int checkflags, int check_or_scan, int bcnt); int check_integers(const int *bytes, int storeflags, int opcode, int trigger, int block); @@ -328,6 +349,7 @@ afx_msg void OnRecompresssav(); afx_msg void OnUsedialogf(); afx_msg void OnToolsDecompile(); + afx_msg void OnCheckAvatar2da(); //}}AFX_MSG afx_msg void OnOk5(); afx_msg void OnOk6(); Modified: chitem/trunk/resource.h =================================================================== --- chitem/trunk/resource.h 2009-03-29 17:36:00 UTC (rev 5838) +++ chitem/trunk/resource.h 2009-03-29 20:07:27 UTC (rev 5839) @@ -1847,6 +1847,7 @@ #define ID_FILE_TP2 33043 #define ID_EXTRACTION_RECOMPRESSSAV 33044 #define ID_TOOLS_PLAYSOUND 33045 +#define ID_CHECK_AVATAR2DA 33046 #define ID_CONTEXT 0xF180 // Next default values for new objects @@ -1854,7 +1855,7 @@ #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NEXT_RESOURCE_VALUE 233 -#define _APS_NEXT_COMMAND_VALUE 33046 +#define _APS_NEXT_COMMAND_VALUE 33047 #define _APS_NEXT_CONTROL_VALUE 2339 #define _APS_NEXT_SYMED_VALUE 120 #endif Modified: chitem/trunk/seekers.cpp =================================================================== --- chitem/trunk/seekers.cpp 2009-03-29 17:36:00 UTC (rev 5838) +++ chitem/trunk/seekers.cpp 2009-03-29 20:07:27 UTC (rev 5839) @@ -6070,3 +6070,562 @@ return ret; } +#define CODE_MIRROR_COUNT 13 +CString code_mirror_suffixes[CODE_MIRROR_COUNT]={"a1","a2","a3","a4","a5","a6","a7","a8","a9","sa","sx","ss","ca"}; +int cycle_count[CODE_MIRROR_COUNT]={9}; +int mandatory_code_mirror_s[CODE_MIRROR_COUNT]={1,1,1,1,1,1,1,1,1,1,1,1,0}; + +int CChitemDlg::check_ani_code_mirror(CString prefix) +{ + CString resref; + int i; + int res; + int cnt; + + cnt=0; + for(i=0;i<CODE_MIRROR_COUNT;i++) + { + resref=prefix+code_mirror_suffixes[i]; + res=check_resource(resref, false); + if(mandatory_code_mirror_s[i] && res) + { + cnt++; + } + } + + //9 is the number of mandatory animations, update it when mandatory_iwd_ani_s changed + if(cnt==12) return 1; //completely missing animation + if(cnt) return -1; //missing one file + return 0; +} + +int CChitemDlg::check_ani_one_file(CString prefix) +{ + int res, res2; + + res=check_resource(prefix, false); + res2=check_resource(prefix+"e", false); + if(res) return 1; //if prefix doesn't exist this is not a single file animation + if(!res2) return 1; //nor if an east animation exists + return 0; +} + +#define CODE_SF_COUNT 3 +CString code_sf_suffixes[CODE_SF_COUNT]={"g1","g2","g3"}; +int need_suffix_two[CODE_SF_COUNT]={1,0,0}; +int need_suffix_four[CODE_SF_COUNT]={1,1,0}; + +int CChitemDlg::check_ani_four_files(CString prefix) +{ + int i; + int res, res2; + + for(i=0;i<CODE_SF_COUNT;i++) + { + res=check_resource(prefix+code_sf_suffixes[i], false); + res2=check_resource(prefix+code_sf_suffixes[i]+"e", false); + if(res!=res2) return -2; + + if(!res ^ need_suffix_four[i]) + { + return 1; + } + } + return 0; +} + + +int CChitemDlg::check_ani_two_files(CString prefix) +{ + int i; + int res, res2; + + for(i=0;i<CODE_SF_COUNT;i++) + { + res=check_resource(prefix+code_sf_suffixes[i], false); + res2=check_resource(prefix+code_sf_suffixes[i]+"e", false); + if(res!=res2) return -2; + if(!res ^ need_suffix_two[i]) + { + return 1; + } + } + return 0; +} + +#define CODE_MIRROR2_COUNT 13 +CString code_mirror2_suffixes[CODE_MIRROR_COUNT]={"g1","g2","g11","g12","g13","g14","g15","g21","g22","g23","g24","g25","g26"}; + +int CChitemDlg::check_ani_code_mirror_2(CString prefix) +{ + CString resref; + int i; + int res; + int cnt; + + cnt=0; + for(i=0;i<CODE_MIRROR2_COUNT;i++) + { + resref=prefix+code_mirror2_suffixes[i]; + res=check_resource(resref, false); + if(res) + { + cnt++; + } + } + + if(cnt) return 1; //missing at least one file + return 0; +} + +int six_files_2_cycles[CODE_SF_COUNT]={24,16,32}; + +int CChitemDlg::check_ani_six_files_2(CString prefix) +{ + int i; + int res, res2; + CString resref; + Cbam tmp; + + for(i=0;i<CODE_SF_COUNT;i++) + { + resref=prefix+code_sf_suffixes[i]; + res=check_resource(resref, false); + res2=check_resource(resref+"e", false); + if(res) return 1; //if prefix doesn't exist this is not a single file animation + if(res2) return 1; //nor if an east animation is missing + resref.MakeUpper(); + if(read_bam_preview(resref,&tmp)) return -2; + if(tmp.GetCycleCount()!=six_files_2_cycles[i]) return 1; + } + return 0; +} + +#define CODE_TWENTYTWO_COUNT 11 +CString code_twentytwo_suffixes[CODE_MIRROR_COUNT]={"a1","a2","a3","a4","a5","a6","ca","g1","w2","sx","sa"}; +int mandatory_twentytwo_s[CODE_MIRROR_COUNT]={2,3,2,3,2,3,1,1,1,0,0}; + +int CChitemDlg::check_ani_twentytwo(CString prefix) +{ + int i; + int res, res2; + int cnt; + bool east; + bool twohanded; //needs twohanded + + cnt=0; + east=false; + twohanded=false; + for(i=0;i<CODE_SF_COUNT;i++) + { + res=check_resource(prefix+code_twentytwo_suffixes[i], false); + res2=check_resource(prefix+code_twentytwo_suffixes[i]+"e", false); + if (res!=res2) east=true; + if (mandatory_twentytwo_s[i]==2) + { + if(res) twohanded=true; + else twohanded=false; + } + + if(res) + { + switch(mandatory_twentytwo_s[i]) + { + case 0: case 2: + break; + case 1: + cnt++; + break; + case 3: + if(twohanded) + { + cnt++; + } + break; + } + } + } + + if(cnt) return -1; //missing only a few files + if(east) return -2; //missing an east file + return 0; +} + +int CChitemDlg::check_ani_bird(CString prefix) +{ + int res, res2; + + res=check_resource(prefix, false); + res2=check_resource(prefix+"e", false); + if(res) return 1; //if prefix doesn't exist this is not a single file animation + if(!res2) return 1; //nor if an east animation exists + return 0; +} + +int six_files_cycles[CODE_SF_COUNT]={16,80,48}; + +int CChitemDlg::check_ani_six_files(CString prefix) +{ + int i; + int res, res2; + CString resref; + Cbam tmp; + + for(i=0;i<CODE_SF_COUNT;i++) + { + resref=prefix+code_sf_suffixes[i]; + res=check_resource(resref, false); + res2=check_resource(resref+"e", false); + if(res) return 1; //if prefix doesn't exist this is not a single file animation + if(res2) return 1; //nor if an east animation is missing + resref.MakeUpper(); + if(read_bam_preview(resref,&tmp)) return -2; + if(tmp.GetCycleCount()!=six_files_cycles[i]) return 1; + } + return 0; +} + +int CChitemDlg::check_ani_two_files_2(CString prefix) +{ + int i; + int res, res2; + + for(i=0;i<CODE_SF_COUNT;i++) + { + res=check_resource(prefix+code_sf_suffixes[i], false); + res2=check_resource(prefix+code_sf_suffixes[i]+"e", false); + if(res!=res2) return -2; + if(!res ^ need_suffix_two[i]) + { + return 1; + } + } + return 0; +} + +#define IWD_ANI_COUNT 13 + +CString iwd_ani_suffixes[IWD_ANI_COUNT]={"wk","tw","sl","gu","de","gh","sc","sp","ca","sd","a1","a2","a4"}; +int mandatory_iwd_ani_s[IWD_ANI_COUNT]={1,1,1,1,1,1,1,0,0,1,1,0,0}; + +int CChitemDlg::check_ani_two_files_3(CString prefix) +{ + CString resref; + int i; + int res, res2; + int cnt; + bool east; + + cnt=0; + east=false; + for(i=0;i<IWD_ANI_COUNT;i++) + { + resref=prefix+iwd_ani_suffixes[i]; + res=check_resource(resref, false); + res2=check_resource(resref+"e", false); + if(res!=res2) + { + east=true; + } + if(mandatory_iwd_ani_s[i] && res) + { + cnt++; + } + } + + //9 is the number of mandatory animations, update it when mandatory_iwd_ani_s changed + //but some animations may contain a1 animation even when they are not iwd animations + if(cnt>=8) return 1; //completely missing animation or not this type + if(cnt) return -1; //missing only a few files + if(east) return -2; //missing an east file + return 0; +} + +#define NF_COUNT 27 +CString nf_suffixes[NF_COUNT]={"g11","g12","g13","g14","g15","g16","g17","g18","g19", +"g21","g22","g23","g24","g25","g26","g27","g28","g29", +"g31","g32","g33","g34","g35","g36","g37","g38","g39"}; + +int need_four_frames[NF_COUNT]={1,1,1,1,0,0,0,0,0,1,1,1,1,0,0,0,0,0,1,1,1,1,0,0,0,0,0}; + +int CChitemDlg::check_ani_four_frames(CString prefix) +{ + CString resref; + int i; + int res; + + for(i=0;i<NF_COUNT;i++) + { + resref=prefix+nf_suffixes[i]; + res=check_resource(resref, false); + if(!res ^ need_four_frames[i]) + { + return 1; + } + } + + return 0; +} + +#define NF_STANCE_COUNT 7 +int NFStancePrefix[]={1,2,3,4,4,4,5}; +int NFCyclePrefix[]= {0,0,0,0,1,2,1}; + +int CChitemDlg::check_ani_nine_frames(CString prefix) +{ + CString resref; + int i; + int res; + int part, cycle; + + for(i=0;i<NF_STANCE_COUNT;i++) + { + for(part=1;part<10;part++) + { + for(cycle=0;cycle<9;cycle++) + { + resref.Format("%s%d%d%d%d",prefix, NFStancePrefix[i], part, NFCyclePrefix[i], cycle); + res=check_resource(resref, false); + if(res) + { + return 1; + } + } + } + } + + return 0; +} + +#define PINF_COUNT 21 +CString pst_infixes[PINF_COUNT]={"at1","at2","c2s","s2c","cf1","cf2","sf1","sf2","dfb","gup","hit", +"run","sp1","sp2","stc","std","wlk","tk1","tk2","tk3","ms1"}; +int pst_ani_1_mandatory_infixes[PINF_COUNT]={0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,1,1,0,0,0,0}; +int pst_ani_2_mandatory_infixes[PINF_COUNT]={0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0,0,0,0}; +int pst_ani_3_mandatory_infixes[PINF_COUNT]={0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,1,0,0,0,0}; +int pst_ani_stand_mandatory_infixes[PINF_COUNT]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0}; + +int CChitemDlg::check_ani_pst_animation_1(CString prefix) +{ + CString resref; + int i; + int res; + int cnt; + + cnt=0; + for(i=0;i<PINF_COUNT;i++) + { + resref=prefix.Left(1)+pst_infixes[i]+prefix.Right(4); + res=check_resource(resref, false); + if(pst_ani_1_mandatory_infixes[i] && res) + { + cnt++; + } + } + + if(cnt>2) return 1; + if(cnt) return -1; + return 0; +} + +int CChitemDlg::check_ani_pst_ghost(CString prefix) +{ + int res, res2; + + res=check_resource(prefix, false); + res2=check_resource(prefix+"e", false); + if(res) return 1; //if prefix doesn't exist this is not a single file animation + if(!res2) return 1; //nor if an east animation exists + return 0; +} + +int CChitemDlg::check_ani_pst_stand(CString prefix) +{ + CString resref; + int i; + int res; + int cnt; + + cnt=0; + for(i=0;i<PINF_COUNT;i++) + { + resref=prefix.Left(1)+pst_infixes[i]+prefix.Right(4); + res=check_resource(resref, false); + if(pst_ani_stand_mandatory_infixes[i] && res) + { + cnt++; + } + } + + if(cnt>9) return 1; + if(cnt) return -1; + return 0; +} + +int CChitemDlg::check_ani_pst_animation_2(CString prefix) +{ + CString resref; + int i; + int res; + int cnt; + + cnt=0; + for(i=0;i<PINF_COUNT;i++) + { + resref=prefix.Left(1)+pst_infixes[i]+prefix.Right(4); + res=check_resource(resref, false); + if(pst_ani_2_mandatory_infixes[i] && res) + { + cnt++; + } + } + + if(cnt>9) return 1; + if(cnt) return -1; + return 0; +} + +int CChitemDlg::check_ani_pst_animation_3(CString prefix) +{ + CString resref; + int i; + int res; + int cnt; + + cnt=0; + for(i=0;i<PINF_COUNT;i++) + { + resref=prefix.Left(1)+pst_infixes[i]+prefix.Right(4); + res=check_resource(resref, false); + if(pst_ani_3_mandatory_infixes[i] && res) + { + cnt++; + } + } + + if(cnt>9) return 1; + if(cnt) return -1; + return 0; +} + + +int CChitemDlg::check_all_types(CString prefix, int except) +{ + int type, res; + + for(type=0;type<21;type++) + { + if(type==except) continue; + switch(type) + { + case 0: res=check_ani_code_mirror(prefix); break; //simple bg1 animations + case 1: res=check_ani_one_file(prefix); break; + case 2: res=check_ani_four_files(prefix); break; + case 3: res=check_ani_two_files(prefix); break; + case 4: res=check_ani_code_mirror_2(prefix); break; + case 5: res=check_ani_six_files_2(prefix); break; + case 6: res=check_ani_twentytwo(prefix); break; + case 7: res=check_ani_bird(prefix); break; + case 8: res=check_ani_six_files(prefix); break; + case 9: res=check_ani_two_files_3(prefix); break; //iwd animations + case 10: res=check_ani_two_files_2(prefix); break; + case 11: res=check_ani_four_frames(prefix); break; //large animations + case 12: res=check_ani_nine_frames(prefix); break; //huge animations + case 16: res=check_ani_pst_animation_1(prefix); break; + case 17: res=check_ani_pst_ghost(prefix); break; + case 18: res=check_ani_pst_stand(prefix); break; + case 19: res=check_ani_pst_animation_2(prefix); break; //std->stc + case 20: res=check_ani_pst_animation_3(prefix); break; //stc->std + default: res=-3; break; + } + if(!res) return type; + } + return -1; +} + +int CChitemDlg::check_avatar() +{ + int ret; + POSITION pos, pos2, pos3; + CStringList ids; + CStringList prefixes; + CStringList types; + loc_entry tmploc; + CString prefix, id; + int type, res; + + changeitemname("AVATARS"); + if(!darefs.Lookup("AVATARS", tmploc)) + { + MessageBox("There is no avatars.2da (it is a GemRB specific file)!","Warning",MB_ICONEXCLAMATION|MB_OK); + return 2; + } + + Read2daColumn(tmploc, ids, 0, false); + Read2daColumn(tmploc, prefixes, 1, false); + Read2daColumn(tmploc, types, 5, false); + pos=prefixes.GetHeadPosition(); + pos2=types.GetHeadPosition(); + pos3=ids.GetHeadPosition(); + if(!pos || !pos2 || !pos3 || prefixes.GetCount()!=types.GetCount()) + { + log("File is crippled"); + return 2; + } + ret=0; + while(pos && pos2 && pos3) + { + prefix=prefixes.GetNext(pos); + type=atoi(types.GetNext(pos2)); + id=ids.GetNext(pos3); + switch(type) + { + case 0: res=check_ani_code_mirror(prefix); break; //simple bg1 animations + case 1: res=check_ani_one_file(prefix); break; + case 2: res=check_ani_four_files(prefix); break; + case 3: res=check_ani_two_files(prefix); break; + case 4: res=check_ani_code_mirror_2(prefix); break; + case 5: res=check_ani_six_files_2(prefix); break; + case 6: res=check_ani_twentytwo(prefix); break; + case 7: res=check_ani_bird(prefix); break; + case 8: res=check_ani_six_files(prefix); break; + case 9: res=check_ani_two_files_3(prefix); break; //iwd animations + case 10: res=check_ani_two_files_2(prefix); break; + case 11: res=check_ani_four_frames(prefix); break; //large animations + case 12: res=check_ani_nine_frames(prefix); break; //huge animations + case 16: res=check_ani_pst_animation_1(prefix); break; + case 17: res=check_ani_pst_ghost(prefix); break; + case 18: res=check_ani_pst_stand(prefix); break; + case 19: res=check_ani_pst_animation_2(prefix); break; //std->stc + case 20: res=check_ani_pst_animation_3(prefix); break; //stc->std + default: + res=-3; break; + } + + if(res<0) ret=-2; + switch(res) + { + case -3: + log("Invalid avatar type for %s (%s)",prefix, id); + break; + case -2: + log("Missing east animation file for %s (%s)", prefix, id); + break; + case -1: + log("Missing file for %s (%s)", prefix, id); + break; + case 1: + //this is not an exact error, completely missing animations are fine + //but if we have a better suggestion, it means avatars.2da is wrong + log("Invalid animation %s (%s) for type %d.", prefix, id, type); + type=check_all_types(prefix, type); + if(type>=0) + { + ret=-1; //this means a fixable problem + log("Suggested type is: %d", type); + } + } + } + + return ret; +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |