From: <lyn...@us...> - 2008-09-16 07:49:54
|
Revision: 5307 http://gemrb.svn.sourceforge.net/gemrb/?rev=5307&view=rev Author: lynxlupodian Date: 2008-09-16 07:50:05 +0000 (Tue, 16 Sep 2008) Log Message: ----------- bg2: use a default scrollbar also for the skills and racial enemy windows Modified Paths: -------------- gemrb/trunk/gemrb/GUIScripts/bg2/GUICG15.py gemrb/trunk/gemrb/GUIScripts/bg2/GUICG6.py Modified: gemrb/trunk/gemrb/GUIScripts/bg2/GUICG15.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/GUICG15.py 2008-09-16 07:42:22 UTC (rev 5306) +++ gemrb/trunk/gemrb/GUIScripts/bg2/GUICG15.py 2008-09-16 07:50:05 UTC (rev 5307) @@ -51,11 +51,11 @@ ScrollBarControl = GemRB.GetControl(RaceWindow, 1) GemRB.SetVarAssoc(RaceWindow, ScrollBarControl, "TopIndex", RaceCount) GemRB.SetEvent(RaceWindow, ScrollBarControl, IE_GUI_SCROLLBAR_ON_CHANGE, "DisplayRaces") + GemRB.SetDefaultScrollBar (RaceWindow, ScrollBarControl) for i in range(LISTSIZE): Button = GemRB.GetControl(RaceWindow,i+6) GemRB.SetButtonFlags(RaceWindow,Button,IE_GUI_BUTTON_RADIOBUTTON,OP_OR) - GemRB.AttachScrollBar (RaceWindow, Button, ScrollBarControl) GemRB.SetVar("HateRace",0) Modified: gemrb/trunk/gemrb/GUIScripts/bg2/GUICG6.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/GUICG6.py 2008-09-16 07:42:22 UTC (rev 5306) +++ gemrb/trunk/gemrb/GUIScripts/bg2/GUICG6.py 2008-09-16 07:50:05 UTC (rev 5307) @@ -109,12 +109,12 @@ GemRB.SetEvent(SkillWindow, ScrollBarControl, IE_GUI_SCROLLBAR_ON_CHANGE, "ScrollBarPress") #decrease it with the number of controls on screen (list size) GemRB.SetVarAssoc(SkillWindow, ScrollBarControl, "TopIndex", RowCount-3) + GemRB.SetDefaultScrollBar (SkillWindow, ScrollBarControl) for i in range(4): Button = GemRB.GetControl(SkillWindow, i+21) GemRB.SetVarAssoc(SkillWindow, Button, "Skill",i) GemRB.SetEvent(SkillWindow, Button, IE_GUI_BUTTON_ON_PRESS, "JustPress") - GemRB.AttachScrollBar (SkillWindow, Button, ScrollBarControl) Button = GemRB.GetControl(SkillWindow, i*2+11) GemRB.SetVarAssoc(SkillWindow, Button, "Skill",i) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ave...@us...> - 2008-09-24 21:14:11
|
Revision: 5354 http://gemrb.svn.sourceforge.net/gemrb/?rev=5354&view=rev Author: avenger_teambg Date: 2008-09-24 21:14:03 +0000 (Wed, 24 Sep 2008) Log Message: ----------- pendulum+gears animations Modified Paths: -------------- gemrb/trunk/gemrb/GUIScripts/bg2/GUICommonWindows.py gemrb/trunk/gemrb/GUIScripts/bg2/GUIWORLD.py Modified: gemrb/trunk/gemrb/GUIScripts/bg2/GUICommonWindows.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/GUICommonWindows.py 2008-09-24 21:13:28 UTC (rev 5353) +++ gemrb/trunk/gemrb/GUIScripts/bg2/GUICommonWindows.py 2008-09-24 21:14:03 UTC (rev 5354) @@ -98,7 +98,11 @@ # Pendulum, gears, sun/moon dial (time) # FIXME: display all animations: CPEN, CGEAR, CDIAL Button = GemRB.GetControl (Window, 9) - GemRB.SetAnimation (Window, Button, "CPEN") + Label = GemRB.CreateLabelOnButton (Window, Button, 0x10000009, "NORMAL", 0) + + GemRB.SetAnimation (Window, Label, "CPEN") + GemRB.SetAnimation (Window, Button, "CGEAR") + GemRB.SetButtonBAM (Window, Button, "CDIAL", 0, 0) GemRB.SetButtonState (Window, Button, IE_GUI_BUTTON_ENABLED) GemRB.SetButtonFlags (Window, Button, IE_GUI_BUTTON_PICTURE|IE_GUI_BUTTON_ANIMATED|IE_GUI_BUTTON_NORMAL, OP_SET) GemRB.SetEvent(Window, Button, IE_GUI_BUTTON_ON_PRESS, "GearsClicked") @@ -214,8 +218,12 @@ ActionsWindow = Window # Gears (time) when options pane is down Button = GemRB.GetControl (Window, 62) + Label = GemRB.CreateLabelOnButton (Window, Button, 0x1000003e, "NORMAL", 0) + # FIXME: display all animations - GemRB.SetAnimation (Window, Button, "CPEN") + GemRB.SetAnimation (Window, Label, "CPEN") + #GemRB.SetAnimation (Window, Button, "CGEAR") + #GemRB.SetButtonBAM (Window, Button, "CDIAL", 0, 0) GemRB.SetButtonState (Window, Button, IE_GUI_BUTTON_ENABLED) GemRB.SetButtonFlags (Window, Button, IE_GUI_BUTTON_PICTURE|IE_GUI_BUTTON_ANIMATED|IE_GUI_BUTTON_NORMAL, OP_SET) GemRB.SetEvent(Window, Button, IE_GUI_BUTTON_ON_PRESS, "GearsClicked") @@ -750,14 +758,5 @@ GemRB.SetLabelTextColor (Window, Label2, 255, 0, 0) return -def DebugInventorySlots(func=""): - print - print func - pc = GemRB.GameGetSelectedPCSingle () - for i in range(16): - print 2**i, GemRB.GetSlots (pc, 2**i, 1) - print SLOT_ANY, GemRB.GetSlots (pc, SLOT_ANY, 1) - print - def GearsClicked(): GemRB.GamePause(2,0) Modified: gemrb/trunk/gemrb/GUIScripts/bg2/GUIWORLD.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/GUIWORLD.py 2008-09-24 21:13:28 UTC (rev 5353) +++ gemrb/trunk/gemrb/GUIScripts/bg2/GUIWORLD.py 2008-09-24 21:14:03 UTC (rev 5354) @@ -224,7 +224,11 @@ # Gears (time) when options pane is down Button = GemRB.GetControl (Window, 62) + Label = GemRB.CreateLabelOnButton (Window, Button, 0x1000003e, "NORMAL", 0) + + GemRB.SetAnimation (Window, Label, "CPEN") GemRB.SetAnimation (Window, Button, "CGEAR") + GemRB.SetButtonBAM (Window, Button, "CDIAL", 0, 0) GemRB.SetButtonState (Window, Button, IE_GUI_BUTTON_ENABLED) GemRB.SetButtonFlags (Window, Button, IE_GUI_BUTTON_PICTURE|IE_GUI_BUTTON_ANIMATED|IE_GUI_BUTTON_NORMAL, OP_SET) GemRB.SetEvent(Window, Button, IE_GUI_BUTTON_ON_PRESS, "GearsClicked") This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ave...@us...> - 2008-10-06 21:08:33
|
Revision: 5410 http://gemrb.svn.sourceforge.net/gemrb/?rev=5410&view=rev Author: avenger_teambg Date: 2008-10-06 21:07:31 +0000 (Mon, 06 Oct 2008) Log Message: ----------- temporary fix for dexterity bonus in AC Modified Paths: -------------- gemrb/trunk/gemrb/GUIScripts/bg2/GUIINV.py gemrb/trunk/gemrb/GUIScripts/bg2/GUIREC.py Modified: gemrb/trunk/gemrb/GUIScripts/bg2/GUIINV.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/GUIINV.py 2008-10-06 17:33:52 UTC (rev 5409) +++ gemrb/trunk/gemrb/GUIScripts/bg2/GUIINV.py 2008-10-06 21:07:31 UTC (rev 5410) @@ -316,6 +316,9 @@ #armor class ac = GemRB.GetPlayerStat (pc, IE_ARMORCLASS) + #temporary solution, the dexterity bonus should be handled by the core + #some ac bonuses are not cummulative with this AC bonus! + ac += GemRB.GetAbilityBonus(IE_DEX, 2, GemRB.GetPlayerStat(pc, IE_DEX) ) Label = GemRB.GetControl (Window, 0x10000038) GemRB.SetText (Window, Label, str (ac)) Modified: gemrb/trunk/gemrb/GUIScripts/bg2/GUIREC.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/GUIREC.py 2008-10-06 17:33:52 UTC (rev 5409) +++ gemrb/trunk/gemrb/GUIScripts/bg2/GUIREC.py 2008-10-06 21:07:31 UTC (rev 5410) @@ -168,7 +168,10 @@ # armorclass Label = GemRB.GetControl (Window, 0x10000028) - GemRB.SetText (Window, Label, str (GemRB.GetPlayerStat (pc, IE_ARMORCLASS))) + ac = GemRB.GetPlayerStat (pc, IE_ARMORCLASS) + #This is a temporary solution, the core engine should set the stat correctly! + ac += GemRB.GetAbilityBonus(IE_DEX, 2, GemRB.GetPlayerStat(pc, IE_DEX) ) + GemRB.SetText (Window, Label, str (ac)) GemRB.SetTooltip (Window, Label, 17183) # hp now This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lyn...@us...> - 2009-01-28 18:41:49
|
Revision: 5560 http://gemrb.svn.sourceforge.net/gemrb/?rev=5560&view=rev Author: lynxlupodian Date: 2009-01-28 18:41:28 +0000 (Wed, 28 Jan 2009) Log Message: ----------- bg2: moved IsDualClassed for use by GetActorClassTitle fixed GetActorClassTitle (fallback) for dual- and multiclassed actors Modified Paths: -------------- gemrb/trunk/gemrb/GUIScripts/bg2/GUICommonWindows.py gemrb/trunk/gemrb/GUIScripts/bg2/GUIREC.py Modified: gemrb/trunk/gemrb/GUIScripts/bg2/GUICommonWindows.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/GUICommonWindows.py 2009-01-28 16:33:18 UTC (rev 5559) +++ gemrb/trunk/gemrb/GUIScripts/bg2/GUICommonWindows.py 2009-01-28 18:41:28 UTC (rev 5560) @@ -477,17 +477,33 @@ def GetActorClassTitle (actor): ClassTitle = GemRB.GetPlayerStat (actor, IE_TITLE1) - Class = GemRB.GetPlayerStat (actor, IE_CLASS) - ClassTable = GemRB.LoadTable ("classes") - Class = GemRB.FindTableValue ( ClassTable, 5, Class ) - KitTable = GemRB.LoadTable ("kitlist") - KitIndex = GetKitIndex (actor) - if ClassTitle == 0: - if KitIndex == 0: - ClassTitle=GemRB.GetTableValue (ClassTable, Class, 2) + Class = GemRB.GetPlayerStat (actor, IE_CLASS) + ClassTable = GemRB.LoadTable ("classes") + ClassIndex = GemRB.FindTableValue ( ClassTable, 5, Class ) + KitTable = GemRB.LoadTable ("kitlist") + KitIndex = GetKitIndex (actor) + Multi = GemRB.GetTableValue (ClassTable, ClassIndex, 4) + Dual = IsDualClassed (actor, 1) + + if Multi and Dual[0] == 0: # true multi class + ClassTitle = GemRB.GetTableValue (ClassTable, ClassIndex, 2) + ClassTitle = GemRB.GetString (ClassTitle) else: - ClassTitle=GemRB.GetTableValue (KitTable, KitIndex, 2) + if Dual[0]: # dual class + # first (previous) kit or class of the dual class + if Dual[0] == 1: + ClassTitle = GemRB.GetTableValue (KitTable, Dual[1], 2) + elif Dual[0] == 2: + ClassTitle = GemRB.GetTableValue (ClassTable, Dual[1], 2) + ClassTitle = GemRB.GetString (ClassTitle) + " / " + ClassTitle += GemRB.GetString (GemRB.GetTableValue (ClassTable, Dual[2], 2)) + else: # ordinary class or kit + if KitIndex: + ClassTitle = GemRB.GetTableValue (KitTable, KitIndex, 2) + else: + ClassTitle = GemRB.GetTableValue (ClassTable, ClassIndex, 2) + ClassTitle = GemRB.GetString (ClassTitle) if ClassTitle == "*": return 0 @@ -806,3 +822,46 @@ except: GemRB.SetVisible (DiscWindow, 1) +# returns an array: first field is 0 - not dual classed; 1 - kit/class; 2 - class/class +# the second and third field hold the kit/class index for each class +# if invoked with verbose==0 only returns 0 or 1 (is or is not dual classed) +def IsDualClassed(actor, verbose): + Dual = GemRB.GetPlayerStat (actor, IE_MC_FLAGS) + Dual = Dual & ~(MC_EXPORTABLE|MC_PLOT_CRITICAL|MC_BEENINPARTY|MC_HIDDEN) + + if verbose: + Class = GemRB.GetPlayerStat (actor, IE_CLASS) + ClassTable = GemRB.LoadTable ("classes") + ClassIndex = GemRB.FindTableValue (ClassTable, 5, Class) + Multi = GemRB.GetTableValue (ClassTable, ClassIndex, 4) + DualInfo = [] + KitIndex = GetKitIndex (actor) + + if (Dual & MC_WAS_ANY_CLASS) > 0: # first (previous) class of the dual class + if KitIndex: + DualInfo.append (1) + DualInfo.append (KitIndex) + else: + DualInfo.append (2) + DualInfo.append (GemRB.FindTableValue (ClassTable, 15, Dual & MC_WAS_ANY_CLASS)) + + # use the first class of the multiclass bunch that isn't the same as the first class + FirstClassIndex = ClassIndex + Mask = 1 + for i in range (16): + if Multi & Mask: + ClassIndex = GemRB.FindTableValue (ClassTable, 5, i+1) + if ClassIndex == FirstClassIndex: + Mask += Mask + continue + DualInfo.append (ClassIndex) + break + Mask += Mask + return DualInfo + else: + return (0,-1,-1) + else: + if (Dual & MC_WAS_ANY_CLASS) > 0: + return (1,-1,-1) + else: + return (0,-1,-1) Modified: gemrb/trunk/gemrb/GUIScripts/bg2/GUIREC.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/GUIREC.py 2009-01-28 16:33:18 UTC (rev 5559) +++ gemrb/trunk/gemrb/GUIScripts/bg2/GUIREC.py 2009-01-28 18:41:28 UTC (rev 5560) @@ -41,6 +41,7 @@ OldOptionsWindow = None ExportWindow = None KitInfoWindow = None +LevelUpWindow = None ExportDoneButton = None ExportFileName = "" @@ -90,7 +91,7 @@ # levelup Button = GemRB.GetControl (Window, 37) GemRB.SetText (Window, Button, 7175) - GemRB.SetEvent (Window, Button, IE_GUI_BUTTON_ON_PRESS, "LevelupWindow") + GemRB.SetEvent (Window, Button, IE_GUI_BUTTON_ON_PRESS, "LevelUpWindow") # information Button = GemRB.GetControl (Window, 1) @@ -286,7 +287,7 @@ # Next Level: <NEXTLEVEL> #collecting tokens for stat overview - ClassTitle = GemRB.GetString (GetActorClassTitle (pc) ) + ClassTitle = GetActorClassTitle (pc) GemRB.SetToken("CLASS", ClassTitle) Class = GemRB.GetPlayerStat (pc, IE_CLASS) ClassTable = GemRB.LoadTable ("classes") @@ -763,50 +764,6 @@ GemRB.SetButtonState(ExportWindow, ExportDoneButton, IE_GUI_BUTTON_ENABLED) return -# returns an array: first field is 0 - not dual classed; 1 - kit/class; 2 - class/class -# the second and third field hold the kit/class index for each class -# if invoked with verbose==0 only returns 0 or 1 (is or is not dual classed) -def IsDualClassed(actor, verbose): - Dual = GemRB.GetPlayerStat (actor, IE_MC_FLAGS) - Dual = Dual & ~(MC_EXPORTABLE|MC_PLOT_CRITICAL|MC_BEENINPARTY|MC_HIDDEN) - - if verbose: - Class = GemRB.GetPlayerStat (actor, IE_CLASS) - ClassTable = GemRB.LoadTable ("classes") - ClassIndex = GemRB.FindTableValue (ClassTable, 5, Class) - Multi = GemRB.GetTableValue (ClassTable, ClassIndex, 4) - DualInfo = [] - KitIndex = GetKitIndex (actor) - - if (Dual & MC_WAS_ANY_CLASS) > 0: # first (previous) class of the dual class - if KitIndex: - DualInfo.append (1) - DualInfo.append (KitIndex) - else: - DualInfo.append (2) - DualInfo.append (GemRB.FindTableValue (ClassTable, 15, Dual & MC_WAS_ANY_CLASS)) - - # use the first class of the multiclass bunch that isn't the same as the first class - FirstClassIndex = ClassIndex - Mask = 1 - for i in range (16): - if Multi & Mask: - ClassIndex = GemRB.FindTableValue (ClassTable, 5, i+1) - if ClassIndex == FirstClassIndex: - Mask += Mask - continue - DualInfo.append (ClassIndex) - break - Mask += Mask - return DualInfo - else: - return (0,-1,-1) - else: - if (Dual & MC_WAS_ANY_CLASS) > 0: - return (1,-1,-1) - else: - return (0,-1,-1) - def CanDualClass(actor): # human if GemRB.GetPlayerStat (actor, IE_RACE) != 1: @@ -917,6 +874,44 @@ GemRB.ShowModal (KitInfoWindow, MODAL_SHADOW_GRAY) return +def LevelUpWindow(): + global LevelUpWindow + + LevelUpWindow = GemRB.LoadWindow (3) + + InfoButton = GemRB.GetControl (LevelUpWindow, 125) + GemRB.SetText (LevelUpWindow, InfoButton, 13707) + GemRB.SetEvent (LevelUpWindow, InfoButton, IE_GUI_BUTTON_ON_PRESS, "LevelUpInfoPress") + + DoneButton = GemRB.GetControl (LevelUpWindow, 0) + GemRB.SetText (LevelUpWindow, DoneButton, 11962) + GemRB.SetEvent (LevelUpWindow, DoneButton, IE_GUI_BUTTON_ON_PRESS, "LevelUpDonePress") + GemRB.SetButtonFlags (LevelUpWindow, DoneButton, IE_GUI_BUTTON_DEFAULT, OP_OR) + + if False: + HLAButton = GemRB.GetControl (LevelUpWindow, 126) + GemRB.SetText (LevelUpWindow, HLAButton, "KUKU") + GemRB.SetEvent (LevelUpWindow, HLAButton, IE_GUI_BUTTON_ON_PRESS, "LevelUpHLAPress") + + ## hide "Character Generation" + GemRB.DeleteControl (LevelUpWindow, 126) + + ## name + Label = GemRB.GetControl (LevelUpWindow, 90) + GemRB.SetText (LevelUpWindow, Label, GemRB.GetPlayerName(pc)) + + ## class + pc = GemRB.GameGetSelectedPCSingle () + Label = GemRB.GetControl (LevelUpWindow, 106) + GemRB.SetText (LevelUpWindow, Label, GetActorClassTitle (pc)) + + GemRB.ShowModal (LevelUpWindow, MODAL_SHADOW_GRAY) + return + +def LevelUpDonePress(): + GemRB.UnloadWindow(LevelUpWindow) + return + def KitDonePress(): GemRB.UnloadWindow(KitInfoWindow) return This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lyn...@us...> - 2009-02-01 17:41:02
|
Revision: 5603 http://gemrb.svn.sourceforge.net/gemrb/?rev=5603&view=rev Author: lynxlupodian Date: 2009-02-01 17:40:56 +0000 (Sun, 01 Feb 2009) Log Message: ----------- bg2: fixed dualclass detection and added inactive class support Modified Paths: -------------- gemrb/trunk/gemrb/GUIScripts/bg2/GUICommonWindows.py gemrb/trunk/gemrb/GUIScripts/bg2/GUIREC.py Modified: gemrb/trunk/gemrb/GUIScripts/bg2/GUICommonWindows.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/GUICommonWindows.py 2009-02-01 15:13:28 UTC (rev 5602) +++ gemrb/trunk/gemrb/GUIScripts/bg2/GUICommonWindows.py 2009-02-01 17:40:56 UTC (rev 5603) @@ -841,22 +841,23 @@ if KitIndex: DualInfo.append (1) DualInfo.append (KitIndex) + FirstClassIndex = ClassIndex else: DualInfo.append (2) - DualInfo.append (GemRB.FindTableValue (ClassTable, 15, Dual & MC_WAS_ANY_CLASS)) + FirstClassIndex = GemRB.FindTableValue (ClassTable, 15, Dual & MC_WAS_ANY_CLASS) + DualInfo.append (FirstClassIndex) # use the first class of the multiclass bunch that isn't the same as the first class - FirstClassIndex = ClassIndex Mask = 1 - for i in range (16): + for i in range (1,16): if Multi & Mask: - ClassIndex = GemRB.FindTableValue (ClassTable, 5, i+1) + ClassIndex = GemRB.FindTableValue (ClassTable, 5, i) if ClassIndex == FirstClassIndex: - Mask += Mask + Mask = 1 << i continue DualInfo.append (ClassIndex) break - Mask += Mask + Mask = 1 << i return DualInfo else: return (0,-1,-1) Modified: gemrb/trunk/gemrb/GUIScripts/bg2/GUIREC.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/GUIREC.py 2009-02-01 15:13:28 UTC (rev 5602) +++ gemrb/trunk/gemrb/GUIScripts/bg2/GUIREC.py 2009-02-01 17:40:56 UTC (rev 5603) @@ -296,28 +296,45 @@ Class = GemRB.GetTableRowName (ClassTable, Class) Dual = IsDualClassed (pc, 1) if Multi: - Levels = [IE_LEVEL, IE_LEVEL2, IE_LEVEL3] + Levels = [GemRB.GetPlayerStat (pc, IE_LEVEL), GemRB.GetPlayerStat (pc, IE_LEVEL2), GemRB.GetPlayerStat (pc, IE_LEVEL3)] Classes = [0,0,0] MultiCount = 0 Mask = 1 - for i in range (16): + for i in range (1,16): if Multi&Mask: - Classes[MultiCount] = GemRB.FindTableValue (ClassTable, 5, i+1) + Classes[MultiCount] = GemRB.FindTableValue (ClassTable, 5, i) MultiCount += 1 - Mask += Mask + Mask = 1 << i - if Dual[0] > 0: # dual classed + if Dual[0] > 0: # dual classed; first show the new class stats.append ( (19722,1,'c') ) + stats.append (None) + + # the levels are stored in the class order (eg. FIGHTER_MAGE) + # the current active class does not matter! + if Classes[0] == Dual[1]: + Levels = [Levels[1], Levels[0], Levels[2]] + ClassTitle = GemRB.GetString(GemRB.GetTableValue (ClassTable, Dual[2], 2)) + GemRB.SetToken("CLASS", ClassTitle) + GemRB.SetToken("LEVEL", str (Levels[0])) + Class = GemRB.GetTableRowName (ClassTable, Dual[2]) + GemRB.SetToken("NEXTLEVEL", GetNextLevelExp (Levels[0], Class) ) + + XP2 = GemRB.GetPlayerStat (pc, IE_XP) + GemRB.SetToken("EXPERIENCE", str (XP2) ) + + stats.append ( (GemRB.GetString(16480),"",'d') ) + stats.append (None) + + # the first class (shown second) if Dual[0] == 1: ClassTitle = GemRB.GetString(GemRB.GetTableValue (KitTable, Dual[1], 2)) elif Dual[0] == 2: ClassTitle = GemRB.GetString(GemRB.GetTableValue (ClassTable, Dual[1], 2)) GemRB.SetToken("CLASS", ClassTitle) + GemRB.SetToken("LEVEL", str (Levels[1]) ) - Level = GemRB.GetPlayerStat (pc, Levels[1]) - GemRB.SetToken("LEVEL", str (Level) ) - # the xp table contains only classes XPTable = GemRB.LoadTable ("xplevel") if Dual[0] == 2: @@ -331,36 +348,26 @@ # the first class' XP is discarded and set to the minimum level # requirement, so if you don't dual class right after a levelup, # the game would eat some of your XP - XP1 = GemRB.GetTableValue (XPTable, XP1, str(Level)) + # FIXME: find out how to get this (stored in the chr) + XP1 = GemRB.GetTableValue (XPTable, XP1, str(Levels[1])) GemRB.SetToken("EXPERIENCE", str (XP1) ) - stats.append ( (GemRB.GetString(19720),"",'d') ) + if Levels[0] < Levels[1]: + # inactive + stats.append ( (19719,1,'c') ) + else: + stats.append ( (19720,1,'c') ) stats.append (None) - - # the second class - ClassTitle = GemRB.GetString(GemRB.GetTableValue (ClassTable, Dual[2], 2)) - GemRB.SetToken("CLASS", ClassTitle) - Class = GemRB.GetTableRowName (ClassTable, Dual[2]) - - Level = GemRB.GetPlayerStat (pc, Levels[0]) - GemRB.SetToken("LEVEL", str (Level) ) - GemRB.SetToken("NEXTLEVEL", GetNextLevelExp (Level, Class) ) - - # remove the first class's XP from IE_XP - XP2 = GemRB.GetPlayerStat (pc, IE_XP) - XP1 - GemRB.SetToken("EXPERIENCE", str (XP2) ) - stats.append ( (16480,1,'c') ) - stats.append (None) else: # multi classed stats.append ( (19721,1,'c') ) + stats.append (None) for i in range (MultiCount): Class = Classes[i] ClassTitle = GemRB.GetString(GemRB.GetTableValue (ClassTable, Class, 2)) GemRB.SetToken("CLASS", ClassTitle) Class = GemRB.GetTableRowName (ClassTable, i) - Level = GemRB.GetPlayerStat (pc, Levels[i]) - GemRB.SetToken("LEVEL", str (Level) ) - GemRB.SetToken("NEXTLEVEL", GetNextLevelExp (Level, Class) ) + GemRB.SetToken("LEVEL", str (Levels[i]) ) + GemRB.SetToken("NEXTLEVEL", GetNextLevelExp (Levels[i], Class) ) GemRB.SetToken("EXPERIENCE", str (GemRB.GetPlayerStat (pc, IE_XP)/MultiCount ) ) #resolve string immediately stats.append ( (GemRB.GetString(16480),"",'d') ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wjp...@us...> - 2009-02-01 22:54:03
|
Revision: 5617 http://gemrb.svn.sourceforge.net/gemrb/?rev=5617&view=rev Author: wjpalenstijn Date: 2009-02-01 22:53:57 +0000 (Sun, 01 Feb 2009) Log Message: ----------- use classes in BG2 GUIScripts Modified Paths: -------------- gemrb/trunk/gemrb/GUIScripts/bg2/CharGen6.py gemrb/trunk/gemrb/GUIScripts/bg2/CharGen9.py gemrb/trunk/gemrb/GUIScripts/bg2/CharGenCommon.py gemrb/trunk/gemrb/GUIScripts/bg2/ExportFile.py gemrb/trunk/gemrb/GUIScripts/bg2/GUICG1.py gemrb/trunk/gemrb/GUIScripts/bg2/GUICG10.py gemrb/trunk/gemrb/GUIScripts/bg2/GUICG12.py gemrb/trunk/gemrb/GUIScripts/bg2/GUICG13.py gemrb/trunk/gemrb/GUIScripts/bg2/GUICG15.py gemrb/trunk/gemrb/GUIScripts/bg2/GUICG19.py gemrb/trunk/gemrb/GUIScripts/bg2/GUICG2.py gemrb/trunk/gemrb/GUIScripts/bg2/GUICG22.py gemrb/trunk/gemrb/GUIScripts/bg2/GUICG23.py gemrb/trunk/gemrb/GUIScripts/bg2/GUICG24.py gemrb/trunk/gemrb/GUIScripts/bg2/GUICG3.py gemrb/trunk/gemrb/GUIScripts/bg2/GUICG4.py gemrb/trunk/gemrb/GUIScripts/bg2/GUICG5.py gemrb/trunk/gemrb/GUIScripts/bg2/GUICG6.py gemrb/trunk/gemrb/GUIScripts/bg2/GUICG7.py gemrb/trunk/gemrb/GUIScripts/bg2/GUICG8.py gemrb/trunk/gemrb/GUIScripts/bg2/GUICG9.py gemrb/trunk/gemrb/GUIScripts/bg2/GUICommonWindows.py gemrb/trunk/gemrb/GUIScripts/bg2/GUIINV.py gemrb/trunk/gemrb/GUIScripts/bg2/GUIJRNL.py gemrb/trunk/gemrb/GUIScripts/bg2/GUILOAD.py gemrb/trunk/gemrb/GUIScripts/bg2/GUIMA.py gemrb/trunk/gemrb/GUIScripts/bg2/GUIMG.py gemrb/trunk/gemrb/GUIScripts/bg2/GUIMOVIE.py gemrb/trunk/gemrb/GUIScripts/bg2/GUIOPT.py gemrb/trunk/gemrb/GUIScripts/bg2/GUIOPT10.py gemrb/trunk/gemrb/GUIScripts/bg2/GUIOPT12.py gemrb/trunk/gemrb/GUIScripts/bg2/GUIOPT6.py gemrb/trunk/gemrb/GUIScripts/bg2/GUIOPT7.py gemrb/trunk/gemrb/GUIScripts/bg2/GUIOPT8.py gemrb/trunk/gemrb/GUIScripts/bg2/GUIOPT9.py gemrb/trunk/gemrb/GUIScripts/bg2/GUIPR.py gemrb/trunk/gemrb/GUIScripts/bg2/GUIREC.py gemrb/trunk/gemrb/GUIScripts/bg2/GUISAVE.py gemrb/trunk/gemrb/GUIScripts/bg2/GUISONGS.py gemrb/trunk/gemrb/GUIScripts/bg2/GUISTORE.py gemrb/trunk/gemrb/GUIScripts/bg2/GUIWORLD.py gemrb/trunk/gemrb/GUIScripts/bg2/ImportFile.py gemrb/trunk/gemrb/GUIScripts/bg2/ImportGame.py gemrb/trunk/gemrb/GUIScripts/bg2/LoadScreen.py gemrb/trunk/gemrb/GUIScripts/bg2/MessageWindow.py gemrb/trunk/gemrb/GUIScripts/bg2/Start.py gemrb/trunk/gemrb/GUIScripts/bg2/Start2.py gemrb/trunk/gemrb/GUIScripts/bg2/StartOpt.py gemrb/trunk/gemrb/GUIScripts/bg2/TextScreen.py Modified: gemrb/trunk/gemrb/GUIScripts/bg2/CharGen6.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/CharGen6.py 2009-02-01 22:39:00 UTC (rev 5616) +++ gemrb/trunk/gemrb/GUIScripts/bg2/CharGen6.py 2009-02-01 22:53:57 UTC (rev 5617) @@ -16,23 +16,23 @@ RemoveKnownSpells (IE_SPELL_TYPE_PRIEST) # learn divine spells if appropriate - ClassSkillsTable = GemRB.LoadTable ("clskills") + ClassSkillsTable = GemRB.LoadTableObject ("clskills") #change this to GetPlayerStat once IE_CLASS is directly stored - ClassTable = GemRB.LoadTable ("classes") + ClassTable = GemRB.LoadTableObject ("classes") ClassIndex = GemRB.GetVar ("Class")-1 - Class = GemRB.GetTableValue (ClassTable, ClassIndex, 5) + Class = ClassTable.GetValue (ClassIndex, 5) MyChar = GemRB.GetVar ("Slot") - TableName = GemRB.GetTableValue (ClassSkillsTable, Class, 1, 0) + TableName = ClassSkillsTable.GetValue (Class, 1, 0) if TableName == "*": # it isn't a cleric or paladin, so check for druids and rangers - TableName = GemRB.GetTableValue (ClassSkillsTable, Class, 0, 0) + TableName = ClassSkillsTable.GetValue (Class, 0, 0) ClassFlag = 0x4000 else: ClassFlag = 0x8000 # check for cleric/rangers, who get access to all the spells # possibly redundant block (see SPL bit 0x0020) - if TableName == "MXSPLPRS" and GemRB.GetTableValue (ClassSkillsTable, Class, 0, 0) != "*": + if TableName == "MXSPLPRS" and ClassSkillsTable.GetValue (Class, 0, 0) != "*": ClassFlag = 0 # nulify the memorizable spell counts @@ -46,7 +46,5 @@ Learnable = GetLearnablePriestSpells( ClassFlag, GemRB.GetVar ("Alignment"), 1) for i in range(len(Learnable) ): GemRB.LearnSpell (MyChar, Learnable[i], 0) - GemRB.UnloadTable (ClassSkillsTable) - GemRB.UnloadTable (ClassTable) return Modified: gemrb/trunk/gemrb/GUIScripts/bg2/CharGen9.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/CharGen9.py 2009-02-01 22:39:00 UTC (rev 5616) +++ gemrb/trunk/gemrb/GUIScripts/bg2/CharGen9.py 2009-02-01 22:53:57 UTC (rev 5617) @@ -22,10 +22,10 @@ #set my character up MyChar = GemRB.GetVar ("Slot") GemRB.SetPlayerStat (MyChar, IE_SEX, GemRB.GetVar ("Gender") ) - KitTable = GemRB.LoadTable ("kitlist") - RaceTable = GemRB.LoadTable ("races") + KitTable = GemRB.LoadTableObject ("kitlist") + RaceTable = GemRB.LoadTableObject ("races") Race = GemRB.GetVar ("Race")-1 - GemRB.SetPlayerStat (MyChar, IE_RACE, GemRB.GetTableValue (RaceTable, Race, 3) ) + GemRB.SetPlayerStat (MyChar, IE_RACE, RaceTable.GetValue (Race, 3) ) t = GemRB.GetVar ("Alignment") GemRB.SetPlayerStat (MyChar, IE_ALIGNMENT, t) @@ -40,21 +40,20 @@ #So, for mages, the kit equals to the unusability value #but for others there is an additional mapping by kitlist.2da - ClassTable = GemRB.LoadTable ("classes") + ClassTable = GemRB.LoadTableObject ("classes") ClassIndex = GemRB.GetVar ("Class")-1 - Class = GemRB.GetTableValue (ClassTable, ClassIndex, 5) - ClassName = GemRB.GetTableRowName (ClassTable, ClassIndex) + Class = ClassTable.GetValue (ClassIndex, 5) + ClassName = ClassTable.GetRowName (ClassIndex) GemRB.SetPlayerStat (MyChar, IE_CLASS, Class) - TmpTable = GemRB.LoadTable ("clskills") + TmpTable = GemRB.LoadTableObject ("clskills") #mage spells - TableName = GemRB.GetTableValue (TmpTable, Class, 2, 0) - GemRB.UnloadTable (TmpTable) + TableName = TmpTable.GetValue (Class, 2, 0) # TODO check if this is really needed KitIndex = GemRB.GetVar ("Class Kit") if TableName != "*": - KitValue = GemRB.GetTableValue(KitTable, KitIndex, 6) + KitValue = KitTable.GetValue(KitIndex, 6) if KitValue == "*": KitValue = 0x4000 SetupSpellLevels(MyChar, TableName, IE_SPELL_TYPE_WIZARD, 1) @@ -64,42 +63,35 @@ print "KitValue**********:",KitValue GemRB.SetPlayerStat (MyChar, IE_KIT, KitValue) - TmpTable=GemRB.LoadTable ("repstart") - AlignmentTable = GemRB.LoadTable ("aligns") - t = GemRB.FindTableValue (AlignmentTable, 3, t) - t = GemRB.GetTableValue (TmpTable,t,0) * 10 + TmpTable=GemRB.LoadTableObject ("repstart") + AlignmentTable = GemRB.LoadTableObject ("aligns") + t = AlignmentTable.FindValue (3, t) + t = TmpTable.GetValue (t,0) * 10 GemRB.SetPlayerStat (MyChar, IE_REPUTATION, t) #slot 1 is the protagonist if MyChar == 1: GemRB.GameSetReputation( t ) - GemRB.UnloadTable (TmpTable) - TmpTable=GemRB.LoadTable ("strtgold") - t = GemRB.Roll (GemRB.GetTableValue (TmpTable,Class,1),GemRB.GetTableValue (TmpTable,Class,0), GemRB.GetTableValue (TmpTable,Class,2) ) - GemRB.SetPlayerStat (MyChar, IE_GOLD, t*GemRB.GetTableValue (TmpTable,Class,3) ) - GemRB.UnloadTable (AlignmentTable) - GemRB.UnloadTable (ClassTable) - GemRB.UnloadTable (RaceTable) - GemRB.UnloadTable (TmpTable) + TmpTable=GemRB.LoadTableObject ("strtgold") + t = GemRB.Roll (TmpTable.GetValue (Class,1),TmpTable.GetValue (Class,0), TmpTable.GetValue (Class,2) ) + GemRB.SetPlayerStat (MyChar, IE_GOLD, t*TmpTable.GetValue (Class,3) ) GemRB.SetPlayerStat (MyChar, IE_HATEDRACE, GemRB.GetVar ("HatedRace") ) - TmpTable=GemRB.LoadTable ("ability") - AbilityCount = GemRB.GetTableRowCount (TmpTable) + TmpTable=GemRB.LoadTableObject ("ability") + AbilityCount = TmpTable.GetRowCount () for i in range(AbilityCount): - StatID=GemRB.GetTableValue (TmpTable, i,4) + StatID=TmpTable.GetValue (i,4) GemRB.SetPlayerStat (MyChar, StatID, GemRB.GetVar ("Ability "+str(i) ) ) - GemRB.UnloadTable (TmpTable) - TmpTable=GemRB.LoadTable ("weapprof") - ProfCount = GemRB.GetTableRowCount (TmpTable) + TmpTable=GemRB.LoadTableObject ("weapprof") + ProfCount = TmpTable.GetRowCount () #bg2 weapprof.2da contains the bg1 proficiencies too, skipping those for i in range(ProfCount-8): - StatID = GemRB.GetTableValue (TmpTable, i+8, 0) + StatID = TmpTable.GetValue (i+8, 0) Value = GemRB.GetVar ("Prof "+str(i) ) if Value: GemRB.ApplyEffect (MyChar, "Proficiency", Value, StatID ) - GemRB.UnloadTable (TmpTable) SetColorStat (MyChar, IE_HAIR_COLOR, GemRB.GetVar ("HairColor") ) SetColorStat (MyChar, IE_SKIN_COLOR, GemRB.GetVar ("SkinColor") ) @@ -123,19 +115,17 @@ GemRB.SetPlayerStat (MyChar, IE_CHR, GemRB.GetVar ("Ability 5")) #setting skills (thieving/ranger) - TmpTable = GemRB.LoadTable ("skills") - RowCount = GemRB.GetTableRowCount (TmpTable)-2 + TmpTable = GemRB.LoadTableObject ("skills") + RowCount = TmpTable.GetRowCount ()-2 for i in range(RowCount): - stat = GemRB.GetTableValue (TmpTable, i+2, 2) + stat = TmpTable.GetValue (i+2, 2) value = GemRB.GetVar ("Skill "+str(i) ) GemRB.SetPlayerStat (MyChar, stat, value ) - GemRB.UnloadTable (TmpTable) GemRB.SetPlayerName (MyChar, GemRB.GetToken ("CHARNAME"), 0) - TmpTable = GemRB.LoadTable ("clskills") - GemRB.SetPlayerStat (MyChar, IE_XP, GemRB.GetTableValue (TmpTable, Class, 3) ) #this will also set the level (automatically) - GemRB.UnloadTable (TmpTable) + TmpTable = GemRB.LoadTableObject ("clskills") + GemRB.SetPlayerStat (MyChar, IE_XP, TmpTable.GetValue (Class, 3) ) #this will also set the level (automatically) #does all the rest LargePortrait = GemRB.GetToken ("LargePortrait") @@ -151,8 +141,8 @@ if EquipmentColName == "SORCERER": EquipmentColName = "MAGE" else: - EquipmentColName = GemRB.GetTableValue (KitTable, KitIndex, 0) - EquipmentTable = GemRB.LoadTable ("25stweap") + EquipmentColName = KitTable.GetValue (KitIndex, 0) + EquipmentTable = GemRB.LoadTableObject ("25stweap") # a map of slots in the table to the real slots # SLOT_BAG is invalid, so use the inventory (first occurence) # SLOT_INVENTORY: use -1 instead, that's what CreateItem expects @@ -161,9 +151,9 @@ SLOT_BELT, SLOT_QUIVER, SLOT_QUIVER, SLOT_QUIVER, \ SLOT_ITEM, SLOT_ITEM, SLOT_ITEM, -1, -1, SLOT_WEAPON ] #loop over rows - item slots - for slot in range(0, GemRB.GetTableRowCount (EquipmentTable)): - slotname = GemRB.GetTableRowName (EquipmentTable, slot) - item = GemRB.GetTableValue (EquipmentTable, slotname, EquipmentColName) + for slot in range(0, EquipmentTable.GetRowCount ()): + slotname = EquipmentTable.GetRowName (slot) + item = EquipmentTable.GetValue (slotname, EquipmentColName) if item == "*": continue realslot = GemRB.GetSlots (MyChar, RealSlots[slot], -1) @@ -190,16 +180,15 @@ GemRB.CreateItem(MyChar, item, targetslot, count, 0, 0) GemRB.ChangeItemFlag (MyChar, targetslot, IE_INV_ITEM_IDENTIFIED, OP_OR) - GemRB.UnloadTable (EquipmentTable) - GemRB.UnloadTable (KitTable) playmode = GemRB.GetVar ("PlayMode") if playmode >=0: #LETS PLAY!! GemRB.EnterGame() else: #leaving multi player pregen - GemRB.UnloadWindow (CharGenWindow) + if CharGenWindow: + CharGenWindow.Unload () #when export is done, go to start if GameIsTOB(): GemRB.SetToken ("NextScript","Start2") Modified: gemrb/trunk/gemrb/GUIScripts/bg2/CharGenCommon.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/CharGenCommon.py 2009-02-01 22:39:00 UTC (rev 5616) +++ gemrb/trunk/gemrb/GUIScripts/bg2/CharGenCommon.py 2009-02-01 22:53:57 UTC (rev 5617) @@ -13,177 +13,177 @@ global CharGenWindow, TextAreaControl, PortraitName GemRB.LoadWindowPack ("GUICG", 640, 480) - CharGenWindow = GemRB.LoadWindow (0) - GemRB.SetWindowFrame (CharGenWindow) + CharGenWindow = GemRB.LoadWindowObject (0) + CharGenWindow.SetFrame () GemRB.SetVar ("Step", step) ### # Buttons ### - PortraitButton = GemRB.GetControl (CharGenWindow, 12) - GemRB.SetButtonFlags(CharGenWindow, PortraitButton, IE_GUI_BUTTON_PICTURE|IE_GUI_BUTTON_NO_IMAGE,OP_SET) + PortraitButton = CharGenWindow.GetControl (12) + PortraitButton.SetFlags(IE_GUI_BUTTON_PICTURE|IE_GUI_BUTTON_NO_IMAGE,OP_SET) PortraitName = GemRB.GetToken ("LargePortrait") if PortraitName != "": - GemRB.SetButtonPicture (CharGenWindow, PortraitButton, PortraitName, "NOPORTMD") - GemRB.SetButtonState (CharGenWindow, PortraitButton, IE_GUI_BUTTON_LOCKED) + PortraitButton.SetPicture (PortraitName, "NOPORTMD") + PortraitButton.SetState (IE_GUI_BUTTON_LOCKED) - GenderButton = GemRB.GetControl (CharGenWindow, 0) - GemRB.SetText (CharGenWindow, GenderButton, 11956) + GenderButton = CharGenWindow.GetControl (0) + GenderButton.SetText (11956) SetButtonStateFromStep ("GenderButton", GenderButton, step) - RaceButton = GemRB.GetControl (CharGenWindow, 1) - GemRB.SetText (CharGenWindow, RaceButton, 11957) + RaceButton = CharGenWindow.GetControl (1) + RaceButton.SetText (11957) SetButtonStateFromStep ("RaceButton", RaceButton, step) - ClassButton = GemRB.GetControl (CharGenWindow, 2) - GemRB.SetText (CharGenWindow, ClassButton, 11959) + ClassButton = CharGenWindow.GetControl (2) + ClassButton.SetText (11959) SetButtonStateFromStep ("ClassButton", ClassButton, step) - AlignmentButton = GemRB.GetControl (CharGenWindow, 3) - GemRB.SetText (CharGenWindow, AlignmentButton, 11958) + AlignmentButton = CharGenWindow.GetControl (3) + AlignmentButton.SetText (11958) SetButtonStateFromStep ("AlignmentButton", AlignmentButton, step) - AbilitiesButton = GemRB.GetControl (CharGenWindow, 4) - GemRB.SetText (CharGenWindow, AbilitiesButton, 11960) + AbilitiesButton = CharGenWindow.GetControl (4) + AbilitiesButton.SetText (11960) SetButtonStateFromStep ("AbilitiesButton", AbilitiesButton, step) - SkillButton = GemRB.GetControl (CharGenWindow, 5) - GemRB.SetText (CharGenWindow,SkillButton, 17372) + SkillButton = CharGenWindow.GetControl (5) + SkillButton.SetText (17372) SetButtonStateFromStep ("SkillButton", SkillButton, step) - AppearanceButton = GemRB.GetControl (CharGenWindow, 6) - GemRB.SetText (CharGenWindow,AppearanceButton, 11961) + AppearanceButton = CharGenWindow.GetControl (6) + AppearanceButton.SetText (11961) SetButtonStateFromStep ("AppearanceButton", AppearanceButton, step) - NameButton = GemRB.GetControl (CharGenWindow, 7) - GemRB.SetText (CharGenWindow, NameButton, 11963) + NameButton = CharGenWindow.GetControl (7) + NameButton.SetText (11963) SetButtonStateFromStep ("NameButton", NameButton, step) - BackButton = GemRB.GetControl (CharGenWindow, 11) - GemRB.SetText (CharGenWindow, BackButton, 15416) - GemRB.SetButtonState (CharGenWindow,BackButton,IE_GUI_BUTTON_ENABLED) - GemRB.SetEvent (CharGenWindow, BackButton, IE_GUI_BUTTON_ON_PRESS, "BackPress") + BackButton = CharGenWindow.GetControl (11) + BackButton.SetText (15416) + BackButton.SetState (IE_GUI_BUTTON_ENABLED) + BackButton.SetEvent (IE_GUI_BUTTON_ON_PRESS, "BackPress") - AcceptButton = GemRB.GetControl (CharGenWindow, 8) + AcceptButton = CharGenWindow.GetControl (8) playmode = GemRB.GetVar ("PlayMode") if playmode>=0: - GemRB.SetText (CharGenWindow, AcceptButton, 11962) + AcceptButton.SetText (11962) else: - GemRB.SetText (CharGenWindow, AcceptButton, 13956) + AcceptButton.SetText (13956) SetButtonStateFromStep ("AcceptButton", AcceptButton, step) - #GemRB.SetButtonFlags(CharGenWindow,AcceptButton, IE_GUI_BUTTON_DEFAULT,OP_OR) - #GemRB.SetEvent (CharGenWindow, AcceptButton, IE_GUI_BUTTON_ON_PRESS, "NextPress") + #AcceptButton.SetFlags(IE_GUI_BUTTON_DEFAULT,OP_OR) + #AcceptButton.SetEvent (IE_GUI_BUTTON_ON_PRESS, "NextPress") - ScrollBar = GemRB.GetControl (CharGenWindow, 10) - GemRB.SetDefaultScrollBar (CharGenWindow, ScrollBar) + ScrollBar = CharGenWindow.GetControl (10) + ScrollBar.SetDefaultScrollBar () - ImportButton = GemRB.GetControl (CharGenWindow, 13) - GemRB.SetText (CharGenWindow, ImportButton, 13955) - GemRB.SetButtonState (CharGenWindow,ImportButton,IE_GUI_BUTTON_ENABLED) - GemRB.SetEvent (CharGenWindow, ImportButton, IE_GUI_BUTTON_ON_PRESS, "ImportPress") + ImportButton = CharGenWindow.GetControl (13) + ImportButton.SetText (13955) + ImportButton.SetState (IE_GUI_BUTTON_ENABLED) + ImportButton.SetEvent (IE_GUI_BUTTON_ON_PRESS, "ImportPress") - CancelButton = GemRB.GetControl (CharGenWindow, 15) + CancelButton = CharGenWindow.GetControl (15) if step == 1: - GemRB.SetText (CharGenWindow, CancelButton, 13727) # Cancel + CancelButton.SetText (13727) # Cancel else: - GemRB.SetText (CharGenWindow, CancelButton, 8159) # Start over - GemRB.SetButtonState (CharGenWindow,CancelButton,IE_GUI_BUTTON_ENABLED) - GemRB.SetEvent (CharGenWindow, CancelButton, IE_GUI_BUTTON_ON_PRESS, "CancelPress") + CancelButton.SetText (8159) # Start over + CancelButton.SetState (IE_GUI_BUTTON_ENABLED) + CancelButton.SetEvent (IE_GUI_BUTTON_ON_PRESS, "CancelPress") - BiographyButton = GemRB.GetControl (CharGenWindow, 16) - GemRB.SetText (CharGenWindow, BiographyButton, 18003) - GemRB.SetEvent(CharGenWindow, BiographyButton, IE_GUI_BUTTON_ON_PRESS, "BiographyPress") + BiographyButton = CharGenWindow.GetControl (16) + BiographyButton.SetText (18003) + BiographyButton.SetEvent(IE_GUI_BUTTON_ON_PRESS, "BiographyPress") if step == 9: - GemRB.SetButtonState (CharGenWindow, BiographyButton, IE_GUI_BUTTON_ENABLED) + BiographyButton.SetState (IE_GUI_BUTTON_ENABLED) else: - GemRB.SetButtonState (CharGenWindow, BiographyButton, IE_GUI_BUTTON_DISABLED) + BiographyButton.SetState (IE_GUI_BUTTON_DISABLED) ### # Stat overview ### - RaceTable = GemRB.LoadTable ("races") - ClassTable = GemRB.LoadTable ("classes") - KitTable = GemRB.LoadTable ("kitlist") - AlignmentTable = GemRB.LoadTable ("aligns") - AbilityTable = GemRB.LoadTable ("ability") + RaceTable = GemRB.LoadTableObject ("races") + ClassTable = GemRB.LoadTableObject ("classes") + KitTable = GemRB.LoadTableObject ("kitlist") + AlignmentTable = GemRB.LoadTableObject ("aligns") + AbilityTable = GemRB.LoadTableObject ("ability") MyChar = GemRB.GetVar ("Slot") for part in range(1, step+1): if part == 1: - TextAreaControl= GemRB.GetControl (CharGenWindow,9) + TextAreaControl= CharGenWindow.GetControl (9) if step == 1: - GemRB.SetText (CharGenWindow, TextAreaControl, "[capital=0]" + GemRB.GetString(16575)) + TextAreaControl.SetText ("[capital=0]" + GemRB.GetString(16575)) elif step == 9: - GemRB.SetText (CharGenWindow, TextAreaControl, "[capital=0]" + GemRB.GetString(1047)) + TextAreaControl.SetText ("[capital=0]" + GemRB.GetString(1047)) else: - GemRB.SetText (CharGenWindow, TextAreaControl, "[capital=0]" + GemRB.GetString(12135)) + TextAreaControl.SetText ("[capital=0]" + GemRB.GetString(12135)) elif part == 2: - GemRB.TextAreaAppend (CharGenWindow, TextAreaControl, ": ") + TextAreaControl.Append (": ") if step == 9: - GemRB.TextAreaAppend (CharGenWindow, TextAreaControl, GemRB.GetToken ("CHARNAME") ) - GemRB.TextAreaAppend (CharGenWindow, TextAreaControl, 12135, -1) - GemRB.TextAreaAppend (CharGenWindow, TextAreaControl,": ") + TextAreaControl.Append (GemRB.GetToken ("CHARNAME") ) + TextAreaControl.Append (12135, -1) + TextAreaControl.Append (": ") if GemRB.GetVar ("Gender") == 1: - GemRB.TextAreaAppend (CharGenWindow, TextAreaControl, 1050) + TextAreaControl.Append (1050) else: - GemRB.TextAreaAppend (CharGenWindow, TextAreaControl, 1051) + TextAreaControl.Append (1051) elif part == 3: - GemRB.TextAreaAppend (CharGenWindow, TextAreaControl, 1048, -1) # new line - GemRB.TextAreaAppend (CharGenWindow, TextAreaControl, ": ") + TextAreaControl.Append (1048, -1) # new line + TextAreaControl.Append (": ") GemRB.TextAreaAppend (CharGenWindow, TextAreaControl, \ - GemRB.GetTableValue (RaceTable, GemRB.GetVar ("Race")-1,2)) + RaceTable.GetValue (GemRB.GetVar ("Race")-1,2)) elif part == 4: - GemRB.TextAreaAppend (CharGenWindow, TextAreaControl, 12136, -1) - GemRB.TextAreaAppend (CharGenWindow, TextAreaControl,": ") + TextAreaControl.Append (12136, -1) + TextAreaControl.Append (": ") KitIndex = GemRB.GetVar ("Class Kit") if KitIndex == 0: # FIXME: use GetPCTitle from GUIREC? Class = GemRB.GetVar ("Class")-1 - ClassTitle=GemRB.GetTableValue (ClassTable, Class, 2) + ClassTitle=ClassTable.GetValue (Class, 2) else: - ClassTitle=GemRB.GetTableValue (KitTable, KitIndex, 2) - GemRB.TextAreaAppend (CharGenWindow, TextAreaControl, ClassTitle) + ClassTitle=KitTable.GetValue (KitIndex, 2) + TextAreaControl.Append (ClassTitle) elif part == 5: - GemRB.TextAreaAppend (CharGenWindow, TextAreaControl, 1049, -1) - GemRB.TextAreaAppend (CharGenWindow, TextAreaControl, ": ") - v = GemRB.FindTableValue (AlignmentTable, 3, GemRB.GetVar ("Alignment")) - GemRB.TextAreaAppend (CharGenWindow, TextAreaControl,GemRB.GetTableValue (AlignmentTable,v,2)) + TextAreaControl.Append (1049, -1) + TextAreaControl.Append (": ") + v = AlignmentTable.FindValue (3, GemRB.GetVar ("Alignment")) + TextAreaControl.Append (AlignmentTable.GetValue (v,2)) elif part == 6: - GemRB.TextAreaAppend (CharGenWindow, TextAreaControl, "\n") + TextAreaControl.Append ("\n") for i in range(6): - v = GemRB.GetTableValue (AbilityTable, i, 2) - GemRB.TextAreaAppend (CharGenWindow, TextAreaControl, v, -1) + v = AbilityTable.GetValue (i, 2) + TextAreaControl.Append (v, -1) GemRB.TextAreaAppend (CharGenWindow, TextAreaControl, ": " \ + str(GemRB.GetVar ("Ability "+str(i))) ) elif part == 7: - GemRB.TextAreaAppend (CharGenWindow, TextAreaControl, "\n\n") + TextAreaControl.Append ("\n\n") # thieving and other skills info = "" - SkillTable = GemRB.LoadTable ("skills") - KitList = GemRB.LoadTable ("kitlist") - ClassTable = GemRB.LoadTable ("classes") + SkillTable = GemRB.LoadTableObject ("skills") + KitList = GemRB.LoadTableObject ("kitlist") + ClassTable = GemRB.LoadTableObject ("classes") Class = GemRB.GetVar ("Class") - 1 - ClassID = GemRB.GetTableValue (ClassTable, Class, 5) - Class = GemRB.FindTableValue (ClassTable, 5, ClassID) + ClassID = ClassTable.GetValue (Class, 5) + Class = ClassTable.FindValue (5, ClassID) # TODO: what about monks and any others not in skills.2da? # TODO also before: skill{rng,brd}.2da <-- add rangers to clskills.2da KitName = GetKitIndex (MyChar) if KitName == 0: - KitName = GemRB.GetTableRowName (ClassTable, Class) + KitName = ClassTable.GetRowName (Class) else: - KitName = GemRB.GetTableValue (KitList, KitName, 0) + KitName = KitList.GetValue (KitName, 0) - if GemRB.GetTableValue (SkillTable,"RATE", KitName) != -1: - for skill in range(GemRB.GetTableRowCount (SkillTable) - 2): - name = GemRB.GetTableValue (SkillTable, skill+2, 1) + if SkillTable.GetValue ("RATE", KitName) != -1: + for skill in range(SkillTable.GetRowCount () - 2): + name = SkillTable.GetValue (skill+2, 1) name = GemRB.GetString (name) value = GemRB.GetVar ("Skill " + str(skill)) if value >= 0: info += name + ": " + str(value) + "\n" if info != "": info = "\n" + info + "\n" - GemRB.TextAreaAppend (CharGenWindow, TextAreaControl, 8442) - GemRB.TextAreaAppend (CharGenWindow, TextAreaControl, info) + TextAreaControl.Append (8442) + TextAreaControl.Append (info) # arcane spells info = "" @@ -194,8 +194,8 @@ info += GemRB.GetString (Spell) + "\n" if info != "": info = "\n" + info + "\n" - GemRB.TextAreaAppend (CharGenWindow, TextAreaControl, 11027) - GemRB.TextAreaAppend (CharGenWindow, TextAreaControl, info) + TextAreaControl.Append (11027) + TextAreaControl.Append (info) # divine spells info = "" @@ -206,45 +206,44 @@ info += GemRB.GetString (Spell) + "\n" if info != "": info = "\n" + info + "\n" - GemRB.TextAreaAppend (CharGenWindow, TextAreaControl, 11028) - GemRB.TextAreaAppend (CharGenWindow, TextAreaControl, info) + TextAreaControl.Append (11028) + TextAreaControl.Append (info) # racial enemy info = "" Race = GemRB.GetVar ("HateRace") if Race: - RaceTable = GemRB.LoadTable ("HATERACE") - Row = GemRB.FindTableValue (RaceTable, 1, Race) - info = GemRB.GetString (GemRB.GetTableValue(RaceTable, Row, 0)) + RaceTable = GemRB.LoadTableObject ("HATERACE") + Row = RaceTable.FindValue (1, Race) + info = GemRB.GetString (RaceTable.GetValue(Row, 0)) if info != "": info = "\n" + info + "\n\n" - GemRB.TextAreaAppend (CharGenWindow, TextAreaControl, 15982) - GemRB.TextAreaAppend (CharGenWindow, TextAreaControl, info) + TextAreaControl.Append (15982) + TextAreaControl.Append (info) # weapon proficiencies - GemRB.TextAreaAppend (CharGenWindow, TextAreaControl, 9466) - GemRB.TextAreaAppend (CharGenWindow, TextAreaControl, "\n") - TmpTable=GemRB.LoadTable ("weapprof") - ProfCount = GemRB.GetTableRowCount (TmpTable) + TextAreaControl.Append (9466) + TextAreaControl.Append ("\n") + TmpTable=GemRB.LoadTableObject ("weapprof") + ProfCount = TmpTable.GetRowCount () #bg2 weapprof.2da contains the bg1 proficiencies too, skipping those for i in range(ProfCount-8): # 4294967296 overflows to -1 on some arches, so we use a smaller invalid strref - strref = GemRB.GetTableValue (TmpTable, i+8, 1) + strref = TmpTable.GetValue (i+8, 1) if strref == -1 or strref > 500000: continue - Weapon = GemRB.GetString (GemRB.GetTableValue (TmpTable, i+8, 1)) + Weapon = GemRB.GetString (TmpTable.GetValue (i+8, 1)) Value = GemRB.GetVar ("Prof "+str(i) ) if Value: pluses = " " for plus in range(0, Value): pluses += "+" - GemRB.TextAreaAppend (CharGenWindow, TextAreaControl, Weapon + pluses + "\n") - GemRB.UnloadTable (TmpTable) + TextAreaControl.Append (Weapon + pluses + "\n") elif part == 8: break - GemRB.SetVisible (CharGenWindow, 1) + CharGenWindow.SetVisible (1) return def SetButtonStateFromStep (buttonName, button, step): @@ -278,16 +277,17 @@ elif buttonName == "AcceptButton": if step == 9: state = IE_GUI_BUTTON_ENABLED - GemRB.SetButtonState (CharGenWindow, button, state) + button.SetState (state) if state == IE_GUI_BUTTON_ENABLED: - GemRB.SetButtonFlags (CharGenWindow, button, IE_GUI_BUTTON_DEFAULT, OP_OR) - GemRB.SetEvent (CharGenWindow, button, IE_GUI_BUTTON_ON_PRESS, "NextPress") + button.SetFlags (IE_GUI_BUTTON_DEFAULT, OP_OR) + button.SetEvent (IE_GUI_BUTTON_ON_PRESS, "NextPress") return def CancelPress(): global CharGenWindow - GemRB.UnloadWindow (CharGenWindow) + if CharGenWindow: + CharGenWindow.Unload () step = GemRB.GetVar ("Step") if step == 1: @@ -301,7 +301,8 @@ def ImportPress(): global CharGenWindow - GemRB.UnloadWindow (CharGenWindow) + if CharGenWindow: + CharGenWindow.Unload () step = GemRB.GetVar ("Step") # TODO: check why this is handled differently @@ -314,7 +315,8 @@ def BackPress(): global CharGenWindow - GemRB.UnloadWindow (CharGenWindow) + if CharGenWindow: + CharGenWindow.Unload () step = GemRB.GetVar ("Step") if step == 1: @@ -327,7 +329,8 @@ def NextPress(): global CharGenWindow - GemRB.UnloadWindow (CharGenWindow) + if CharGenWindow: + CharGenWindow.Unload () step = GemRB.GetVar ("Step") if step == 1: @@ -347,6 +350,7 @@ return def BiographyPress(): - GemRB.UnloadWindow(CharGenWindow) + if CharGenWindow: + CharGenWindow.Unload() GemRB.SetNextScript("GUICG23") #biography return Modified: gemrb/trunk/gemrb/GUIScripts/bg2/ExportFile.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/ExportFile.py 2009-02-01 22:39:00 UTC (rev 5616) +++ gemrb/trunk/gemrb/GUIScripts/bg2/ExportFile.py 2009-02-01 22:53:57 UTC (rev 5617) @@ -9,42 +9,44 @@ global ImportWindow, TextAreaControl GemRB.LoadWindowPack ("GUICG",640,480) - ImportWindow = GemRB.LoadWindow (21) + ImportWindow = GemRB.LoadWindowObject (21) - TextAreaControl = GemRB.GetControl (ImportWindow, 4) - GemRB.SetText (ImportWindow, TextAreaControl, 10962) + TextAreaControl = ImportWindow.GetControl (4) + TextAreaControl.SetText (10962) - TextAreaControl = GemRB.GetControl (ImportWindow,2) - GemRB.SetTextAreaFlags (ImportWindow, TextAreaControl, IE_GUI_TEXTAREA_SELECTABLE) - GemRB.GetCharacters (ImportWindow, TextAreaControl) + TextAreaControl = ImportWindow.GetControl (2) + TextAreaControl.SetFlags (IE_GUI_TEXTAREA_SELECTABLE) + TextAreaControl.GetCharacters () - DoneButton = GemRB.GetControl (ImportWindow, 0) - GemRB.SetText (ImportWindow, DoneButton, 2610) - GemRB.SetButtonState (ImportWindow, DoneButton, IE_GUI_BUTTON_DISABLED) + DoneButton = ImportWindow.GetControl (0) + DoneButton.SetText (2610) + DoneButton.SetState (IE_GUI_BUTTON_DISABLED) - CancelButton = GemRB.GetControl (ImportWindow,1) - GemRB.SetText (ImportWindow, CancelButton, 15416) + CancelButton = ImportWindow.GetControl (1) + CancelButton.SetText (15416) - GemRB.SetEvent (ImportWindow, DoneButton, IE_GUI_BUTTON_ON_PRESS, "DonePress") - GemRB.SetEvent (ImportWindow, CancelButton, IE_GUI_BUTTON_ON_PRESS, "CancelPress") - GemRB.SetEvent (ImportWindow, TextAreaControl, IE_GUI_TEXTAREA_ON_CHANGE, "SelectPress") - GemRB.SetVisible (ImportWindow,1) + DoneButton.SetEvent (IE_GUI_BUTTON_ON_PRESS, "DonePress") + CancelButton.SetEvent (IE_GUI_BUTTON_ON_PRESS, "CancelPress") + TextAreaControl.SetEvent (IE_GUI_TEXTAREA_ON_CHANGE, "SelectPress") + ImportWindow.SetVisible (1) return def SelectPress (): - DoneButton = GemRB.GetControl (ImportWindow, 0) - GemRB.SetButtonState (ImportWindow, DoneButton, IE_GUI_BUTTON_ENABLED) + DoneButton = ImportWindow.GetControl (0) + DoneButton.SetState (IE_GUI_BUTTON_ENABLED) return def DonePress (): - FileName = GemRB.QueryText (ImportWindow, TextAreaControl) + FileName = TextAreaControl.QueryText () Slot = GemRB.GetVar ("Slot") GemRB.SaveCharacter (Slot, FileName) - GemRB.UnloadWindow (ImportWindow) + if ImportWindow: + ImportWindow.Unload () GemRB.SetNextScript (GemRB.GetToken("NextScript")) return def CancelPress (): - GemRB.UnloadWindow (ImportWindow) + if ImportWindow: + ImportWindow.Unload () GemRB.SetNextScript (GemRB.GetToken("NextScript")) return Modified: gemrb/trunk/gemrb/GUIScripts/bg2/GUICG1.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/GUICG1.py 2009-02-01 22:39:00 UTC (rev 5616) +++ gemrb/trunk/gemrb/GUIScripts/bg2/GUICG1.py 2009-02-01 22:53:57 UTC (rev 5617) @@ -10,68 +10,71 @@ GemRB.LoadWindowPack("GUICG", 640, 480) #this hack will redraw the base CG window - GenderWindow = GemRB.LoadWindow(0) - PortraitButton = GemRB.GetControl(GenderWindow, 12) - GemRB.SetButtonFlags(GenderWindow, PortraitButton, IE_GUI_BUTTON_PICTURE|IE_GUI_BUTTON_NO_IMAGE,OP_SET) - ImportButton = GemRB.GetControl(GenderWindow, 13) - GemRB.SetText(GenderWindow, ImportButton, 13955) - GemRB.SetButtonState(GenderWindow,ImportButton,IE_GUI_BUTTON_DISABLED) + GenderWindow = GemRB.LoadWindowObject(0) + PortraitButton = GenderWindow.GetControl(12) + PortraitButton.SetFlags(IE_GUI_BUTTON_PICTURE|IE_GUI_BUTTON_NO_IMAGE,OP_SET) + ImportButton = GenderWindow.GetControl(13) + ImportButton.SetText(13955) + ImportButton.SetState(IE_GUI_BUTTON_DISABLED) - CancelButton = GemRB.GetControl(GenderWindow, 15) - GemRB.SetText(GenderWindow, CancelButton, 13727) - GemRB.SetButtonState(GenderWindow,CancelButton,IE_GUI_BUTTON_DISABLED) + CancelButton = GenderWindow.GetControl(15) + CancelButton.SetText(13727) + CancelButton.SetState(IE_GUI_BUTTON_DISABLED) - BiographyButton = GemRB.GetControl(GenderWindow, 16) - GemRB.SetText(GenderWindow, BiographyButton, 18003) - GemRB.SetButtonState(GenderWindow,BiographyButton,IE_GUI_BUTTON_DISABLED) + BiographyButton = GenderWindow.GetControl(16) + BiographyButton.SetText(18003) + BiographyButton.SetState(IE_GUI_BUTTON_DISABLED) - GemRB.SetVisible(GenderWindow,1) + GenderWindow.SetVisible(1) GemRB.DrawWindows() - GemRB.UnloadWindow(GenderWindow) - GenderWindow = GemRB.LoadWindow(1) + if GenderWindow: + GenderWindow.Unload() + GenderWindow = GemRB.LoadWindowObject(1) - BackButton = GemRB.GetControl(GenderWindow,6) - GemRB.SetText(GenderWindow,BackButton,15416) - DoneButton = GemRB.GetControl(GenderWindow,0) - GemRB.SetText(GenderWindow,DoneButton,11973) - GemRB.SetButtonFlags(GenderWindow, DoneButton, IE_GUI_BUTTON_DEFAULT,OP_OR) + BackButton = GenderWindow.GetControl(6) + BackButton.SetText(15416) + DoneButton = GenderWindow.GetControl(0) + DoneButton.SetText(11973) + DoneButton.SetFlags(IE_GUI_BUTTON_DEFAULT,OP_OR) - TextAreaControl = GemRB.GetControl(GenderWindow, 5) - GemRB.SetText(GenderWindow,TextAreaControl,17236) + TextAreaControl = GenderWindow.GetControl(5) + TextAreaControl.SetText(17236) - MaleButton = GemRB.GetControl(GenderWindow,2) - GemRB.SetButtonFlags(GenderWindow,MaleButton,IE_GUI_BUTTON_RADIOBUTTON,OP_OR) + MaleButton = GenderWindow.GetControl(2) + MaleButton.SetFlags(IE_GUI_BUTTON_RADIOBUTTON,OP_OR) - FemaleButton = GemRB.GetControl(GenderWindow,3) - GemRB.SetButtonFlags(GenderWindow,FemaleButton,IE_GUI_BUTTON_RADIOBUTTON,OP_OR) + FemaleButton = GenderWindow.GetControl(3) + FemaleButton.SetFlags(IE_GUI_BUTTON_RADIOBUTTON,OP_OR) - GemRB.SetVarAssoc(GenderWindow,MaleButton,"Gender",1) - GemRB.SetVarAssoc(GenderWindow,FemaleButton,"Gender",2) - GemRB.SetEvent(GenderWindow,MaleButton,IE_GUI_BUTTON_ON_PRESS,"ClickedMale") - GemRB.SetEvent(GenderWindow,FemaleButton,IE_GUI_BUTTON_ON_PRESS,"ClickedFemale") - GemRB.SetEvent(GenderWindow,DoneButton,IE_GUI_BUTTON_ON_PRESS,"NextPress") - GemRB.SetEvent(GenderWindow,BackButton,IE_GUI_BUTTON_ON_PRESS,"BackPress") - GemRB.SetButtonState(GenderWindow,DoneButton,IE_GUI_BUTTON_DISABLED) - GemRB.SetVisible(GenderWindow,1) + MaleButton.SetVarAssoc("Gender",1) + FemaleButton.SetVarAssoc("Gender",2) + MaleButton.SetEvent(IE_GUI_BUTTON_ON_PRESS,"ClickedMale") + FemaleButton.SetEvent(IE_GUI_BUTTON_ON_PRESS,"ClickedFemale") + DoneButton.SetEvent(IE_GUI_BUTTON_ON_PRESS,"NextPress") + BackButton.SetEvent(IE_GUI_BUTTON_ON_PRESS,"BackPress") + DoneButton.SetState(IE_GUI_BUTTON_DISABLED) + GenderWindow.SetVisible(1) return def ClickedMale(): - GemRB.SetText(GenderWindow,TextAreaControl,13083) - GemRB.SetButtonState(GenderWindow,DoneButton,IE_GUI_BUTTON_ENABLED) + TextAreaControl.SetText(13083) + DoneButton.SetState(IE_GUI_BUTTON_ENABLED) return def ClickedFemale(): - GemRB.SetText(GenderWindow,TextAreaControl,13084) - GemRB.SetButtonState(GenderWindow,DoneButton,IE_GUI_BUTTON_ENABLED) + TextAreaControl.SetText(13084) + DoneButton.SetState(IE_GUI_BUTTON_ENABLED) return def BackPress(): - GemRB.UnloadWindow(GenderWindow) + if GenderWindow: + GenderWindow.Unload() GemRB.SetNextScript("CharGen") GemRB.SetVar("Gender",0) #scrapping the gender value return def NextPress(): - GemRB.UnloadWindow(GenderWindow) + if GenderWindow: + GenderWindow.Unload() GemRB.SetNextScript("GUICG12") #appearance return Modified: gemrb/trunk/gemrb/GUIScripts/bg2/GUICG10.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/GUICG10.py 2009-02-01 22:39:00 UTC (rev 5616) +++ gemrb/trunk/gemrb/GUIScripts/bg2/GUICG10.py 2009-02-01 22:53:57 UTC (rev 5617) @@ -11,70 +11,72 @@ global ClassTable GemRB.LoadWindowPack("GUICG", 640, 480) - ClassTable = GemRB.LoadTable("classes") - ClassCount = GemRB.GetTableRowCount(ClassTable)+1 - ClassWindow = GemRB.LoadWindow(10) - TmpTable=GemRB.LoadTable("races") - RaceName = GemRB.GetTableRowName(TmpTable, GemRB.GetVar("Race")-1 ) + ClassTable = GemRB.LoadTableObject("classes") + ClassCount = ClassTable.GetRowCount()+1 + ClassWindow = GemRB.LoadWindowObject(10) + TmpTable=GemRB.LoadTableObject("races") + RaceName = TmpTable.GetRowName(GemRB.GetVar("Race")-1 ) j=0 for i in range(1,ClassCount): - if GemRB.GetTableValue(ClassTable,i-1,4)==0: + if ClassTable.GetValue(i-1,4)==0: continue if j>11: - Button = GemRB.GetControl(ClassWindow,j+7) + Button = ClassWindow.GetControl(j+7) else: - Button = GemRB.GetControl(ClassWindow,j+2) - GemRB.SetButtonState(ClassWindow, Button, IE_GUI_BUTTON_DISABLED) - GemRB.SetButtonFlags(ClassWindow, Button, IE_GUI_BUTTON_RADIOBUTTON,OP_OR) + Button = ClassWindow.GetControl(j+2) + Button.SetState(IE_GUI_BUTTON_DISABLED) + Button.SetFlags(IE_GUI_BUTTON_RADIOBUTTON,OP_OR) j = j + 1 j=0 for i in range(1,ClassCount): - ClassName = GemRB.GetTableRowName(ClassTable, i-1) - Allowed = GemRB.GetTableValue(ClassTable, ClassName, RaceName) - if GemRB.GetTableValue(ClassTable,i-1,4)==0: + ClassName = ClassTable.GetRowName(i-1) + Allowed = ClassTable.GetValue(ClassName, RaceName) + if ClassTable.GetValue(i-1,4)==0: continue if j>11: - Button = GemRB.GetControl(ClassWindow,j+7) + Button = ClassWindow.GetControl(j+7) else: - Button = GemRB.GetControl(ClassWindow,j+2) + Button = ClassWindow.GetControl(j+2) - t = GemRB.GetTableValue(ClassTable, i-1, 0) - GemRB.SetText(ClassWindow, Button, t ) + t = ClassTable.GetValue(i-1, 0) + Button.SetText(t ) j=j+1 if Allowed ==0: continue - GemRB.SetButtonState(ClassWindow, Button, IE_GUI_BUTTON_ENABLED) - GemRB.SetEvent(ClassWindow, Button, IE_GUI_BUTTON_ON_PRESS, "ClassPress") - GemRB.SetVarAssoc(ClassWindow, Button , "Class", i) #multiclass, actually + Button.SetState(IE_GUI_BUTTON_ENABLED) + Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, "ClassPress") + Button.SetVarAssoc("Class", i) #multiclass, actually - BackButton = GemRB.GetControl(ClassWindow,14) - GemRB.SetText(ClassWindow,BackButton,15416) - DoneButton = GemRB.GetControl(ClassWindow,0) - GemRB.SetText(ClassWindow,DoneButton,11973) + BackButton = ClassWindow.GetControl(14) + BackButton.SetText(15416) + DoneButton = ClassWindow.GetControl(0) + DoneButton.SetText(11973) - TextAreaControl = GemRB.GetControl(ClassWindow, 12) - GemRB.SetText(ClassWindow,TextAreaControl,17244) + TextAreaControl = ClassWindow.GetControl(12) + TextAreaControl.SetText(17244) - GemRB.SetEvent(ClassWindow,DoneButton,IE_GUI_BUTTON_ON_PRESS,"NextPress") - GemRB.SetEvent(ClassWindow,BackButton,IE_GUI_BUTTON_ON_PRESS,"BackPress") - GemRB.SetButtonState(ClassWindow,DoneButton,IE_GUI_BUTTON_DISABLED) - GemRB.SetVisible(ClassWindow,1) + DoneButton.SetEvent(IE_GUI_BUTTON_ON_PRESS,"NextPress") + BackButton.SetEvent(IE_GUI_BUTTON_ON_PRESS,"BackPress") + DoneButton.SetState(IE_GUI_BUTTON_DISABLED) + ClassWindow.SetVisible(1) return def ClassPress(): Class = GemRB.GetVar("Class")-1 - GemRB.SetText(ClassWindow,TextAreaControl, GemRB.GetTableValue(ClassTable,Class,1) ) - GemRB.SetButtonState(ClassWindow, DoneButton, IE_GUI_BUTTON_ENABLED) + TextAreaControl.SetText(ClassTable.GetValue(Class,1) ) + DoneButton.SetState(IE_GUI_BUTTON_ENABLED) return def BackPress(): GemRB.SetVar("Class",0) # scrapping it - GemRB.UnloadWindow(ClassWindow) + if ClassWindow: + ClassWindow.Unload() GemRB.SetNextScript("GUICG2") return def NextPress(): - GemRB.UnloadWindow(ClassWindow) + if ClassWindow: + ClassWindow.Unload() GemRB.SetNextScript("CharGen4") #alignment return Modified: gemrb/trunk/gemrb/GUIScripts/bg2/GUICG12.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/GUICG12.py 2009-02-01 22:39:00 UTC (rev 5616) +++ gemrb/trunk/gemrb/GUIScripts/bg2/GUICG12.py 2009-02-01 22:53:57 UTC (rev 5617) @@ -11,8 +11,8 @@ def SetPicture (): global PortraitsTable, LastPortrait - PortraitName = GemRB.GetTableRowName (PortraitsTable, LastPortrait)+"L" - GemRB.SetButtonPicture (AppearanceWindow, PortraitButton, PortraitName, "NOPORTLG") + PortraitName = PortraitsTable.GetRowName (LastPortrait)+"L" + PortraitButton.SetPicture (PortraitName, "NOPORTLG") return def OnLoad(): @@ -22,53 +22,53 @@ Gender=GemRB.GetVar ("Gender") GemRB.LoadWindowPack ("GUICG", 640, 480) - AppearanceWindow = GemRB.LoadWindow (11) + AppearanceWindow = GemRB.LoadWindowObject (11) #Load the Portraits Table - PortraitsTable = GemRB.LoadTable ("PICTURES") + PortraitsTable = GemRB.LoadTableObject ("PICTURES") LastPortrait = 0 - TextAreaControl = GemRB.GetControl (AppearanceWindow, 7) - GemRB.SetText (AppearanceWindow, TextAreaControl,"") # why is this here? + TextAreaControl = AppearanceWindow.GetControl (7) + TextAreaControl.SetText ("") # why is this here? - PortraitButton = GemRB.GetControl (AppearanceWindow, 1) - GemRB.SetButtonFlags (AppearanceWindow, PortraitButton, IE_GUI_BUTTON_PICTURE|IE_GUI_BUTTON_NO_IMAGE,OP_SET) - GemRB.SetButtonState (AppearanceWindow, PortraitButton, IE_GUI_BUTTON_LOCKED) + PortraitButton = AppearanceWindow.GetControl (1) + PortraitButton.SetFlags (IE_GUI_BUTTON_PICTURE|IE_GUI_BUTTON_NO_IMAGE,OP_SET) + PortraitButton.SetState (IE_GUI_BUTTON_LOCKED) - LeftButton = GemRB.GetControl (AppearanceWindow,2) - RightButton = GemRB.GetControl (AppearanceWindow,3) + LeftButton = AppearanceWindow.GetControl (2) + RightButton = AppearanceWindow.GetControl (3) - BackButton = GemRB.GetControl (AppearanceWindow,5) - GemRB.SetText (AppearanceWindow,BackButton,15416) + BackButton = AppearanceWindow.GetControl (5) + BackButton.SetText (15416) - CustomButton = GemRB.GetControl (AppearanceWindow, 6) - GemRB.SetText (AppearanceWindow, CustomButton, 17545) + CustomButton = AppearanceWindow.GetControl (6) + CustomButton.SetText (17545) - DoneButton = GemRB.GetControl (AppearanceWindow,0) - GemRB.SetText (AppearanceWindow,DoneButton,11973) - GemRB.SetButtonFlags (AppearanceWindow, DoneButton, IE_GUI_BUTTON_DEFAULT,OP_OR) + DoneButton = AppearanceWindow.GetControl (0) + DoneButton.SetText (11973) + DoneButton.SetFlags (IE_GUI_BUTTON_DEFAULT,OP_OR) - GemRB.SetEvent (AppearanceWindow,RightButton,IE_GUI_BUTTON_ON_PRESS,"RightPress") - GemRB.SetEvent (AppearanceWindow,LeftButton,IE_GUI_BUTTON_ON_PRESS,"LeftPress") - GemRB.SetEvent (AppearanceWindow,BackButton,IE_GUI_BUTTON_ON_PRESS,"BackPress") - GemRB.SetEvent (AppearanceWindow,CustomButton,IE_GUI_BUTTON_ON_PRESS,"CustomPress") - GemRB.SetEvent (AppearanceWindow,DoneButton,IE_GUI_BUTTON_ON_PRESS,"NextPress") + RightButton.SetEvent (IE_GUI_BUTTON_ON_PRESS,"RightPress") + LeftButton.SetEvent (IE_GUI_BUTTON_ON_PRESS,"LeftPress") + BackButton.SetEvent (IE_GUI_BUTTON_ON_PRESS,"BackPress") + CustomButton.SetEvent (IE_GUI_BUTTON_ON_PRESS,"CustomPress") + DoneButton.SetEvent (IE_GUI_BUTTON_ON_PRESS,"NextPress") while True: - if GemRB.GetTableValue (PortraitsTable, LastPortrait, 0) == Gender: + if PortraitsTable.GetValue (LastPortrait, 0) == Gender: SetPicture () break LastPortrait = LastPortrait + 1 - GemRB.SetVisible (AppearanceWindow,1) + AppearanceWindow.SetVisible (1) return def RightPress(): global LastPortrait while True: LastPortrait = LastPortrait + 1 - if LastPortrait >= GemRB.GetTableRowCount (PortraitsTable): + if LastPortrait >= PortraitsTable.GetRowCount (): LastPortrait = 0 - if GemRB.GetTableValue (PortraitsTable, LastPortrait, 0) == Gender: + if PortraitsTable.GetValue (LastPortrait, 0) == Gender: SetPicture () return @@ -77,13 +77,14 @@ while True: LastPortrait = LastPortrait - 1 if LastPortrait < 0: - LastPortrait = GemRB.GetTableRowCount (PortraitsTable)-1 - if GemRB.GetTableValue (PortraitsTable, LastPortrait, 0) == Gender: + LastPortrait = PortraitsTable.GetRowCount ()-1 + if PortraitsTable.GetValue (LastPortrait, 0) == Gender: SetPicture () return def BackPress(): - GemRB.UnloadWindow (AppearanceWindow) + if AppearanceWindow: + AppearanceWindow.Unload () GemRB.SetNextScript ("GUICG1") GemRB.SetVar ("Gender",0) #scrapping the gender value return @@ -91,63 +92,66 @@ def CustomDone(): Window = CustomWindow - Portrait = GemRB.QueryText (Window, PortraitList1) + Portrait = PortraitList1.QueryText () GemRB.SetToken ("LargePortrait", Portrait) - Portrait = GemRB.QueryText (Window, PortraitList2) + Portrait = PortraitList2.QueryText () GemRB.SetToken ("SmallPortrait", Portrait) - GemRB.UnloadWindow (Window) - GemRB.UnloadWindow (AppearanceWindow) + if Window: + Window.Unload () + if AppearanceWindow: + AppearanceWindow.Unload () GemRB.SetNextScript ("CharGen2") return def CustomAbort(): - GemRB.UnloadWindow (CustomWindow) + if CustomWindow: + CustomWindow.Unload () return def LargeCustomPortrait(): Window = CustomWindow - Portrait = GemRB.QueryText (Window, PortraitList1) + Portrait = PortraitList1.QueryText () #small hack if GemRB.GetVar ("Row1") == RowCount1: return - Label = GemRB.GetControl (Window, 0x10000007) - GemRB.SetText (Window, Label, Portrait) + Label = Window.GetControl (0x10000007) + Label.SetText (Portrait) - Button = GemRB.GetControl (Window, 6) + Button = Window.GetControl (6) if Portrait=="": Portrait = "NOPORTMD" - GemRB.SetButtonState (Window, Button, IE_GUI_BUTTON_DISABLED) + Button.SetState (IE_GUI_BUTTON_DISABLED) else: - if GemRB.QueryText (Window, PortraitList2)!="": - GemRB.SetButtonState (Window, Button, IE_GUI_BUTTON_ENABLED) + if PortraitList2.QueryText ()!="": + Button.SetState (IE_GUI_BUTTON_ENABLED) - Button = GemRB.GetControl (Window, 0) - GemRB.SetButtonPicture (Window, Button, Portrait, "NOPORTMD") + Button = Window.GetControl (0) + Button.SetPicture (Portrait, "NOPORTMD") return def SmallCustomPortrait(): Window = CustomWindow - Portrait = GemRB.QueryText (Window, PortraitList2) + Portrait = PortraitList2.QueryText () #small hack if GemRB.GetVar ("Row2") == RowCount2: return - Label = GemRB.GetControl (Window, 0x10000008) - GemRB.SetText (Window, Label, Portrait) + Label = Window.GetControl (0x10000008) + Label.SetText (Portrait) - Button = GemRB.GetControl (Window, 6) + Button = Window.GetControl (6) if Portrait=="": Portrait = "NOPORTSM" - GemRB.SetButtonState (Window, Button, IE_GUI_BUTTON_DISABLED) + Button.SetState (IE_GUI_BUTTON_DISABLED) else: - if GemRB.QueryText (Window, PortraitList1)!="": - GemRB.SetButtonState (Window, Button, IE_GUI_BUTTON_ENABLED) + if PortraitList1.QueryText ()!="": + Button.SetState (IE_GUI_BUTTON_ENABLED) - Button = GemRB.GetControl (Window, 1) - GemRB.SetButtonPicture (Window, Button, Portrait, "NOPORTSM") + Button = Window.GetControl (1) + Button.SetPicture (Portrait, "NOPORTSM") return def CustomPress(): @@ -155,48 +159,48 @@ global RowCount1, RowCount2 global CustomWindow - CustomWindow = Window = GemRB.LoadWindow (18) - PortraitList1 = GemRB.GetControl (Window, 2) + CustomWindow = Window = GemRB.LoadWindowObject (18) + PortraitList1 = Window.GetControl (2) RowCount1 = GemRB.GetPortraits (Window, PortraitList1, 0) - GemRB.SetEvent (Window, PortraitList1, IE_GUI_TEXTAREA_ON_CHANGE, "LargeCustomPortrait") + PortraitList1.SetEvent (IE_GUI_TEXTAREA_ON_CHANGE, "LargeCustomPortrait") GemRB.SetVar ("Row1", RowCount1) - GemRB.SetVarAssoc (Window, PortraitList1, "Row1",RowCount1) + PortraitList1.SetVarAssoc ("Row1",RowCount1) - PortraitList2 = GemRB.GetControl (Window, 4) + PortraitList2 = Window.GetControl (4) RowCount2 = GemRB.GetPortraits (Window, PortraitList2, 1) - GemRB.SetEvent (Window, PortraitList2, IE_GUI_TEXTAREA_ON_CHANGE, "SmallCustomPortrait") + PortraitList2.SetEvent (IE_GUI_TEXTAREA_ON_CHANGE, "SmallCustomPortrait") GemRB.SetVar ("Row2", RowCount2) - GemRB.SetVarAssoc (Window, PortraitList2, "Row2",RowCount2) + PortraitList2.SetVarAssoc ("Row2",RowCount2) - Button = GemRB.GetControl (Window, 6) - GemRB.SetText (Window, Button, 11973) - GemRB.SetEvent (Window, Button, IE_GUI_BUTTON_ON_PRESS, "CustomDone") - GemRB.SetButtonState (Window, Button, IE_GUI_BUTTON_DISABLED) + Button = Window.GetControl (6) + Button.SetText (11973) + Button.SetEvent (IE_GUI_BUTTON_ON_PRESS, "CustomDone") + Button.SetState (IE_GUI_BUTTON_DISABLED) - Button = GemRB.GetControl (Window, 7) - GemRB.SetText (Window, Button, 15416) - GemRB.SetEvent (Window, Button, IE_GUI_BUTTON_ON_PRESS, "CustomAbort") + Button = Window.GetControl (7) + Button.SetText (15416) + Button.SetEvent (IE_GUI_BUTTON_ON_PRESS, "CustomAbort") - Button = GemRB.GetControl (Window, 0) - PortraitName = GemRB.GetTableRowName (PortraitsTable, LastPortrait)+"M" - GemRB.SetButtonPicture (Window, Button, PortraitName, "NOPORTMD") - GemRB.SetButtonState (Window, Button, IE_GUI_BUTTON_LOCKED) + Button = Window.GetControl (0) + PortraitName = PortraitsTable.GetRowName (LastPortrait)+"M" + Button.SetPicture (PortraitName, "NOPORTMD") + Button.SetState (IE_GUI_BUTTON_LOCKED) - Button = GemRB.GetControl (Window, 1) - PortraitName = GemRB.GetTableRowName (PortraitsTable, LastPortrait)+"S" - GemRB.SetButtonPicture (Window, Button, PortraitName, "NOPORTSM") - GemRB.SetButtonState (Window, Button, IE_GUI_BUTTON_LOCKED) + Button = Window.GetControl (1) + PortraitName = PortraitsTable.GetRowName (LastPortrait)+"S" + Button.SetPicture (PortraitName, "NOPORTSM") + Button.SetState (IE_GUI_BUTTON_LOCKED) - GemRB.ShowModal (Window, MODAL_SHADOW_NONE) + Window.ShowModal (MODAL_SHADOW_NONE) return def NextPress(): - GemRB.UnloadWindow (AppearanceWindow) - PortraitTable = GemRB.LoadTable ("pictures") - PortraitName = GemRB.GetTableRowName (PortraitTable, LastPortrait ) + if AppearanceWindow: + AppearanceWindow.Unload () + PortraitTable = GemRB.LoadTableObject ("pictures") + PortraitName = PortraitTable.GetRowName (LastPortrait ) GemRB.SetToken ("SmallPortrait", PortraitName+"S") GemRB.SetToken ("LargePortrait", PortraitName+"M") - GemRB.UnloadTable (PortraitTable) GemRB.SetNextScript ("CharGen2") #Before race return Modified: gemrb/trunk/gemrb/GUIScripts/bg2/GUICG13.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/GUICG13.py 2009-02-01 22:39:00 UTC (rev 5616) +++ gemrb/trunk/gemrb/GUIScripts/bg2/GUICG13.py 2009-02-01 22:53:57 UTC (rev 5617) @@ -20,21 +20,20 @@ IE_ANIM_ID = 206 def RefreshPDoll(): - PDollTable = GemRB.LoadTable("pdolls") + PDollTable = GemRB.LoadTableObject("pdolls") AnimID = 0x6000 - table = GemRB.LoadTable("avprefr") - AnimID = AnimID+GemRB.GetTableValue(table, GemRB.GetVar("Race"),0) - table = GemRB.LoadTable("avprefc") - ClassTable = GemRB.LoadTable("classes") + table = GemRB.LoadTableObject("avprefr") + AnimID = AnimID+table.GetValue(GemRB.GetVar("Race"),0) + table = GemRB.LoadTableObject("avprefc") + ClassTable = GemRB.LoadTableObject("classes") ClassIndex = GemRB.GetVar ("Class")-1 - Class = GemRB.GetTableValue(ClassTable, ClassIndex, 5) - AnimID = AnimID+GemRB.GetTableValue(table, Class, 0) - table = GemRB.LoadTable("avprefg") - AnimID = AnimID+GemRB.GetTableValue(table, GemRB.GetVar("Gender"),0) - ResRef = GemRB.GetTableValue(PDollTable,hex(AnimID), "LEVEL1") + Class = ClassTable.GetValue(ClassIndex, 5) + AnimID = AnimID+table.GetValue(Class, 0) + table = GemRB.LoadTableObject("avprefg") + AnimID = AnimID+table.GetValue(GemRB.GetVar("Gender"),0) + ResRef = PDollTable.GetValue(hex(AnimID), "LEVEL1") - GemRB.SetButtonPLT(ColorWindow, PDollButton, ResRef, - 0, MinorColor, MajorColor, SkinColor, 0, 0, HairColor, 0) + PDollButton.SetButtonPLT(ResRef, 0, MinorColor, MajorColor, SkinColor, 0, 0, HairColor, 0) return def OnLoad(): @@ -43,118 +42,119 @@ global HairColor, SkinColor, MajorColor, MinorColor GemRB.LoadWindowPack("GUICG", 640, 480) - ColorWindow=GemRB.LoadWindow(13) + ColorWindow=GemRB.LoadWindowObject(13) - ColorTable = GemRB.LoadTable("clowncol") + ColorTable = GemRB.LoadTableObject("clowncol") #set these colors to some default - PortraitTable = GemRB.LoadTable("pictures") + PortraitTable = GemRB.LoadTableObject("pictures") PortraitName = GemRB.GetToken("LargePortrait") PortraitName = PortraitName[0:len(PortraitName)-1] - PortraitIndex = GemRB.GetTableRowIndex(PortraitTable, PortraitName) + PortraitIndex = PortraitTable.GetRowIndex(PortraitName) if PortraitIndex<0: - HairColor=GemRB.GetTableValue(PortraitTable,0,1) - SkinColor=GemRB.GetTableValue(PortraitTable,0,2) - MinorColor=GemRB.GetTableValue(PortraitTable,0,3) - MajorColor=GemRB.GetTableValue(PortraitTable,0,4) + HairColor=PortraitTable.GetValue(0,1) + SkinColor=PortraitTable.GetValue(0,2) + MinorColor=PortraitTable.GetValue(0,3) + MajorColor=PortraitTable.GetValue(0,4) else: - HairColor=GemRB.GetTableValue(PortraitTable,PortraitIndex,1) - SkinColor=GemRB.GetTableValue(PortraitTable,PortraitIndex,2) - MinorColor=GemRB.GetTableValue(PortraitTable,PortraitIndex,3) - MajorColor=GemRB.GetTableValue(PortraitTable,PortraitIndex,4) + HairColor=PortraitTable.GetValue(PortraitIndex,1) + SkinColor=PortraitTable.GetValue(PortraitIndex,2) + MinorColor=PortraitTable.GetValue(PortraitIndex,3) + MajorColor=PortraitTable.GetValue(PortraitIndex,4) - PDollButton = GemRB.GetControl(ColorWindow, 1) - GemRB.SetButtonFlags(ColorWindow, PDollButton, IE_GUI_BUTTON_PICTURE,OP_OR) + PDollButton = ColorWindow.GetControl(1) + PDollButton.SetFlags(IE_GUI_BUTTON_PICTURE,OP_OR) - HairButton = GemRB.GetControl(ColorWindow, 2) - GemRB.SetButtonFlags(ColorWindow, HairButton, IE_GUI_BUTTON_PICTURE,OP_OR) - GemRB.SetEvent(ColorWindow, HairButton, IE_GUI_BUTTON_ON_PRESS,"HairPress") - GemRB.SetButtonBAM(ColorWindow, HairButton, "COLGRAD", 1, 0, HairColor) + HairButton = ColorWindow.GetControl(2) + HairButton.SetFlags(IE_GUI_BUTTON_PICTURE,OP_OR) + HairButton.SetEvent(IE_GUI_BUTTON_ON_PRESS,"HairPress") + HairButton.SetBAM("COLGRAD", 1, 0, HairColor) - SkinButton = GemRB.GetControl(ColorWindow, 3) - GemRB.SetButtonFlags(ColorWindow, SkinButton, IE_GUI_BUTTON_PICTURE,OP_OR) - GemRB.SetEvent(ColorWindow, SkinButton, IE_GUI_BUTTON_ON_PRESS,"SkinPress") - GemRB.SetButtonBAM(ColorWindow, SkinButton, "COLGRAD", 1, 0, SkinColor) + SkinButton = ColorWindow.GetControl(3) + SkinButton.SetFlags(IE_GUI_BUTTON_PICTURE,OP_OR) + SkinButton.SetEvent(IE_GUI_BUTTON_ON_PRESS,"SkinPress") + SkinButton.SetBAM("COLGRAD", 1, 0, SkinColor) - MajorButton = GemRB.GetControl(ColorWindow, 5) - GemRB.SetButtonFlags(ColorWindow, MajorButton, IE_GUI_BUTTON_PICTURE,OP_OR) - GemRB.SetEvent(ColorWindow, MajorButton, IE_GUI_BUTTON_ON_PRESS,"MajorPress") - GemRB.SetButtonBAM(ColorWindow, MajorButton, "COLGRAD", 1, 0, MinorColor) + MajorButton = ColorWindow.GetControl(5) + MajorButton.SetFlags(IE_GUI_BUTTON_PICTURE,OP_OR) + MajorButton.SetEvent(IE_GUI_BUTTON_ON_PRESS,"MajorPress") + MajorButton.SetBAM("COLGRAD", 1, 0, MinorColor) - MinorButton = GemRB.GetControl(ColorWindow, 4) - GemRB.SetButtonFlags(ColorWindow, MinorButton, IE_GUI_BUTTON_PICTURE,OP_OR) - GemRB.SetEvent(ColorWindow, MinorButton, IE_GUI_BUTTON_ON_PRESS,"MinorPress") - GemRB.SetButtonBAM(ColorWindow, MinorButton, "COLGRAD", 1, 0, MajorColor) + MinorButton = ColorWindow.GetControl(4) + MinorButton.SetFlags(IE_GUI_BUTTON_PICTURE,OP_OR) + MinorButton.SetEvent(IE_GUI_BUTTON_ON_PRESS,"MinorPress") + MinorButton.SetBAM("COLGRAD", 1, 0, MajorColor) - BackButton = GemRB.GetControl(ColorWindow,13) - GemRB.SetText(ColorWindow,BackButton,15416) - DoneButton = GemRB.GetControl(ColorWindow,0) - GemRB.SetText(ColorWindow,DoneButton,11973) - GemRB.SetButtonFlags(ColorWindow, DoneButton, IE_GUI_BUTTON_DEFAULT,OP_OR) + BackButton = ColorWindow.GetControl(13) + BackButton.SetText(15416) + DoneButton = ColorWindow.GetControl(0) + DoneButton.SetText(11973) + DoneButton.SetFlags(IE_GUI_BUTTON_DEFAULT,OP_OR) - GemRB.SetEvent(ColorWindow,DoneButton,IE_GUI_BUTTON_ON_PRESS,"NextPress") - GemRB.SetEvent(ColorWindow,BackButton,IE_GUI_BUTTON_ON_PRESS,"BackPress") + DoneButton.SetEvent(IE_GUI_BUTTON_ON_PRESS,"NextPress") + BackButton.SetEvent(IE_GUI_BUTTON_ON_PRESS,"BackPress") RefreshPDoll() - GemRB.SetVisible(ColorWindow,1) + ColorWindow.SetVisible(1) return def DonePress(): global HairColor, SkinColor, MajorColor, MinorColor - GemRB.UnloadWindow(ColorPicker) - GemRB.SetVisible(ColorWindow,1) - PickedColor=GemRB.GetTableValue(ColorTable, ColorIndex, GemRB.GetVar("Selected")) + if ColorPicker: + ColorPicker.Unload() + ColorWindow.SetVisible(1) + PickedColor=ColorTable.GetValue(ColorIndex, GemRB.GetVar("Selected")) if ColorIndex==0: HairColor=PickedColor - GemRB.SetButtonBAM(ColorWindow, HairButton, "COLGRAD", 1, 0, HairColor) + HairButton.SetBAM("COLGRAD", 1, 0, HairColor) RefreshPDoll() return if ColorIndex==1: SkinColor=PickedColor - GemRB.SetButtonBAM(ColorWindow, SkinButton, "COLGRAD", 1, 0, SkinColor) + SkinButton.SetBAM("COLGRAD", 1, 0, SkinColor) RefreshPDoll() return if ColorIndex==2: MinorColor=PickedColor - GemRB.SetButtonBAM(ColorWindow, MajorButton, "COLGRAD", 1, 0, MinorColor) + MajorButton.SetBAM("COLGRAD", 1, 0, MinorColor) RefreshPDoll() return MajorColor=PickedColor - GemRB.SetButtonBAM(ColorWindow, MinorButton, "COLGRAD", 1, 0, MajorColor) + MinorButton.SetBAM("COLGRAD", 1, 0, MajorColor) RefreshPDoll() return def GetColor(): global ColorPicker - ColorPicker=GemRB.LoadWindow(14) + ColorPicker=GemRB.LoadWindowObject(14) GemRB.SetVar("Selected",-1) for i in range(34): - Button = GemRB.GetControl(ColorPicker, i) - GemRB.SetButtonState(ColorPicker, Button, IE_GUI_BUTTON_DISABLED) - GemRB.SetButtonFlags(ColorPicker, Button, IE_GUI_BUTTON_PICTURE|IE_GUI_BUTTON_RADIOBUTTON,OP_OR) + Button = ColorPicker.GetControl(i) + Button.SetState(IE_GUI_BUTTON_DISABLED) + Button.SetFlags(IE_GUI_BUTTON_PICTURE|IE_GUI_BUTTON_RADIOBUTTON,OP_OR) Selected = -1 for i in range(34): - MyColor = GemRB.GetTableValue(ColorTable, ColorIndex, i) + MyColor = ColorTable.GetValue(ColorIndex, i) if MyColor == "*": break - Button = GemRB.GetControl(ColorPicker, i) - GemRB.SetButtonBAM(ColorPicker, Button, "COLGRAD", 2, 0, MyColor) + Button = ColorPicker.GetControl(i) + Button.SetBAM("COLGRAD", 2, 0, MyColor) if PickedColor == MyColor: GemRB.SetVar("Selected",i) Selected = i - GemRB.SetButtonState(ColorPicker, Button, IE_GUI_BUTTON_ENABLED) - GemRB.SetVarAssoc(ColorPicker, Button, "Selected",i) - GemRB.SetEvent(ColorPicker, Button, IE_GUI_BUTTON_ON_PRESS, "DonePress") + Button.SetState(IE_GUI_BUTTON_ENABLED) + Button.SetVarAssoc("Selected",i) + Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, "DonePress") - GemRB.SetVisible(ColorPicker,1) + ColorPicker.SetVisible(1) return def HairPress(): global ColorIndex, PickedColor - GemRB.SetVisible(ColorWindow,0) + ColorWindow.SetVisible(0) ColorIndex = 0 PickedColor = HairColor GetColor() @@ -163,7 +163,7 @@ def SkinPress(): global ColorIndex, PickedColor - GemRB.SetVisible(ColorWindow,0) + ColorWindow.SetVisible(0) ColorIndex = 1 PickedColor = SkinColor GetColor() @@ -172,7 +172,7 @@ def MajorPress(): global ColorIndex, PickedColor - GemRB.SetVisible(ColorWindow,0) + ColorWindow.SetVisible(0) ColorIndex = 2 PickedColor = MinorColor GetColor() @@ -181,19 +181,21 @@ def MinorPress(): global ColorIndex, PickedColor - GemRB.SetVisible(ColorWindow,0) + ColorWindow.SetVisible(0) ColorIndex = 3 PickedColor = MajorColor GetColor() return def BackPress(): - GemRB.UnloadWindow(ColorWindow) + if ColorWindow: + ColorWindow.Unload() GemRB.SetNextScript("CharGen7") return def NextPress(): - GemRB.UnloadWindow(ColorWindow) + if ColorWindow: + ColorWindow.Unload() GemRB.SetVar("HairColor",HairColor) GemRB.SetVar("SkinColor",SkinColor) GemRB.SetVar("MinorColor",MinorColor) Modified: gemrb/trunk/gemrb/GUIScripts/bg2/GUICG15.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/GUICG15.py 2009-02-01 22:39:00 UTC (rev 5616) +++ gemrb/trunk/gemrb/GUIScripts/bg2/GUICG15.py 2009-02-01 22:53:57 UTC (rev 5617) @@ -15,81 +15,83 @@ TopIndex=GemRB.GetVar("TopIndex") for i in range(LISTSIZE): - Button = GemRB.GetControl(RaceWindow,i+6) - Val = GemRB.GetTableValue(RaceTable, i+TopIndex,0) + Button = RaceWindow.GetControl(i+6) + Val = RaceTable.GetValue(i+TopIndex,0) if Val==0: - GemRB.SetText(RaceWindow, Button, "") - GemRB.SetButtonState(RaceWindow,Button,IE_GUI_BUTTON_DISABLED) + Button.SetText("") + Button.SetState(IE_GUI_BUTTON_DISABLED) else: - GemRB.SetText(RaceWindow,Button,... [truncated message content] |
From: <lyn...@us...> - 2009-02-03 13:17:22
|
Revision: 5631 http://gemrb.svn.sourceforge.net/gemrb/?rev=5631&view=rev Author: lynxlupodian Date: 2009-02-03 13:16:49 +0000 (Tue, 03 Feb 2009) Log Message: ----------- bg2: fixed metaclass uses Modified Paths: -------------- gemrb/trunk/gemrb/GUIScripts/bg2/CharGenCommon.py gemrb/trunk/gemrb/GUIScripts/bg2/GUICG13.py gemrb/trunk/gemrb/GUIScripts/bg2/GUICG19.py Modified: gemrb/trunk/gemrb/GUIScripts/bg2/CharGenCommon.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/CharGenCommon.py 2009-02-03 11:59:48 UTC (rev 5630) +++ gemrb/trunk/gemrb/GUIScripts/bg2/CharGenCommon.py 2009-02-03 13:16:49 UTC (rev 5631) @@ -131,8 +131,7 @@ elif part == 3: TextAreaControl.Append (1048, -1) # new line TextAreaControl.Append (": ") - GemRB.TextAreaAppend (CharGenWindow, TextAreaControl, \ - RaceTable.GetValue (GemRB.GetVar ("Race")-1,2)) + TextAreaControl.Append (RaceTable.GetValue (GemRB.GetVar ("Race")-1,2)) elif part == 4: TextAreaControl.Append (12136, -1) TextAreaControl.Append (": ") @@ -153,8 +152,7 @@ for i in range(6): v = AbilityTable.GetValue (i, 2) TextAreaControl.Append (v, -1) - GemRB.TextAreaAppend (CharGenWindow, TextAreaControl, ": " \ - + str(GemRB.GetVar ("Ability "+str(i))) ) + TextAreaControl.Append (": " + str(GemRB.GetVar ("Ability "+str(i))) ) elif part == 7: TextAreaControl.Append ("\n\n") # thieving and other skills Modified: gemrb/trunk/gemrb/GUIScripts/bg2/GUICG13.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/GUICG13.py 2009-02-03 11:59:48 UTC (rev 5630) +++ gemrb/trunk/gemrb/GUIScripts/bg2/GUICG13.py 2009-02-03 13:16:49 UTC (rev 5631) @@ -33,7 +33,7 @@ AnimID = AnimID+table.GetValue(GemRB.GetVar("Gender"),0) ResRef = PDollTable.GetValue(hex(AnimID), "LEVEL1") - PDollButton.SetButtonPLT(ResRef, 0, MinorColor, MajorColor, SkinColor, 0, 0, HairColor, 0) + PDollButton.SetPLT(ResRef, 0, MinorColor, MajorColor, SkinColor, 0, 0, HairColor, 0) return def OnLoad(): Modified: gemrb/trunk/gemrb/GUIScripts/bg2/GUICG19.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/GUICG19.py 2009-02-03 11:59:48 UTC (rev 5630) +++ gemrb/trunk/gemrb/GUIScripts/bg2/GUICG19.py 2009-02-03 13:16:49 UTC (rev 5631) @@ -40,8 +40,7 @@ DoneButton.SetText(11973) DoneButton.SetFlags(IE_GUI_BUTTON_DEFAULT,OP_OR) - GemRB.SetEvent(CharSoundWindow, VoiceList, \ - IE_GUI_TEXTAREA_ON_CHANGE, "ChangeVoice") + VoiceList.SetEvent(IE_GUI_TEXTAREA_ON_CHANGE, "ChangeVoice") DoneButton.SetEvent(IE_GUI_BUTTON_ON_PRESS,"NextPress") BackButton.SetEvent(IE_GUI_BUTTON_ON_PRESS,"BackPress") CharSoundWindow.SetVisible(1) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lyn...@us...> - 2009-02-04 16:11:45
|
Revision: 5639 http://gemrb.svn.sourceforge.net/gemrb/?rev=5639&view=rev Author: lynxlupodian Date: 2009-02-04 16:11:24 +0000 (Wed, 04 Feb 2009) Log Message: ----------- tob: basic level up gui; lots of things still to try and mend and fix and think up tricks to have a nicely leveled guy. Modified Paths: -------------- gemrb/trunk/gemrb/GUIScripts/bg2/GUICG9.py gemrb/trunk/gemrb/GUIScripts/bg2/GUIREC.py Added Paths: ----------- gemrb/trunk/gemrb/GUIScripts/bg2/LevelUp.py Modified: gemrb/trunk/gemrb/GUIScripts/bg2/GUICG9.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/GUICG9.py 2009-02-04 14:19:06 UTC (rev 5638) +++ gemrb/trunk/gemrb/GUIScripts/bg2/GUICG9.py 2009-02-04 16:11:24 UTC (rev 5639) @@ -10,7 +10,7 @@ PointsLeft = 0 ProfColumn = 0 -def RedrawSkills(SkillWindow, First=0): +def RedrawSkills(First=0): global TopIndex, ScrollBarControl if PointsLeft == 0: @@ -62,7 +62,7 @@ if len(SkipProfs) > 0 and First == 1: TopIndex += SkipProfs[len(SkipProfs)-1] + 1 GemRB.SetVar("TopIndex",TopIndex) - RedrawSkills(SkillWindow) + RedrawSkills() return @@ -139,7 +139,7 @@ BackButton.SetEvent(IE_GUI_BUTTON_ON_PRESS,"BackPress") DoneButton.SetState(IE_GUI_BUTTON_DISABLED) TopIndex = 0 - RedrawSkills(SkillWindow, 1) + RedrawSkills(1) SkillWindow.SetVisible(1) return @@ -147,10 +147,11 @@ global TopIndex TopIndex = GemRB.GetVar("TopIndex") - RedrawSkills(SkillWindow) + RedrawSkills() return def JustPress(): + global TextAreaControl Pos = GemRB.GetVar("Prof")+TopIndex TextAreaControl.SetText(SkillTable.GetValue(Pos+8, 2) ) return @@ -166,7 +167,7 @@ GemRB.SetVar("Prof "+str(Pos),ActPoint-1) PointsLeft = PointsLeft + 1 DoneButton.SetState(IE_GUI_BUTTON_DISABLED) - RedrawSkills(SkillWindow) + RedrawSkills() return def LeftPress(): @@ -185,7 +186,7 @@ return GemRB.SetVar("Prof "+str(Pos),ActPoint+1) PointsLeft = PointsLeft - 1 - RedrawSkills(SkillWindow) + RedrawSkills() return def BackPress(): Modified: gemrb/trunk/gemrb/GUIScripts/bg2/GUIREC.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/GUIREC.py 2009-02-04 14:19:06 UTC (rev 5638) +++ gemrb/trunk/gemrb/GUIScripts/bg2/GUIREC.py 2009-02-04 16:11:24 UTC (rev 5639) @@ -27,7 +27,7 @@ import GUICommonWindows from GUIDefines import * from ie_stats import * -from GUICommon import CloseOtherWindow +from GUICommon import CloseOtherWindow, GameIsTOB from GUICommonWindows import * from GUIWORLD import OpenReformPartyWindow @@ -41,7 +41,6 @@ OldOptionsWindow = None ExportWindow = None KitInfoWindow = None -LevelUpWindow = None ExportDoneButton = None ExportFileName = "" @@ -934,15 +933,11 @@ KitInfoWindow.ShowModal (MODAL_SHADOW_GRAY) return -def LevelUpDonePress(): - if LevelUpWindow: - LevelUpWindow.Unload() - return - def KitDonePress(): if KitInfoWindow: KitInfoWindow.Unload() return +from LevelUp import * ################################################### # End of file GUIREC.py Added: gemrb/trunk/gemrb/GUIScripts/bg2/LevelUp.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/LevelUp.py (rev 0) +++ gemrb/trunk/gemrb/GUIScripts/bg2/LevelUp.py 2009-02-04 16:11:24 UTC (rev 5639) @@ -0,0 +1,442 @@ +# -*-python-*- +# GemRB - Infinity Engine Emulator +# Copyright (C) 2003-2004 The GemRB Project +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# $Id:$ + +# LevelUp.py - scripts to control the level up functionality and windows +import GemRB +from GUIDefines import * +from ie_stats import * +from GUICommon import GameIsTOB +from GUIREC import GetStatOverview, UpdateRecordsWindow, GetActorClassTitle, GetKitIndex + +LevelUpWindow = None +TopIndex = 0 +SkillTopIndex = 0 +DoneButton = 0 +TextAreaControl = 0 +ScrollBarControl = 0 +WeapProfTable = 0 +SkillTable = 0 +ProfColumn = 0 +InfoCounter = 1 +ProfPointsLeft = 0 +NewProfPoints = 0 +SkillPointsLeft = 0 +NewSkillPoints = 0 + +# TODO: multiclass support +def LevelUpWindow(): + global LevelUpWindow, TextAreaControl, ProfPointsLeft, NewProfPoints + global TopIndex, ScrollBarControl, DoneButton, WeapProfTable, ProfColumn + global SkillTable, SkillPointsLeft, NewSkillPoints, KitName + + LevelUpWindow = GemRB.LoadWindowObject (3) + + InfoButton = LevelUpWindow.GetControl (125) + InfoButton.SetText (13707) + InfoButton.SetEvent (IE_GUI_BUTTON_ON_PRESS, "LevelUpInfoPress") + + DoneButton = LevelUpWindow.GetControl (0) + DoneButton.SetText (11962) + DoneButton.SetEvent (IE_GUI_BUTTON_ON_PRESS, "LevelUpDonePress") + DoneButton.SetState (IE_GUI_BUTTON_DISABLED) + DoneButton.SetFlags (IE_GUI_BUTTON_DEFAULT, OP_OR) + + # hide "Character Generation" + Label = LevelUpWindow.CreateLabel (0x1000007e, 0,0,0,0,"NUMBER","",1) + + # name + pc = GemRB.GameGetSelectedPCSingle () + Label = LevelUpWindow.GetControl (0x10000000+90) + Label.SetText (GemRB.GetPlayerName (pc)) + + # class + Label = LevelUpWindow.GetControl (0x10000000+106) + Label.SetText (GetActorClassTitle (pc)) + + ClassTable = GemRB.LoadTableObject("classes") + Class = GemRB.GetPlayerStat (pc, IE_CLASS) + ClassIndex = ClassTable.FindValue (5, Class) + KitList = GemRB.LoadTableObject("kitlist") + ClassName = ClassTable.GetRowName(ClassIndex) + Kit = GetKitIndex (pc) + WeapProfTable = GemRB.LoadTableObject ("weapprof") + if Kit == 0: + KitName = ClassName + ProfColumn = WeapProfTable.GetColumnIndex (ClassName) + else: + #rowname is just a number, the kitname is the first data column + KitName = KitList.GetValue(Kit, 0) + #this is the proficiency column number in kitlist + ProfColumn = KitList.GetValue(Kit, 5) + + ProfCountTable = GemRB.LoadTableObject("profs") + # we don't care about the current level, but about the to-be-achieved one + # FIXME: get the correct xp/level for MC and DC chars + Level = GetNextLevelFromExp(GemRB.GetPlayerStat (pc, IE_XP), ClassName) + LevelDiff = Level - GemRB.GetPlayerStat (pc, IE_LEVEL) + ProfPointsLeft = LevelDiff/ProfCountTable.GetValue(ClassName, "RATE") + NewProfPoints = ProfPointsLeft + + SkillTable = GemRB.LoadTableObject("skills") + SkillPointsLeft = LevelDiff * SkillTable.GetValue("RATE", KitName) + if SkillPointsLeft < 0: + # no entry for this kit/class (the default value is -1) + SkillPointsLeft = 0 + else: + # get the skill values + # TODO: show skillbrd, skillrng, skilldex? monks (same as rangers?)?! + for i in range(SkillTable.GetRowCount()-2): + SkillName = SkillTable.GetValue (i+2, 2) + SkillValue = GemRB.GetPlayerStat (pc, SkillName) + GemRB.SetVar("Skill "+str(i), SkillValue) + NewSkillPoints = SkillPointsLeft + + HLACount = 0 + if GameIsTOB(): + HLATable = GemRB.LoadTableObject("lunumab") + if HLATable.GetValue (KitName, "FIRST_LEVEL") < Level: # the new level + HLACount = LevelDiff / HLATable.GetValue (ClassName, "RATE") + HLAButton = LevelUpWindow.GetControl (126) + if HLACount: + HLAButton.SetText (4954) + HLAButton.SetEvent (IE_GUI_BUTTON_ON_PRESS, "LevelUpHLAPress") + else: + HLAButton.SetFlags (IE_GUI_BUTTON_DISABLED, OP_OR) + + RowCount = WeapProfTable.GetRowCount()-7 #we decrease it with the bg1 skills + + GemRB.SetVar("TopIndex",0) + ScrollBarControl = LevelUpWindow.GetControl(108) + ScrollBarControl.SetEvent(IE_GUI_SCROLLBAR_ON_CHANGE, "ScrollBarPress") + ScrollBarControl.SetDefaultScrollBar () + ProfCount = RowCount - 7 # decrease it with the number of controls + # decrease it with the number of invalid proficiencies + for i in range(RowCount): + SkillName = WeapProfTable.GetValue (i+8, 1) + if SkillName == -1: + ProfCount -= 1 + GemRB.SetVar("Prof "+str(i), GemRB.GetPlayerStat (pc, WeapProfTable.GetValue (i+8, 0))) + ScrollBarControl.SetVarAssoc ("TopIndex", ProfCount) + + for i in range(7): + Button=LevelUpWindow.GetControl(i+112) + Button.SetVarAssoc("Prof", i) + Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, "JustPress") + + Button=LevelUpWindow.GetControl(i*2+1) + Button.SetVarAssoc("Prof", i) + Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, "LeftPress") + + Button=LevelUpWindow.GetControl(i*2+2) + Button.SetVarAssoc("Prof", i) + Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, "RightPress") + + for j in range(5): + Star=LevelUpWindow.GetControl(i*5+j+48) + + for i in range(4): + Button = LevelUpWindow.GetControl(i+120) + Button.SetVarAssoc("Skill",i) + Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, "SkillJustPress") + + Button = LevelUpWindow.GetControl(i*2+17) + Button.SetVarAssoc("Skill",i) + Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, "SkillLeftPress") + + Button = LevelUpWindow.GetControl(i*2+18) + Button.SetVarAssoc("Skill",i) + Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, "SkillRightPress") + + TextAreaControl = LevelUpWindow.GetControl(110) + TextAreaControl.SetText(GetLevelUpNews()) + + TopIndex = 0 + RedrawSkills(1) + + LevelUpWindow.ShowModal (MODAL_SHADOW_GRAY) + return + +# TODO: sorcerer spell selection +def RedrawSkills(First=0): + global TopIndex, ScrollBarControl, DoneButton, LevelUpWindow, ProfPointsLeft + global SkillPointsLeft, SkillTable, NewSkillPoints + + #TODO: and not a sorcerer + #TODO: and no more hlas + if ProfPointsLeft == 0 and SkillPointsLeft == 0: + DoneButton.SetState(IE_GUI_BUTTON_ENABLED) + + # skill part of the window + SkillSumLabel = LevelUpWindow.GetControl(0x10000000+37) + if NewSkillPoints == 0: + SkillSumLabel.SetText("") + # FIXME: hide the scrollbar + #LevelUpWindow.DeleteControl(109) + for i in range(4): + Label = LevelUpWindow.GetControl (0x10000000+32+i) + Label.SetText ("") + Button1 = LevelUpWindow.GetControl(i*2+17) + Button1.SetState(IE_GUI_BUTTON_DISABLED) + Button1.SetFlags(IE_GUI_BUTTON_NO_IMAGE,OP_OR) + Button2 = LevelUpWindow.GetControl(i*2+18) + Button2.SetState(IE_GUI_BUTTON_DISABLED) + Button2.SetFlags(IE_GUI_BUTTON_NO_IMAGE,OP_OR) + Label = LevelUpWindow.GetControl(0x10000000+43+i) + Label.SetText("") + else: + SkillSumLabel.SetText(str(SkillPointsLeft)) + for i in range(4): + SkillName = SkillTable.GetValue (i+2, 1) + Label = LevelUpWindow.GetControl (0x10000000+32+i) + Label.SetText (SkillName) + + SkillName = SkillTable.GetRowName (i+2) + Ok = SkillTable.GetValue (SkillName, KitName) + Button1 = LevelUpWindow.GetControl(i*2+17) + Button2 = LevelUpWindow.GetControl(i*2+18) + if Ok == 0: + Button1.SetState(IE_GUI_BUTTON_DISABLED) + Button2.SetState(IE_GUI_BUTTON_DISABLED) + Button1.SetFlags(IE_GUI_BUTTON_NO_IMAGE,OP_OR) + Button2.SetFlags(IE_GUI_BUTTON_NO_IMAGE,OP_OR) + else: + Button1.SetState(IE_GUI_BUTTON_ENABLED) + Button2.SetState(IE_GUI_BUTTON_ENABLED) + Button1.SetFlags(IE_GUI_BUTTON_NO_IMAGE,OP_NAND) + Button2.SetFlags(IE_GUI_BUTTON_NO_IMAGE,OP_NAND) + + Label = LevelUpWindow.GetControl(0x10000000+43+i) + ActPoint = GemRB.GetVar("Skill "+str(i) ) + Label.SetText(str(ActPoint)) + + # proficiencies part of the window + ProfSumLabel = LevelUpWindow.GetControl(0x10000000+36) + ProfSumLabel.SetText(str(ProfPointsLeft)) + SkipProfs = [] + for i in range(7): + Pos=TopIndex+i + SkillName = WeapProfTable.GetValue(Pos+8, 1) #we add the bg1 skill count offset + MaxProf = WeapProfTable.GetValue(Pos+8, ProfColumn) #we add the bg1 skill count offset + + #invalid entry, adjusting scrollbar + if SkillName == -1: + GemRB.SetVar("TopIndex",TopIndex) + ScrollBarControl.SetVarAssoc("TopIndex",Pos-7) + break + + Button1=LevelUpWindow.GetControl(i*2+1) + Button2=LevelUpWindow.GetControl(i*2+2) + if MaxProf == 0: + Button1.SetState(IE_GUI_BUTTON_DISABLED) + Button2.SetState(IE_GUI_BUTTON_DISABLED) + Button1.SetFlags(IE_GUI_BUTTON_NO_IMAGE,OP_OR) + Button2.SetFlags(IE_GUI_BUTTON_NO_IMAGE,OP_OR) + # skip proficiencies only if all the previous ones were skipped too + if i == 0 or ((i-1) in SkipProfs): + SkipProfs.append(i) + else: + Button1.SetState(IE_GUI_BUTTON_ENABLED) + Button2.SetState(IE_GUI_BUTTON_ENABLED) + Button1.SetFlags(IE_GUI_BUTTON_NO_IMAGE,OP_NAND) + Button2.SetFlags(IE_GUI_BUTTON_NO_IMAGE,OP_NAND) + + Label=LevelUpWindow.GetControl(0x10000000+24+i) + Label.SetText(SkillName) + + ActPoint = GemRB.GetVar("Prof "+str(Pos) ) + for j in range(5): #5 is maximum distributable + Star=LevelUpWindow.GetControl(i*5+j+48) + if ActPoint > j: + Star.SetFlags(IE_GUI_BUTTON_NO_IMAGE,OP_NAND) + else: + Star.SetFlags(IE_GUI_BUTTON_NO_IMAGE,OP_OR) + + # skip unavaliable proficiencies on the first run + if len(SkipProfs) > 0 and First == 1: + TopIndex += SkipProfs[len(SkipProfs)-1] + 1 + GemRB.SetVar("TopIndex",TopIndex) + RedrawSkills() + + return + +# TODO: constructs a string with the gains that the new levels bring +def GetLevelUpNews(): + global NewProfPoints, NewSkillPoints + + News = GemRB.GetString (5259) + '\n\n' + # FIXME: order + # 5293 - Additional Hit Points Gained + # saving throws + # 5277 death + # 5278 wand + # 5279 polymorph + # 5282 breath + # 5292 spell + + # 5271 - Additional weapon proficiencies + if NewProfPoints > 0: + News += GemRB.GetString (5271) + ": " + str(NewProfPoints) + '\n\n' + + # new spell slots + # 5373 - Additional Priest Spells + # 5374 - Additional Mage Spells + #? 10345 - Level <SPELLLEVEL> (used in stats_overview for bonus priest spells) + #? 11293 - <CLASS>: Level <LEVEL> + #? 61269 - Level <LEVEL> Spells + # 5261 - Regained abilities from inactive class + # 5305 - THAC0 Reduced by + # 5375 - Backstab Multiplier Increased by + # 5376 - Lay On Hands Increased by + # 5377 - Lore Increased by + # 5378 - Additional Skill Points + if NewSkillPoints > 0: + News += GemRB.GetString (5378) + ": " + str(NewSkillPoints) + '\n' + return News + +def LevelUpInfoPress(): + global LevelUpWindow, TextAreaControl, InfoCounter + + if InfoCounter % 2: + pc = GemRB.GameGetSelectedPCSingle () + # TODO: call GetStatOverview with the new levels, so the future overview is shown + # TODO: also take in effect the current prof and skill selection + TextAreaControl.SetText(GetStatOverview(pc)) + else: + TextAreaControl.SetText(GetLevelUpNews()) + InfoCounter += 1 + return + +def LevelUpDonePress(): + global SkillTable + # TODO: save the results + # proficiencies + TmpTable=GemRB.LoadTableObject ("weapprof") + ProfCount = TmpTable.GetRowCount () + for i in range(ProfCount-8): # skip bg1 weapprof.2da proficiencies + StatID = TmpTable.GetValue (i+8, 0) + Value = GemRB.GetVar ("Prof "+str(i)) + if Value: + GemRB.ApplyEffect (GemRB.GameGetSelectedPCSingle (), "Proficiency", Value, StatID ) + + # skills + pc = GemRB.GameGetSelectedPCSingle () + for i in range(SkillTable.GetRowCount()-2): + SkillName = SkillTable.GetValue (i+2, 2) + SkillValue = GemRB.GetVar ("Skill "+str(i)) + GemRB.SetPlayerStat (pc, SkillName, SkillValue ) + + # hlas + # level, xp and other stuff by the core? + + if LevelUpWindow: + LevelUpWindow.Unload() + UpdateRecordsWindow() + return + +# TODO: MC and DC support +def GetNextLevelFromExp (XP, Class): + NextLevelTable = GemRB.LoadTableObject ("XPLEVEL") + Row = NextLevelTable.GetRowIndex (Class) + for i in range(1, NextLevelTable.GetColumnCount()-1): + if XP < NextLevelTable.GetValue (Row, i): + return i + # fix hacked characters that have more xp than the xp cap + return 40 + +def SkillJustPress(): + Pos = GemRB.GetVar("Skill")+SkillTopIndex + TextAreaControl.SetText(SkillTable.GetValue(Pos+2,0) ) + return + +def SkillRightPress(): + global SkillPointsLeft, ClickCount, OldPos + + Pos = GemRB.GetVar("Skill")+SkillTopIndex + TextAreaControl.SetText(SkillTable.GetValue(Pos+2,0) ) + ActPoint = GemRB.GetVar("Skill "+str(Pos) ) + if ActPoint <= 0: + return + GemRB.SetVar("Skill "+str(Pos),ActPoint-1) + SkillPointsLeft = SkillPointsLeft + 1 + + RedrawSkills() + return + +def SkillLeftPress(): + global SkillPointsLeft, ClickCount, OldPos + + Pos = GemRB.GetVar("Skill")+SkillTopIndex + TextAreaControl.SetText(SkillTable.GetValue(Pos+2,0) ) + if SkillPointsLeft == 0: + return + ActPoint = GemRB.GetVar("Skill "+str(Pos) ) + if ActPoint >= 200: + return + GemRB.SetVar("Skill "+str(Pos), ActPoint+1) + SkillPointsLeft = SkillPointsLeft - 1 + + RedrawSkills() + return + +def ScrollBarPress(): + global TopIndex + + TopIndex = GemRB.GetVar("TopIndex") + RedrawSkills() + return + +def JustPress(): + global TextAreaControl + Pos = GemRB.GetVar("Prof")+TopIndex + TextAreaControl.SetText(WeapProfTable.GetValue(Pos+8, 2) ) + return + +def RightPress(): + global ProfPointsLeft + + Pos = GemRB.GetVar("Prof")+TopIndex + TextAreaControl.SetText(WeapProfTable.GetValue(Pos+8, 2) ) + ActPoint = GemRB.GetVar("Prof "+str(Pos) ) + if ActPoint <= 0: + return + GemRB.SetVar("Prof "+str(Pos),ActPoint-1) + ProfPointsLeft = ProfPointsLeft + 1 + DoneButton.SetState(IE_GUI_BUTTON_DISABLED) + RedrawSkills() + return + +def LeftPress(): + global ProfPointsLeft + + Pos = GemRB.GetVar("Prof")+TopIndex + TextAreaControl.SetText(WeapProfTable.GetValue(Pos+8, 2) ) + if ProfPointsLeft == 0: + return + MaxProf = WeapProfTable.GetValue(Pos+8, ProfColumn) #we add the bg1 skill count offset + if MaxProf>5: + MaxProf = 5 + + ActPoint = GemRB.GetVar("Prof "+str(Pos) ) + if ActPoint >= MaxProf: + return + GemRB.SetVar("Prof "+str(Pos),ActPoint+1) + ProfPointsLeft = ProfPointsLeft - 1 + RedrawSkills() + return \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lyn...@us...> - 2009-02-04 17:13:08
|
Revision: 5642 http://gemrb.svn.sourceforge.net/gemrb/?rev=5642&view=rev Author: lynxlupodian Date: 2009-02-04 17:12:38 +0000 (Wed, 04 Feb 2009) Log Message: ----------- bg2: don't show the effects when displaying the stat overview during levelup Modified Paths: -------------- gemrb/trunk/gemrb/GUIScripts/bg2/GUIREC.py gemrb/trunk/gemrb/GUIScripts/bg2/LevelUp.py Modified: gemrb/trunk/gemrb/GUIScripts/bg2/GUIREC.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/GUIREC.py 2009-02-04 17:00:56 UTC (rev 5641) +++ gemrb/trunk/gemrb/GUIScripts/bg2/GUIREC.py 2009-02-04 17:12:38 UTC (rev 5642) @@ -280,7 +280,7 @@ return (255,255,0) return (0,255,0) -def GetStatOverview (pc): +def GetStatOverview (pc, LevelDiff=0): StateTable = GemRB.LoadTableObject ("statdesc") str_None = GemRB.GetString (61560) @@ -388,12 +388,13 @@ stats.append ( (16480,1,'c') ) stats.append (None) - effects = GemRB.GetPlayerStates (pc) - if len(effects): - for c in effects: - tmp = StateTable.GetValue (ord(c)-66, 0) - stats.append ( (tmp,c,'a') ) - stats.append (None) + if not LevelDiff: + effects = GemRB.GetPlayerStates (pc) + if len(effects): + for c in effects: + tmp = StateTable.GetValue (ord(c)-66, 0) + stats.append ( (tmp,c,'a') ) + stats.append (None) stats.append ( (8442,1,'c') ) Modified: gemrb/trunk/gemrb/GUIScripts/bg2/LevelUp.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/LevelUp.py 2009-02-04 17:00:56 UTC (rev 5641) +++ gemrb/trunk/gemrb/GUIScripts/bg2/LevelUp.py 2009-02-04 17:12:38 UTC (rev 5642) @@ -332,7 +332,7 @@ pc = GemRB.GameGetSelectedPCSingle () # TODO: call GetStatOverview with the new levels, so the future overview is shown # TODO: also take in effect the current prof and skill selection - TextAreaControl.SetText(GetStatOverview(pc)) + TextAreaControl.SetText(GetStatOverview(pc, 1)) else: TextAreaControl.SetText(GetLevelUpNews()) InfoCounter += 1 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lyn...@us...> - 2009-02-04 17:22:36
|
Revision: 5643 http://gemrb.svn.sourceforge.net/gemrb/?rev=5643&view=rev Author: lynxlupodian Date: 2009-02-04 17:22:07 +0000 (Wed, 04 Feb 2009) Log Message: ----------- bg2: pass the level difference to GetStatOverview, so the level up version displays (approximately) how the character will look afterwards Modified Paths: -------------- gemrb/trunk/gemrb/GUIScripts/bg2/GUIREC.py gemrb/trunk/gemrb/GUIScripts/bg2/LevelUp.py Modified: gemrb/trunk/gemrb/GUIScripts/bg2/GUIREC.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/GUIREC.py 2009-02-04 17:12:38 UTC (rev 5642) +++ gemrb/trunk/gemrb/GUIScripts/bg2/GUIREC.py 2009-02-04 17:22:07 UTC (rev 5643) @@ -303,6 +303,7 @@ Class = ClassTable.GetRowName (Class) Dual = IsDualClassed (pc, 1) if Multi: + # TODO: handle LevelDiff for true mc chars Levels = [GemRB.GetPlayerStat (pc, IE_LEVEL), GemRB.GetPlayerStat (pc, IE_LEVEL2), GemRB.GetPlayerStat (pc, IE_LEVEL3)] Classes = [0,0,0] MultiCount = 0 @@ -322,6 +323,8 @@ if Classes[0] == Dual[1]: Levels = [Levels[1], Levels[0], Levels[2]] + Levels[0] += LevelDiff + ClassTitle = GemRB.GetString(ClassTable.GetValue (Dual[2], 2)) GemRB.SetToken("CLASS", ClassTitle) GemRB.SetToken("LEVEL", str (Levels[0])) @@ -381,7 +384,7 @@ stats.append (None) else: # single classed - Level = GemRB.GetPlayerStat (pc, IE_LEVEL) + Level = GemRB.GetPlayerStat (pc, IE_LEVEL) + LevelDiff GemRB.SetToken("LEVEL", str (Level) ) GemRB.SetToken("NEXTLEVEL", GetNextLevelExp (Level, Class) ) GemRB.SetToken("EXPERIENCE", str (GemRB.GetPlayerStat (pc, IE_XP) ) ) Modified: gemrb/trunk/gemrb/GUIScripts/bg2/LevelUp.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/LevelUp.py 2009-02-04 17:12:38 UTC (rev 5642) +++ gemrb/trunk/gemrb/GUIScripts/bg2/LevelUp.py 2009-02-04 17:22:07 UTC (rev 5643) @@ -42,12 +42,13 @@ ClickCount = 0 OldDirection = 0 OldPos = 0 +LevelDiff = 0 # TODO: multiclass support def LevelUpWindow(): global LevelUpWindow, TextAreaControl, ProfPointsLeft, NewProfPoints global TopIndex, ScrollBarControl, DoneButton, WeapProfTable, ProfColumn - global SkillTable, SkillPointsLeft, NewSkillPoints, KitName + global SkillTable, SkillPointsLeft, NewSkillPoints, KitName, LevelDiff LevelUpWindow = GemRB.LoadWindowObject (3) @@ -326,13 +327,13 @@ return News def LevelUpInfoPress(): - global LevelUpWindow, TextAreaControl, InfoCounter + global LevelUpWindow, TextAreaControl, InfoCounter, LevelDiff if InfoCounter % 2: pc = GemRB.GameGetSelectedPCSingle () - # TODO: call GetStatOverview with the new levels, so the future overview is shown + # call GetStatOverview with the new levels, so the future overview is shown # TODO: also take in effect the current prof and skill selection - TextAreaControl.SetText(GetStatOverview(pc, 1)) + TextAreaControl.SetText(GetStatOverview(pc, LevelDiff)) else: TextAreaControl.SetText(GetLevelUpNews()) InfoCounter += 1 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lyn...@us...> - 2009-02-04 19:18:33
|
Revision: 5648 http://gemrb.svn.sourceforge.net/gemrb/?rev=5648&view=rev Author: lynxlupodian Date: 2009-02-04 19:18:31 +0000 (Wed, 04 Feb 2009) Log Message: ----------- bg2: use unique names to avoid conflicts Modified Paths: -------------- gemrb/trunk/gemrb/GUIScripts/bg2/GUIREC.py gemrb/trunk/gemrb/GUIScripts/bg2/LevelUp.py Modified: gemrb/trunk/gemrb/GUIScripts/bg2/GUIREC.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/GUIREC.py 2009-02-04 19:08:05 UTC (rev 5647) +++ gemrb/trunk/gemrb/GUIScripts/bg2/GUIREC.py 2009-02-04 19:18:31 UTC (rev 5648) @@ -93,7 +93,7 @@ # levelup Button = Window.GetControl (37) Button.SetText (7175) - Button.SetEvent (IE_GUI_BUTTON_ON_PRESS, "LevelUpWindow") + Button.SetEvent (IE_GUI_BUTTON_ON_PRESS, "OpenLevelUpWindow") # information Button = Window.GetControl (1) Modified: gemrb/trunk/gemrb/GUIScripts/bg2/LevelUp.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/LevelUp.py 2009-02-04 19:08:05 UTC (rev 5647) +++ gemrb/trunk/gemrb/GUIScripts/bg2/LevelUp.py 2009-02-04 19:18:31 UTC (rev 5648) @@ -45,7 +45,7 @@ LevelDiff = 0 # TODO: multiclass support -def LevelUpWindow(): +def OpenLevelUpWindow(): global LevelUpWindow, TextAreaControl, ProfPointsLeft, NewProfPoints global TopIndex, ScrollBarControl, DoneButton, WeapProfTable, ProfColumn global SkillTable, SkillPointsLeft, NewSkillPoints, KitName, LevelDiff @@ -128,7 +128,7 @@ GemRB.SetVar("TopIndex",0) ScrollBarControl = LevelUpWindow.GetControl(108) - ScrollBarControl.SetEvent(IE_GUI_SCROLLBAR_ON_CHANGE, "ScrollBarPress") + ScrollBarControl.SetEvent(IE_GUI_SCROLLBAR_ON_CHANGE, "ProfScrollBarPress") ScrollBarControl.SetDefaultScrollBar () ProfCount = RowCount - 7 # decrease it with the number of controls # decrease it with the number of invalid proficiencies @@ -418,7 +418,7 @@ RedrawSkills(0,1) return -def ScrollBarPress(): +def ProfScrollBarPress(): global TopIndex TopIndex = GemRB.GetVar("TopIndex") This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lyn...@us...> - 2009-02-06 15:12:11
|
Revision: 5656 http://gemrb.svn.sourceforge.net/gemrb/?rev=5656&view=rev Author: lynxlupodian Date: 2009-02-06 15:12:07 +0000 (Fri, 06 Feb 2009) Log Message: ----------- bg2: fixed sorcerer proficiency detection (cg works again) Modified Paths: -------------- gemrb/trunk/gemrb/GUIScripts/bg2/GUICG9.py gemrb/trunk/gemrb/GUIScripts/bg2/LevelUp.py Modified: gemrb/trunk/gemrb/GUIScripts/bg2/GUICG9.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/GUICG9.py 2009-02-06 12:22:43 UTC (rev 5655) +++ gemrb/trunk/gemrb/GUIScripts/bg2/GUICG9.py 2009-02-06 15:12:07 UTC (rev 5656) @@ -80,7 +80,11 @@ SkillTable = GemRB.LoadTableObject ("weapprof") if Kit == 0: KitName = ClassName - ProfColumn = SkillTable.GetColumnIndex (ClassName) + # sorcerers are missing from weapprof + if ClassName == "SORCERER": + ProfColumn = SkillTable.GetColumnIndex ("MAGE") + else: + ProfColumn = SkillTable.GetColumnIndex (ClassName) else: #rowname is just a number, the kitname is the first data column KitName = KitList.GetValue(Kit, 0) Modified: gemrb/trunk/gemrb/GUIScripts/bg2/LevelUp.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/LevelUp.py 2009-02-06 12:22:43 UTC (rev 5655) +++ gemrb/trunk/gemrb/GUIScripts/bg2/LevelUp.py 2009-02-06 15:12:07 UTC (rev 5656) @@ -83,7 +83,11 @@ WeapProfTable = GemRB.LoadTableObject ("weapprof") if Kit == 0: KitName = ClassName - ProfColumn = WeapProfTable.GetColumnIndex (ClassName) + # sorcerers are missing from weapprof + if ClassName == "SORCERER": + ProfColumn = SkillTable.GetColumnIndex ("MAGE") + else: + ProfColumn = SkillTable.GetColumnIndex (ClassName) else: #rowname is just a number, the kitname is the first data column KitName = KitList.GetValue(Kit, 0) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lyn...@us...> - 2009-02-11 10:53:39
|
Revision: 5680 http://gemrb.svn.sourceforge.net/gemrb/?rev=5680&view=rev Author: lynxlupodian Date: 2009-02-11 10:53:32 +0000 (Wed, 11 Feb 2009) Log Message: ----------- bg2: investigation killed two fixmes Modified Paths: -------------- gemrb/trunk/gemrb/GUIScripts/bg2/GUIREC.py gemrb/trunk/gemrb/GUIScripts/bg2/LevelUp.py Modified: gemrb/trunk/gemrb/GUIScripts/bg2/GUIREC.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/GUIREC.py 2009-02-10 19:38:28 UTC (rev 5679) +++ gemrb/trunk/gemrb/GUIScripts/bg2/GUIREC.py 2009-02-11 10:53:32 UTC (rev 5680) @@ -358,7 +358,6 @@ # the first class' XP is discarded and set to the minimum level # requirement, so if you don't dual class right after a levelup, # the game would eat some of your XP - # FIXME: find out how to get this (stored in the chr) XP1 = XPTable.GetValue (XP1, str(Levels[1])) GemRB.SetToken("EXPERIENCE", str (XP1) ) Modified: gemrb/trunk/gemrb/GUIScripts/bg2/LevelUp.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/LevelUp.py 2009-02-10 19:38:28 UTC (rev 5679) +++ gemrb/trunk/gemrb/GUIScripts/bg2/LevelUp.py 2009-02-11 10:53:32 UTC (rev 5680) @@ -199,8 +199,6 @@ SkillSumLabel = LevelUpWindow.GetControl(0x10000000+37) if NewSkillPoints == 0: SkillSumLabel.SetText("") - # FIXME: hide the scrollbar - #LevelUpWindow.DeleteControl(109) for i in range(4): Label = LevelUpWindow.GetControl (0x10000000+32+i) Label.SetText ("") This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lyn...@us...> - 2009-02-14 11:28:03
|
Revision: 5688 http://gemrb.svn.sourceforge.net/gemrb/?rev=5688&view=rev Author: lynxlupodian Date: 2009-02-14 11:27:58 +0000 (Sat, 14 Feb 2009) Log Message: ----------- bg2: added default cancel buttons to cg Modified Paths: -------------- gemrb/trunk/gemrb/GUIScripts/bg2/CharGenCommon.py gemrb/trunk/gemrb/GUIScripts/bg2/GUICG1.py gemrb/trunk/gemrb/GUIScripts/bg2/GUICG10.py gemrb/trunk/gemrb/GUIScripts/bg2/GUICG12.py gemrb/trunk/gemrb/GUIScripts/bg2/GUICG13.py gemrb/trunk/gemrb/GUIScripts/bg2/GUICG15.py gemrb/trunk/gemrb/GUIScripts/bg2/GUICG19.py gemrb/trunk/gemrb/GUIScripts/bg2/GUICG2.py gemrb/trunk/gemrb/GUIScripts/bg2/GUICG22.py gemrb/trunk/gemrb/GUIScripts/bg2/GUICG23.py gemrb/trunk/gemrb/GUIScripts/bg2/GUICG24.py gemrb/trunk/gemrb/GUIScripts/bg2/GUICG3.py gemrb/trunk/gemrb/GUIScripts/bg2/GUICG4.py gemrb/trunk/gemrb/GUIScripts/bg2/GUICG5.py gemrb/trunk/gemrb/GUIScripts/bg2/GUICG6.py gemrb/trunk/gemrb/GUIScripts/bg2/GUICG7.py gemrb/trunk/gemrb/GUIScripts/bg2/GUICG8.py gemrb/trunk/gemrb/GUIScripts/bg2/GUICG9.py Modified: gemrb/trunk/gemrb/GUIScripts/bg2/CharGenCommon.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/CharGenCommon.py 2009-02-12 22:41:32 UTC (rev 5687) +++ gemrb/trunk/gemrb/GUIScripts/bg2/CharGenCommon.py 2009-02-14 11:27:58 UTC (rev 5688) @@ -63,6 +63,7 @@ BackButton.SetText (15416) BackButton.SetState (IE_GUI_BUTTON_ENABLED) BackButton.SetEvent (IE_GUI_BUTTON_ON_PRESS, "BackPress") + BackButton.SetFlags (IE_GUI_BUTTON_CANCEL, OP_OR) AcceptButton = CharGenWindow.GetControl (8) playmode = GemRB.GetVar ("PlayMode") Modified: gemrb/trunk/gemrb/GUIScripts/bg2/GUICG1.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/GUICG1.py 2009-02-12 22:41:32 UTC (rev 5687) +++ gemrb/trunk/gemrb/GUIScripts/bg2/GUICG1.py 2009-02-14 11:27:58 UTC (rev 5688) @@ -33,6 +33,7 @@ BackButton = GenderWindow.GetControl(6) BackButton.SetText(15416) + BackButton.SetFlags (IE_GUI_BUTTON_CANCEL, OP_OR) DoneButton = GenderWindow.GetControl(0) DoneButton.SetText(11973) DoneButton.SetFlags(IE_GUI_BUTTON_DEFAULT,OP_OR) Modified: gemrb/trunk/gemrb/GUIScripts/bg2/GUICG10.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/GUICG10.py 2009-02-12 22:41:32 UTC (rev 5687) +++ gemrb/trunk/gemrb/GUIScripts/bg2/GUICG10.py 2009-02-14 11:27:58 UTC (rev 5688) @@ -50,8 +50,10 @@ BackButton = ClassWindow.GetControl(14) BackButton.SetText(15416) + BackButton.SetFlags (IE_GUI_BUTTON_CANCEL, OP_OR) DoneButton = ClassWindow.GetControl(0) DoneButton.SetText(11973) + DoneButton.SetFlags (IE_GUI_BUTTON_DEFAULT, OP_OR) TextAreaControl = ClassWindow.GetControl(12) TextAreaControl.SetText(17244) Modified: gemrb/trunk/gemrb/GUIScripts/bg2/GUICG12.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/GUICG12.py 2009-02-12 22:41:32 UTC (rev 5687) +++ gemrb/trunk/gemrb/GUIScripts/bg2/GUICG12.py 2009-02-14 11:27:58 UTC (rev 5688) @@ -40,6 +40,7 @@ BackButton = AppearanceWindow.GetControl (5) BackButton.SetText (15416) + BackButton.SetFlags (IE_GUI_BUTTON_CANCEL, OP_OR) CustomButton = AppearanceWindow.GetControl (6) CustomButton.SetText (17545) Modified: gemrb/trunk/gemrb/GUIScripts/bg2/GUICG13.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/GUICG13.py 2009-02-12 22:41:32 UTC (rev 5687) +++ gemrb/trunk/gemrb/GUIScripts/bg2/GUICG13.py 2009-02-14 11:27:58 UTC (rev 5688) @@ -86,6 +86,7 @@ BackButton = ColorWindow.GetControl(13) BackButton.SetText(15416) + BackButton.SetFlags (IE_GUI_BUTTON_CANCEL, OP_OR) DoneButton = ColorWindow.GetControl(0) DoneButton.SetText(11973) DoneButton.SetFlags(IE_GUI_BUTTON_DEFAULT,OP_OR) Modified: gemrb/trunk/gemrb/GUIScripts/bg2/GUICG15.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/GUICG15.py 2009-02-12 22:41:32 UTC (rev 5687) +++ gemrb/trunk/gemrb/GUIScripts/bg2/GUICG15.py 2009-02-14 11:27:58 UTC (rev 5688) @@ -62,6 +62,7 @@ BackButton = RaceWindow.GetControl(4) BackButton.SetText(15416) + BackButton.SetFlags (IE_GUI_BUTTON_CANCEL, OP_OR) DoneButton = RaceWindow.GetControl(5) DoneButton.SetText(11973) DoneButton.SetFlags(IE_GUI_BUTTON_DEFAULT,OP_OR) Modified: gemrb/trunk/gemrb/GUIScripts/bg2/GUICG19.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/GUICG19.py 2009-02-12 22:41:32 UTC (rev 5687) +++ gemrb/trunk/gemrb/GUIScripts/bg2/GUICG19.py 2009-02-14 11:27:58 UTC (rev 5688) @@ -36,6 +36,7 @@ BackButton = CharSoundWindow.GetControl(10) BackButton.SetText(15416) + BackButton.SetFlags (IE_GUI_BUTTON_CANCEL, OP_OR) DoneButton = CharSoundWindow.GetControl(0) DoneButton.SetText(11973) DoneButton.SetFlags(IE_GUI_BUTTON_DEFAULT,OP_OR) Modified: gemrb/trunk/gemrb/GUIScripts/bg2/GUICG2.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/GUICG2.py 2009-02-12 22:41:32 UTC (rev 5687) +++ gemrb/trunk/gemrb/GUIScripts/bg2/GUICG2.py 2009-02-14 11:27:58 UTC (rev 5688) @@ -63,8 +63,10 @@ BackButton = ClassWindow.GetControl(14) BackButton.SetText(15416) + BackButton.SetFlags (IE_GUI_BUTTON_CANCEL, OP_OR) DoneButton = ClassWindow.GetControl(0) DoneButton.SetText(11973) + DoneButton.SetFlags (IE_GUI_BUTTON_DEFAULT, OP_OR) TextAreaControl = ClassWindow.GetControl(13) Modified: gemrb/trunk/gemrb/GUIScripts/bg2/GUICG22.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/GUICG22.py 2009-02-12 22:41:32 UTC (rev 5687) +++ gemrb/trunk/gemrb/GUIScripts/bg2/GUICG22.py 2009-02-14 11:27:58 UTC (rev 5688) @@ -99,6 +99,7 @@ BackButton = KitWindow.GetControl(8) BackButton.SetText(15416) + BackButton.SetFlags (IE_GUI_BUTTON_CANCEL, OP_OR) DoneButton = KitWindow.GetControl(7) DoneButton.SetText(11973) DoneButton.SetFlags(IE_GUI_BUTTON_DEFAULT,OP_OR) Modified: gemrb/trunk/gemrb/GUIScripts/bg2/GUICG23.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/GUICG23.py 2009-02-12 22:41:32 UTC (rev 5687) +++ gemrb/trunk/gemrb/GUIScripts/bg2/GUICG23.py 2009-02-14 11:27:58 UTC (rev 5688) @@ -29,6 +29,7 @@ # back CancelButton = BioWindow.GetControl (2) CancelButton.SetText (12896) + CancelButton.SetFlags (IE_GUI_BUTTON_CANCEL, OP_OR) OkButton.SetEvent (IE_GUI_BUTTON_ON_PRESS, "OkPress") ClearButton.SetEvent (IE_GUI_BUTTON_ON_PRESS, "ClearPress") Modified: gemrb/trunk/gemrb/GUIScripts/bg2/GUICG24.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/GUICG24.py 2009-02-12 22:41:32 UTC (rev 5687) +++ gemrb/trunk/gemrb/GUIScripts/bg2/GUICG24.py 2009-02-14 11:27:58 UTC (rev 5688) @@ -20,6 +20,7 @@ CancelButton = ImportWindow.GetControl(3) CancelButton.SetText(13727) + CancelButton.SetFlags (IE_GUI_BUTTON_CANCEL, OP_OR) FileButton.SetEvent(IE_GUI_BUTTON_ON_PRESS, "FilePress") SavedGameButton.SetEvent(IE_GUI_BUTTON_ON_PRESS, "GamePress") Modified: gemrb/trunk/gemrb/GUIScripts/bg2/GUICG3.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/GUICG3.py 2009-02-12 22:41:32 UTC (rev 5687) +++ gemrb/trunk/gemrb/GUIScripts/bg2/GUICG3.py 2009-02-14 11:27:58 UTC (rev 5688) @@ -40,6 +40,7 @@ BackButton = AlignmentWindow.GetControl(13) BackButton.SetText(15416) + BackButton.SetFlags (IE_GUI_BUTTON_CANCEL, OP_OR) DoneButton = AlignmentWindow.GetControl(0) DoneButton.SetText(11973) DoneButton.SetFlags(IE_GUI_BUTTON_DEFAULT,OP_OR) Modified: gemrb/trunk/gemrb/GUIScripts/bg2/GUICG4.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/GUICG4.py 2009-02-12 22:41:32 UTC (rev 5687) +++ gemrb/trunk/gemrb/GUIScripts/bg2/GUICG4.py 2009-02-14 11:27:58 UTC (rev 5688) @@ -122,6 +122,7 @@ BackButton = AbilityWindow.GetControl(36) BackButton.SetText(15416) + BackButton.SetFlags (IE_GUI_BUTTON_CANCEL, OP_OR) DoneButton = AbilityWindow.GetControl(0) DoneButton.SetText(11973) DoneButton.SetFlags(IE_GUI_BUTTON_DEFAULT,OP_OR) Modified: gemrb/trunk/gemrb/GUIScripts/bg2/GUICG5.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/GUICG5.py 2009-02-12 22:41:32 UTC (rev 5687) +++ gemrb/trunk/gemrb/GUIScripts/bg2/GUICG5.py 2009-02-14 11:27:58 UTC (rev 5688) @@ -13,6 +13,7 @@ BackButton = NameWindow.GetControl(3) BackButton.SetText(15416) + BackButton.SetFlags (IE_GUI_BUTTON_CANCEL, OP_OR) DoneButton = NameWindow.GetControl(0) DoneButton.SetText(11973) Modified: gemrb/trunk/gemrb/GUIScripts/bg2/GUICG6.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/GUICG6.py 2009-02-12 22:41:32 UTC (rev 5687) +++ gemrb/trunk/gemrb/GUIScripts/bg2/GUICG6.py 2009-02-14 11:27:58 UTC (rev 5688) @@ -139,6 +139,7 @@ BackButton = SkillWindow.GetControl(25) BackButton.SetText(15416) + BackButton.SetFlags (IE_GUI_BUTTON_CANCEL, OP_OR) DoneButton = SkillWindow.GetControl(0) DoneButton.SetText(11973) DoneButton.SetFlags(IE_GUI_BUTTON_DEFAULT,OP_OR) Modified: gemrb/trunk/gemrb/GUIScripts/bg2/GUICG7.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/GUICG7.py 2009-02-12 22:41:32 UTC (rev 5687) +++ gemrb/trunk/gemrb/GUIScripts/bg2/GUICG7.py 2009-02-14 11:27:58 UTC (rev 5688) @@ -113,6 +113,7 @@ MageSpellsCancelButton.SetState(IE_GUI_BUTTON_ENABLED) MageSpellsCancelButton.SetEvent(IE_GUI_BUTTON_ON_PRESS, "MageSpellsCancelPress") MageSpellsCancelButton.SetText(13727) + MageSpellsCancelButton.SetFlags (IE_GUI_BUTTON_CANCEL, OP_OR) MageSpellsPickButton = MageSpellsWindow.GetControl(30) MageSpellsPickButton.SetState(IE_GUI_BUTTON_ENABLED) Modified: gemrb/trunk/gemrb/GUIScripts/bg2/GUICG8.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/GUICG8.py 2009-02-12 22:41:32 UTC (rev 5687) +++ gemrb/trunk/gemrb/GUIScripts/bg2/GUICG8.py 2009-02-14 11:27:58 UTC (rev 5688) @@ -28,6 +28,7 @@ BackButton = RaceWindow.GetControl(i+2) #i=8 now (when race count is 7) BackButton.SetText(15416) + BackButton.SetFlags (IE_GUI_BUTTON_CANCEL, OP_OR) DoneButton = RaceWindow.GetControl(0) DoneButton.SetText(11973) DoneButton.SetFlags(IE_GUI_BUTTON_DEFAULT,OP_OR) Modified: gemrb/trunk/gemrb/GUIScripts/bg2/GUICG9.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/GUICG9.py 2009-02-12 22:41:32 UTC (rev 5687) +++ gemrb/trunk/gemrb/GUIScripts/bg2/GUICG9.py 2009-02-14 11:27:58 UTC (rev 5688) @@ -132,6 +132,7 @@ BackButton = SkillWindow.GetControl(77) BackButton.SetText(15416) + BackButton.SetFlags (IE_GUI_BUTTON_CANCEL, OP_OR) DoneButton = SkillWindow.GetControl(0) DoneButton.SetText(11973) DoneButton.SetFlags(IE_GUI_BUTTON_DEFAULT,OP_OR) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lyn...@us...> - 2009-02-14 13:03:07
|
Revision: 5690 http://gemrb.svn.sourceforge.net/gemrb/?rev=5690&view=rev Author: lynxlupodian Date: 2009-02-14 12:34:48 +0000 (Sat, 14 Feb 2009) Log Message: ----------- bg2: fixed intro video playing and skipping now interested players can watch them all the time and others can skip them all the time (fixes tob showing the intro when skipping is on) Modified Paths: -------------- gemrb/trunk/gemrb/GUIScripts/bg2/Start.py gemrb/trunk/gemrb/GUIScripts/bg2/Start2.py Modified: gemrb/trunk/gemrb/GUIScripts/bg2/Start.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/Start.py 2009-02-14 11:59:50 UTC (rev 5689) +++ gemrb/trunk/gemrb/GUIScripts/bg2/Start.py 2009-02-14 12:34:48 UTC (rev 5690) @@ -10,9 +10,9 @@ GemRB.EnableCheatKeys(1) skip_videos = GemRB.GetVar ("SkipIntroVideos") if not skip_videos: - GemRB.PlayMovie ("BISLOGO") - GemRB.PlayMovie ("BWDRAGON") - GemRB.PlayMovie ("WOTC") + GemRB.PlayMovie ("BISLOGO", 1) + GemRB.PlayMovie ("BWDRAGON", 1) + GemRB.PlayMovie ("WOTC", 1) # Find proper window border for higher resolutions screen_width = GemRB.GetSystemVariable (SV_WIDTH) @@ -60,8 +60,6 @@ GemRB.SetMasterScript("BALDUR","WORLDMAP") GemRB.SetVar("oldgame",1) GemRB.SetNextScript("Start2") - if not skip_videos: - GemRB.PlayMovie ("INTRO15F") return def ToBPress(): @@ -70,8 +68,6 @@ if StartWindow: StartWindow.Unload() GemRB.SetNextScript("Start2") - if not skip_videos: - GemRB.PlayMovie ("INTRO") return def ExitPress(): Modified: gemrb/trunk/gemrb/GUIScripts/bg2/Start2.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/Start2.py 2009-02-14 11:59:50 UTC (rev 5689) +++ gemrb/trunk/gemrb/GUIScripts/bg2/Start2.py 2009-02-14 12:34:48 UTC (rev 5690) @@ -16,7 +16,7 @@ global ExitButton, OptionsButton, MultiPlayerButton, MoviesButton, SinglePlayerButton global SinglePlayerButton - skip_videos = not GemRB.GetVar ("SkipIntroVideos") + skip_videos = GemRB.GetVar ("SkipIntroVideos") GemRB.LoadWindowPack("START", 640, 480) #tutorial subwindow @@ -50,9 +50,11 @@ if GemRB.GetVar("oldgame")==1: if GameIsTOB(): StartWindow.SetPicture("STARTOLD") - GemRB.PlayMovie ("INTRO15F",skip_videos) + if not skip_videos: + GemRB.PlayMovie ("INTRO15F", 1) else: - GemRB.PlayMovie ("INTRO",skip_videos) + if not skip_videos: + GemRB.PlayMovie ("INTRO", 1) #end ToB specific part SinglePlayerButton = StartWindow.GetControl(0) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lyn...@us...> - 2009-02-14 13:03:26
|
Revision: 5689 http://gemrb.svn.sourceforge.net/gemrb/?rev=5689&view=rev Author: lynxlupodian Date: 2009-02-14 11:59:50 +0000 (Sat, 14 Feb 2009) Log Message: ----------- bg2: default cancel for various windows Modified Paths: -------------- gemrb/trunk/gemrb/GUIScripts/bg2/ExportFile.py gemrb/trunk/gemrb/GUIScripts/bg2/ImportFile.py gemrb/trunk/gemrb/GUIScripts/bg2/ImportGame.py gemrb/trunk/gemrb/GUIScripts/bg2/Start.py gemrb/trunk/gemrb/GUIScripts/bg2/Start2.py gemrb/trunk/gemrb/GUIScripts/bg2/StartOpt.py Modified: gemrb/trunk/gemrb/GUIScripts/bg2/ExportFile.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/ExportFile.py 2009-02-14 11:27:58 UTC (rev 5688) +++ gemrb/trunk/gemrb/GUIScripts/bg2/ExportFile.py 2009-02-14 11:59:50 UTC (rev 5689) @@ -21,9 +21,11 @@ DoneButton = ImportWindow.GetControl (0) DoneButton.SetText (2610) DoneButton.SetState (IE_GUI_BUTTON_DISABLED) + DoneButton.SetFlags (IE_GUI_BUTTON_DEFAULT, OP_OR) CancelButton = ImportWindow.GetControl (1) CancelButton.SetText (15416) + CancelButton.SetFlags (IE_GUI_BUTTON_CANCEL, OP_OR) DoneButton.SetEvent (IE_GUI_BUTTON_ON_PRESS, "DonePress") CancelButton.SetEvent (IE_GUI_BUTTON_ON_PRESS, "CancelPress") Modified: gemrb/trunk/gemrb/GUIScripts/bg2/ImportFile.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/ImportFile.py 2009-02-14 11:27:58 UTC (rev 5688) +++ gemrb/trunk/gemrb/GUIScripts/bg2/ImportFile.py 2009-02-14 11:59:50 UTC (rev 5689) @@ -21,9 +21,11 @@ DoneButton = ImportWindow.GetControl(0) DoneButton.SetText(2610) DoneButton.SetState(IE_GUI_BUTTON_DISABLED) + DoneButton.SetFlags (IE_GUI_BUTTON_DEFAULT, OP_OR) CancelButton = ImportWindow.GetControl(1) CancelButton.SetText(15416) + CancelButton.SetFlags (IE_GUI_BUTTON_CANCEL, OP_OR) DoneButton.SetEvent(IE_GUI_BUTTON_ON_PRESS, "DonePress") CancelButton.SetEvent(IE_GUI_BUTTON_ON_PRESS, "CancelPress") Modified: gemrb/trunk/gemrb/GUIScripts/bg2/ImportGame.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/ImportGame.py 2009-02-14 11:27:58 UTC (rev 5688) +++ gemrb/trunk/gemrb/GUIScripts/bg2/ImportGame.py 2009-02-14 11:59:50 UTC (rev 5689) @@ -19,9 +19,11 @@ DoneButton = ImportWindow.GetControl(0) DoneButton.SetText(2610) DoneButton.SetState(IE_GUI_BUTTON_DISABLED) + DoneButton.SetFlags (IE_GUI_BUTTON_DEFAULT, OP_OR) CancelButton = ImportWindow.GetControl(1) CancelButton.SetText(15416) + CancelButton.SetFlags (IE_GUI_BUTTON_CANCEL, OP_OR) DoneButton.SetEvent(IE_GUI_BUTTON_ON_PRESS, "Done1Press") CancelButton.SetEvent(IE_GUI_BUTTON_ON_PRESS, "CancelPress") Modified: gemrb/trunk/gemrb/GUIScripts/bg2/Start.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/Start.py 2009-02-14 11:27:58 UTC (rev 5688) +++ gemrb/trunk/gemrb/GUIScripts/bg2/Start.py 2009-02-14 11:59:50 UTC (rev 5689) @@ -46,6 +46,7 @@ ToBButton.SetText(73248) ExitButton = StartWindow.GetControl(4) ExitButton.SetText(13731) + ExitButton.SetFlags (IE_GUI_BUTTON_CANCEL, OP_OR) SoAButton.SetEvent(IE_GUI_BUTTON_ON_PRESS, "SoAPress") ToBButton.SetEvent(IE_GUI_BUTTON_ON_PRESS, "ToBPress") ExitButton.SetEvent(IE_GUI_BUTTON_ON_PRESS, "ExitPress") Modified: gemrb/trunk/gemrb/GUIScripts/bg2/Start2.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/Start2.py 2009-02-14 11:27:58 UTC (rev 5688) +++ gemrb/trunk/gemrb/GUIScripts/bg2/Start2.py 2009-02-14 11:59:50 UTC (rev 5689) @@ -29,6 +29,8 @@ PlayButton.SetText(33093) PlayButton.SetEvent(IE_GUI_BUTTON_ON_PRESS, "PlayPress") CancelButton.SetEvent(IE_GUI_BUTTON_ON_PRESS, "CancelTut") + PlayButton.SetFlags (IE_GUI_BUTTON_DEFAULT, OP_OR) + CancelButton.SetFlags (IE_GUI_BUTTON_CANCEL, OP_OR) #quit subwindow QuitWindow = GemRB.LoadWindowObject(3) QuitTextArea = QuitWindow.GetControl(0) @@ -39,6 +41,8 @@ ConfirmButton.SetText(15417) ConfirmButton.SetEvent(0, "ExitConfirmed") CancelButton.SetEvent(0, "ExitCancelled") + ConfirmButton.SetFlags (IE_GUI_BUTTON_DEFAULT, OP_OR) + CancelButton.SetFlags (IE_GUI_BUTTON_CANCEL, OP_OR) #main window StartWindow = GemRB.LoadWindowObject(0) StartWindow.SetFrame () @@ -78,6 +82,7 @@ MultiPlayerButton.SetEvent(IE_GUI_BUTTON_ON_PRESS, "MultiPlayerPress") MoviesButton.SetEvent(IE_GUI_BUTTON_ON_PRESS, "MoviesPress") DisabledButton.SetEvent(IE_GUI_BUTTON_ON_PRESS, "") + ExitButton.SetFlags (IE_GUI_BUTTON_CANCEL, OP_OR) QuitWindow.SetVisible(0) TutorialWindow.SetVisible(0) StartWindow.SetVisible(1) Modified: gemrb/trunk/gemrb/GUIScripts/bg2/StartOpt.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/StartOpt.py 2009-02-14 11:27:58 UTC (rev 5688) +++ gemrb/trunk/gemrb/GUIScripts/bg2/StartOpt.py 2009-02-14 11:59:50 UTC (rev 5689) @@ -23,6 +23,7 @@ GameButton.SetEvent(IE_GUI_BUTTON_ON_PRESS, "GamePress") GraphicButton.SetEvent(IE_GUI_BUTTON_ON_PRESS, "GraphicPress") BackButton.SetEvent(IE_GUI_BUTTON_ON_PRESS, "BackPress") + BackButton.SetFlags (IE_GUI_BUTTON_CANCEL, OP_OR) OptionsWindow.SetVisible(1) return This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lyn...@us...> - 2009-02-14 13:38:55
|
Revision: 5691 http://gemrb.svn.sourceforge.net/gemrb/?rev=5691&view=rev Author: lynxlupodian Date: 2009-02-14 13:38:43 +0000 (Sat, 14 Feb 2009) Log Message: ----------- bg2: more default button assignments (all except the main ingame windows) Modified Paths: -------------- gemrb/trunk/gemrb/GUIScripts/bg2/GUILOAD.py gemrb/trunk/gemrb/GUIScripts/bg2/GUIOPT.py gemrb/trunk/gemrb/GUIScripts/bg2/GUIOPT10.py gemrb/trunk/gemrb/GUIScripts/bg2/GUIOPT12.py gemrb/trunk/gemrb/GUIScripts/bg2/GUIOPT6.py gemrb/trunk/gemrb/GUIScripts/bg2/GUIOPT7.py gemrb/trunk/gemrb/GUIScripts/bg2/GUIOPT8.py gemrb/trunk/gemrb/GUIScripts/bg2/GUIOPT9.py gemrb/trunk/gemrb/GUIScripts/bg2/GUISAVE.py Modified: gemrb/trunk/gemrb/GUIScripts/bg2/GUILOAD.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/GUILOAD.py 2009-02-14 12:34:48 UTC (rev 5690) +++ gemrb/trunk/gemrb/GUIScripts/bg2/GUILOAD.py 2009-02-14 13:38:43 UTC (rev 5691) @@ -21,6 +21,7 @@ CancelButton=LoadWindow.GetControl(34) CancelButton.SetText(13727) CancelButton.SetEvent(IE_GUI_BUTTON_ON_PRESS, "CancelPress") + CancelButton.SetFlags (IE_GUI_BUTTON_CANCEL, OP_OR) GemRB.SetVar("LoadIdx",0) for i in range(4): Modified: gemrb/trunk/gemrb/GUIScripts/bg2/GUIOPT.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/GUIOPT.py 2009-02-14 12:34:48 UTC (rev 5690) +++ gemrb/trunk/gemrb/GUIScripts/bg2/GUIOPT.py 2009-02-14 13:38:43 UTC (rev 5691) @@ -701,12 +701,14 @@ button = window.GetControl (button_id) button.SetText (11973) # Done button.SetEvent (IE_GUI_BUTTON_ON_PRESS, "Close%sWindow" %name) + button.SetFlags (IE_GUI_BUTTON_DEFAULT, OP_OR) def OptCancel (name, window, button_id): """Standard `Cancel' button for option windows""" button = window.GetControl (button_id) button.SetText (13727) # Cancel button.SetEvent (IE_GUI_BUTTON_ON_PRESS, "Close%sWindow" %name) + button.SetFlags (IE_GUI_BUTTON_CANCEL, OP_OR) def OptHelpText (name, window, text_id, text_strref): """Standard textarea with context help for option windows""" Modified: gemrb/trunk/gemrb/GUIScripts/bg2/GUIOPT10.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/GUIOPT10.py 2009-02-14 12:34:48 UTC (rev 5690) +++ gemrb/trunk/gemrb/GUIScripts/bg2/GUIOPT10.py 2009-02-14 13:38:43 UTC (rev 5691) @@ -93,7 +93,9 @@ AutopauseCenterB.SetEvent(IE_GUI_BUTTON_ON_PRESS, "AutopauseCenterPress") OkButton.SetEvent(IE_GUI_BUTTON_ON_PRESS, "OkPress") + OkButton.SetFlags (IE_GUI_BUTTON_DEFAULT, OP_OR) CancelButton.SetEvent(IE_GUI_BUTTON_ON_PRESS, "CancelPress") + CancelButton.SetFlags (IE_GUI_BUTTON_CANCEL, OP_OR) AutopauseCenterB.SetVarAssoc("Auto Pause Center",1) Modified: gemrb/trunk/gemrb/GUIScripts/bg2/GUIOPT12.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/GUIOPT12.py 2009-02-14 12:34:48 UTC (rev 5690) +++ gemrb/trunk/gemrb/GUIScripts/bg2/GUIOPT12.py 2009-02-14 13:38:43 UTC (rev 5691) @@ -70,7 +70,9 @@ SelectionButtonB3.SetVarAssoc("Selection Sounds Frequency",3) OkButton.SetEvent(IE_GUI_BUTTON_ON_PRESS, "OkPress") + OkButton.SetFlags (IE_GUI_BUTTON_DEFAULT, OP_OR) CancelButton.SetEvent(IE_GUI_BUTTON_ON_PRESS, "CancelPress") + CancelButton.SetFlags (IE_GUI_BUTTON_CANCEL, OP_OR) SoundWindow.SetVisible(1) return Modified: gemrb/trunk/gemrb/GUIScripts/bg2/GUIOPT6.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/GUIOPT6.py 2009-02-14 12:34:48 UTC (rev 5690) +++ gemrb/trunk/gemrb/GUIScripts/bg2/GUIOPT6.py 2009-02-14 13:38:43 UTC (rev 5691) @@ -77,7 +77,9 @@ SoftStandBltButton.SetEvent(IE_GUI_BUTTON_ON_PRESS, "SoftStandBltPress") SoftStandBltButtonB.SetEvent(IE_GUI_BUTTON_ON_PRESS, "SoftStandBltPress") OkButton.SetEvent(IE_GUI_BUTTON_ON_PRESS, "OkPress") + OkButton.SetFlags (IE_GUI_BUTTON_DEFAULT, OP_OR) CancelButton.SetEvent(IE_GUI_BUTTON_ON_PRESS, "CancelPress") + CancelButton.SetFlags (IE_GUI_BUTTON_CANCEL, OP_OR) GraphicsWindow.ShowModal() return Modified: gemrb/trunk/gemrb/GUIScripts/bg2/GUIOPT7.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/GUIOPT7.py 2009-02-14 12:34:48 UTC (rev 5690) +++ gemrb/trunk/gemrb/GUIScripts/bg2/GUIOPT7.py 2009-02-14 13:38:43 UTC (rev 5691) @@ -56,7 +56,9 @@ CharacterSoundButton.SetEvent(IE_GUI_BUTTON_ON_PRESS, "CharacterSoundPress") OkButton.SetEvent(IE_GUI_BUTTON_ON_PRESS, "OkPress") + OkButton.SetFlags (IE_GUI_BUTTON_DEFAULT, OP_OR) CancelButton.SetEvent(IE_GUI_BUTTON_ON_PRESS, "CancelPress") + CancelButton.SetFlags (IE_GUI_BUTTON_CANCEL, OP_OR) SoundWindow.SetVisible(1) return Modified: gemrb/trunk/gemrb/GUIScripts/bg2/GUIOPT8.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/GUIOPT8.py 2009-02-14 12:34:48 UTC (rev 5690) +++ gemrb/trunk/gemrb/GUIScripts/bg2/GUIOPT8.py 2009-02-14 13:38:43 UTC (rev 5691) @@ -83,7 +83,9 @@ FeedbackButton.SetEvent(IE_GUI_BUTTON_ON_PRESS, "FeedbackPress") AutoPauseButton.SetEvent(IE_GUI_BUTTON_ON_PRESS, "AutoPausePress") OkButton.SetEvent(IE_GUI_BUTTON_ON_PRESS, "OkPress") + OkButton.SetFlags (IE_GUI_BUTTON_DEFAULT, OP_OR) CancelButton.SetEvent(IE_GUI_BUTTON_ON_PRESS, "CancelPress") + CancelButton.SetFlags (IE_GUI_BUTTON_CANCEL, OP_OR) GamePlayWindow.SetVisible(1) return Modified: gemrb/trunk/gemrb/GUIScripts/bg2/GUIOPT9.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/GUIOPT9.py 2009-02-14 12:34:48 UTC (rev 5690) +++ gemrb/trunk/gemrb/GUIScripts/bg2/GUIOPT9.py 2009-02-14 13:38:43 UTC (rev 5691) @@ -80,7 +80,9 @@ MiscellaneousB.SetVarAssoc("Miscellaneous Text",1) OkButton.SetEvent(IE_GUI_BUTTON_ON_PRESS, "OkPress") + OkButton.SetFlags (IE_GUI_BUTTON_DEFAULT, OP_OR) CancelButton.SetEvent(IE_GUI_BUTTON_ON_PRESS, "CancelPress") + CancelButton.SetFlags (IE_GUI_BUTTON_CANCEL, OP_OR) FeedbackWindow.SetVisible(1) return Modified: gemrb/trunk/gemrb/GUIScripts/bg2/GUISAVE.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/GUISAVE.py 2009-02-14 12:34:48 UTC (rev 5690) +++ gemrb/trunk/gemrb/GUIScripts/bg2/GUISAVE.py 2009-02-14 13:38:43 UTC (rev 5691) @@ -27,6 +27,7 @@ CancelButton=Window.GetControl (34) CancelButton.SetText (13727) CancelButton.SetEvent (IE_GUI_BUTTON_ON_PRESS, "OpenSaveWindow") + CancelButton.SetFlags (IE_GUI_BUTTON_CANCEL, OP_OR) GemRB.SetVar ("LoadIdx",0) for i in range(4): This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lyn...@us...> - 2009-03-19 16:08:30
|
Revision: 5813 http://gemrb.svn.sourceforge.net/gemrb/?rev=5813&view=rev Author: lynxlupodian Date: 2009-03-19 16:08:03 +0000 (Thu, 19 Mar 2009) Log Message: ----------- CanDualClass: revert to the use of eval, locals() and globals() are sometimes empty; comment changes Modified Paths: -------------- gemrb/trunk/gemrb/GUIScripts/bg2/CharGen9.py gemrb/trunk/gemrb/GUIScripts/bg2/GUIREC.py gemrb/trunk/gemrb/GUIScripts/bg2/LevelUp.py Modified: gemrb/trunk/gemrb/GUIScripts/bg2/CharGen9.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/CharGen9.py 2009-03-18 18:08:12 UTC (rev 5812) +++ gemrb/trunk/gemrb/GUIScripts/bg2/CharGen9.py 2009-03-19 16:08:03 UTC (rev 5813) @@ -24,7 +24,7 @@ GemRB.SetPlayerStat (MyChar, IE_SEX, GemRB.GetVar ("Gender") ) KitTable = GemRB.LoadTableObject ("kitlist") RaceTable = GemRB.LoadTableObject ("races") - Race = GemRB.GetVar ("Race")-1 + Race = GemRB.GetVar ("Race")-1 # the row number in the races table GemRB.SetPlayerStat (MyChar, IE_RACE, RaceTable.GetValue (Race, 3) ) t = GemRB.GetVar ("Alignment") GemRB.SetPlayerStat (MyChar, IE_ALIGNMENT, t) Modified: gemrb/trunk/gemrb/GUIScripts/bg2/GUIREC.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/GUIREC.py 2009-03-18 18:08:12 UTC (rev 5812) +++ gemrb/trunk/gemrb/GUIScripts/bg2/GUIREC.py 2009-03-19 16:08:03 UTC (rev 5813) @@ -887,7 +887,7 @@ for stat in range(6): minimum = StatTable.GetValue (ClassStatIndex, stat) name = StatTable.GetColumnName (stat) - if GemRB.GetPlayerStat (actor, locals()["IE_" + name[4:]]) < minimum: + if GemRB.GetPlayerStat (actor, eval("IE_" + name[4:])) < minimum: return 1 # check new class' stat limitations - make sure there are any good class choices @@ -897,7 +897,7 @@ for stat in range(6): minimum = StatTable.GetValue (ClassStatIndex, stat) name = StatTable.GetColumnName (stat) - if GemRB.GetPlayerStat (actor, locals()["IE_" + name[4:]]) < minimum: + if GemRB.GetPlayerStat (actor, eval("IE_" + name[4:])) < minimum: matches.remove(match) break if len(matches) == 0: Modified: gemrb/trunk/gemrb/GUIScripts/bg2/LevelUp.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/LevelUp.py 2009-03-18 18:08:12 UTC (rev 5812) +++ gemrb/trunk/gemrb/GUIScripts/bg2/LevelUp.py 2009-03-19 16:08:03 UTC (rev 5813) @@ -388,7 +388,7 @@ if InfoCounter % 2: pc = GemRB.GameGetSelectedPCSingle () # call GetStatOverview with the new levels, so the future overview is shown - # TODO: also take in effect the current prof and skill selection + # TODO: show only xp, levels, thac0, #att, lore, reputation, backstab, saving throws TextAreaControl.SetText(GetStatOverview(pc, LevelDiff)) else: TextAreaControl.SetText(GetLevelUpNews()) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ze...@us...> - 2009-03-22 18:54:43
|
Revision: 5823 http://gemrb.svn.sourceforge.net/gemrb/?rev=5823&view=rev Author: zefklop Date: 2009-03-22 18:54:33 +0000 (Sun, 22 Mar 2009) Log Message: ----------- Apply 5819, 5820, 5821 and 5822 to bg2. Modified Paths: -------------- gemrb/trunk/gemrb/GUIScripts/bg2/GUIREC.py gemrb/trunk/gemrb/GUIScripts/bg2/GUIWORLD.py Modified: gemrb/trunk/gemrb/GUIScripts/bg2/GUIREC.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/GUIREC.py 2009-03-22 18:43:03 UTC (rev 5822) +++ gemrb/trunk/gemrb/GUIScripts/bg2/GUIREC.py 2009-03-22 18:54:33 UTC (rev 5823) @@ -103,7 +103,7 @@ # reform party Button = Window.GetControl (51) Button.SetText (16559) - Button.SetEvent (IE_GUI_BUTTON_ON_PRESS, "OpenReformPartyWindow") + Button.SetEvent (IE_GUI_BUTTON_ON_PRESS, "OpenRecReformPartyWindow") # customize Button = Window.GetControl (50) @@ -127,6 +127,12 @@ PortraitWindow.SetVisible (1) return +#original returns to game before continuing... +def OpenRecReformPartyWindow (): + OpenRecordsWindow() + GemRB.SetTimedEvent ("OpenReformPartyWindow", 1) + return + def GetNextLevelExp (Level, Class): NextLevelTable = GemRB.LoadTableObject ("XPLEVEL") Row = NextLevelTable.GetRowIndex (Class) Modified: gemrb/trunk/gemrb/GUIScripts/bg2/GUIWORLD.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/GUIWORLD.py 2009-03-22 18:43:03 UTC (rev 5822) +++ gemrb/trunk/gemrb/GUIScripts/bg2/GUIWORLD.py 2009-03-22 18:54:33 UTC (rev 5823) @@ -397,31 +397,18 @@ return def RemovePlayerConfirm (): - global ReformPartyWindow - - hideflag = GemRB.HideGUI () - if ReformPartyWindow: - ReformPartyWindow.Unload () - GemRB.SetVar ("OtherWindow", -1) - #removing selected player - ReformPartyWindow = None - if hideflag: - GemRB.UnhideGUI () - GemRB.LeaveParty (GemRB.GetVar("Selected") ) + slot = GemRB.GetVar("Selected") + if GemRB.GetPlayerStat(slot, IE_HITPOINTS) > 0: + GemRB.ExecuteString("Dialogue([PC])", slot) + GemRB.LeaveParty (slot ) OpenReformPartyWindow () return def RemovePlayerCancel (): - global ReformPartyWindow - - hideflag = GemRB.HideGUI () - if ReformPartyWindow: - ReformPartyWindow.Unload () - GemRB.SetVar ("OtherWindow", -1) - ReformPartyWindow = None - if hideflag: - GemRB.UnhideGUI () + #Once for getting rid of the confirmation window OpenReformPartyWindow () + #and once for reopening the reform party window + OpenReformPartyWindow () return def OpenReformPartyWindow (): @@ -445,6 +432,7 @@ GemRB.UnhideGUI () #re-enabling party size control GemRB.GameSetPartySize (PARTY_SIZE) + UpdatePortraitWindow() return GemRB.LoadWindowPack (GetWindowPack()) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lyn...@us...> - 2009-05-05 08:31:58
|
Revision: 5935 http://gemrb.svn.sourceforge.net/gemrb/?rev=5935&view=rev Author: lynxlupodian Date: 2009-05-05 08:31:32 +0000 (Tue, 05 May 2009) Log Message: ----------- applied the chargen part of mattinm's patch [2787033] Modified Paths: -------------- gemrb/trunk/gemrb/GUIScripts/bg2/CharGen2.py gemrb/trunk/gemrb/GUIScripts/bg2/CharGen3.py gemrb/trunk/gemrb/GUIScripts/bg2/CharGen4.py gemrb/trunk/gemrb/GUIScripts/bg2/CharGen5.py gemrb/trunk/gemrb/GUIScripts/bg2/CharGen6.py gemrb/trunk/gemrb/GUIScripts/bg2/CharGen7.py gemrb/trunk/gemrb/GUIScripts/bg2/CharGen9.py Modified: gemrb/trunk/gemrb/GUIScripts/bg2/CharGen2.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/CharGen2.py 2009-05-05 07:17:59 UTC (rev 5934) +++ gemrb/trunk/gemrb/GUIScripts/bg2/CharGen2.py 2009-05-05 08:31:32 UTC (rev 5935) @@ -1,10 +1,40 @@ -#character generation (GUICG 0) +# -*-python-*- +# GemRB - Infinity Engine Emulator +# Copyright (C) 2003-2004 The GemRB Project +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# $Id$ +# character generation - gender; next race (CharGen2) import GemRB from CharGenCommon import * def OnLoad(): - GemRB.SetVar("Race",0) #race + MyChar = GemRB.GetVar ("Slot") + GemRB.SetVar ("Race",0) #race + GemRB.SetPlayerStat (MyChar, IE_RACE, 0) + # save that stats we would have gotten: + # gender + Gender = GemRB.GetVar ("Gender") + GemRB.SetPlayerStat (MyChar, IE_SEX, Gender) + + # diagnostic output + print "CharGen2 output:" + print "\tGender: ",Gender + DisplayOverview (2) return Modified: gemrb/trunk/gemrb/GUIScripts/bg2/CharGen3.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/CharGen3.py 2009-05-05 07:17:59 UTC (rev 5934) +++ gemrb/trunk/gemrb/GUIScripts/bg2/CharGen3.py 2009-05-05 08:31:32 UTC (rev 5935) @@ -1,11 +1,44 @@ -#character generation (GUICG 0) +# -*-python-*- +# GemRB - Infinity Engine Emulator +# Copyright (C) 2003-2004 The GemRB Project +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# $Id$ +# character generation - race; next class/kit (CharGen3) import GemRB from CharGenCommon import * def OnLoad(): + MyChar = GemRB.GetVar ("Slot") GemRB.SetVar("Class",0) #class GemRB.SetVar("Class Kit",0) #class kit + GemRB.SetPlayerStat (MyChar, IE_CLASS, 0) + GemRB.SetPlayerStat (MyChar, IE_KIT, 0) + # set new stats: + # race + RaceTable = GemRB.LoadTableObject ("races") + Race = GemRB.GetVar ("Race") - 1 + GemRB.SetPlayerStat (MyChar, IE_RACE, RaceTable.GetValue (Race, 3)) + + # diagnostic output + print "CharGen3 output:" + print "\tRace: ",Race + print "\tRace Name: ",RaceTable.GetRowName (Race) + DisplayOverview (3) return Modified: gemrb/trunk/gemrb/GUIScripts/bg2/CharGen4.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/CharGen4.py 2009-05-05 07:17:59 UTC (rev 5934) +++ gemrb/trunk/gemrb/GUIScripts/bg2/CharGen4.py 2009-05-05 08:31:32 UTC (rev 5935) @@ -1,11 +1,107 @@ -#character generation (GUICG 0) +# -*-python-*- +# GemRB - Infinity Engine Emulator +# Copyright (C) 2003-2004 The GemRB Project +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# $Id$ +# character generation - classes+kits; next alignment/reputation(CharGen4.py) import GemRB from CharGenCommon import * def OnLoad(): - GemRB.SetVar("Alignment",-1) #alignment + MyChar = GemRB.GetVar ("Slot") + GemRB.SetVar ("Alignment", -1) #alignment + GemRB.SetPlayerStat (MyChar, IE_ALIGNMENT, 0) + GemRB.SetPlayerStat (MyChar, IE_REPUTATION, 0) + # save new stats + # class + # kit + # class/kit abilites + + # A little explanation for the different handling of mage kit values: + # Originally, the IE had only mage schools, and the kit field + # was simply an unusability field (with a single bit set) + # then BG2 crammed in a lot more kits, and 32 bits were not enough. + # They solved this by making the generalist value 0x4000 to hold + # the kit index in the lower portions. + # When you see 0x4000 in a kit value, you need to translate + # the kit index to unusability value, using the kitlist + # So, for mages, the kit equals to the unusability value + # but for others there is an additional mapping by kitlist.2da + + # find the class from the class table + ClassTable = GemRB.LoadTableObject ("classes") + ClassIndex = GemRB.GetVar ("Class") - 1 + Class = ClassTable.GetValue (ClassIndex, 5) + ClassName = ClassTable.GetRowName (ClassIndex) + GemRB.SetPlayerStat (MyChar, IE_CLASS, Class) + + # save the kit + KitList = GemRB.LoadTableObject ("kitlist") + KitIndex = GemRB.GetVar ("Class Kit") + KitValue = (0x4000 + KitIndex)<<16 + KitName = KitList.GetValue (KitIndex, 0) + GemRB.SetPlayerStat (MyChar, IE_KIT, KitValue) + + # save the class/kit abilites + ClassSkillsTable = GemRB.LoadTableObject ("clskills") + + # no table for innates, so we make it a high value + # to guarantee innate, class ability and HLA memorization works + GemRB.SetMemorizableSpellsCount (MyChar, 50, IE_SPELL_TYPE_INNATE, 0) + + # apply class/kit abilities + if KitIndex: + ABTable = KitList.GetValue (str(KitIndex), "ABILITIES") + else: + ABTable = ClassSkillsTable.GetValue (ClassName, "ABILITIES") + if not KitIndex and "," in ABTable: + # multiclass + classes = ABTable.split(",") + for j in classes: + AddClassAbilities (MyChar, "CLAB"+j) + else: + if ABTable != "*" and ABTable[:6] != "CLABMA": # mage kits specify ability tables which don't exist + AddClassAbilities (MyChar, ABTable) + + + # diagnostic output + print "CharGen4 output:" + print "\tClass: ",Class + print "\tClass Name: ",ClassName + print "\tKitValue: ",KitValue + print "\tKitName: ",KitName + print "\tABTable: ",ABTable + DisplayOverview (4) return +def AddClassAbilities (MyChar, TmpTable): + TmpTable = GemRB.LoadTableObject (TmpTable) + + for i in range(TmpTable.GetRowCount()): + ab = TmpTable.GetValue (i, 0) # only add level 1 abilities + if ab != "****": + # apply spell (AP_) or gain spell (GA_) + if ab[:2] == "AP": + GemRB.ApplySpell (MyChar, ab[3:]) + elif ab[:2] == "GA": + GemRB.LearnSpell (MyChar, ab[3:], 8) + # TODO: fix memorization when the spell is already known + else: + print "ERROR, unknown class ability (type): ", ab Modified: gemrb/trunk/gemrb/GUIScripts/bg2/CharGen5.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/CharGen5.py 2009-05-05 07:17:59 UTC (rev 5934) +++ gemrb/trunk/gemrb/GUIScripts/bg2/CharGen5.py 2009-05-05 08:31:32 UTC (rev 5935) @@ -1,11 +1,63 @@ -#character generation (GUICG 0) +# -*-python-*- +# GemRB - Infinity Engine Emulator +# Copyright (C) 2003-2004 The GemRB Project +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# $Id$ +#character generation - alignment; next abilities (GUICG 0) import GemRB from CharGenCommon import * def OnLoad(): - for i in range(-1,6): - GemRB.SetVar("Ability "+str(i),0) #abilities + MyChar = GemRB.GetVar ("Slot") + AbilityTable = GemRB.LoadTableObject ("ability") + AbilityCount = AbilityTable.GetRowCount () + + # set all our abilites to zero + GemRB.SetVar ("Ability -1", 0) + GemRB.SetVar ("StrExtra", 0) + GemRB.SetPlayerStat (MyChar, IE_STREXTRA, 0) + for i in range(AbilityCount): + GemRB.SetVar ("Ability "+str(i), 0) + StatID = AbilityTable.GetValue (i, 3) + GemRB.SetPlayerStat (MyChar, StatID, 0) + # save previous stats: + # alignment + # reputation + # alignment abilities + Alignment = GemRB.GetVar ("Alignment") + AlignmentTable = GemRB.LoadTableObject ("aligns") + GemRB.SetPlayerStat (MyChar, IE_ALIGNMENT, Alignment) + + # use the alignment to apply starting reputation + RepTable = GemRB.LoadTableObject ("repstart") + AlignmentAbbrev = AlignmentTable.FindValue (3, Alignment) + Rep = RepTable.GetValue (AlignmentAbbrev, 0) * 10 + GemRB.SetPlayerStat (MyChar, IE_REPUTATION, Rep) + + # set the party rep if this in the main char + if MyChar == 1: + GemRB.GameSetReputation (Rep) + + # diagnostic output + print "CharGen5 output:" + print "\tAlignment: ",Alignment + print "\tReputation: ",Rep + DisplayOverview (5) return Modified: gemrb/trunk/gemrb/GUIScripts/bg2/CharGen6.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/CharGen6.py 2009-05-05 07:17:59 UTC (rev 5934) +++ gemrb/trunk/gemrb/GUIScripts/bg2/CharGen6.py 2009-05-05 08:31:32 UTC (rev 5935) @@ -1,15 +1,73 @@ -#character generation (GUICG 0) +# -*-python-*- +# GemRB - Infinity Engine Emulator +# Copyright (C) 2003-2004 The GemRB Project +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# $Id$ +# character generation - ability; next skills/profs/spells (CharGen6) import GemRB from CharGenCommon import * from GUICG7 import RemoveKnownSpells def OnLoad(): - for i in range(0,6): - GemRB.SetVar("Skill "+str(i),0) #thieving skills - for i in range(0,32): - GemRB.SetVar("Prof "+str(i),0) #proficiencies - GemRB.SetVar("HateRace",0) + MyChar = GemRB.GetVar ("Slot") + # nullify our thieving skills + SkillsTable = GemRB.LoadTableObject ("skills") + SkillsCount = SkillsTable.GetRowCount () - 2 # first 2 are starting values + for i in range (SkillsCount): + StatID = SkillsTable.GetValue (i+2, 2) + GemRB.SetVar ("Skill "+str(i), 0) + GemRB.SetPlayerStat (MyChar, StatID, 0) + + # nullify our proficiencies + ProfsTable = GemRB.LoadTableObject ("weapprof") + ProfsCount = ProfsTable.GetRowCount () - 8 # we don't want bg1 profs + for i in range (ProfsCount): + StatID = ProfsTable.GetValue (i+8, 0) + GemRB.SetVar ("Prof "+str(i), 0) + GemRB.SetPlayerStat (MyChar, StatID, 0) + + # nully other variables + GemRB.SetVar ("HateRace", 0) + + # save our previous stats: + # abilities + AbilityTable = GemRB.LoadTableObject ("ability") + AbilityCount = AbilityTable.GetRowCount () + + # print our diagnostic as we loop (so as not to duplicate) + print "CharGen6 output:" + + for i in range (AbilityCount): + StatID = AbilityTable.GetValue (i, 3) + StatName = AbilityTable.GetRowName (i) + StatValue = GemRB.GetVar ("Ability "+str(i)) + GemRB.SetPlayerStat (MyChar, StatID, StatValue) + print "\t",StatName,":\t", StatValue + + # TODO: don't all chars have an str mod, even if it isn't applied? + # so it should be the cores duty to decide whether or not the char + # has 18 str in game and adjust accordingly; you wouldn't want an + # 18/00 char use draw upon holy might to boost his str, then have + # it re-roll when it comes back to normal + # apply our extra str + GemRB.SetPlayerStat (MyChar, IE_STREXTRA, GemRB.GetVar ("StrExtra")) + print "\tSTREXTRA:\t",GemRB.GetVar ("StrExtra") + DisplayOverview (6) RemoveKnownSpells (IE_SPELL_TYPE_WIZARD) Modified: gemrb/trunk/gemrb/GUIScripts/bg2/CharGen7.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/CharGen7.py 2009-05-05 07:17:59 UTC (rev 5934) +++ gemrb/trunk/gemrb/GUIScripts/bg2/CharGen7.py 2009-05-05 08:31:32 UTC (rev 5935) @@ -1,8 +1,57 @@ -#character generation (GUICG 0) +# -*-python-*- +# GemRB - Infinity Engine Emulator +# Copyright (C) 2003-2004 The GemRB Project +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# $Id$ +#character generation - skills/profs/spells; next apearance/sound (CharGen7) import GemRB from CharGenCommon import * def OnLoad(): + MyChar = GemRB.GetVar ("Slot") + + # we're gonna output diagnostics as we go + print "CharGen7 output:" + + # save the hated race + GemRB.SetPlayerStat (MyChar, IE_HATEDRACE, GemRB.GetVar ("HatedRace")) + print "\tHated Race: ",GemRB.GetVar ("HatedRace") + + # save all skills + SkillTable = GemRB.LoadTableObject ("skills") + SkillCount = SkillTable.GetRowCount () - 2 + for i in range(SkillCount): + StatID = SkillTable.GetValue (i+2, 2) + Value = GemRB.GetVar ("Skill "+str(i)) + GemRB.SetPlayerStat (MyChar, StatID, Value) + print "\tSkill ",str(i),": ",Value + + # weapon proficiencies + # set the base number of attacks; effects will add the proficiency bonus + GemRB.SetPlayerStat (MyChar, IE_NUMBEROFATTACKS, 2) + ProfsTable = GemRB.LoadTableObject ("weapprof") + ProfsCount = ProfsTable.GetRowCount () - 8 # bg2 weapprof.2da contains the bg1 proficiencies too, skipping those + for i in range(ProfsCount): + StatID = ProfsTable.GetValue (i+8, 0) + Value = GemRB.GetVar ("Prof "+str(i)) + if Value: + GemRB.ApplyEffect (MyChar, "Proficiency", Value, StatID) + print "\tProf ",str(i),": ",Value + DisplayOverview (7) return Modified: gemrb/trunk/gemrb/GUIScripts/bg2/CharGen9.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/CharGen9.py 2009-05-05 07:17:59 UTC (rev 5934) +++ gemrb/trunk/gemrb/GUIScripts/bg2/CharGen9.py 2009-05-05 08:31:32 UTC (rev 5935) @@ -1,4 +1,23 @@ -#character generation (GUICG 0) +# -*-python-*- +# GemRB - Infinity Engine Emulator +# Copyright (C) 2003-2004 The GemRB Project +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# $Id$ +# character generation (CharGen9.py) import GemRB from CharGenCommon import * from ie_stats import * @@ -19,130 +38,52 @@ return def FinishCharGen(): - #set my character up + # set my character up MyChar = GemRB.GetVar ("Slot") - GemRB.SetPlayerStat (MyChar, IE_SEX, GemRB.GetVar ("Gender") ) - KitTable = GemRB.LoadTableObject ("kitlist") - RaceTable = GemRB.LoadTableObject ("races") - Race = GemRB.GetVar ("Race")-1 # the row number in the races table - GemRB.SetPlayerStat (MyChar, IE_RACE, RaceTable.GetValue (Race, 3) ) - t = GemRB.GetVar ("Alignment") - GemRB.SetPlayerStat (MyChar, IE_ALIGNMENT, t) - - #a little explanation for the different handling of mage kit values: - #Originally, the IE had only mage schools, and the kit field - #was simply an unusability field (with a single bit set) - #then BG2 crammed in a lot more kits, and 32 bits were not enough. - #They solved this by making the generalist value 0x4000 to hold - #the kit index in the lower portions. - #When you see 0x4000 in a kit value, you need to translate - #the kit index to unusability value, using the kitlist - #So, for mages, the kit equals to the unusability value - #but for others there is an additional mapping by kitlist.2da - ClassTable = GemRB.LoadTableObject ("classes") - ClassIndex = GemRB.GetVar ("Class")-1 - Class = ClassTable.GetValue (ClassIndex, 5) - ClassName = ClassTable.GetRowName (ClassIndex) - GemRB.SetPlayerStat (MyChar, IE_CLASS, Class) - + KitTable = GemRB.LoadTableObject ("kitlist") ClassSkillsTable = GemRB.LoadTableObject ("clskills") + Class = GemRB.GetPlayerStat (MyChar, IE_CLASS) + ClassIndex = ClassTable.FindValue (5, Class) + ClassName = ClassTable.GetRowName (ClassIndex) - #mage spells + # mage spells TableName = ClassSkillsTable.GetValue (Class, 2, 0) - - # TODO check if this is really needed - KitIndex = GemRB.GetVar ("Class Kit") if TableName != "*": - KitValue = KitTable.GetValue(KitIndex, 6) - if KitValue == "*": - KitValue = 0x4000 SetupSpellLevels(MyChar, TableName, IE_SPELL_TYPE_WIZARD, 1) - else: - KitValue = (0x4000 + KitIndex)<<16 - print "KitValue**********:",KitValue - GemRB.SetPlayerStat (MyChar, IE_KIT, KitValue) - - # no table for innates, so we make it a high value - # to guarantee innate, class ability and HLA memorization works - GemRB.SetMemorizableSpellsCount (MyChar, 50, IE_SPELL_TYPE_INNATE, 0) - - # apply class/kit abilities - if KitIndex: - ABTable = KitTable.GetValue (str(KitIndex), "ABILITIES") - else: - ABTable = ClassSkillsTable.GetValue (ClassName, "ABILITIES") - if not KitIndex and "," in ABTable: - # multiclass - classes = ABTable.split(",") - for j in classes: - AddClassAbilities (MyChar, "CLAB"+j) - else: - if ABTable != "*" and ABTable[:6] != "CLABMA": # mage kits specify ability tables which don't exist - AddClassAbilities (MyChar, ABTable) - # Lay on hands, turn undead and backstab multiplier get set by the core - # set the starting reputation - TmpTable=GemRB.LoadTableObject ("repstart") AlignmentTable = GemRB.LoadTableObject ("aligns") - t = AlignmentTable.FindValue (3, t) - t = TmpTable.GetValue (t,0) * 10 - GemRB.SetPlayerStat (MyChar, IE_REPUTATION, t) - #slot 1 is the protagonist - if MyChar == 1: - GemRB.GameSetReputation( t ) # apply starting (alignment dictated) abilities TmpTable = GemRB.LoadTableObject ("abstart") AlignmentAbbrev = AlignmentTable.FindValue (3, GemRB.GetPlayerStat (MyChar, IE_ALIGNMENT)) AlignmentAbbrev = AlignmentTable.GetValue (AlignmentAbbrev, 4) - AbilityCount = TmpTable.GetColumnCount() + AbilityCount = TmpTable.GetColumnCount () spells = [] + for i in range(AbilityCount): spells.append (TmpTable.GetValue (AlignmentAbbrev, str(i))) + spells2 = list(set(spells)) spells2.sort() # create a sorted list of unique spells spells.sort() ClabOffset = GemRB.GetMemorizedSpellsCount (MyChar, IE_SPELL_TYPE_INNATE, 0) + for i in range(len(spells)): ab = spells[i] if GemRB.LearnSpell (MyChar, ab, 8) == 1: # 1 == LSR_KNOWN, 8 == LS_MEMO # the spell is already known, so we have to memorize it manually # the last MemorizeSpell parameter is the index of the known spell to memorize - GemRB.MemorizeSpell (MyChar, IE_SPELL_TYPE_INNATE, 0, spells2.index(ab)+ClabOffset) + GemRB.MemorizeSpell (MyChar, IE_SPELL_TYPE_INNATE, 0, spells2.index(ab) + ClabOffset) - TmpTable=GemRB.LoadTableObject ("strtgold") - t = GemRB.Roll (TmpTable.GetValue (Class,1),TmpTable.GetValue (Class,0), TmpTable.GetValue (Class,2) ) - GemRB.SetPlayerStat (MyChar, IE_GOLD, t*TmpTable.GetValue (Class,3) ) + # setup starting gold (uses a roll dictated by class + TmpTable = GemRB.LoadTableObject ("strtgold") + temp = GemRB.Roll (TmpTable.GetValue (Class, 1),TmpTable.GetValue (Class, 0), TmpTable.GetValue (Class, 2)) + GemRB.SetPlayerStat (MyChar, IE_GOLD, temp * TmpTable.GetValue (Class, 3)) - GemRB.SetPlayerStat (MyChar, IE_HATEDRACE, GemRB.GetVar ("HatedRace") ) - TmpTable=GemRB.LoadTableObject ("ability") - AbilityCount = TmpTable.GetRowCount () - for i in range(AbilityCount): - StatID = TmpTable.GetValue (i,3) - if StatID == IE_STR: - strength = GemRB.GetVar ("Ability 0") - GemRB.SetPlayerStat (MyChar, StatID, strength) - if strength == 18: - GemRB.SetPlayerStat (MyChar, IE_STREXTRA, GemRB.GetVar ("StrExtra")) - else: - GemRB.SetPlayerStat (MyChar, IE_STREXTRA, 0) - else: - GemRB.SetPlayerStat (MyChar, StatID, GemRB.GetVar ("Ability "+str(i) ) ) - - # set the base number of attacks; effects will add the proficiency bonus - GemRB.SetPlayerStat (MyChar, IE_NUMBEROFATTACKS, 2) - TmpTable=GemRB.LoadTableObject ("weapprof") - ProfCount = TmpTable.GetRowCount () - #bg2 weapprof.2da contains the bg1 proficiencies too, skipping those - for i in range(ProfCount-8): - StatID = TmpTable.GetValue (i+8, 0) - Value = GemRB.GetVar ("Prof "+str(i) ) - if Value: - GemRB.ApplyEffect (MyChar, "Proficiency", Value, StatID ) - + # save the appearance SetColorStat (MyChar, IE_HAIR_COLOR, GemRB.GetVar ("HairColor") ) SetColorStat (MyChar, IE_SKIN_COLOR, GemRB.GetVar ("SkinColor") ) SetColorStat (MyChar, IE_MAJOR_COLOR, GemRB.GetVar ("MajorColor") ) @@ -152,25 +93,18 @@ #SetColorStat (MyChar, IE_ARMOR_COLOR, 0x17 ) GemRB.SetPlayerStat (MyChar, IE_EA, 2 ) - #setting skills (thieving/ranger) - TmpTable = GemRB.LoadTableObject ("skills") - RowCount = TmpTable.GetRowCount ()-2 - - for i in range(RowCount): - stat = TmpTable.GetValue (i+2, 2) - value = GemRB.GetVar ("Skill "+str(i) ) - GemRB.SetPlayerStat (MyChar, stat, value ) - + # save the name and starting xp (can level right away in game) GemRB.SetPlayerName (MyChar, GemRB.GetToken ("CHARNAME"), 0) - GemRB.SetPlayerStat (MyChar, IE_XP, ClassSkillsTable.GetValue (Class, 3) ) #this will also set the level (automatically) + GemRB.SetPlayerStat (MyChar, IE_XP, ClassSkillsTable.GetValue (Class, 3)) # character can level in game - #does all the rest + # does all the rest LargePortrait = GemRB.GetToken ("LargePortrait") SmallPortrait = GemRB.GetToken ("SmallPortrait") GemRB.FillPlayerInfo (MyChar, LargePortrait, SmallPortrait) # add the starting inventory for tob if GameIsTOB(): + # get the kit (or use class if no kit) to load the start table KitIndex = GetKitIndex (MyChar) if KitIndex == 0: EquipmentColName = ClassName @@ -179,7 +113,9 @@ EquipmentColName = "MAGE" else: EquipmentColName = KitTable.GetValue (KitIndex, 0) + EquipmentTable = GemRB.LoadTableObject ("25stweap") + # a map of slots in the table to the real slots # SLOT_BAG is invalid, so use the inventory (first occurence) # SLOT_INVENTORY: use -1 instead, that's what CreateItem expects @@ -187,14 +123,18 @@ SLOT_RING, SLOT_CLOAK, SLOT_BOOT, SLOT_AMULET, SLOT_GLOVE, \ SLOT_BELT, SLOT_QUIVER, SLOT_QUIVER, SLOT_QUIVER, \ SLOT_ITEM, SLOT_ITEM, SLOT_ITEM, -1, -1, SLOT_WEAPON ] + #loop over rows - item slots for slot in range(0, EquipmentTable.GetRowCount ()): slotname = EquipmentTable.GetRowName (slot) item = EquipmentTable.GetValue (slotname, EquipmentColName) + + # no item - go to next if item == "*": continue - realslot = GemRB.GetSlots (MyChar, RealSlots[slot], -1) + realslot = GemRB.GetSlots (MyChar, RealSlots[slot], -1) + if realslot == (): # this shouldn't happen! continue @@ -209,6 +149,7 @@ targetslot = realslot[0] SlotType = GemRB.GetSlotType (targetslot, MyChar) i = 1 + # if there are no free slots, CreateItem will create the item on the ground while not GemRB.CanUseItemType (SlotType["Type"], item, MyChar) and i < len(realslot): targetslot = realslot[i] @@ -233,17 +174,3 @@ GemRB.SetToken ("NextScript","Start") GemRB.SetNextScript ("ExportFile") #export return - -def AddClassAbilities (MyChar, TmpTable): - TmpTable = GemRB.LoadTableObject (TmpTable) - for i in range(TmpTable.GetRowCount()): - ab = TmpTable.GetValue (i, 0) # only add level 1 abilities - if ab != "****": - # apply spell (AP_) or gain spell (GA_) - if ab[:2] == "AP": - GemRB.ApplySpell (MyChar, ab[3:]) - elif ab[:2] == "GA": - GemRB.LearnSpell (MyChar, ab[3:], 8) - # TODO: fix memorization when the spell is already known - else: - print "ERROR, unknown class ability (type): ", ab This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fu...@us...> - 2009-05-17 14:50:47
|
Revision: 5989 http://gemrb.svn.sourceforge.net/gemrb/?rev=5989&view=rev Author: fuzzie Date: 2009-05-17 14:50:40 +0000 (Sun, 17 May 2009) Log Message: ----------- bg2: don't try to shift kit numbers in guiscripts Modified Paths: -------------- gemrb/trunk/gemrb/GUIScripts/bg2/CharGen4.py gemrb/trunk/gemrb/GUIScripts/bg2/GUICommonWindows.py Modified: gemrb/trunk/gemrb/GUIScripts/bg2/CharGen4.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/CharGen4.py 2009-05-16 21:07:22 UTC (rev 5988) +++ gemrb/trunk/gemrb/GUIScripts/bg2/CharGen4.py 2009-05-17 14:50:40 UTC (rev 5989) @@ -53,7 +53,7 @@ # save the kit KitList = GemRB.LoadTableObject ("kitlist") KitIndex = GemRB.GetVar ("Class Kit") - KitValue = (0x4000 + KitIndex)<<16 + KitValue = (0x4000 + KitIndex) KitName = KitList.GetValue (KitIndex, 0) GemRB.SetPlayerStat (MyChar, IE_KIT, KitValue) Modified: gemrb/trunk/gemrb/GUIScripts/bg2/GUICommonWindows.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/GUICommonWindows.py 2009-05-16 21:07:22 UTC (rev 5988) +++ gemrb/trunk/gemrb/GUIScripts/bg2/GUICommonWindows.py 2009-05-17 14:50:40 UTC (rev 5989) @@ -464,12 +464,12 @@ Kit = GemRB.GetPlayerStat (actor, IE_KIT) KitIndex = 0 - if Kit&0xc000ffff == 0x40000000: - KitIndex = Kit>>16 & 0xfff + if Kit & 0xc000 == 0x4000: + KitIndex = Kit & 0xfff # carefully looking for kit by the usability flag # since the barbarian kit id clashes with the no-kit value - if KitIndex == 0 and Kit != 0x40000000: + if KitIndex == 0 and Kit != 0x4000: KitIndex = KitTable.FindValue (6, Kit) if KitIndex == -1: KitIndex = 0 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ma...@us...> - 2009-05-17 21:35:19
|
Revision: 5996 http://gemrb.svn.sourceforge.net/gemrb/?rev=5996&view=rev Author: mattinm Date: 2009-05-17 21:35:09 +0000 (Sun, 17 May 2009) Log Message: ----------- put sorc spell and hla selection in their own files Modified Paths: -------------- gemrb/trunk/gemrb/GUIScripts/bg2/LevelUp.py Added Paths: ----------- gemrb/trunk/gemrb/GUIScripts/bg2/LUHLASelection.py gemrb/trunk/gemrb/GUIScripts/bg2/LUSpellSelection.py Added: gemrb/trunk/gemrb/GUIScripts/bg2/LUHLASelection.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/LUHLASelection.py (rev 0) +++ gemrb/trunk/gemrb/GUIScripts/bg2/LUHLASelection.py 2009-05-17 21:35:09 UTC (rev 5996) @@ -0,0 +1,408 @@ +# -*-python-*- +# GemRB - Infinity Engine Emulator +# Copyright (C) 2003-2004 The GemRB Project +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# $Id:$ + +import GemRB +from GUIDefines import * +from ie_stats import * +from GUICommon import HasSpell +from GUIREC import GetKitIndex +from GUICommonWindows import IsDualClassed +from LevelUp import RedrawSkills + +# HLA selection +HLAWindow = 0 # << HLA selection window +HLATopIndex = 0 # << HLA scrollbar index +HLAAbilities = [] # << all learnable HLA abilities +HLANewAbilities = [] # << selected HLA abilites +HLADoneButton = 0 # << done button +HLATextArea = 0 # << HLA ability description area +HLACount = 0 # << number of HLA selections left +pc = 0 # << the pc +NumClasses = 0 # << number of classes +Classes = [] # << classes (ids) +Level = [] # << levels for each class + +# open our HLA window +def LevelUpHLAPress (): + global HLAWindow, HLADoneButton, HLATextArea, HLACount, NumClasses, pc, Classes, Level + + # save our variables + pc = GemRB.GetVar ("PC") + HLACount = GemRB.GetVar ("HLACount") + NumClasses = GemRB.GetVar ("NumClasses") + for i in range (NumClasses): + Classes.append (GemRB.GetVar ("Class "+str(i))) + Level.append (GemRB.GetVar ("Level "+str(i))) + + # setup our scroll index + GemRB.SetVar ("HLATopIndex", 0) + + # we use the same window as sorcerer spell selection + HLAWindow = GemRB.LoadWindowObject (8) + + # get all our HLAs (stored in HLAAbilities) + GetHLAs () + + # create the done button + HLADoneButton = HLAWindow.GetControl (28) + HLADoneButton.SetState(IE_GUI_BUTTON_DISABLED) + HLADoneButton.SetEvent(IE_GUI_BUTTON_ON_PRESS, "HLADonePress") + HLADoneButton.SetText(11973) + HLADoneButton.SetFlags(IE_GUI_BUTTON_DEFAULT, OP_OR) + + # setup our text area + HLATextArea = HLAWindow.GetControl(26) + + print "Number of HLAs:",len (HLAAbilities) + + # create a scrollbar if need-be + if len (HLAAbilities) > 24: + HLAWindow.CreateScrollBar (1000, 290,142, 16,252) + ScrollBar = HLAWindow.GetControl (1000) + ScrollBar.SetSprites ("GUISCRCW", 0, 0,1,2,3,5,4) + ScrollBar.SetEvent (IE_GUI_SCROLLBAR_ON_CHANGE, "HLAShowAbilities") + ScrollBar.SetVarAssoc ("HLATopIndex", len (HLAAbilities)-24) + ScrollBar.SetDefaultScrollBar () + + # draw our HLAs and show the window + HLAShowAbilities () + HLAWindow.ShowModal (MODAL_SHADOW_GRAY) + + return + +# close our HLA window +def HLADonePress (): + # save all of our HLAs + for i in range (len (HLANewAbilities)): + # see if we're going to learn this ability + if HLANewAbilities[i] == 0: + continue + + # figure out the ability type + HLARef = HLAAbilities[i][0] + HLAType = HLARef[5:7] + if HLAType == "PR": + HLAType = IE_SPELL_TYPE_PRIEST + HLALevel = int(HLARef[7])-1 + elif HLAType == "WI": + HLAType = IE_SPELL_TYPE_WIZARD + HLALevel = int(HLARef[7])-1 + else: + HLAType = IE_SPELL_TYPE_INNATE + HLALevel = 0 + + # do we need to apply or learn it? + if HLARef[:2] == "AP": + GemRB.ApplySpell(pc, HLARef[3:]) + elif HLARef[:2] == "GA": + # make sure it isn't already learned + SpellIndex = HasSpell (pc, HLAType, HLALevel, HLARef[3:]) + if SpellIndex < 0: # gotta learn it + GemRB.LearnSpell (pc, HLARef[3:], 8) + else: # memorize it again + GemRB.MemorizeSpell (pc, HLAType, HLALevel, SpellIndex) + + # close the window + if HLAWindow: + HLAWindow.Unload () + + # and redraw the skills (to allow the Done button to be enabled) + GemRB.SetVar ("HLACount", 0) + RedrawSkills() + + return + +# updates the HLA selection window +def HLAShowAbilities (): + HLATopIndex = GemRB.GetVar ("HLATopIndex") + + # we have a grid of 24 abilites + for i in range (24): + # ensure we can learn this many abilites + SpellButton = HLAWindow.GetControl (i) + if i >= len (HLAAbilities): + SpellButton.SetState (IE_GUI_BUTTON_DISABLED) + continue + + # fill in the button with the spell data + HLARef = HLAAbilities[i+HLATopIndex][0][3:] + if not HLARef: + continue + Spell = GemRB.GetSpell (HLARef) + SpellButton.SetTooltip(Spell['SpellName']) + SpellButton.SetSpellIcon(HLARef, 1) + SpellButton.SetVarAssoc("ButtonPressed", i) + SpellButton.SetEvent(IE_GUI_BUTTON_ON_PRESS, "HLASelectPress") + SpellButton.SetSprites("GUIBTBUT", 0,0,1,2,3) + SpellButton.SetFlags(IE_GUI_BUTTON_PICTURE, OP_OR) + + # don't allow the selection of an un-learnable ability + if HLAAbilities[i+HLATopIndex][1] == 0: + SpellButton.SetState(IE_GUI_BUTTON_LOCKED) + # shade red + SpellButton.SetBorder (0, 0,0, 0,0, 200,0,0,100, 1,1) + else: + SpellButton.SetState (IE_GUI_BUTTON_ENABLED) + # unset any borders on this button or an un-learnable from last level + # will still shade red even though it is clickable + SpellButton.SetBorder (0, 0,0, 0,0, 0,0,0,0, 0,0) + + # show which spells are selected + HLAShowSelectedAbilities () + + GemRB.SetToken("number", str(HLACount)) + HLATextArea.SetText(17250) + + # show the points left + PointsLeftLabel = HLAWindow.GetControl (0x10000018) + PointsLeftLabel.SetText (str (HLACount)) + + return + +# updates the abilites when one is selected +def HLASelectPress (): + global HLACount, HLAAbilities, HLANewAbilities + + # get our variables + HLATopIndex = GemRB.GetVar ("HLATopIndex") + i = GemRB.GetVar ("ButtonPressed") + HLATopIndex + + # get the spell that's been pushed + Spell = GemRB.GetSpell (HLAAbilities[i][0][3:]) + HLATextArea.SetText (Spell["SpellDesc"]) + + # make sure we can learn the spell + if HLAAbilities[i][1]: + if HLANewAbilities[i]: # already picked -- unselecting + # make we aren't the pre-req to another spell that is selected + for j in range (len (HLAAbilities)): + if (HLAAbilities[j][3] == HLAAbilities[i][0]) and (HLANewAbilities[j]): + HLAShowSelectedAbilities () # so our pre-req is still highlighted + return + + HLACount += 1 + HLANewAbilities[i] = 0 + HLAAbilities[i][2] -= 1 # internal counter + HLADoneButton.SetState (IE_GUI_BUTTON_DISABLED) + else: # selecting + # we don't have any picks left + if HLACount == 0: + HLAMarkButton (i, 0) + return + + # select the spell and change the done state if need be + HLACount -= 1 + HLANewAbilities[i] = 1 + HLAAbilities[i][2] += 1 # increment internal counter + if HLACount == 0: + HLADoneButton.SetState (IE_GUI_BUTTON_ENABLED) + + # recheck internal exclusions and prereqs + HLARecheckPrereqs (i) + + # show selected spells + HLAShowAbilities () + HLAShowSelectedAbilities () + HLATextArea.SetText (Spell["SpellDesc"]) + + # show the points left + PointsLeftLabel = HLAWindow.GetControl (0x10000018) + PointsLeftLabel.SetText (str (HLACount)) + return + +# marks all of the selected abilities +def HLAShowSelectedAbilities (): + HLATopIndex = GemRB.GetVar ("HLATopIndex") + + # mark all of the abilities picked thus far + for i in range (24): + if i >= len (HLANewAbilities): # make sure we don't call unavailable indexes + break + if HLANewAbilities[i+HLATopIndex]: + HLAMarkButton (i+HLATopIndex, 1) + else: + HLAMarkButton (i+HLATopIndex, 0) + + return + +# show ability as selected, enabled, or disabled +def HLAMarkButton (i, select): + HLATopIndex = GemRB.GetVar ("HLATopIndex") + + if select: + type = IE_GUI_BUTTON_SELECTED + else: + if HLAAbilities[i][1]: + type = IE_GUI_BUTTON_ENABLED + else: # can't learn + type = IE_GUI_BUTTON_LOCKED + + # we have to use the index on the actual grid + SpellButton = HLAWindow.GetControl(i-HLATopIndex) + SpellButton.SetState(type) + return + +# return a 2d array with all the HLAs and whether or not prereqs have been met +# aka [0] = ("ref",0) and [1] = ("ref",1) +def GetHLAs (): + global HLAAbilities, HLANewAbilities + + # get some needed values + Kit = GetKitIndex (pc) + IsDual = IsDualClassed (pc, 0) + IsDual = IsDual[0] > 0 + + # reset the abilities + HLAAbilities = [] + HLANewAbilities = [] + + # the HLA table lookup table + HLAAbbrTable = GemRB.LoadTableObject ("luabbr") + ClassTable = GemRB.LoadTableObject ("classes") + + # get all the HLAs for each class + for i in range (NumClasses): + ClassIndex = ClassTable.FindValue (5, Classes[i]) + ClassName = ClassTable.GetRowName (ClassIndex) + CurrentLevel = Level[i] + + if Kit != 0 and NumClasses == 1 and not IsDual: # kitted single-class + KitList = GemRB.LoadTableObject ("kitlist") + KitName = KitList.GetValue (Kit, 0) + HLAClassTable = "lu" + HLAAbbrTable.GetValue (KitName, "ABBREV") + ClassName = KitName + else: # everyone else + HLAClassTable = "lu" + HLAAbbrTable.GetValue (ClassName, "ABBREV") + + # actually load the table + HLAClassTable = GemRB.LoadTableObject (HLAClassTable) + print "HLA Class/Kit:",ClassName + + # save all our HLAs from this class + for j in range (HLAClassTable.GetRowCount ()): + HLARef = HLAClassTable.GetValue (j, 0, 0) + print "\tHLA",j,":",HLARef + + # make sure we have an ability here + if HLARef == "*": + print "\t\tEnd of HLAs" + break + + # [ref to hla, memorizable?, num memorized, pre-req ref, excluded ref] + SaveArray = [\ + HLARef,\ + 0,\ + GemRB.CountEffects (pc, "HLA", -1, -1, HLARef[3:]),\ + HLAClassTable.GetValue (j, 6, 0),\ + HLAClassTable.GetValue (j, 7, 0)] + + # make sure we fall within the min and max paramaters + if HLAClassTable.GetValue (j, 3) > CurrentLevel or HLAClassTable.GetValue (j, 4) < CurrentLevel: + print "\t\tNot within parameters" + HLAAbilities.append(SaveArray) + continue + + # see if we're alignment restricted (we never get them) + HLAAlign = HLAClassTable.GetValue (j, 8, 0) + if HLAAlign == "ALL_EVIL" and GemRB.GetPlayerStat (pc, IE_ALIGNMENT) < 6: + # don't even save this one because we can never get it + print "\t\tNeeds ALL_EVIL" + continue + elif HLAAlign == "ALL_GOOD" and GemRB.GetPlayerStat (pc, IE_ALIGNMENT) > 2: + # ditto + print "\t\tNeeds ALL_GOOD" + continue + + # make sure we haven't already surpassed the number of time memorizable + HLANumAllowed = HLAClassTable.GetValue (j, 5) + print "\t\tHLA count:",SaveArray[2] + if SaveArray[2] >= HLANumAllowed: + print "\t\tOnly allowed to learn",HLANumAllowed,"times" + HLAAbilities.append(SaveArray) + continue + + # make sure we haven't learned an HLA that excludes this one + HLAMemorized = GemRB.CountEffects (pc, "HLA", -1, -1, SaveArray[4][3:]) + print "\t\tHLAExcluded count:",HLAMemorized + if (SaveArray[4] != "*") and (HLAMemorized > 0): + print "\t\tExcluded by:",SaveArray[4] + HLAAbilities.append(SaveArray) + continue + + # we meet the prereqs so we can learn the HLA + HLAMemorized = GemRB.CountEffects (pc, "HLA", -1, -1, SaveArray[3][3:]) + print "\t\tHLAPre count:",HLAMemorized + if (SaveArray[3] == "*") or (HLAMemorized > 0): + print "\t\tWe can learn it!" + SaveArray[1] = 1 + HLAAbilities.append (SaveArray) + continue + + # we didn't meet prereqs :( + print "\t\tNeed pre-req:",SaveArray[3] + HLAAbilities.append (SaveArray) + + # create an array to store our abilities as they are selected + HLANewAbilities = [0]*len (HLAAbilities) + + return + +# rechecks pre-reqs for HLAs on the fly +# num memorized should be updated before calling this +def HLARecheckPrereqs (index): + # the numer of times memorized + Ref = HLAAbilities[index][0] + Memorized = HLAAbilities[index][2] + + # check for new exclusions and pre-reqs + for i in range (len (HLAAbilities)): + # we don't need to check the index + # this also fixes the assassination bug (it is excluded by itself) + if i == index: + continue + # check for exclusions first + if HLAAbilities[i][4] == Ref: + if Memorized > 0: # can't learn it + HLAAbilities[i][1] = 0 + else: # can, if it meets pre-reqs + if HLAAbilities[i][3] != "*": # check prereqs + for j in range (len (HLAAblities)): # search for the prereq ref + if (HLAAbilities[j][0] == HLAAbilities[i][3]) and (HLAAbilities[j][2] > 0): # can learn + HLAAbilities[i][1] = 1 + break + else: # no prereqs + HLAAbilities[i][1] = 1 + + # check for prereqs + if HLAAbilities[i][3] == Ref: + if Memorized > 0: # can learn if not excluded + if HLAAbilities[i][4] != "*": # check for exclusions + for j in range (len (HLAAbilities)): # search for the exclusion ref + if (HLAAbilities[j][0] == HLAAbilities[i][4]) and (HLAAbilities[j][2] <= 0): # can learn + HLAAbilities[i][1] = 1 + break + else: # no exlusions + HLAAbilities[i][1] = 1 + else: # prereqs not met + HLAAbilities[i][1] = 0 + + return + + Added: gemrb/trunk/gemrb/GUIScripts/bg2/LUSpellSelection.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/LUSpellSelection.py (rev 0) +++ gemrb/trunk/gemrb/GUIScripts/bg2/LUSpellSelection.py 2009-05-17 21:35:09 UTC (rev 5996) @@ -0,0 +1,279 @@ +# -*-python-*- +# GemRB - Infinity Engine Emulator +# Copyright (C) 2003-2004 The GemRB Project +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# $Id:$ + +import GemRB +from GUIDefines import * +from ie_stats import * +from GUICommon import GetMageSpells, HasSpell +from GUIREC import GetKitIndex + +# storage variables +pc = 0 + +# sorcerer spell selection +SpellsWindow = 0 # << spell selection window +SpellKnownTable = 0 # << known spells per level (table) +DoneButton = 0 # << done/next button +SpellsTextArea = 0 # << spell description area +SpellsSelectPointsLeft = [0]*9 # << spell selections left per level +Spells = [0]*9 # << spells learnable per level +SpellTopIndex = 0 # << scroll bar index +SpellBook = [] # << array containing all the spell indexes to learn +SpellLevel = 0 # << current level of spells + +def OpenSpellsWindow (actor, table, level, diff): + global SpellsWindow, DoneButton, SpellsSelectPointsLeft, Spells + global SpellsTextArea, SpellsKnownTable, SpellTopIndex, SpellBook, SpellLevel, pc + + # save our pc + pc = actor + + # FIXME: this currently only works for sorcerers, but i'd like to convert it to the + # GUICG version and make it compatible with the CharGen code so there is less repeated + # code throughout; that's why this code is fairly broad for just sorc leveling + Kit = GetKitIndex (pc) + if Kit == 0: + KitMask = 0x4000 + else: # need to implement this if converted to CharGen + KitMask = 0x4000 + + # load our window + SpellsWindow = GemRB.LoadWindowObject (8) + + # setup our variables + GemRB.SetVar ("SpellTopIndex", 0) + + # the done button also doubles as a next button + DoneButton = SpellsWindow.GetControl (28) + DoneButton.SetState(IE_GUI_BUTTON_DISABLED) + DoneButton.SetEvent(IE_GUI_BUTTON_ON_PRESS, "SpellsDonePress") + DoneButton.SetText(11973) + DoneButton.SetFlags(IE_GUI_BUTTON_DEFAULT, OP_OR) + + # create our scroll bar + SpellsWindow.CreateScrollBar (1000, 290,142, 16,252) + + # setup our text area (spell description) + SpellsTextArea = SpellsWindow.GetControl(26) + + # get all our spell info + SpellsKnownTable = GemRB.LoadTableObject (table) + AlreadyShown = 0 + for i in range (9): + # make sure we get more spells of each class before continuing + SpellsSelectPointsLeft[i] = SpellsKnownTable.GetValue (level-1, i) - SpellsKnownTable.GetValue (level-diff-1, i) + if SpellsSelectPointsLeft[i] <= 0: + continue + + # get all the spells of the given level + Spells[i] = GetMageSpells (KitMask, GemRB.GetPlayerStat (pc, IE_ALIGNMENT), i+1) + + # dump all the spells we already know + NumDeleted = 0 + for j in range (len (Spells[i])): + CurrentIndex = j - NumDeleted # this ensure we don't go out of range + if HasSpell (pc, IE_SPELL_TYPE_WIZARD, i, Spells[i][CurrentIndex][0]) >= 0: + del Spells[i][CurrentIndex] + NumDeleted += 1 + + # display these spells if it's the first non-zero level + if AlreadyShown == 0: + # save the level and spellbook data + SpellLevel = i + SpellBook = [0]*len(Spells[i]) + + # setup the scrollbar + ScrollBar = SpellsWindow.GetControl (1000) + ScrollBar.SetSprites ("GUISCRCW", 0, 0,1,2,3,5,4) + ScrollBar.SetEvent (IE_GUI_SCROLLBAR_ON_CHANGE, "ShowSpells") + ScrollBar.SetDefaultScrollBar () + + # only scroll if we have more than 24 spells + if len (Spells[i]) > 24: + ScrollBar.SetVarAssoc ("SpellTopIndex", len (Spells[i])-24) + else: + ScrollBar.SetVarAssoc ("SpellTopIndex", 0) + + # show our spells + ShowSpells () + AlreadyShown = 1 + + # show the selection window + SpellsWindow.ShowModal (MODAL_SHADOW_GRAY) + + return + +# save all the current spells and move to the next level if required; +# otherwise, close the window and update our records +def SpellsDonePress (): + global SpellBook, SpellLevel + + # save all the spells + for i in range (len (Spells[SpellLevel])): + if SpellBook[i]: # we need to learn this spell + GemRB.LearnSpell (pc, Spells[SpellLevel][i][0]) + + # check to see if we need to update again + for i in range (SpellLevel+1, 9): + if SpellsSelectPointsLeft[i] > 0: + # reset the variables + GemRB.SetVar ("SpellTopIndex", 0) + SpellLevel = i + SpellBook = [0]*len(Spells[i]) + + # setup the scrollbar + ScrollBar = SpellsWindow.GetControl (1000) + if len (Spells[i]) > 24: + ScrollBar.SetVarAssoc ("SpellTopIndex", len (Spells[i])-24) + else: + ScrollBar.SetVarAssoc ("SpellTopIndex", 0) + + # show the spells and set the done button to off + ShowSpells () + DoneButton.SetState (IE_GUI_BUTTON_DISABLED) + return + + # close our window and update our records + if SpellsWindow: + SpellsWindow.Unload () + + return + +# shows 24 spells on the grid and scrolls with a scrollbar to allow more spells +def ShowSpells (): + SpellTopIndex = GemRB.GetVar ("SpellTopIndex") + + # we have a grid of 24 spells + for i in range (24): + # ensure we can learn this many spells + SpellButton = SpellsWindow.GetControl (i) + if i >= len (Spells[SpellLevel]): + SpellButton.SetState (IE_GUI_BUTTON_DISABLED) + continue + + # fill in the button with the spell data + Spell = GemRB.GetSpell (Spells[SpellLevel][i+SpellTopIndex][0]) + SpellButton.SetTooltip(Spell['SpellName']) + SpellButton.SetSpellIcon(Spells[SpellLevel][i+SpellTopIndex][0], 1) + SpellButton.SetVarAssoc("ButtonPressed", i) + SpellButton.SetEvent(IE_GUI_BUTTON_ON_PRESS, "SpellsSelectPress") + SpellButton.SetSprites("GUIBTBUT", 0,0,1,2,3) + SpellButton.SetFlags(IE_GUI_BUTTON_PICTURE, OP_OR) + + # don't allow the selection of an un-learnable spell + if Spells[SpellLevel][i+SpellTopIndex][1] == 0: + SpellButton.SetState(IE_GUI_BUTTON_LOCKED) + # shade red + SpellButton.SetBorder (0, 0,0, 0,0, 200,0,0,100, 1,1) + elif Spells[SpellLevel][i+SpellTopIndex][1] == 1: # learnable + SpellButton.SetState (IE_GUI_BUTTON_ENABLED) + # unset any borders on this button or an un-learnable from last level + # will still shade red even though it is clickable + SpellButton.SetBorder (0, 0,0, 0,0, 0,0,0,0, 0,0) + else: # specialist (shouldn't get here) + # use the green border state for matching specialist spells + SpellButton.SetState (IE_GUI_BUTTON_THIRD) + + # show which spells are selected + ShowSelectedSpells () + + GemRB.SetToken("number", str(SpellsSelectPointsLeft[SpellLevel])) + SpellsTextArea.SetText(17250) + + # show how many spell picks are left + PointsLeftLabel = SpellsWindow.GetControl (0x10000018) + PointsLeftLabel.SetText (str (SpellsSelectPointsLeft[SpellLevel])) + + return + +# called when a spell is pressed -- either selects or unselects the spell, if we're +# able to learn it, and displays the spell information in the text window +def SpellsSelectPress (): + global SpellsSelectPointsLeft, Spells, SpellBook + + # get our variables + SpellTopIndex = GemRB.GetVar ("SpellTopIndex") + i = GemRB.GetVar ("ButtonPressed") + SpellTopIndex + + # get the spell that's been pushed + Spell = GemRB.GetSpell (Spells[SpellLevel][i][0]) + SpellsTextArea.SetText (Spell["SpellDesc"]) + + # make sure we can learn the spell + if Spells[SpellLevel][i][1]: + if SpellBook[i]: # already picked -- unselecting + SpellsSelectPointsLeft[SpellLevel] = SpellsSelectPointsLeft[SpellLevel] + 1 + SpellBook[i] = 0 + DoneButton.SetState (IE_GUI_BUTTON_DISABLED) + else: # selecting + # we don't have any picks left + if SpellsSelectPointsLeft[SpellLevel] == 0: + MarkButton (i, 0) + return + + # select the spell and change the done state if need be + SpellsSelectPointsLeft[SpellLevel] = SpellsSelectPointsLeft[SpellLevel] - 1 + SpellBook[i] = 1 + if SpellsSelectPointsLeft[SpellLevel] == 0: + DoneButton.SetState (IE_GUI_BUTTON_ENABLED) + + # show selected spells + ShowSelectedSpells () + + # show how many spell picks are left + PointsLeftLabel = SpellsWindow.GetControl (0x10000018) + PointsLeftLabel.SetText (str (SpellsSelectPointsLeft[SpellLevel])) + return + +# marks the button as selected, enabled, locked, or specialist +# make sure i is sent with SpellTopIndex added! +def MarkButton (i, select): + SpellTopIndex = GemRB.GetVar ("SpellTopIndex") + + if select: + type = IE_GUI_BUTTON_SELECTED + else: + if Spells[SpellLevel][i][1] == 1: + type = IE_GUI_BUTTON_ENABLED + elif Spells[SpellLevel][i][1] == 2: + # specialist spell + type = IE_GUI_BUTTON_THIRD + else: # can't learn + type = IE_GUI_BUTTON_LOCKED + + # we have to use the index on the actual grid + SpellButton = SpellsWindow.GetControl(i-SpellTopIndex) + SpellButton.SetState(type) + return + +# marks all selected spells +def ShowSelectedSpells (): + SpellTopIndex = GemRB.GetVar ("SpellTopIndex") + + # mark all of the spells picked thus far + for j in range (24): + if j >= len (SpellBook): # make sure we don't call unavailable indexes + break + if SpellBook[j+SpellTopIndex]: # selected + MarkButton (j+SpellTopIndex, 1) + else: # not selected + MarkButton (j+SpellTopIndex, 0) + + return Modified: gemrb/trunk/gemrb/GUIScripts/bg2/LevelUp.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/LevelUp.py 2009-05-17 20:16:47 UTC (rev 5995) +++ gemrb/trunk/gemrb/GUIScripts/bg2/LevelUp.py 2009-05-17 21:35:09 UTC (rev 5996) @@ -25,6 +25,7 @@ from GUICommon import GameIsTOB, GetLearnablePriestSpells, GetMageSpells, HasSpell, AddClassAbilities from GUIREC import GetStatOverview, UpdateRecordsWindow, GetActorClassTitle, GetKitIndex from GUICommonWindows import IsDualClassed, IsMultiClassed, IsDualSwap +from LUSpellSelection import * LevelUpWindow = None TopIndex = 0 @@ -46,16 +47,44 @@ OldPos = 0 LevelDiff = 0 Level = 0 +Classes = 0 +NumClasses = 0 +DualSwap = 0 +KitName = 0 +IsDual = 0 +IsMulti = 0 +pc = 0 +ClassSkillsTable = 0 +ClassName = 0 +RaceTable = 0 +# old values (so we don't add too much) +OldHP = 0 # << old current hitpoints +OldHPMax = 0 # << old maximum hitpoints +OldSaves = [0]*5 # << old saves +OldThaco = 0 # << old thac0 value +OldLore = 0 # << old lore value +OldDSpells = [0]*7 # << old divine spells per level +OldWSpells = [0]*9 # << old wizard spells per level +NewDSpells = [0]*7 # << new divine spells per level +NewWSpells = [0]*9 # << new wizard spells per level +DeltaDSpells = 0 # << total new divine spells +DeltaWSpells = 0 # << total new wizard spells + # TODO: multiclass support +# EDIT: added multiclass and dualclass support +# needs extensive testing def OpenLevelUpWindow(): global LevelUpWindow, TextAreaControl, ProfPointsLeft, NewProfPoints global TopIndex, ScrollBarControl, DoneButton, WeapProfTable, ProfColumn - global SkillTable, SkillPointsLeft, NewSkillPoints, KitName, LevelDiff - global ClassTable, Level + global SkillTable, SkillPointsLeft, NewSkillPoints, KitName, LevelDiff, RaceTable + global ClassTable, Level, Classes, NumClasses, DualSwap, ClassSkillsTable, IsMulti + global OldHP, OldHPMax, OldSaves, OldLore, OldThaco, DeltaDSpells, DeltaWSpells + global NewDSpells, NewWSpells, OldDSpells, OldWSpells, pc, HLACount, ClassName, IsDual LevelUpWindow = GemRB.LoadWindowObject (3) + InfoButton = LevelUpWindow.GetControl (125) InfoButton.SetText (13707) InfoButton.SetEvent (IE_GUI_BUTTON_ON_PRESS, "LevelUpInfoPress") @@ -74,17 +103,40 @@ Label = LevelUpWindow.GetControl (0x10000000+90) Label.SetText (GemRB.GetPlayerName (pc)) + # some current values + OldHP = GemRB.GetPlayerStat (pc, IE_HITPOINTS, 1) + OldHPMax = GemRB.GetPlayerStat (pc, IE_MAXHITPOINTS, 1) + OldThaco = GemRB.GetPlayerStat (pc, IE_THAC0, 1) + OldLore = GemRB.GetPlayerStat (pc, IE_LORE, 1) + for i in range (5): + OldSaves[i] = GemRB.GetPlayerStat (pc, IE_SAVEVSDEATH+i, 1) + # class Label = LevelUpWindow.GetControl (0x10000000+106) Label.SetText (GetActorClassTitle (pc)) ClassTable = GemRB.LoadTableObject("classes") Class = GemRB.GetPlayerStat (pc, IE_CLASS) + print "Class:",Class ClassIndex = ClassTable.FindValue (5, Class) + ClassSkillsTable = GemRB.LoadTableObject ("clskills") + SkillTable = GemRB.LoadTableObject("skills") + + # kit KitList = GemRB.LoadTableObject("kitlist") ClassName = ClassTable.GetRowName(ClassIndex) Kit = GetKitIndex (pc) WeapProfTable = GemRB.LoadTableObject ("weapprof") + + # need this for checking gnomes + RaceTable = GemRB.LoadTableObject ("races") + RaceName = GemRB.GetPlayerStat (pc, IE_RACE, 1) + print "IE_RACE:",RaceName + RaceName = RaceTable.FindValue (3, RaceName) + RaceName = RaceTable.GetRowName (RaceName) + print "Race:",RaceName + + # figure our our proficiency table and index if Kit == 0: KitName = ClassName # sorcerers are missing from weapprof @@ -99,32 +151,241 @@ ProfColumn = KitList.GetValue(Kit, 5) ProfCountTable = GemRB.LoadTableObject("profs") - # we don't care about the current level, but about the to-be-achieved one - # FIXME: get the correct xp/level for MC and DC chars - Level = GetNextLevelFromExp(GemRB.GetPlayerStat (pc, IE_XP), ClassName) - LevelDiff = Level - GemRB.GetPlayerStat (pc, IE_LEVEL) - ProfPointsLeft = LevelDiff/ProfCountTable.GetValue(ClassName, "RATE") + + # our multiclass variables + IsMulti = IsMultiClassed (pc, 1) + Classes = [IsMulti[1], IsMulti[2], IsMulti[3]] + NumClasses = IsMulti[0] # 2 or 3 if IsMulti; 0 otherwise + IsMulti = NumClasses > 1 + IsDual = 0 + + # not multi, check dual + if not IsMulti: + print "Not Multi" + + # check if we're dual classed + IsDual = IsDualClassed (pc, 1) + Classes = [IsDual[2], IsDual[1]] # make sure the new class is first + + # either dual or single only care about 1 class + NumClasses = 1 + + # not dual, must be single + if IsDual[0] == 0: + print "Not Dual" + Classes = [Class] + else: # make sure Classes[1] is a class, not a kit + if IsDual[0] == 1: # kit + Classes[1] = KitList.GetValue (IsDual[1], 7) + else: # class + Classes[1] = ClassTable.GetValue (Classes[1], 5) + + # store a boolean for IsDual + IsDual = IsDual[0] > 0 + + print "NumClasses in LevelUp:",NumClasses + + Level = [0]*3 + LevelDiff = [0]*3 + + # reorganize the leves if we're dc so the one we want to use is in Level[0] + # and the old one is in Level[1] (used to regain old class abilities) + if IsDual: + # convert the classes from indicies to class id's + DualSwap = IsDualSwap (pc) + ClassName = ClassTable.GetRowName (Classes[0]) + KitName = ClassName # for simplicity throughout the code + Classes[0] = ClassTable.GetValue (Classes[0], 5) + # Class[1] is taken care of above + ProfColumn = WeapProfTable.GetColumnIndex (ClassName) # or we'll get the multi progression + + + # we need the old level as well + if DualSwap: + Level[1] = GemRB.GetPlayerStat (pc, IE_LEVEL) + else: + Level[1] = GemRB.GetPlayerStat (pc, IE_LEVEL2) + + hp = 0 + FastestProf = 0 + FastestRate = 100 + SkillIndex = -1 + HaveCleric = 0 + DeltaWSpells = 0 + DeltaDSpells = 0 + + # get a bunch of different things each level + for i in range(NumClasses): + print "Class:",Classes[i] + # we don't care about the current level, but about the to-be-achieved one + # FIXME: get the correct xp/level for MC and DC chars + # TODO: check MC (should be working) and DC (iffy) functionality + # get the next level + Level[i] = GetNextLevelFromExp (GemRB.GetPlayerStat (pc, IE_XP)/NumClasses, Classes[i]) + TmpIndex = ClassTable.FindValue (5, Classes[i]) + TmpName = ClassTable.GetRowName (TmpIndex) + + print "Name:",TmpName + + # find the level diff for each classes (3 max, obviously) + if i == 0: + if DualSwap: + LevelDiff[i] = Level[i] - GemRB.GetPlayerStat (pc, IE_LEVEL2) + else: + LevelDiff[i] = Level[i] - GemRB.GetPlayerStat (pc, IE_LEVEL) + elif i == 1: + LevelDiff[i] = Level[i] - GemRB.GetPlayerStat (pc, IE_LEVEL2) + elif i == 2: + LevelDiff[i] = Level[i] - GemRB.GetPlayerStat (pc, IE_LEVEL3) + + print "Level (",i,"):",Level[i] + print "Level Diff (",i,"):",LevelDiff[i] + + # check this classes hp table for any gain + HPTable = ClassTable.GetValue (TmpIndex, 6, 0) + HPTable = GemRB.LoadTableObject (HPTable) + + # loop through each level gained + for level in range(Level[i] - LevelDiff[i], Level[i]): + # TODO: figure out how multiclass and dualclass rolls are done + rolls = HPTable.GetValue (level, 1) + bonus = HPTable.GetValue (level, 2) + + # we only do a roll if core diff or higher, or uncheck max + if rolls: + if GemRB.GetVar ("Difficulty Level") < 3: + hp += GemRB.Roll (rolls, HPTable.GetValue (level, 0), bonus) / NumClasses + else: + hp += (rolls * HPTable.GetValue (level, 0) + bonus) / NumClasses + else: + hp += bonus / NumClasses + + # save our current and next spell amounts + StartLevel = Level[i] - LevelDiff[i] + DruidTable = ClassSkillsTable.GetValue (Classes[i], 0, 0) + ClericTable = ClassSkillsTable.GetValue (Classes[i], 1, 0) + MageTable = ClassSkillsTable.GetValue (Classes[i], 2, 0) + + # see if we have mage spells + if MageTable != "*": + # we get 1 extra spell per level if we're a specialist + Specialist = 0 + if KitName != ClassName or ClassTable.GetValue (TmpName, RaceName, 1) == 2: # gnomes are always illusionists + Specialist = 1 + MageTable = GemRB.LoadTableObject (MageTable) + # loop through each spell level and save the amount possible to cast (current) + for j in range (MageTable.GetColumnCount ()): + NewWSpells[j] = MageTable.GetValue (str(Level[i]), str(j+1), 1) + OldWSpells[j] = MageTable.GetValue (str(StartLevel), str(j+1), 1) + if NewWSpells[j] > 0: # don't want specialist to get 1 in levels they should have 0 + NewWSpells[j] += Specialist + if OldWSpells[j] > 0: + OldWSpells[j] += Specialist + DeltaWSpells = sum(NewWSpells)-sum(OldWSpells) + elif ClericTable != "*": + # check for cleric spells + ClericTable = GemRB.LoadTableObject (ClericTable) + HaveCleric = 1 + # same as above + for j in range (ClericTable.GetColumnCount ()): + NewDSpells[j] = ClericTable.GetValue (str(Level[i]), str(j+1), 1) + OldDSpells[j] = ClericTable.GetValue (str(StartLevel), str(j+1), 1) + DeltaDSpells = sum(NewDSpells)-sum(OldDSpells) + elif DruidTable != "*" and GameIsTOB (): # FIXME: how are druids going to update their spells in SoA then? + # clerics have precedence in multis (ranger/cleric) + if HaveCleric == 0: + # check druid spells + DruidTable = GemRB.LoadTableObject (DruidTable) + # same as above + for j in range (DruidTable.GetColumnCount ()): + NewDSpells[j] = DruidTable.GetValue (str(Level[i]), str(j+1), 1) + OldDSpells[j] = DruidTable.GetValue (str(StartLevel), str(j+1), 1) + DeltaDSpells = sum(NewDSpells)-sum(OldDSpells) + + # check for a better proficiency rate + TmpRate = ProfCountTable.GetValue(Classes[i]-1, 1) + if (TmpRate < FastestRate): # rate is how often you get it; therefore less is more + FastestProf = i + FastestRate = TmpRate + + # see if we have a thief (or monk) + if (ClassSkillsTable.GetValue (Classes[i], 5, 0) != "*"): + SkillIndex = i + + # setup class bonuses for this class + if IsMulti or IsDual or Kit == 0: + ABTable = ClassSkillsTable.GetValue (TmpName, "ABILITIES") + else: # single-classed with a kit + ABTable = KitList.GetValue (str(Kit), "ABILITIES") + + # add the abilites if we aren't a mage and have a table to ref + if ABTable != "*" and ABTable[:6] != "CLABMA": + AddClassAbilities (pc, ABTable, Level[i], LevelDiff[i]) + + # set up the class in gemrb for use in the hla code + GemRB.SetVar ("Class "+str(i), Classes[i]) + GemRB.SetVar ("Level "+str(i), Level[i]) + + # save our new hp if it changed + if (OldHPMax == GemRB.GetPlayerStat (pc, IE_MAXHITPOINTS, 1)): + GemRB.SetPlayerStat (pc, IE_MAXHITPOINTS, OldHPMax + hp) + GemRB.SetPlayerStat (pc, IE_HITPOINTS, OldHP + hp) + + # save our proficiencies + ProfPointsLeft = LevelDiff[FastestProf]/FastestRate NewProfPoints = ProfPointsLeft - SkillTable = GemRB.LoadTableObject("skills") - SkillPointsLeft = LevelDiff * SkillTable.GetValue("RATE", KitName) - if SkillPointsLeft < 0: - # no entry for this kit/class (the default value is -1) - SkillPointsLeft = 0 - else: - # get the skill values - # TODO: show skillbrd, skillrng, skilldex? monks (same as rangers?)?! - for i in range(SkillTable.GetRowCount()-2): - SkillName = SkillTable.GetValue (i+2, 2) - SkillValue = GemRB.GetPlayerStat (pc, SkillName) - GemRB.SetVar("Skill "+str(i), SkillValue) + # see if we got a thief (or monk) + if SkillIndex > -1: + # KitName should be fine as all multis are in classes.2da + # also allows for thief kits + # TODO: add monks to clskills.2da + SkillPointsLeft = LevelDiff[SkillIndex] * SkillTable.GetValue("RATE", KitName) + if SkillPointsLeft < 0: + # really don't have an entry + SkillPointsLeft = 0 + else: + # get the skill values + # TODO: show skillbrd, skillrng, skilldex? monks (same as rangers?)?! + for i in range(SkillTable.GetRowCount()-2): + SkillName = SkillTable.GetValue (i+2, 2) + SkillValue = GemRB.GetPlayerStat (pc, SkillName, 1) + GemRB.SetVar("Skill "+str(i), SkillValue) + NewSkillPoints = SkillPointsLeft + # use total levels for HLAs HLACount = 0 - if GameIsTOB(): + if GameIsTOB(): # make sure SoA doesn't try to get it HLATable = GemRB.LoadTableObject("lunumab") - if HLATable.GetValue (KitName, "FIRST_LEVEL") < Level: # the new level - HLACount = LevelDiff / HLATable.GetValue (ClassName, "RATE") + if IsMulti: + # we need to check each level against a multi value (this is kinda screwy) + CanLearnHLAs = 1 + for i in range (NumClasses): + # get the row name for lookup ex. MULTI2FIGHTER, MULTI3THIEF + MultiName = ClassTable.FindValue (5, Classes[i]) + MultiName = ClassTable.GetRowName (MultiName) + MultiName = "MULTI" + str(NumClasses) + MultiName + + print "HLA Multiclass:",MultiName + + # if we can't learn for this class, we can't learn at all + if Level[i] < HLATable.GetValue (MultiName, "FIRST_LEVEL", 1): + CanLearnHLAs = 0 + break + + # update the HLA count if we can learn them + if CanLearnHLAs: + HLACount = sum (LevelDiff) / HLATable.GetValue (ClassName, "RATE", 1) + else: # dual or single classed + print "HLA Class:",ClassName + if HLATable.GetValue (ClassName, "FIRST_LEVEL", 1) <= Level[0]: + HLACount = LevelDiff[0] / HLATable.GetValue (ClassName, "RATE", 1) + + # set values required by the hla level up code + GemRB.SetVar ("HLACount", HLACount) + GemRB.SetVar ("NumClasses", NumClasses) + GemRB.SetVar ("PC", pc) HLAButton = LevelUpWindow.GetControl (126) if HLACount: HLAButton.SetText (4954) @@ -135,17 +396,18 @@ RowCount = WeapProfTable.GetRowCount()-7 #we decrease it with the bg1 skills # proficiencies scrollbar - GemRB.SetVar("TopIndex",0) + GemRB.SetVar ("TopIndex", 0) ScrollBarControl = LevelUpWindow.GetControl(108) ScrollBarControl.SetEvent(IE_GUI_SCROLLBAR_ON_CHANGE, "ProfScrollBarPress") ScrollBarControl.SetDefaultScrollBar () ProfCount = RowCount - 7 # decrease it with the number of controls + # decrease it with the number of invalid proficiencies for i in range(RowCount): SkillName = WeapProfTable.GetValue (i+8, 1) if SkillName > 0x1000000 or SkillName < 0: ProfCount -= 1 - GemRB.SetVar("Prof "+str(i), GemRB.GetPlayerStat (pc, WeapProfTable.GetValue (i+8, 0))) + GemRB.SetVar("Prof "+str(i), GemRB.GetPlayerStat (pc, WeapProfTable.GetValue (i+8, 0), 1)) ScrollBarControl.SetVarAssoc ("TopIndex", ProfCount) # skills scrollbar @@ -191,17 +453,26 @@ RedrawSkills(1) GemRB.SetRepeatClickFlags (GEM_RK_DISABLE, OP_NAND) LevelUpWindow.ShowModal (MODAL_SHADOW_GRAY) - return + + # if we have a sorcerer who can learn spells, we need to do spell selection + if (Classes[0] == 19) and (DeltaWSpells > 0): # open our sorc spell selection window + OpenSpellsWindow (pc, "SPLSRCKN", Level[0], LevelDiff[0]) -# TODO: sorcerer spell selection def RedrawSkills(First=0, direction=0): global TopIndex, ScrollBarControl, DoneButton, LevelUpWindow, ProfPointsLeft global SkillPointsLeft, SkillTable, NewSkillPoints - global ClickCount, OldDirection + global ClickCount, OldDirection, HLACount - #TODO: and not a sorcerer - #TODO: and no more hlas - if ProfPointsLeft == 0 and SkillPointsLeft == 0: + # we need to disable the HLA button if we don't have any HLAs left + HLACount = GemRB.GetVar ("HLACount") + if HLACount == 0: + # turn the HLA button off + HLAButton = LevelUpWindow.GetControl (126) + HLAButton.SetState(IE_GUI_BUTTON_DISABLED) + + # enable the done button if they've allocated all points + # sorcerer spell selection (if applicable) comes after hitting the done button + if ProfPointsLeft == 0 and SkillPointsLeft == 0 and HLACount == 0: DoneButton.SetState(IE_GUI_BUTTON_ENABLED) # skill part of the window @@ -312,82 +583,157 @@ global NewProfPoints, NewSkillPoints News = GemRB.GetString (5259) + '\n\n' - pc = GemRB.GameGetSelectedPCSingle () - # FIXME: order - Class = GemRB.GetPlayerStat (pc, IE_CLASS) - ClassIndex = ClassTable.FindValue (5, Class) - ClassName = ClassTable.GetRowName (ClassIndex) + # display if our class has been reactivated + if IsDual: + if (Level[0] - LevelDiff[0]) <= Level[1] and Level[0] > Level[1]: + News = GemRB.GetString (5261) + '\n\n' + + # 5271 - Additional weapon proficiencies + if NewProfPoints > 0: + News += GemRB.GetString (5271) + ": " + str(NewProfPoints) + '\n\n' - # 5293 - Additional Hit Points Gained - hp = 0 - Class = GemRB.GetPlayerStat (GemRB.GameGetSelectedPCSingle (), IE_CLASS) - HPTable = ClassTable.GetValue (ClassTable.FindValue (5, Class), 6) - # HACK: fake mc/dc support - if HPTable == "*": - HPTable = "HPROG" - HPTable = GemRB.LoadTableObject (HPTable) - for level in range(Level - LevelDiff, Level): - rolls = HPTable.GetValue (level, 1) - bonus = HPTable.GetValue (level, 2) - if rolls: - # only core difficulty (or higher) or unchecked max rolls result in a roll for hp - if GemRB.GetVar ("Difficulty Level") < 3: - hp += GemRB.Roll (rolls, HPTable.GetValue (level, 0), bonus) - else: - hp += rolls * HPTable.GetValue (level, 0) + bonus - else: - hp += bonus - News += GemRB.GetString (5293) + ": " + str(hp) + '\n\n' + # temps to compare all our new saves against (we get the best of our saving throws) + ThacoTable = GemRB.LoadTableObject ("THAC0") + LoreTable = GemRB.LoadTableObject ("lore") + Saves = OldSaves + NewThaco = OldThaco + LoreGain = 0 + LOHGain = 0 + BackstabMult = 0 + for i in range(NumClasses): + # get the class name + TmpClassName = ClassTable.FindValue (5, Classes[i]) + TmpClassName = ClassTable.GetRowName (TmpClassName) + + # get each save from the table + SaveTable = ClassTable.GetValue (TmpClassName, "SAVE", 0) + SaveTable = GemRB.LoadTableObject (SaveTable) + + # loop through each save + TmpIndex = Level[i]-1 + for j in range (5): + # if the save is better, update the saves array + TmpSave = SaveTable.GetValue (j, TmpIndex) + if TmpSave < Saves[j]: + Saves[j] = TmpSave + + # see if this classes has a lower thaco + TmpThaco = ThacoTable.GetValue (Classes[i]-1, TmpIndex, 1) + if (TmpThaco < NewThaco): + NewThaco = TmpThaco + + # backstab + # NOTE: Stalkers and assassins should get the correct mods at the correct levels based + # on AP_SPCL332 in their respective CLAB files. + # APND: Stalers appear to get the correct mod at the correct levels; however, because they start + # at backstab multi x1, they are x1 too many at their respective levels. + if Classes[i] == 4 and GemRB.GetPlayerStat (pc, IE_BACKSTABDAMAGEMULTIPLIER, 1) > 1: # we have a thief who can backstab (2 at level 1) + # save the backstab multiplier if we have a thief + BackstabTable = GemRB.LoadTableObject ("BACKSTAB") + BackstabMult = BackstabTable.GetValue (0, Level[i]) + + # lay on hands + if (ClassSkillsTable.GetValue (Classes[i], 6) != "*"): + # inquisitors and undead hunters don't get lay on hands out the chute, whereas cavaliers + # and unkitted paladins do; therefore, we check for the existence of lay on hands to ensure + # the character should get the new value; LoH is defined in GA_SPCL211 if anyone wants to + # make a pally kit with LoH + print "LoH Amount:",GemRB.GetPlayerStat (pc, IE_LAYONHANDSAMOUNT, 1) + if (HasSpell (pc, IE_SPELL_TYPE_INNATE, 0, "SPCL211") != -1): + print "Doing a LoH lookup." + LOHTable = GemRB.LoadTableObject ("layhands") + LOHValue = LOHTable.GetValue (0, Level[i]) + LOHGain = LOHValue - LOHTable.GetValue (0, Level[i]-LevelDiff[i]) + + # find the lore from each class + # sorcerers are not defined in lore.2da, but get mage progression instead + if TmpClassName == "SORCERER": + TmpClassName = "MAGE" + LoreClassIndex = LoreTable.GetRowIndex (TmpClassName) + LoreGain = LoreGain + LoreTable.GetValue (LoreClassIndex, 0) * LevelDiff[i] + # saving throws # 5277 death # 5278 wand # 5279 polymorph # 5282 breath # 5292 spell + # include in news if the save is updated + for i in range (5): + GemRB.SetPlayerStat (pc, IE_SAVEVSDEATH+i, Saves[i]) # save the saves :D + SaveString = 5277+i + if i == 3: + SaveString = 5282 + elif i == 4: + SaveString = 5292 - # 5271 - Additional weapon proficiencies - if NewProfPoints > 0: - News += GemRB.GetString (5271) + ": " + str(NewProfPoints) + '\n\n' + if Saves[i] < OldSaves[i]: + News += GemRB.GetString (SaveString) + ": " + str(OldSaves[i]-Saves[i]) + '\n' + # 5305 - THAC0 Reduced by + # only output if there is a change in thaco + if (NewThaco < OldThaco): + GemRB.SetPlayerStat (pc, IE_THAC0, NewThaco) + News += GemRB.GetString (5305) + ": " + str(OldThaco-NewThaco) + '\n\n' + # new spell slots # 5373 - Additional Priest Spells # 5374 - Additional Mage Spells #? 10345 - Level <SPELLLEVEL> (used in stats_overview for bonus priest spells) #? 11293 - <CLASS>: Level <LEVEL> - #? 61269 - Level <LEVEL> Spells - # 5261 - Regained abilities from inactive class - # 5305 - THAC0 Reduced by + #? 61269 - Level <LEVEL> Spells <- the one we use + + if DeltaDSpells > 0: # new divine spells + News += GemRB.GetString (5373) + '\n' + for i in range (len (NewDSpells)): + # only display classes with new spells + if (NewDSpells[i]-OldDSpells[i]) == 0: + continue + GemRB.SetToken("level", str(i+1)) + News += GemRB.GetString(61269)+": " + str(NewDSpells[i]-OldDSpells[i]) + '\n' + News += '\n' + if DeltaWSpells > 0: # new wizard spells + News += GemRB.GetString (5374) + '\n' + for i in range (len (NewWSpells)): + # only display classes with new spells + if (NewWSpells[i]-OldWSpells[i]) == 0: + continue + GemRB.SetToken("level", str(i+1)) + News += GemRB.GetString(61269)+": " + str(NewWSpells[i]-OldWSpells[i]) + '\n' + News += '\n' + # 5375 - Backstab Multiplier Increased by + # this auto-updates... we just need to inform of the update + if (BackstabMult > GemRB.GetPlayerStat (pc, IE_BACKSTABDAMAGEMULTIPLIER, 1)): + News += GemRB.GetString (5375) + ": " + str(BackstabMult) + '\n\n' - # 5376 - Lay On Hands Increased by - # TODO: expand clskills with kits, so inquisitors and undead hunters don't get this - ClassSkillsTable = GemRB.LoadTableObject ("clskills") - if ClassSkillsTable.GetValue (ClassName, "LAYHANDS") != "*": - LOHTable = GemRB.LoadTableObject ("layhands") - LOHGain = LOHTable.GetValue (0, Level) - LOHTable.GetValue (0, Level-LevelDiff) - if LOHGain > 0: - News += GemRB.GetString (5376) + ": " + str(LOHGain) + '\n\n' + # 5376 - Lay on Hands increased + if LOHGain > 0: + GemRB.SetPlayerStat (pc, IE_LAYONHANDSAMOUNT, LOHValue) + News += GemRB.GetString (5376) + ": " + str(LOHGain) + '\n\n' + # 5293 - HP increased by + if (OldHPMax != GemRB.GetPlayerStat (pc, IE_MAXHITPOINTS, 1)): + News += GemRB.GetString (5293) + ": " + str(GemRB.GetPlayerStat (pc, IE_MAXHITPOINTS, 1) - OldHPMax) + '\n' + # 5377 - Lore Increased by - LoreTable = GemRB.LoadTableObject ("lore") - # TODO: use the class that actually leveled up (mc/dc support) - LoreClassIndex = LoreTable.GetRowIndex (ClassName) - LoreGain = LoreTable.GetValue (LoreClassIndex, 0) * LevelDiff - if LoreGain > 0: + # add the lore gain if we haven't done so already + if (LoreGain > 0) and (OldLore == GemRB.GetPlayerStat (pc, IE_LORE, 1)): + GemRB.SetPlayerStat (pc, IE_LORE, OldLore + LoreGain) News += GemRB.GetString (5377) + ": " + str(LoreGain) + '\n\n' # 5378 - Additional Skill Points if NewSkillPoints > 0: News += GemRB.GetString (5378) + ": " + str(NewSkillPoints) + '\n' + return News def LevelUpInfoPress(): global LevelUpWindow, TextAreaControl, InfoCounter, LevelDiff if InfoCounter % 2: - pc = GemRB.GameGetSelectedPCSingle () # call GetStatOverview with the new levels, so the future overview is shown # TODO: show only xp, levels, thac0, #att, lore, reputation, backstab, saving throws TextAreaControl.SetText(GetStatOverview(pc, LevelDiff)) @@ -407,28 +753,79 @@ StatID = TmpTable.GetValue (i+8, 0) Value = GemRB.GetVar ("Prof "+str(i)) if Value: - GemRB.ApplyEffect (GemRB.GameGetSelectedPCSingle (), "Proficiency", Value, StatID ) + GemRB.ApplyEffect (pc, "Proficiency", Value, StatID ) # skills - pc = GemRB.GameGetSelectedPCSingle () for i in range(SkillTable.GetRowCount()-2): SkillName = SkillTable.GetValue (i+2, 2) SkillValue = GemRB.GetVar ("Skill "+str(i)) GemRB.SetPlayerStat (pc, SkillName, SkillValue ) + + # level + if DualSwap: # swap the IE_LEVELs around if a backward dual + GemRB.SetPlayerStat (pc, IE_LEVEL2, Level[0]) + GemRB.SetPlayerStat (pc, IE_LEVEL, Level[1]) + else: + GemRB.SetPlayerStat (pc, IE_LEVEL, Level[0]) + GemRB.SetPlayerStat (pc, IE_LEVEL2, Level[1]) + GemRB.SetPlayerStat (pc, IE_LEVEL3, Level[2]) + print "Levels:",Level[0],"/",Level[1],"/",Level[2] + + # save our number of memorizable spells per level + if DeltaWSpells > 0: + # loop through each wizard spell level + for i in range(len(NewWSpells)): + if NewWSpells[i] > 0: # we have new spells, so update + GemRB.SetMemorizableSpellsCount(pc, NewWSpells[i], IE_SPELL_TYPE_WIZARD, i) + + # save our number of memorizable priest spells + if DeltaDSpells > 0: # druids and clerics count + for i in range (len(NewDSpells)): + # get each update + if NewDSpells[i] > 0: + GemRB.SetMemorizableSpellsCount (pc, NewDSpells[i], IE_SPELL_TYPE_PRIEST, i) + + # learn all the spells we're given, but don't have, up to our given casting level + if GemRB.GetMemorizableSpellsCount (pc, IE_SPELL_TYPE_PRIEST, i, 1) > 0: # we can memorize spells of this level + for j in range(NumClasses): # loop through each class + IsDruid = ClassSkillsTable.GetValue (Classes[j], 1, 0) + IsCleric = ClassSkillsTable.GetValue (Classes[j], 0, 0) + if IsCleric == "*" and IsDruid == "*": # no divine spells (so mage/cleric multis don't screw up) + continue + elif IsCleric == "*": # druid spells + ClassFlag = 0x4000 + else: # cleric spells + ClassFlag = 0x8000 + + Learnable = GetLearnablePriestSpells(ClassFlag, GemRB.GetPlayerStat (pc, IE_ALIGNMENT), i+1) + for k in range(len(Learnable)): # loop through all the learnable spells + if HasSpell (pc, IE_SPELL_TYPE_PRIEST, i, Learnable[k]) < 0: # only write it if we don't yet know it + GemRB.LearnSpell(pc, Learnable[k]) + # hlas # level, xp and other stuff by the core? + + # 5261 - Regained abilities from inactive class + if IsDual: # we're dual classed + print "activation?" + if (Level[0] - LevelDiff[0]) <= Level[1] and Level[0] > Level[1]: # our new classes now surpasses our old class + print "reactivating base class" + ReactivateBaseClass () if LevelUpWindow: LevelUpWindow.Unload() + UpdateRecordsWindow() + GemRB.SetRepeatClickFlags (GEM_RK_DISABLE, OP_OR) - UpdateRecordsWindow() return -# TODO: MC and DC support def GetNextLevelFromExp (XP, Class): NextLevelTable = GemRB.LoadTableObject ("XPLEVEL") - Row = NextLevelTable.GetRowIndex (Class) + ClassTable = GemRB.LoadTableObject ("classes") + ClassIndex = ClassTable.FindValue (5, Class) + ClassName = ClassTable.GetRowName (ClassIndex) + Row = NextLevelTable.GetRowIndex (ClassName) for i in range(1, NextLevelTable.GetColumnCount()-1): if XP < NextLevelTable.GetValue (Row, i): return i @@ -527,4 +924,82 @@ GemRB.SetVar("Prof "+str(Pos),ActPoint+1) ProfPointsLeft = ProfPointsLeft - 1 RedrawSkills() - return \ No newline at end of file + return + +# regains all the benifits of the former class +def ReactivateBaseClass (): + # things that change: + # thac0 + # saves + # class abilities (need to relearn) + # spell casting + + ClassIndex = ClassTable.FindValue (5, Classes[1]) + ClassName = ClassTable.GetRowName (ClassIndex) + KitIndex = GetKitIndex (pc) + KitList = GemRB.LoadTableObject ("kitlist") + + # see if this thac0 is lower than our current thac0 + ThacoTable = GemRB.LoadTableObject ("THAC0") + TmpThaco = ThacoTable.GetValue(Classes[1]-1, Level[1]-1, 1) + if TmpThaco < GemRB.GetPlayerStat (pc, IE_THAC0, 1): + GemRB.SetPlayerStat (pc, IE_THAC0, TmpThaco) + + # see if all our saves are lower than our current saves + SavesTable = ClassTable.GetValue (ClassIndex, 3, 0) + SavesTable = GemRB.LoadTableObject (SavesTable) + for i in range (5): + # see if this save is lower than our old save + TmpSave = SavesTable.GetValue (i, Level[1]-1) + if TmpSave < GemRB.GetPlayerStat (pc, IE_SAVEVSDEATH+i, 1): + GemRB.SetPlayerStat (pc, IE_SAVEVSDEATH+i, TmpSave) + + # see if we're a caster + SpellTables = [ClassSkillsTable.GetValue (Classes[1], 0, 0), ClassSkillsTable.GetValue (Classes[1], 1, 0), ClassSkillsTable.GetValue (Classes[1], 2, 0)] + if SpellTables[2] != "*": # casts mage spells + # set up our memorizations + SpellTable = GemRB.LoadTableObject (SpellTables[2]) + for i in range (9): + # if we can cast more spells at this level (should be always), then update + NumSpells = SpellTable.GetValue (Level[1]-1, i) + if NumSpells > GemRB.GetMemorizableSpellsCount (pc, IE_SPELL_TYPE_WIZARD, i, 1): + GemRB.SetMemorizableSpellsCount (pc, NumSpells, IE_SPELL_TYPE_WIZARD, i) + elif SpellTables[1] != "*" or SpellTables[0] != "*": # casts priest spells + # get the correct table and mask + if SpellsTables[1] != "*": # clerical spells + SpellTable = GemRB.LoadTableObject (SpellTables[1]) + ClassMask = 0x8000 + else: # druidic spells + SpellTable = GemRB.LoadTableObject (SpellTables[0]) + ClassMask = 0x4000 + + # loop through each spell level + for i in range (7): + # update if we can cast more spells at this level + NumSpells = SpellTable.GetValue (Level[1]-1, i) + if NumSpells > GemRB.GetMemorizableSpellsCount (pc, IE_SPELL_TYPE_PRIEST, i, 1): + GemRB.SetMemorizableSpellsCount (pc, NumSpells, IE_SPELL_TYPE_PRIEST, i) + + # also re-learn the spells if we have to + # WARNING: this fixes the error whereby rangers dualed to clerics still got all druid spells + # they will now only get druid spells up to the level they could cast + # this should probably be noted somewhere (ranger/cleric multis still function the same, + # but that could be remedied if desired) + Learnable = GetLearnablePriestSpells(ClassMask, GemRB.GetPlayerStat (pc, IE_ALIGNMENT), i+1) + for k in range (len (Learnable)): # loop through all the learnable spells + if HasSpell (pc, IE_SPELL_TYPE_PRIEST, i, Learnable[k]) < 0: # only write it if we don't yet know it + GemRB.LearnSpell(pc, Learnable[k]) + + # setup class bonuses for this class + if KitIndex == 0: # no kit + ABTable = ClassSkillsTable.GetValue (ClassName, "ABILITIES") + else: # kit + ABTable = KitList.GetValue (KitIndex, 4, 0) + print "ABTable:",ABTable + + # add the abilites if we aren't a mage and have a table to ref + if ABTable != "*" and ABTable[:6] != "CLABMA": + AddClassAbilities (pc, ABTable, Level[1], Level[1]) # relearn class abilites + +# this has to be down here because it calls RedrawSkills () +from LUHLASelection import * This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lyn...@us...> - 2009-05-18 21:09:32
|
Revision: 6001 http://gemrb.svn.sourceforge.net/gemrb/?rev=6001&view=rev Author: lynxlupodian Date: 2009-05-18 21:09:03 +0000 (Mon, 18 May 2009) Log Message: ----------- bg2: disallow old skill point redistribution Modified Paths: -------------- gemrb/trunk/gemrb/GUIScripts/bg2/GUICG6.py gemrb/trunk/gemrb/GUIScripts/bg2/LevelUp.py Modified: gemrb/trunk/gemrb/GUIScripts/bg2/GUICG6.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/GUICG6.py 2009-05-18 20:49:44 UTC (rev 6000) +++ gemrb/trunk/gemrb/GUIScripts/bg2/GUICG6.py 2009-05-18 21:09:03 UTC (rev 6001) @@ -109,18 +109,18 @@ SkillName = SkillTable.GetRowName (i+2) if SkillTable.GetValue (SkillName, KitName) != -1: AvailableSkillIndices.append(i) - print "TZTZUTU", AvailableSkillIndices, KitName + SkillRacTable = GemRB.LoadTableObject("SKILLRAC") RaceTable = GemRB.LoadTableObject("RACES") RaceName = RaceTable.GetRowName(GemRB.GetVar("Race")-1) - # TODO: also save the values in another set of vars, so we can prevent skill redistribution Ok=0 for i in range(RowCount): SkillName = SkillTable.GetRowName(i+2) if SkillTable.GetValue(SkillName, KitName)==1: b=SkillRacTable.GetValue(RaceName, SkillName) GemRB.SetVar("Skill "+str(i),b) + GemRB.SetVar("SkillBase "+str(i), b) Ok=1 else: GemRB.SetVar("Skill "+str(i),0) @@ -198,7 +198,8 @@ Pos = GemRB.GetVar("Skill")+TopIndex TextAreaControl.SetText(SkillTable.GetValue(Pos+2,0) ) ActPoint = GemRB.GetVar("Skill "+str(Pos) ) - if ActPoint <= 0: + BasePoint = GemRB.GetVar("SkillBase "+str(Pos) ) + if ActPoint <= 0 or ActPoint == BasePoint: return GemRB.SetVar("Skill "+str(Pos),ActPoint-1) PointsLeft = PointsLeft + 1 Modified: gemrb/trunk/gemrb/GUIScripts/bg2/LevelUp.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/LevelUp.py 2009-05-18 20:49:44 UTC (rev 6000) +++ gemrb/trunk/gemrb/GUIScripts/bg2/LevelUp.py 2009-05-18 21:09:03 UTC (rev 6001) @@ -351,11 +351,11 @@ else: # get the skill values # TODO: get upgrades from clskills -> skill{brd,rng} (add rangers to clskills) - # TODO: also save the values in another set of vars, so we can prevent skill redistribution for i in range(SkillTable.GetRowCount()-2): SkillID = SkillTable.GetValue (i+2, 2) SkillValue = GemRB.GetPlayerStat (pc, SkillID, 1) GemRB.SetVar("Skill "+str(i), SkillValue) + GemRB.SetVar("SkillBase "+str(i), SkillValue) NewSkillPoints = SkillPointsLeft @@ -863,7 +863,8 @@ Pos = GemRB.GetVar("Skill")+SkillTopIndex TextAreaControl.SetText(SkillTable.GetValue(Pos+2,0) ) ActPoint = GemRB.GetVar("Skill "+str(Pos) ) - if ActPoint <= 0: + BasePoint = GemRB.GetVar("SkillBase "+str(Pos) ) + if ActPoint <= 0 or ActPoint == BasePoint: return GemRB.SetVar("Skill "+str(Pos),ActPoint-1) SkillPointsLeft = SkillPointsLeft + 1 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ave...@us...> - 2009-05-21 16:36:20
|
Revision: 6023 http://gemrb.svn.sourceforge.net/gemrb/?rev=6023&view=rev Author: avenger_teambg Date: 2009-05-21 16:36:00 +0000 (Thu, 21 May 2009) Log Message: ----------- cleaned up Levelup import Modified Paths: -------------- gemrb/trunk/gemrb/GUIScripts/bg2/GUIREC.py gemrb/trunk/gemrb/GUIScripts/bg2/MessageWindow.py Modified: gemrb/trunk/gemrb/GUIScripts/bg2/GUIREC.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/GUIREC.py 2009-05-21 02:48:25 UTC (rev 6022) +++ gemrb/trunk/gemrb/GUIScripts/bg2/GUIREC.py 2009-05-21 16:36:00 UTC (rev 6023) @@ -1298,6 +1298,5 @@ SubSubCustomizeWindow.Unload () return -from LevelUp import * ################################################### # End of file GUIREC.py Modified: gemrb/trunk/gemrb/GUIScripts/bg2/MessageWindow.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/MessageWindow.py 2009-05-21 02:48:25 UTC (rev 6022) +++ gemrb/trunk/gemrb/GUIScripts/bg2/MessageWindow.py 2009-05-21 16:36:00 UTC (rev 6023) @@ -37,6 +37,7 @@ from GUISTORE import * from GUIWORLD import * from TextScreen import * +from LevelUp import * MessageWindow = 0 PortraitWindow = 0 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ma...@us...> - 2009-05-21 17:02:31
|
Revision: 6025 http://gemrb.svn.sourceforge.net/gemrb/?rev=6025&view=rev Author: mattinm Date: 2009-05-21 17:02:25 +0000 (Thu, 21 May 2009) Log Message: ----------- gain proficiencies at chargen end (can't decrement) Modified Paths: -------------- gemrb/trunk/gemrb/GUIScripts/bg2/CharGen6.py gemrb/trunk/gemrb/GUIScripts/bg2/CharGen7.py gemrb/trunk/gemrb/GUIScripts/bg2/CharGen9.py Modified: gemrb/trunk/gemrb/GUIScripts/bg2/CharGen6.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/CharGen6.py 2009-05-21 17:01:20 UTC (rev 6024) +++ gemrb/trunk/gemrb/GUIScripts/bg2/CharGen6.py 2009-05-21 17:02:25 UTC (rev 6025) @@ -39,7 +39,6 @@ for i in range (ProfsCount): StatID = ProfsTable.GetValue (i+8, 0) GemRB.SetVar ("Prof "+str(i), 0) - GemRB.SetPlayerStat (MyChar, StatID, 0) # nully other variables GemRB.SetVar ("HatedRace", 0) Modified: gemrb/trunk/gemrb/GUIScripts/bg2/CharGen7.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/CharGen7.py 2009-05-21 17:01:20 UTC (rev 6024) +++ gemrb/trunk/gemrb/GUIScripts/bg2/CharGen7.py 2009-05-21 17:02:25 UTC (rev 6025) @@ -60,18 +60,6 @@ # setting it to value is enough, but this is more modder friendly GemRB.SetPlayerStat (MyChar, StatID, value + GemRB.GetPlayerStat (MyChar, StatID, 1)) - # weapon proficiencies - # set the base number of attacks; effects will add the proficiency bonus - GemRB.SetPlayerStat (MyChar, IE_NUMBEROFATTACKS, 2) - ProfsTable = GemRB.LoadTableObject ("weapprof") - ProfsCount = ProfsTable.GetRowCount () - 8 # bg2 weapprof.2da contains the bg1 proficiencies too, skipping those - for i in range(ProfsCount): - StatID = ProfsTable.GetValue (i+8, 0) - Value = GemRB.GetVar ("Prof "+str(i)) - if Value: - GemRB.ApplyEffect (MyChar, "Proficiency", Value, StatID) - print "\tProf ",str(i),": ",Value - DisplayOverview (7) return Modified: gemrb/trunk/gemrb/GUIScripts/bg2/CharGen9.py =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/CharGen9.py 2009-05-21 17:01:20 UTC (rev 6024) +++ gemrb/trunk/gemrb/GUIScripts/bg2/CharGen9.py 2009-05-21 17:02:25 UTC (rev 6025) @@ -47,7 +47,19 @@ Class = GemRB.GetPlayerStat (MyChar, IE_CLASS) ClassIndex = ClassTable.FindValue (5, Class) ClassName = ClassTable.GetRowName (ClassIndex) - + + # weapon proficiencies + # set the base number of attacks; effects will add the proficiency bonus + GemRB.SetPlayerStat (MyChar, IE_NUMBEROFATTACKS, 2) + ProfsTable = GemRB.LoadTableObject ("weapprof") + ProfsCount = ProfsTable.GetRowCount () - 8 # bg2 weapprof.2da contains the bg1 proficiencies too, skipping those + for i in range(ProfsCount): + StatID = ProfsTable.GetValue (i+8, 0) + Value = GemRB.GetVar ("Prof "+str(i)) + if Value: + GemRB.ApplyEffect (MyChar, "Proficiency", Value, StatID) + print "\tProf ",str(i),": ",Value + # mage spells TableName = ClassSkillsTable.GetValue (Class, 2, 0) if TableName != "*": @@ -58,28 +70,10 @@ AlignmentTable = GemRB.LoadTableObject ("aligns") # apply starting (alignment dictated) abilities - # TODO: simplify this by using AddClassAbilities from GUICommon (spurious name) - TmpTable = GemRB.LoadTableObject ("abstart") + # pc, table, new level, level diff, alignment AlignmentAbbrev = AlignmentTable.FindValue (3, GemRB.GetPlayerStat (MyChar, IE_ALIGNMENT)) - AlignmentAbbrev = AlignmentTable.GetValue (AlignmentAbbrev, 4) - AbilityCount = TmpTable.GetColumnCount () - spells = [] + AddClassAbilities (MyChar, "abstart", 7,7, AlignmentAbbrev) - for i in range(AbilityCount): - spells.append (TmpTable.GetValue (AlignmentAbbrev, str(i))) - - spells2 = list(set(spells)) - spells2.sort() # create a sorted list of unique spells - spells.sort() - ClabOffset = GemRB.GetMemorizedSpellsCount (MyChar, IE_SPELL_TYPE_INNATE, 0) - - for i in range(len(spells)): - ab = spells[i] - if GemRB.LearnSpell (MyChar, ab, LS_MEMO) == LSR_KNOWN: - # the spell is already known, so we have to memorize it manually - # the last MemorizeSpell parameter is the index of the known spell to memorize - GemRB.MemorizeSpell (MyChar, IE_SPELL_TYPE_INNATE, 0, spells2.index(ab) + ClabOffset) - # setup starting gold (uses a roll dictated by class TmpTable = GemRB.LoadTableObject ("strtgold") temp = GemRB.Roll (TmpTable.GetValue (Class, 1),TmpTable.GetValue (Class, 0), TmpTable.GetValue (Class, 2)) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |