
-----------------------------------
Archi
Mon Jun 23, 2003 9:33 pm

Battle Procedure (Very Long)
-----------------------------------
Here is the code that i'm using for my battle sequence. I'm curious if anyone of you can make it shorter but still do the same thing.

%Enemy Variables
var elvl : int := 0
var emdp : int
var etdmb : int
var enhp : int
var enhpl : int
var edef : int
var edeb : int
var enag : int
var edmb : int
var edmp : int
var ermdm : int
var estr : int
var eagi : int
var edm : int
% Our Variables
var lvl : int := 1
var hpl : int
var hp : int := 150
var rmdm : int
var str : int := 2
var defe : int := 2
var deb : int := 2
var agi : int := 2
var abi : int := 2
var rmab : int
var magi : int
var mp : int := 35
var mpl : int
%Experience
var xp : int := 0
var xpg : int
var tdmd : int := 0
var tdmr : int := 0
var dea : int
var kil : int
var xpn : array 2 .. 100 of real

for i : 2 .. 100
    xpn (i) := 10 * (2 * i + 2) ** 3
end for
%Misc
var choice : string
var run : int
var nme : int
%Attacks/Abilities
var tdmp : int := 0
var att : array 1 .. 2 of string
var atb : array 1 .. 2 of int
var admb : array 1 .. 3 of int
var tdmb : int := 0
var dmb : int := 4
var dmdp : int
var drmul : int
var abt : array 1 .. 3 of string %Ability Name
var abb : array 1 .. 3 of int %Ability Bonus
var abd : array 1 .. 3 of int %Ability Drain
var ablv : array 1 .. 3 of int %Ability lvl
mpl := mp
%Attacks
att (1) := "Jab(j)"
att (2) := "DoubleSlash(ds)"
atb (1) := 2
atb (2) := 4
%Abilities
abt (1) := "Deflect(de)(-2)"
abd (1) := 2
ablv (1) := 2
abt (2) := "Fury(f)(-4)"
abb (2) := 10
abd (2) := 4
ablv (1) := 10
abt (3) := "Drain(dr)(-7)"
abb (3) := 0
abd (3) := 7
ablv (2) := 18

hpl := 100
randomize

procedure lvlup
    for i : 2 .. 100
        if lvl = i - 1 and xp >= xpn (i) then
            elvl := lvl - 1
            lvl := lvl + 1
            str := str + 3
            defe := defe + 3
            hp := hp + (lvl * 20)
            mp := mp + (lvl * 5)
            agi := agi + 3
            hpl := hp
            put " "
            put "You Have Leveled up to lvl, ", lvl
            put "New Stats Are:"
            put " "
            put "HP: ", hp
            put "MP: ", mp
            put "Strength: ", str
            put "Defense: ", defe
            put "Agility: ", agi
            put "You now need: ", xpn (i + 2) - xp, " exp for lvl, ", i + 1
            delay (21000)
            cls
            exit
        elsif lvl = i - 1 and xp < xpn (i) then
            put "Current Exp is: ", xp, "/", xpn (i + 1)
            put "You need, ", xpn (i + 1) - xp, " Exp for your lvl, ", i
            delay (10000)
            cls
            exit
        end if
    end for
end lvlup

