home *** CD-ROM | disk | FTP | other *** search
/ Planet Source Code Jumbo …e CD Visual Basic 1 to 7 / 5_2007-2008.ISO / data / Zips / Lengine_(C20326511232006.psc / LEngine_B755 / Battle / usrBattle.ctl < prev   
Text File  |  2006-11-18  |  21KB  |  755 lines

  1. VERSION 5.00
  2. Object = "{0E59F1D2-1FBE-11D0-8FF2-00A0D10038BC}#1.0#0"; "msscript.ocx"
  3. Begin VB.UserControl usrBattle 
  4.    BackColor       =   &H00808080&
  5.    ClientHeight    =   3600
  6.    ClientLeft      =   0
  7.    ClientTop       =   0
  8.    ClientWidth     =   4800
  9.    BeginProperty Font 
  10.       Name            =   "Lucida Console"
  11.       Size            =   9
  12.       Charset         =   0
  13.       Weight          =   700
  14.       Underline       =   0   'False
  15.       Italic          =   0   'False
  16.       Strikethrough   =   0   'False
  17.    EndProperty
  18.    ScaleHeight     =   240
  19.    ScaleMode       =   3  'Pixel
  20.    ScaleWidth      =   320
  21.    Begin prjLEngine.usrSprite SFX 
  22.       Height          =   3600
  23.       Left            =   0
  24.       TabIndex        =   11
  25.       Top             =   0
  26.       Width           =   4800
  27.       _ExtentX        =   8467
  28.       _ExtentY        =   6350
  29.    End
  30.    Begin VB.Timer timDied 
  31.       Enabled         =   0   'False
  32.       Interval        =   3500
  33.       Left            =   4200
  34.       Top             =   960
  35.    End
  36.    Begin VB.Timer timTurnFinished 
  37.       Enabled         =   0   'False
  38.       Interval        =   2000
  39.       Left            =   480
  40.       Top             =   120
  41.    End
  42.    Begin VB.Timer timNotify 
  43.       Enabled         =   0   'False
  44.       Interval        =   2200
  45.       Left            =   0
  46.       Top             =   120
  47.    End
  48.    Begin prjLEngine.usrTransPic imgSlash 
  49.       Height          =   495
  50.       Left            =   600
  51.       TabIndex        =   8
  52.       Top             =   600
  53.       Visible         =   0   'False
  54.       Width           =   495
  55.       _ExtentX        =   873
  56.       _ExtentY        =   873
  57.       MaskColor       =   -2147483633
  58.    End
  59.    Begin prjLEngine.usrTransPic imgEnemy 
  60.       Height          =   30
  61.       Index           =   0
  62.       Left            =   0
  63.       TabIndex        =   7
  64.       Top             =   0
  65.       Width           =   30
  66.       _ExtentX        =   53
  67.       _ExtentY        =   53
  68.       MaskColor       =   -2147483633
  69.    End
  70.    Begin prjLEngine.usrTransPic imgNumbers 
  71.       Height          =   120
  72.       Index           =   0
  73.       Left            =   3000
  74.       TabIndex        =   6
  75.       Top             =   240
  76.       Visible         =   0   'False
  77.       Width           =   120
  78.       _ExtentX        =   212
  79.       _ExtentY        =   212
  80.       MaskColor       =   16777215
  81.    End
  82.    Begin prjLEngine.usrTransPic Char 
  83.       Height          =   30
  84.       Index           =   0
  85.       Left            =   0
  86.       TabIndex        =   5
  87.       Top             =   0
  88.       Width           =   30
  89.       _ExtentX        =   53
  90.       _ExtentY        =   53
  91.       MaskColor       =   -2147483633
  92.    End
  93.    Begin VB.Timer timWin 
  94.       Enabled         =   0   'False
  95.       Interval        =   200
  96.       Left            =   1560
  97.       Top             =   2280
  98.    End
  99.    Begin VB.Timer timFloat 
  100.       Enabled         =   0   'False
  101.       Interval        =   200
  102.       Left            =   1080
  103.       Tag             =   "0"
  104.       Top             =   2280
  105.    End
  106.    Begin VB.Timer timATM 
  107.       Enabled         =   0   'False
  108.       Index           =   3
  109.       Left            =   480
  110.       Top             =   2280
  111.    End
  112.    Begin VB.Timer timATM 
  113.       Enabled         =   0   'False
  114.       Index           =   2
  115.       Left            =   360
  116.       Top             =   2280
  117.    End
  118.    Begin VB.Timer timATM 
  119.       Enabled         =   0   'False
  120.       Index           =   1
  121.       Left            =   240
  122.       Top             =   2280
  123.    End
  124.    Begin VB.Timer timATM 
  125.       Enabled         =   0   'False
  126.       Index           =   0
  127.       Left            =   120
  128.       Top             =   2280
  129.    End
  130.    Begin prjLEngine.usrMenu MnuEnemies 
  131.       Height          =   720
  132.       Left            =   75
  133.       TabIndex        =   1
  134.       Top             =   2805
  135.       Width           =   4725
  136.       _ExtentX        =   8334
  137.       _ExtentY        =   1270
  138.       Begin prjLEngine.usrMenu MnuActions 
  139.          Height          =   735
  140.          Left            =   1080
  141.          TabIndex        =   3
  142.          Top             =   0
  143.          Width           =   1215
  144.          _ExtentX        =   2143
  145.          _ExtentY        =   1270
  146.       End
  147.       Begin prjLEngine.usrMenu MnuCustom 
  148.          Height          =   735
  149.          Left            =   600
  150.          TabIndex        =   9
  151.          Top             =   0
  152.          Visible         =   0   'False
  153.          Width           =   1215
  154.          _ExtentX        =   2143
  155.          _ExtentY        =   1270
  156.       End
  157.       Begin prjLEngine.usrCharMenu MnuCharacters 
  158.          Height          =   705
  159.          Left            =   2295
  160.          TabIndex        =   2
  161.          Top             =   0
  162.          Width           =   2430
  163.          _ExtentX        =   3863
  164.          _ExtentY        =   1244
  165.       End
  166.       Begin VB.Image imgCur 
  167.          Height          =   195
  168.          Index           =   0
  169.          Left            =   1800
  170.          Picture         =   "usrBattle.ctx":0000
  171.          Top             =   360
  172.          Visible         =   0   'False
  173.          Width           =   240
  174.       End
  175.    End
  176.    Begin prjLEngine.keyReciever keys 
  177.       Left            =   3000
  178.       Top             =   1680
  179.       _ExtentX        =   1429
  180.       _ExtentY        =   1429
  181.    End
  182.    Begin VB.Timer timShowAttack 
  183.       Enabled         =   0   'False
  184.       Interval        =   80
  185.       Left            =   2520
  186.       Tag             =   "0"
  187.       Top             =   1080
  188.    End
  189.    Begin VB.Timer timShowDamage 
  190.       Enabled         =   0   'False
  191.       Interval        =   1
  192.       Left            =   3000
  193.       Top             =   1080
  194.    End
  195.    Begin VB.Timer timAnim 
  196.       Enabled         =   0   'False
  197.       Index           =   0
  198.       Left            =   2520
  199.       Top             =   2280
  200.    End
  201.    Begin prjLEngine.usrMenu MnuItems 
  202.       Height          =   720
  203.       Left            =   75
  204.       TabIndex        =   4
  205.       Top             =   2805
  206.       Width           =   4695
  207.       _ExtentX        =   8281
  208.       _ExtentY        =   1270
  209.    End
  210.    Begin MSScriptControlCtl.ScriptControl Script 
  211.       Left            =   4200
  212.       Top             =   0
  213.       _ExtentX        =   1005
  214.       _ExtentY        =   1005
  215.    End
  216.    Begin prjLEngine.usrNotify Notify 
  217.       Height          =   240
  218.       Left            =   120
  219.       TabIndex        =   10
  220.       Top             =   0
  221.       Visible         =   0   'False
  222.       Width           =   4575
  223.       _ExtentX        =   8070
  224.       _ExtentY        =   423
  225.    End
  226.    Begin VB.Shape shpShadow 
  227.       FillStyle       =   0  'Solid
  228.       Height          =   375
  229.       Index           =   0
  230.       Left            =   600
  231.       Shape           =   2  'Oval
  232.       Top             =   1680
  233.       Visible         =   0   'False
  234.       Width           =   855
  235.    End
  236.    Begin VB.Label Numbers 
  237.       AutoSize        =   -1  'True
  238.       BackStyle       =   0  'Transparent
  239.       Caption         =   "3"
  240.       BeginProperty Font 
  241.          Name            =   "Lucida Console"
  242.          Size            =   11.25
  243.          Charset         =   0
  244.          Weight          =   700
  245.          Underline       =   0   'False
  246.          Italic          =   0   'False
  247.          Strikethrough   =   0   'False
  248.       EndProperty
  249.       ForeColor       =   &H00FFFFFF&
  250.       Height          =   225
  251.       Index           =   0
  252.       Left            =   120
  253.       TabIndex        =   0
  254.       Tag             =   "0"
  255.       Top             =   3360
  256.       Width           =   150
  257.    End
  258.    Begin VB.Image imgCur 
  259.       Height          =   195
  260.       Index           =   1
  261.       Left            =   0
  262.       Picture         =   "usrBattle.ctx":03A0
  263.       Top             =   0
  264.       Visible         =   0   'False
  265.       Width           =   240
  266.    End
  267.    Begin VB.Image imgBack 
  268.       Height          =   3600
  269.       Left            =   0
  270.       Stretch         =   -1  'True
  271.       Top             =   0
  272.       Width           =   4800
  273.    End
  274. End
  275. Attribute VB_Name = "usrBattle"
  276. Attribute VB_GlobalNameSpace = False
  277. Attribute VB_Creatable = True
  278. Attribute VB_PredeclaredId = False
  279. Attribute VB_Exposed = False
  280. Option Explicit
  281.  
  282. Private Const Mnu_Custom As Integer = 4
  283. Private Const Mnu_Items As Integer = 3
  284. Private Const Mnu_Characters As Integer = 2
  285. Private Const Mnu_Enemies As Integer = 1
  286. Private Const Mnu_Action As Integer = 0
  287.  
  288. Private Const Act_Attack As String = "A"
  289. Private Const Act_Item As String = "I"
  290. Private Const Act_Steal As String = "S"
  291. Private Const Act_Custom As String = "C"
  292.  
  293. Private Const Sta_Attack As Integer = 10
  294.  
  295. Private pSlashSize(3) As picSize
  296.  
  297. Private iAniStart(40) As Integer
  298. Private iAniEnd(40) As Integer
  299.  
  300. Private imenuState As Integer
  301. Private sMnuAnswers(4) As String
  302. Private cMnuHistory As New Collection
  303.  
  304. Private bTakingTurn As Boolean
  305. Private bTurnFinished As Boolean
  306. Private bAnimationBusy As Boolean
  307.  
  308. Private bFirstMember As Boolean 'Special Conditions for firsts
  309. Private bFirstEnemy As Boolean '0 is already loaded
  310. Private bMagic As Boolean
  311.  
  312. Private cNeedsActivation As New Collection
  313.  
  314. Private iPartyIndex As Integer
  315. Private iEnemyIndex As Integer
  316.  
  317. Private iFloatState As Integer
  318.  
  319. Private bAttackAi As Boolean
  320. Private bTargetAi As Boolean
  321.  
  322. Private iWinState As Integer
  323. Private bBattleEnd As Boolean
  324.  
  325. Private CurrentMnu
  326.  
  327. Private imgKill(7)
  328. Private b_imgKillUsed(7) As Boolean
  329. Private b_imgKillAI(7) As Boolean
  330. Private i_HuIndex(7) As Integer
  331.  
  332. Private bKill As Boolean
  333.  
  334. Private iSubjectIndex As Integer
  335. Private iOffenderIndex As Integer
  336.  
  337. Private LastTarget As New clsBattlePlayer
  338. Private LastOffender As New clsBattlePlayer
  339.  
  340. Private cBattleActions As New Collection
  341. Private cCharsReady As New Collection
  342. Private cNotifications As New Collection
  343. Private bAttackFin As Boolean
  344. Private sLastSpell As String
  345.  
  346. Private pParty(1) As New clsParty
  347. Private iAiATM(3) As Integer
  348.  
  349. Private sSFXFinished As Boolean
  350. Private bWaitNotify As Boolean
  351.  
  352. Public Event BattleFinished(iRes As Integer)
  353. Private WithEvents ScriptDef As clsScript
  354. Attribute ScriptDef.VB_VarHelpID = -1
  355.  
  356. Private bBoss As Boolean
  357. Private sBattlePath As String
  358.  
  359. Public Property Get PartyCount() As Integer
  360.     PartyCount = MnuCharacters.ListCount
  361. End Property
  362.  
  363. Public Property Let Boss(bNewBoss As Boolean)
  364.     bBoss = bNewBoss
  365. End Property
  366.  
  367. Public Property Get Boss() As Boolean
  368.     Boss = bBoss
  369. End Property
  370.  
  371. Sub DigGrave(ByRef imgSrc, bAI As Boolean, Optional charIndex As Integer = -1)
  372.  
  373. Dim I As Integer
  374.  
  375.     For I = 0 To UBound(imgKill)
  376.         If b_imgKillUsed(I) = False Then
  377.             b_imgKillUsed(I) = True
  378.             b_imgKillAI(I) = bAI
  379.             i_HuIndex(I) = charIndex
  380.             
  381.             Set imgKill(I) = imgSrc
  382.             Exit Sub
  383.         End If
  384.     Next
  385.             
  386. End Sub
  387.  
  388. Sub BerryDead()
  389.  
  390. Dim I As Integer
  391.  
  392.     For I = 0 To UBound(imgKill)
  393.         If b_imgKillUsed(I) = True Then
  394.         
  395.             b_imgKillUsed(I) = False
  396.         
  397.             If b_imgKillAI(I) = True Then
  398.                 DealWithDeadAI i_HuIndex(I)
  399.             Else
  400.                 DealWithDeadHuman i_HuIndex(I)
  401.             End If
  402.  
  403.             b_imgKillAI(I) = False
  404.         End If
  405.     Next
  406.  
  407. End Sub
  408.  
  409. Sub DumpParty(ByRef bcIni As clsIniObj)
  410.  
  411. Dim I As Integer, sIds As String
  412.  
  413.     bcIni.Section = "Battle_Party"
  414.     
  415.     For I = 0 To MnuCharacters.ListUbound
  416.         sIds = sIds & pBattleHu(I).ID & ","
  417.     Next
  418.     
  419.     If Len(sIds) > 0 Then
  420.         sIds = Mid(sIds, 1, Len(sIds) - 1)
  421.     End If
  422.     
  423.     bcIni.WriteData sIds, "Members"
  424.     
  425.     bcIni.Section = "Battle_Aliases"
  426.     DumpSuperCollection bcIni, Aliases
  427.  
  428. End Sub
  429.  
  430. Sub RestoreParty(ByRef bcIni As clsIniObj)
  431.  
  432. Dim I As Integer, sIds() As String
  433.  
  434.     bcIni.Section = "Battle_Aliases"
  435.     RestoreSuperCollection bcIni, Aliases
  436.  
  437.     bcIni.Section = "Battle_Party"
  438.     sIds = Split(bcIni.Read("Members"), ",")
  439.     
  440.     For I = 0 To UBound(sIds)
  441.         Me.CreatePlayer sIds(I)
  442.     Next
  443.  
  444. End Sub
  445.  
  446. Sub RemoveAllPlayers()
  447.  
  448. Dim I As Integer
  449.  
  450.     For I = 0 To MnuCharacters.ListUbound
  451.         RemovePlayer I
  452.     Next
  453.  
  454. End Sub
  455.  
  456. Sub UpdateCharDisplay(charIndex As Integer)
  457.  
  458.     If pBattleHu(charIndex).Hp > pBattleHu(charIndex).MaxHp Then
  459.         pBattleHu(charIndex).Hp = pBattleHu(charIndex).MaxHp
  460.     End If
  461.  
  462.     MnuCharacters.UpdateATB charIndex, pBattleHu(charIndex).ATB
  463.     MnuCharacters.UpdateHP charIndex, pBattleHu(charIndex).Hp
  464.  
  465. End Sub
  466.  
  467. Sub NextNotify()
  468.  
  469.     '! I should only be called, when the previous notify is
  470.     'gone [implying the notify object is invisisble]
  471.  
  472.     If cNotifications.Count > 0 Then
  473.         NotifyAction cNotifications(1)
  474.         cNotifications.Remove 1
  475.     ElseIf bWaitNotify = True Then
  476.         bWaitNotify = False
  477.         timShowAttack.Enabled = True
  478.     End If
  479.  
  480. End Sub
  481.  
  482. Sub NotifyAction(sCaption As String)
  483.     
  484.     If Notify.Visible = False Then
  485.         Notify.Caption = sCaption
  486.         Notify.Visible = True
  487.         
  488.         'Max visiable 2secs
  489.         timNotify.Enabled = True
  490.     Else
  491.         'Que
  492.         cNotifications.Add sCaption
  493.     End If
  494.     
  495. End Sub
  496.  
  497. Sub InitialiseActions(BattleChar As clsBattlePlayer, Optional bCompare As Boolean)
  498.  
  499.     On Error GoTo Catch_E
  500.  
  501. Dim sPath As String, cActions As New Collection, sRes As String, I As Integer, actionIndex As Integer
  502. Dim CActionNode As New Collection, sIniPath As String, iniMp As New clsIniObj, iniLvl As New clsIniObj
  503.  
  504.     sPath = Vars.sPath_BattleChars & BattleChar.ID & "\Actions\"
  505.     
  506.     With frmLib.Dir1
  507.         .Path = sPath
  508.     End With
  509.     
  510.     If frmLib.Dir1.ListCount > 0 Then
  511.         For I = 0 To frmLib.Dir1.ListCount - 1
  512.             sRes = StrEnd(frmLib.Dir1.List(I), "\")
  513.             If sRes <> "False" Then
  514.                 cActions.Add sRes
  515.             End If
  516.         Next
  517.         
  518.         If bCompare = False Then
  519.             'start an array
  520.             BattleChar.Actions = cActions
  521.         End If
  522.  
  523.         If cActions.Count > 0 Then
  524.             actionIndex = 1
  525.             
  526.             iniMp.Key = "MP Cost"
  527.             iniMp.Default = 0
  528.             
  529.             iniLvl.Key = "Level"
  530.             iniLvl.Default = 0
  531.             
  532.             While actionIndex <= cActions.Count
  533.                 'sIniPath = sPath & cActions(actionIndex) & ".ini"
  534.                 Set CActionNode = BattleChar.ActionNode(actionIndex)
  535.                 
  536.                 iniMp.File = sPath & cActions(actionIndex) & ".ini"
  537.                 iniLvl.File = iniMp.File
  538.         
  539.                 With frmLib.File1
  540.                     .Path = sPath & cActions(actionIndex)
  541.                     .Pattern = "*.def"
  542.                 End With
  543.                 
  544.                 For I = 0 To frmLib.File1.ListCount - 1
  545.                     sRes = StrFront(frmLib.File1.List(I), ".")
  546.  
  547.                     If BattleChar.Level >= iniLvl.Read(, sRes) Then
  548.                         If ColExists(CActionNode, iniMp.Key & "_" & sRes) = False Then
  549.                             CActionNode.Add sRes & ":" & iniMp.Read(, sRes), iniMp.Key & "_" & sRes
  550.                             
  551.                             If bCompare = True Then
  552.                                 NotifyAction BattleChar.Name & " has learnt Spell '" & sRes & "'"
  553.                             End If
  554.                         End If
  555.                     End If
  556.                 Next
  557.                 
  558.                 BattleChar.ActionNode(actionIndex) = CActionNode
  559.                 
  560.                 actionIndex = actionIndex + 1
  561.             Wend
  562.         End If
  563.     End If
  564.     
  565.     Exit Sub
  566.     
  567. Catch_E:
  568.     'MsgBox ":("
  569.     
  570.     'MsgBox pBattleHu(Index).Actions.Count
  571.  
  572. End Sub
  573.  
  574. Sub InitialiseItems()
  575. 'Lists all available items in item menu
  576.  
  577. Dim cTypes As SuperCollection
  578.  
  579.     MnuItems.ClearList
  580.  
  581.     Set cTypes = Inventory.Types
  582.     
  583.     Dim sItem As String, I As Integer
  584.     
  585.     For I = 1 To cTypes.Count
  586.         If Inventory.TypeCount(cTypes.Key(I)) > 0 Then
  587.             sItem = CStr(cTypes.Key(I))
  588.             
  589.             MnuItems.AddItem sItem & " x " & Inventory.TypeCount(sItem), sItem
  590.         End If
  591.     Next
  592.  
  593. End Sub
  594.  
  595. Sub InitialiseSteals(BattleChar As clsBattlePlayer)
  596. 'all available steals
  597.  
  598. Dim cSteals As New Collection, cIni As New clsIniObj, _
  599.     iSlotIndex As Integer
  600.  
  601.     cIni.File = BattleChar.Path & "inventory.ini"
  602.  
  603.     For iSlotIndex = 1 To 16
  604.         cIni.Section = "Slot " & CStr(iSlotIndex)
  605.         
  606.         If cIni.Read("Name") <> "" Then
  607.             cSteals.Add cIni.Read("Type") & ":" & cIni.Read("Name") & ":" & Replace(cIni.Read("Steal Chance"), "%", "") & ":" & Replace(cIni.Read("Drop Chance"), "%", "")
  608.         End If
  609.     Next
  610.     
  611.     BattleChar.Steals = cSteals
  612.  
  613. End Sub
  614.  
  615. Sub InitialiseKeys()
  616.  
  617.     'Notified on these key changes
  618.     keys.AddKey Control_Cancel
  619.     keys.AddKey Control_Select
  620.     
  621.     keys.AddKey Control_Down
  622.     keys.AddKey Control_Up
  623.     keys.AddKey Control_Right
  624.     keys.AddKey Control_Left
  625.  
  626. End Sub
  627.  
  628. Private Function RunScript(sStatement As String)
  629.  
  630.     On Error Resume Next
  631.  
  632.     Script.ExecuteStatement sStatement
  633.     If Err Then
  634.         With Script.Error
  635.             MsgBox "Syntax Error : " & .Number & ": " & .Description & " at line " & .Line & " column " & .Column & ": " & vbCrLf, vbCritical, "Script Error"
  636.         End With
  637.     End If
  638.  
  639. End Function
  640.  
  641. Private Function SetScript(ByRef pTarget As clsBattlePlayer, ByRef pOfender As clsBattlePlayer, Optional bSpell As Boolean = False)
  642.         
  643.     Set LastTarget = pTarget
  644.     Set LastOffender = pOfender
  645.     
  646.     'Setup variables in script
  647.     If pOfender.Enemy = False Then
  648.         Script.ExecuteStatement "Set Offender = HumanBattle_" & pOfender.Index
  649.         Script.ExecuteStatement "Set OffensiveParty = HumanParty"
  650.         
  651.         SFX.ExecuteStatement "Set OffensiveParty = HumanParty"
  652.         SFX.ExecuteStatement "Set Offender = HumanBattle_" & pOfender.Index
  653.     Else
  654.         Script.ExecuteStatement "Set Offender = AIBattle_" & pOfender.Index
  655.         Script.ExecuteStatement "Set OffensiveParty = AiParty"
  656.         
  657.         SFX.ExecuteStatement "Set OffensiveParty = AiParty"
  658.         SFX.ExecuteStatement "Set Offender = AIBattle_" & pOfender.Index
  659.     End If
  660.     
  661.     If pTarget.Enemy = False Then
  662.         Script.ExecuteStatement "Set Target = HumanBattle_" & pTarget.Index
  663.         Script.ExecuteStatement "Set TargetParty = HumanParty"
  664.         
  665.         SFX.ExecuteStatement "Set TargetParty = HumanParty"
  666.         SFX.ExecuteStatement "Set Target = HumanBattle_" & pTarget.Index
  667.     Else
  668.         Script.ExecuteStatement "Set Target = AIBattle_" & pTarget.Index
  669.         Script.ExecuteStatement "Set TargetParty = AiParty"
  670.         
  671.         SFX.ExecuteStatement "Set TargetParty = AiParty"
  672.         SFX.ExecuteStatement "Set Target = AIBattle_" & pTarget.Index
  673.     End If
  674.  
  675. End Function
  676.  
  677. Private Function SetScriptDef(pOfender As clsBattlePlayer)
  678.  
  679. Dim iAttackIndex As Integer
  680.  
  681.     'Get Next Avail
  682.     iAttackIndex = RandomNumber(Char.UBound, 0)
  683.     While pBattleHu(iAttackIndex).Alive = False
  684.         iAttackIndex = RandomNumber(Char.UBound, 0)
  685.     Wend
  686.  
  687.     ScriptDef.Index = pOfender.Index
  688.     
  689.     'Setup variables in script
  690.     If pOfender.Enemy = False Then
  691.         Script.ExecuteStatement "Set Offender = HumanBattle_" & pOfender.Index
  692.         Script.ExecuteStatement "Set OffensiveParty = HumanParty"
  693.     Else
  694.         Script.ExecuteStatement "Set Offender = AIBattle_" & pOfender.Index
  695.         Script.ExecuteStatement "Set OffensiveParty = AiParty"
  696.     End If
  697.     
  698.     Script.ExecuteStatement "Set Self = AIBattle_" & pOfender.Index
  699.     Script.ExecuteStatement "Set RandomPlayer = HumanBattle_" & iAttackIndex
  700.     
  701. End Function
  702.  
  703. Private Function DoQuedActions() As Boolean
  704.  
  705. Dim bTargetIsAI As Boolean, bOfenderIsAI As Boolean, pTarget As clsBattlePlayer, pOfender As clsBattlePlayer, _
  706. sP() As String
  707.  
  708.     If cBattleActions.Count = 0 Then
  709.         'Allow normal gameplay to continue
  710.         
  711.         SelectNextReadyChar
  712.         bAnimationBusy = False
  713.     
  714.         Exit Function
  715.     End If
  716.     
  717.     'Determine the qued actions
  718.     sP = Split(cBattleActions(1), ":")
  719.     cBattleActions.Remove 1
  720.         
  721.     If Mid(sP(2), 1, 1) = "H" Then
  722.         bTargetIsAI = False
  723.             
  724.         Set pTarget = pBattleHu(sP(0))
  725.     Else
  726.         bTargetIsAI = True
  727.             
  728.         Set pTarget = pBattleAI(sP(0))
  729.     End If
  730.             
  731.     If Mid(sP(2), 2, 1) = "A" Then
  732.         bOfenderIsAI = True
  733.             
  734.         Set pOfender = pBattleAI(sP(1))
  735.     Else
  736.         bOfenderIsAI = False
  737.             
  738.         Set pOfender = pBattleHu(sP(1))
  739.         iPartyIndex = CInt(sP(1))
  740.     End If
  741.         
  742.     If pOfender.Alive = False Then
  743.         'Ofender cant attack if they are dead
  744.         DoQuedActions
  745.         Exit Function
  746.     End If
  747.  
  748.     'Execute the determined actions
  749.     Select Case sP(3)
  750.         
  751.     Case Act_Attack
  752.         'Attack
  753.         AttackTarget pTarget, pOfender
  754.         
  755.     Case Act_s() As B