• Check out the results of the Techtree Contest #19!
  • Listen to a special audio message from Bill Roper to the Hive Workshop community (Bill is a former Vice President of Blizzard Entertainment, Producer, Designer, Musician, Voice Actor) 🔗Click here to hear his message!
  • Read Evilhog's interview with Gregory Alper, the original composer of the music for WarCraft: Orcs & Humans 🔗Click here to read the full interview.
  • Create a void inspired texture for Warcraft 3 and enter Hive's 34th Texturing Contest: Void! Click here to enter!
  • The Hive's 22nd Icon Contest: Creep Abilities is now concluded, time to vote for your favourite set of icons! Click here to vote!

[General] What about local integer/real array speed?

Status
Not open for further replies.
Level 17
Joined
Nov 13, 2006
Messages
1,814
if i want make a random stat bonus maker function, what give random stat to droped items, if i use 3 array that slow down the function?

who cant image it, i show:


JASS:
function AddRandomBonus takes integer id, integer grade, integer itype, integer amount returns nothing
    local integer i = 1
    local integer rnd
    local integer array index //real index
    local integer array bonus //bonus attached to index
    local integer maxindex //max index for loop
    local real array c //chance array, assigned to indexs
    local real rc // random chance (0,99)
    

    if itype == 1 or itype ==2 or itype == 4 or itype == 5 then
        set index[0] = 22 // experience bonus after a kill
        set index[1] = 23 // drop rate for rare item
        set index[2] = 24 // gold rate
        set index[3] = 27 // hp reg
        set index[4] = 31 // mp reg
        set index[5] = 73 // accurancy bonus
        set index[6] = 74 // evasion bonus
        set index[7] = 8 // level req decrease
        set index[8] = 44 // bonus str
        set index[9] = 45 // bonus agi
        set index[10] = 46 // bonus int
        set index[11] = 40 // bonus movment speed
        set index[12] = 47 // bonus attack speed
        set index[13] = 48 // reflect damage
        set index[14] = 51 // defence level
        set index[15] = 75 // pdef
        set index[16] = 76 // fire def
        set index[17] = 77 // water def
        set index[18] = 78 // lightning def
        set index[19] = 79 // poison def
        set index[20] = 80 // earth def
        set index[21] = 64 // hp
        set index[22] = 65 // mp
        set index[23] = 68 // bonus socket
        set index[24] = 67 // bonus duratibility
        set index[25] = 62 // pattack
        set index[26] = 63 // mattack
        set index[27] = 28 // hp steal
        set index[28] = 29 // hp per kill
        set index[29] = 32 // mp steal
        set index[30] = 33 // mp per kill
        set index[31] = 81 // shop discount

        set c[0] = 10 // experience bonus after a kill
        set c[1] = 5 // drop rate for rare item
        set c[2] = 7 // gold rate
        set c[3] = 20 // hp reg
        set c[4] = 20 // mp reg
        set c[5] = 10 // accurancy bonus
        set c[6] = 10 // evasion bonus
        set c[7] = 7 // level req decrease
        set c[8] = 5 // bonus str
        set c[9] = 5 // bonus agi
        set c[10] = 5 // bonus int
        set c[11] = 5 // bonus movment speed
        set c[12] = 3 // bonus attack speed
        set c[13] = 3 // reflect damage
        set c[14] = 2 // defence level
        set c[15] = 15 // pdef
        set c[16] = 15 // fire def
        set c[17] = 15 // water def
        set c[18] = 15 // lightning def
        set c[19] = 15 // poison def
        set c[20] = 15 // earth def
        set c[21] = 13 // hp
        set c[22] = 13 // mp
        set c[23] = 3 // bonus socket
        set c[24] = 12 // bonus duratibility
        set c[25] = 2 // pattack
        set c[26] = 2 // mattack
        set c[27] = 2 // hp steal
        set c[28] = 6 // hp per kill
        set c[29] = 3 // mp steal
        set c[30] = 6 // mp per kill
        set c[31] = 2 // shop discount

        set bonus[0] = GetRandomInt(grade / 10 + 1, grade / 5 + 7) // experience bonus after a kill
        set bonus[1] = GetRandomInt(grade / 20 + 1, grade / 10 + 5) // drop rate for rare item
        set bonus[2] = GetRandomInt(grade / 10 + 1, grade / 5 + 12) // gold rate
        set bonus[3] = GetRandomInt(grade / 15 + 1, grade / 8 + 1) // hp reg
        set bonus[4] = GetRandomInt(grade / 15 + 1, grade / 8 + 1) // mp reg
        set bonus[5] = GetRandomInt(grade / 2 + 1, grade * 3) // accurancy bonus
        set bonus[6] = GetRandomInt(grade / 3 + 1, grade * 2) // evasion bonus
        set bonus[7] = GetRandomInt(1, 2) * - 1 // level req decrease
        set bonus[8] = GetRandomInt(grade / 20 + 1, grade / 10 + 1) // bonus str
        set bonus[9] = GetRandomInt(grade / 20 + 1, grade / 10 + 1) // bonus agi
        set bonus[10] = GetRandomInt(grade / 20 + 1, grade / 10 + 1) // bonus int
        set bonus[11] = GetRandomInt(grade / 10 + 1, grade / 2 + 15) // bonus movment speed
        set bonus[12] = GetRandomInt(grade / 10 + 1, grade / 2 + 10) // bonus attack speed
        set bonus[13] = GetRandomInt(grade / 50 + 1, grade / 20 + 2) // reflect damage
        set bonus[14] = GetRandomInt(grade / 50 + 1, grade / 20 + 3) // defence level
        set bonus[15] = GetRandomInt(grade + 1, grade * 3 + 3) // pdef
        set bonus[16] = GetRandomInt(grade + 1, grade * 3 + 3) // fire def
        set bonus[17] = GetRandomInt(grade + 1, grade * 3 + 3) // water def
        set bonus[18] = GetRandomInt(grade + 1, grade * 3 + 3) // lightning def
        set bonus[19] = GetRandomInt(grade + 1, grade * 3 + 3) // poison def
        set bonus[20] = GetRandomInt(grade + 1, grade * 3 + 3) // earth def
        set bonus[21] = GetRandomInt(grade + 5, grade * 2 + 10) // hp
        set bonus[22] = GetRandomInt(grade + 5, grade * 2 + 10) // mp
        if itype != 5 then
            set bonus[23] = GetRandomInt(1, grade / 50 + 1) // inc socket
        else
            set bonus[23] = 0 // inc socket
        endif
        set bonus[24] = GetRandomInt(grade / 2 + 10, grade * 2 + 15) // inc duratibility
        set bonus[25] = GetRandomInt(grade + 3, grade * 2 + 5) // pattack
        set bonus[26] = GetRandomInt(grade + 3, grade * 2 + 5) // mattack
        set bonus[27] = GetRandomInt(grade / 20 + 1, grade / 10 + 2) // hp steal
        set bonus[28] = GetRandomInt(grade / 2 + 1, grade * 2 + 5) // hp per kill
        set bonus[29] = GetRandomInt(grade / 20 + 1, grade / 10 + 2) // mp steal
        set bonus[30] = GetRandomInt(grade / 2 + 1, grade * 2 + 5) // mp per kill
        set bonus[31] = GetRandomInt(1, 3) // //shop discount

        set maxindex = 31
    elseif itype == 3 then
        set index[0] = 22 // experience bonus after a kill
        set index[1] = 23 // drop rate for rare item
        set index[2] = 24 // gold rate
        set index[3] = 28 // hp steal
        set index[4] = 29 // hp per kill
        set index[5] = 32 // mp steal
        set index[6] = 33 // mp per kill
        set index[7] = 73 // accurancy bonus
        set index[8] = 8 // level req decrease
        set index[9] = 44 // bonus str
        set index[10] = 45 // bonus agi
        set index[11] = 46 // bonus int
        set index[12] = 47 // bonus attack speed
        set index[13] = 49 // chance for armor penetration
        set index[14] = 69 // attack level
        set index[15] = 66 // critical chance
        set index[16] = 55 // critical damage
        set index[17] = 56 // pet power
        set index[18] = 57 // bonus fire damage
        set index[19] = 58 // bonus water damage
        set index[20] = 59 // bonus lightning damage
        set index[21] = 60 // bonus poison damage
        set index[22] = 61 // bonus earth damage
        set index[23] = 75 // pdef
        set index[24] = 76 // fire def
        set index[25] = 77 // water def
        set index[26] = 78 // lightning def
        set index[27] = 79 // poison def
        set index[28] = 80 // earth def
        set index[29] = 64 // hp
        set index[30] = 65 // mp
        set index[31] = 68 // bonus socket
        set index[32] = 67 // bonus duratibility
        set index[33] = 62 // pattack
        set index[34] = 63 // mattack
        set index[35] = 70 // defence level
        set index[36] = 81 // shop discount
        set index[37] = 27 // hp reg
        set index[38] = 31 // mp reg

        set c[0] = 4 // experience bonus after a kill
        set c[1] = 9 // drop rate for rare item
        set c[2] = 9 // gold rate
        set c[3] = 11 // hp steal
        set c[4] = 7 // hp per kill
        set c[5] = 11 // mp steal
        set c[6] = 7 // mp per kill
        set c[7] = 10 // accurancy bonus
        set c[8] = 9 // level req decrease
        set c[9] = 5 // bonus str
        set c[10] = 5 // bonus agi
        set c[11] = 5 // bonus int
        set c[12] = 10 // bonus attack speed
        set c[13] = 2 // chance for armor penetration
        set c[14] = 9 // attack level
        set c[15] = 12 // critical chance
        set c[16] = 5 // critical damage
        set c[17] = 1 // pet power
        set c[18] = 3 // bonus fire damage
        set c[19] = 3 // bonus water damage
        set c[20] = 3 // bonus lightning damage
        set c[21] = 3 // bonus poison damage
        set c[22] = 3 // bonus earth damage
        set c[23] = 4 // pdef
        set c[24] = 4 // fire def
        set c[25] = 4 // water def
        set c[26] = 4 // lightning def
        set c[27] = 4 // poison def
        set c[28] = 4 // earth def
        set c[29] = 5 // hp
        set c[30] = 5 // mp
        set c[31] = 2 // bonus socket
        set c[32] = 12 // bonus duratibility
        set c[33] = 17 // pattack
        set c[34] = 17 // mattack
        set c[35] = 5 // defence level
        set c[36] = 3 // shop discount
        set c[37] = 4 // hp reg
        set c[38] = 4 // mp reg

        set bonus[0] = GetRandomInt(grade / 10 + 1, grade / 5 + 7) // experience bonus after a kill
        set bonus[1] = GetRandomInt(grade / 20 + 1, grade / 10 + 5) // drop rate for rare item
        set bonus[2] = GetRandomInt(grade / 10 + 1, grade / 5 + 12) // gold rate
        set bonus[3] = GetRandomInt(grade / 20 + 1, grade / 10 + 2) // hp steal
        set bonus[4] = GetRandomInt(grade / 2 + 1, grade * 2 + 5) // hp per kill
        set bonus[5] = GetRandomInt(grade / 20 + 1, grade / 10 + 2) // mp steal
        set bonus[6] = GetRandomInt(grade / 2 + 1, grade * 2 + 5) // mp per kill
        set bonus[7] = GetRandomInt(grade + 1, grade * 5 + 5) // accurancy bonus
        set bonus[8] = GetRandomInt( - 1, - 3) // level req decrease
        set bonus[9] = GetRandomInt(grade / 30 + 1, grade / 10 + 2) // bonus str
        set bonus[10] = GetRandomInt(grade / 30 + 1, grade / 10 + 2) // bonus agi
        set bonus[11] = GetRandomInt(grade / 30 + 1, grade / 10 + 2) // bonus int
        set bonus[12] = GetRandomInt(grade / 20 + 1, grade) // bonus attack speed
        set bonus[13] = GetRandomInt(grade / 50 + 1, grade / 50 + 3) // chance for armor penetration
        set bonus[14] = GetRandomInt(grade / 50 + 1, grade / 20 + 3) // attack level
        set bonus[15] = GetRandomInt(1, grade / 20 + 1) // critical chance
        set bonus[16] = GetRandomInt(3, grade / 10 + 10) // critical damage
        set bonus[17] = GetRandomInt(3, grade / 10 + 10) // pet power
        set bonus[18] = GetRandomInt(grade, grade * 3) // bonus fire damage
        set bonus[19] = GetRandomInt(grade, grade * 3) // bonus water damage
        set bonus[20] = GetRandomInt(grade, grade * 3) // bonus lightning damage
        set bonus[21] = GetRandomInt(grade, grade * 3) // bonus poison damage
        set bonus[22] = GetRandomInt(grade, grade * 3) // bonus earth damage
        set bonus[23] = GetRandomInt(grade + 1, grade * 3 + 3) // pdef
        set bonus[24] = GetRandomInt(grade + 1, grade * 3 + 3) // fire def
        set bonus[25] = GetRandomInt(grade + 1, grade * 3 + 3) // water def
        set bonus[26] = GetRandomInt(grade + 1, grade * 3 + 3) // lightning def
        set bonus[27] = GetRandomInt(grade + 1, grade * 3 + 3) // poison def
        set bonus[28] = GetRandomInt(grade + 1, grade * 3 + 3) // earth def
        set bonus[29] = GetRandomInt(grade + 5, grade * 2 + 10) // hp
        set bonus[30] = GetRandomInt(grade + 5, grade * 2 + 10) // mp
        set bonus[31] = GetRandomInt(1, grade / 50 + 1) // inc socket
        set bonus[32] = GetRandomInt(grade / 2 + 10, grade * 2 + 15) // inc duratibility
        set bonus[33] = GetRandomInt(grade + 3, grade * 2 + 5) // pattack
        set bonus[34] = GetRandomInt(grade + 3, grade * 2 + 5) // mattack
        set bonus[35] = GetRandomInt(grade / 50 + 1, grade / 20 + 3) // defence level
        set bonus[36] = GetRandomInt(2, 5) // //shop discount
        set bonus[37] = GetRandomInt(grade / 15 + 1, grade / 8 + 1) // hp reg
        set bonus[38] = GetRandomInt(grade / 15 + 1, grade / 8 + 1) // mp reg

        set maxindex = 38
    elseif itype == 9 then
        set index[0] = 22 // experience bonus after a kill
        set index[1] = 23 // drop rate for rare item
        set index[2] = 24 // gold rate
        set index[3] = 27 // hp reg
        set index[4] = 28 // hp steal
        set index[5] = 29 // hp per kill
        set index[6] = 31 // mp reg
        set index[7] = 32 // mp steal
        set index[8] = 33 // mp per kill
        set index[9] = 44 // bonus str
        set index[10] = 45 // bonus agi
        set index[11] = 46 // bonus int
        set index[12] = 48 // reflect damage
        set index[13] = 49 // chance for armor penetration
        set index[14] = 75 // pdef
        set index[15] = 76 // fire def
        set index[16] = 77 // water def
        set index[17] = 78 // lightning def
        set index[18] = 79 // poison def
        set index[19] = 80 // earth def
        set index[20] = 64 // hp
        set index[21] = 65 // mp
        set index[22] = 68 // bonus socket
        set index[23] = 67 // bonus duratibility
        set index[24] = 62 // pattack
        set index[25] = 63 // mattack
        set index[26] = 69 // attack level
        set index[27] = 70 // defence level
        set index[28] = 66 // critical chance
        set index[29] = 55 // critical damage
        set index[30] = 81 // shop discount
        set index[31] = 74 // evasion

        set c[0] = 10 // experience bonus after a kill
        set c[1] = 10 // drop rate for rare item
        set c[2] = 10 // gold rate
        set c[3] = 7 // hp reg
        set c[4] = 10 // hp steal
        set c[5] = 7 // hp per kill
        set c[6] = 7 // mp reg
        set c[7] = 8 // mp steal
        set c[8] = 7 // mp per kill
        set c[9] = 3 // bonus str
        set c[10] = 3 // bonus agi
        set c[11] = 3 // bonus int
        set c[12] = 3 // reflect damage
        set c[13] = 2 // chance for armor penetration
        set c[14] = 2 // pdef
        set c[15] = 2 // fire def
        set c[16] = 2 // water def
        set c[17] = 2 // lightning def
        set c[18] = 2 // poison def
        set c[19] = 2 // earth def
        set c[20] = 11 // hp
        set c[21] = 11 // mp
        set c[22] = 7 // bonus socket
        set c[23] = 4 // bonus duratibility
        set c[24] = 3 // pattack
        set c[25] = 3 // mattack
        set c[26] = 10 // attack level
        set c[27] = 10 // defence level
        set c[28] = 6 // critical chance
        set c[29] = 5 // critical damage
        set c[30] = 7 // shop discount
        set c[31] = 1 // evasion

        set bonus[0] = GetRandomInt(grade / 10 + 1, grade / 5 + 7) // experience bonus after a kill
        set bonus[1] = GetRandomInt(grade / 20 + 1, grade / 10 + 5) // drop rate for rare item
        set bonus[2] = GetRandomInt(grade / 10 + 1, grade / 5 + 12) // gold rate
        set bonus[3] = GetRandomInt(grade / 15 + 1, grade / 8 + 5) // hp reg
        set bonus[4] = GetRandomInt(grade / 20 + 1, grade / 10 + 2) // hp steal
        set bonus[5] = GetRandomInt(grade / 2 + 1, grade * 2 + 1) // hp per kill
        set bonus[6] = GetRandomInt(grade / 15 + 1, grade / 8 + 1) // mp reg
        set bonus[7] = GetRandomInt(grade / 20 + 1, grade / 10 + 2) // mp steal
        set bonus[8] = GetRandomInt(grade / 2 + 1, grade * 2 + 5) // mp per kill
        set bonus[9] = GetRandomInt(grade / 20 + 1, grade / 10 + 1) // bonus str
        set bonus[10] = GetRandomInt(grade / 20 + 1, grade / 10 + 1) // bonus agi
        set bonus[11] = GetRandomInt(grade / 20 + 1, grade / 10 + 1) // bonus int
        set bonus[12] = GetRandomInt(grade / 20 + 1, grade / 10 + 2) // reflect damage
        set bonus[13] = GetRandomInt(grade / 50 + 1, grade / 50 + 3) // chance for armor penetration
        set bonus[14] = GetRandomInt(grade + 1, grade * 3 + 3) // pdef
        set bonus[15] = GetRandomInt(grade + 1, grade * 3 + 3) // fire def
        set bonus[16] = GetRandomInt(grade + 1, grade * 3 + 3) // water def
        set bonus[17] = GetRandomInt(grade + 1, grade * 3 + 3) // lightning def
        set bonus[18] = GetRandomInt(grade + 1, grade * 3 + 3) // poison def
        set bonus[19] = GetRandomInt(grade + 1, grade * 3 + 3) // earth def
        set bonus[20] = GetRandomInt(grade + 5, grade * 2 + 10) // hp
        set bonus[21] = GetRandomInt(grade + 5, grade * 2 + 10) // mp
        set bonus[22] = GetRandomInt(1, grade / 50 + 1) // inc socket
        set bonus[23] = GetRandomInt(grade / 2 + 10, grade * 2 + 15) // inc duratibility
        set bonus[24] = GetRandomInt(grade + 3, grade * 2 + 5) // pattack
        set bonus[25] = GetRandomInt(grade + 3, grade * 2 + 5) // mattack
        set bonus[26] = GetRandomInt(grade / 50 + 1, grade / 20 + 3) // attack level
        set bonus[27] = GetRandomInt(grade / 50 + 1, grade / 20 + 3) // defence level
        set bonus[28] = GetRandomInt(1, grade / 20 + 1) // critical chance
        set bonus[29] = GetRandomInt(3, grade / 10 + 10) // critical damage
        set bonus[30] = GetRandomInt(3, 7) // //shop discount
        set bonus[31] = GetRandomInt(grade + 1, grade * 2 + 10) // evasion

        set maxindex = 31
    elseif itype == 6 or itype == 8 then
        set index[1] = 69 // attack level
        set index[2] = 66 // critical chance
        set index[3] = 55 // critical damage
        set index[4] = 48 // reflect damage
        set index[5] = 70 // defence level
        set index[6] = 22 // experience bonus after a kill
        set index[7] = 23 // drop rate for rare item
        set index[8] = 24 // gold rate
        set index[9] = 44 // bonus str
        set index[10] = 45 // bonus agi
        set index[11] = 46 // bonus int
        set index[12] = 27 // hp reg
        set index[13] = 28 // hp steal
        set index[14] = 29 // hp per kill
        set index[15] = 31 // mp reg
        set index[16] = 32 // mp steal
        set index[17] = 33 // mp per kill
        set index[18] = 67 // bonus duratibility
        set index[19] = 62 // pattack
        set index[20] = 63 // mattack
        set index[21] = 75 // pdef
        set index[22] = 76 // fire def
        set index[23] = 77 // water def
        set index[24] = 78 // lightning def
        set index[25] = 79 // poison def
        set index[26] = 80 // earth def
        set index[27] = 64 // hp
        set index[28] = 65 // mp
        set index[29] = 81 // shop discount
        set index[30] = 73 // accurancy bonus
        set index[31] = 74 // evasion bonus

        set c[1] = 9 // attack level
        set c[2] = 12 // critical chance
        set c[3] = 10 // critical damage
        set c[4] = 5 // reflect damage
        set c[5] = 5 // defence level
        set c[6] = 6 // experience bonus after a kill
        set c[7] = 4 // drop rate for rare item
        set c[8] = 5 // gold rate
        set c[9] = 3 // bonus str
        set c[10] = 3 // bonus agi
        set c[11] = 3 // bonus int
        set c[12] = 8 // hp reg
        set c[13] = 8 // hp steal
        set c[14] = 8 // hp per kill
        set c[15] = 8 // mp reg
        set c[16] = 8 // mp steal
        set c[17] = 8 // mp per kill
        set c[18] = 11 // bonus duratibility
        set c[19] = 13 // pattack
        set c[20] = 13 // mattack
        set c[21] = 4 // pdef
        set c[22] = 4 // fire def
        set c[23] = 4 // water def
        set c[24] = 4 // lightning def
        set c[25] = 4 // poison def
        set c[26] = 4 // earth def
        set c[27] = 7 // hp
        set c[28] = 7 // mp
        set c[29] = 3 // shop discount
        set c[30] = 6 // accurancy bonus
        set c[31] = 6 // evasion bonus

        set bonus[1] = GetRandomInt(grade / 50 + 1, grade / 20 + 3) // attack level
        set bonus[2] = GetRandomInt(1, grade / 20 + 1) // critical chance
        set bonus[3] = GetRandomInt(3, grade / 10 + 10) // critical damage
        set bonus[4] = GetRandomInt(grade / 20 + 1, grade / 10 + 2) // reflect damage
        set bonus[5] = GetRandomInt(grade / 50 + 1, grade / 20 + 3) // defence level
        set bonus[6] = GetRandomInt(grade / 10 + 1, grade / 5 + 7) // experience bonus after a kill
        set bonus[7] = GetRandomInt(grade / 20 + 1, grade / 10 + 5) // drop rate for rare item
        set bonus[8] = GetRandomInt(grade / 10 + 1, grade / 5 + 12) // gold rate
        set bonus[9] = GetRandomInt(grade / 20 + 1, grade / 10 + 1) // bonus str
        set bonus[10] = GetRandomInt(grade / 20 + 1, grade / 10 + 1) // bonus agi
        set bonus[11] = GetRandomInt(grade / 20 + 1, grade / 10 + 1) // bonus int
        set bonus[12] = GetRandomInt(grade / 15 + 1, grade / 8 + 5) // hp reg
        set bonus[13] = GetRandomInt(grade / 20 + 1, grade / 10 + 2) // hp steal
        set bonus[14] = GetRandomInt(grade / 2 + 1, grade * 2 + 2) // hp per kill
        set bonus[15] = GetRandomInt(grade / 15 + 1, grade / 8 + 2) // mp reg
        set bonus[16] = GetRandomInt(grade / 20 + 1, grade / 10 + 2) // mp steal
        set bonus[17] = GetRandomInt(grade / 2 + 1, grade * 2 + 5) // mp per kill
        set bonus[18] = GetRandomInt(grade / 2 + 10, grade * 2 + 15) // inc duratibility
        set bonus[19] = GetRandomInt(grade + 3, grade * 2 + 5) // pattack
        set bonus[20] = GetRandomInt(grade + 3, grade * 2 + 5) // mattack
        set bonus[21] = GetRandomInt(grade + 1, grade * 3 + 3) // pdef
        set bonus[22] = GetRandomInt(grade + 1, grade * 3 + 3) // fire def
        set bonus[23] = GetRandomInt(grade + 1, grade * 3 + 3) // water def
        set bonus[24] = GetRandomInt(grade + 1, grade * 3 + 3) // lightning def
        set bonus[25] = GetRandomInt(grade + 1, grade * 3 + 3) // poison def
        set bonus[26] = GetRandomInt(grade + 1, grade * 3 + 3) // earth def
        set bonus[27] = GetRandomInt(grade + 5, grade * 2 + 10) // hp
        set bonus[28] = GetRandomInt(grade + 5, grade * 2 + 10) // mp
        set bonus[29] = GetRandomInt(2, 5) // //shop discount
        set bonus[30] = GetRandomInt(grade / 2 + 1, grade * 3) // accurancy bonus
        set bonus[31] = GetRandomInt(grade / 3 + 1, grade * 2) // evasion bonus

        set maxindex = 31
    elseif itype == 11 then
        set index[0] = 22 // experience bonus after a kill
        set index[1] = 23 // drop rate for rare item
        set index[2] = 24 // gold rate
        set index[3] = 29 // hp per kill
        set index[4] = 33 // mp per kill
        set index[5] = 44 // bonus str
        set index[6] = 45 // bonus agi
        set index[7] = 46 // bonus int
        set index[8] = 69 // attack level
        set index[9] = 70 // defence level
        set index[10] = 66 // critical chance
        set index[11] = 55 // critical damage
        set index[12] = 81 // shop discount
        set index[13] = 27 // hp reg
        set index[14] = 31 // mp reg
        set index[15] = 73 // accurancy bonus
        set index[16] = 74 // evasion bonus

        set c[0] = 15 // experience bonus after a kill
        set c[1] = 10 // drop rate for rare item
        set c[2] = 20 // gold rate
        set c[3] = 8 // hp per kill
        set c[4] = 8 // mp per kill
        set c[5] = 9 // bonus str
        set c[6] = 9 // bonus agi
        set c[7] = 9 // bonus int
        set c[8] = 4 // attack level
        set c[9] = 4 // defence level
        set c[10] = 3 // critical chance
        set c[11] = 2 // critical damage
        set c[12] = 7 // shop discount
        set c[13] = 5 // hp reg
        set c[14] = 5 // mp reg
        set c[15] = 3 // accurancy bonus
        set c[16] = 3 // evasion bonus

        set bonus[0] = GetRandomInt(grade / 30 + 1, grade / 15 + 2) // experience bonus after a kill
        set bonus[1] = GetRandomInt(grade / 50 + 1, grade / 30 + 2) // drop rate for rare item
        set bonus[2] = GetRandomInt(grade / 30 + 1, grade / 15 + 5) // gold rate
        set bonus[3] = GetRandomInt(grade / 10 + 1, grade/2 + 1) // hp per kill
        set bonus[4] = GetRandomInt(grade / 10 + 1, grade/2 + 5) // mp per kill
        set bonus[5] = GetRandomInt(grade / 50 + 1, grade / 25 + 1) // bonus str
        set bonus[6] = GetRandomInt(grade / 50 + 1, grade / 25 + 1) // bonus agi
        set bonus[7] = GetRandomInt(grade / 50 + 1, grade / 25 + 1) // bonus int
        set bonus[8] = GetRandomInt(grade / 50 + 1, grade / 20 + 2) // attack level
        set bonus[9] = GetRandomInt(grade / 50 + 1, grade / 20 + 2) // defence level
        set bonus[10] = GetRandomInt(1, grade / 50 + 1) // critical chance
        set bonus[11] = GetRandomInt(1, grade / 33 + 3) // critical damage
        set bonus[12] = GetRandomInt(1, grade / 30) // //shop discount
        set bonus[13] = GetRandomInt(grade / 25 + 1, grade / 15 + 2) // hp reg
        set bonus[14] = GetRandomInt(grade / 25 + 1, grade / 15 + 2) // mp reg
        set bonus[15] = GetRandomInt(grade / 2 + 1, grade +1) // accurancy bonus
        set bonus[16] = GetRandomInt(grade / 3 + 1, grade +1) // evasion bonus

        set maxindex = 16
    endif
    loop
        exitwhen i > amount

        set rnd = GetRandomInt(0, maxindex)
        set rc = GetRandomReal(0,99)
        loop
        exitwhen c[rnd] > rc
          set rnd = GetRandomInt(0, maxindex)
          set rc = GetRandomReal(0,99)
        endloop
        if index[rnd] == 8 then
            if (LoadInteger(udg_CItem_Table, id, 8) + bonus[rnd]) < 0 then
                set bonus[rnd] = 0
            else
                call SaveInteger(udg_CItem_Table, id, 72, bonus[rnd])
                call SaveInteger(udg_CItem_Table, id, 8, LoadInteger(udg_CItem_Table, id, 8) + bonus[rnd])
            endif
        elseif index[rnd] == 67 then
            call SaveInteger(udg_CItem_Table, id, 67, bonus[rnd])
            call SaveReal(udg_CItem_Table, id, 15, LoadReal(udg_CItem_Table, id, 15) + bonus[rnd])
            call SaveReal(udg_CItem_Table, id, 14, LoadReal(udg_CItem_Table, id, 14) + bonus[rnd])
        elseif index[rnd] == 68 then
            call SaveInteger(udg_CItem_Table, id, 68, bonus[rnd])
            set index[rnd] = 20
        endif
        
        if index[rnd] != 8 and index[rnd] != 67 then
            call SaveInteger(udg_CItem_Table, id, index[rnd], LoadInteger(udg_CItem_Table, id, index[rnd]) + bonus[rnd])
        endif
        set i = i + 1
    endloop

endfunction

usage

JASS:
call AddRandomBonus (GetHandleId(udg_Item), GetHeroLevel(udg_Hero), 3, 5)
//call AddRandomBonus (itemhandleid, level or grade, item type, random bonus amount)
 
You should really cache all of the lists on init than call them in the if-then-else rather than setting them in the if-then-
 
Status
Not open for further replies.
Back
Top