procedure battle
    hpl := hp
    randint (nme, 1, 4)
    randint (enhp, 20 + lvl, 30 + lvl)
    enhp := enhp + 70 * nme
    enhpl := enhp
    randint (estr, 1 + lvl, 3 + lvl)
    randint (edef, 1 + lvl, 3 + lvl)
    randint (edeb, 1 + lvl, 4 + lvl)
    randint (edmb, 5 + lvl, 9 + lvl)
    randint (eagi, 1 + lvl, 4 + lvl)
    randint (enag, 1 + lvl, eagi + lvl)
    randint (rmdm, str - 2, str + 2)
    randint (magi, 1, agi)
    if nme = 2 then
        estr := estr + 2
        edef := edef + 2
        edeb := edeb + 2
        eagi := eagi + 2
        enag := enag + 2
    elsif nme = 3 then
        estr := estr + 3
        edef := edef + 3
        edeb := edeb + 3
        eagi := eagi + 3
        enag := enag + 3
    elsif nme = 4 then
        estr := estr + 4
        edef := edef + 4
        edeb := edeb + 4
        eagi := eagi + 4
        enag := enag + 4
    end if
    put " "
    put "You've walked upon an area where there are, ", nme, " enemies. Do you wish to fight, or run?"
    get choice
    if choice = "run" then
        randint (run, 1, 2)
        if run = 1 then
            put "You failed to run. They attacked you before you were ready."
            hpl := hpl - (25 + nme)
            put "They damaged you for, ", 25 + nme
        else
            put "You got away successfully"
        end if
    elsif choice = "fight" then
        loop
            tdmp := 0
            edm := 0
            randint (rmdm, str - 2, str + 3)
            dmdp := (rmdm + tdmb) * tdmb - (edef + edeb) div enag
            randint (ermdm, estr - 2, estr)
            emdp := ((ermdm + edmb) * edmb - ((defe + deb) * defe)) div (magi + lvl + agi)
            randint (rmab, abi - 1, abi + 2)
            admb (2) := (abb (2) + rmab) * abi - (edef + edeb)
            admb (3) := (abb (3) + rmab) * abi - (edef + edeb)
            put " "
            put "Attack(att), Defend(def), Ability(abi)"
            put " "
            get choice
            if choice = "att" then
                put "Choose your attack?"
                put " "
                put att (1)
                put att (2)
                put " "
                get choice
                if choice = "j" then
                    tdmb := dmb + atb (1)
                    if dmdp  0 then
                put "Choose your ability"
                put " "
                put abt (1)
                put abt (2)
                put abt (3)
                put " "
                get choice
                if choice = "de" and mpl > 2 then
                    put "You deflected your enemies attack but dealt no damage."
                    mpl := mpl - abd (1)
                    tdmp := tdmp + 0
                    put " "
                    put edm
                    put "Enemies hp is currently: ", enhpl, "/", enhp
                    put "Our hp is currently: ", hpl, "/", hp
                    put "MP left: ", mpl, "/", mp
                elsif choice = "de" and mpl  4 then
                    if admb (2)  7 then
                    randint (drmul, 0, 3)
                    if drmul = 0 then
                        put "You've failed to drain any hp from your enemies."
                        mpl := mpl - abd (3)
                        tdmp := tdmp + 0
                        put " "
                        put "Enemies hp is currently: ", enhpl, "/", enhp
                        put "Our hp is currently: ", hpl, "/", hp
                        put "MP left: ", mpl, "/", mp
                    elsif drmul = 1 then
                        if admb (3)  hp then
                            hpl := hp
                        end if
                        put " "
                        put "Enemies hp is currently: ", enhpl, "/", enhp
                        put "Our hp is currently: ", hpl, "/", hp
                        put "MP left: ", mpl, "/", mp
                    elsif drmul = 2 then
                        if admb (3)  hp then
                            hpl := hp
                        end if
                        put " "
                        put "Enemies hp is currently: ", enhpl, "/", enhp
                        put "Our hp is currently: ", hpl, "/", hp
                        put "MP left: ", mpl, "/", mp
                    elsif drmul = 3 then
                        if admb (3)  hp then
                            hpl := hp
                        end if
                        put " "
                        put "Enemies hp is currently: ", enhpl, "/", enhp
                        put "Our hp is currently: ", hpl, "/", hp
                        put "MP left: ", mpl, "/", mp
                    end if
                elsif choice = "dr" and mpl = 1 and tdmp = 1 and tdmp = 25 and tdmp = 25 and tdmp  50 and edm = 0 then
                emdp := emdp + nme + 4
                if emdp 