loadfile(GetDataPath() .. "Scripts/Locale.lua")() local weapons = { amGrenade, amClusterBomb, amBazooka, amBee, amShotgun, amMine, amDEagle, amDynamite, amFirePunch, amWhip, amPickHammer, amBaseballBat, amMortar, amCake, amSeduction, amWatermelon, amHellishBomb, amDrill, amBallgun, amRCPlane, amSniperRifle, amMolotov, amBirdy, amBlowTorch, amGasBomb, amFlamethrower, amSMine, amKamikaze } -- G,C,B,B,S,M,D,D,F,W,P,B,M,C,S,W,H,D,B,R,S,M,B,B,G,F,S,K local weapons_values = {1,1,1,2,1,1,1,2,1,1,1,2,1,3,1,3,3,2,3,3,1,1,2,1,1,2,2,1} local airweapons = { amAirAttack, amMineStrike, amNapalm, amDrillStrike } -- A,M,N,D local airweapons_values = {2,2,2,2} local utilities = { amTeleport, amGirder, amSwitch, amLowGravity, amResurrector, amRope, amParachute, amJetpack, amPortalGun, amSnowball } -- T,G,S,L,R,R,P,J,P,S local utilities_values = {1,2,2,1,2,2,1,2,2,2} function onGameInit() GameFlags = band(bor(GameFlags, gfResetWeps), bnot(gfPerHogAmmo)) Goals = loc("Each turn you get 1-3 random weapons|The stronger they are, the fewer you get") end function onGameStart() if MapHasBorder() == false then for i, w in pairs(airweapons) do table.insert(weapons, w) end for i, w in pairs(airweapons_values) do table.insert(weapons_values, w) end end --ShowMission(loc("Balanced Random Weapons"), loc("A game of luck"), loc("Each turn you'll get a weapon, and if it sucks you'll get some more!"), -amSkip, 0) end function onAmmoStoreInit() SetAmmo(amSkip, 9, 0, 0, 0) SetAmmo(amExtraDamage, 0, 1, 0, 1) SetAmmo(amInvulnerable, 0, 1, 0, 1) SetAmmo(amExtraTime, 0, 1, 0, 1) SetAmmo(amLaserSight, 0, 1, 0, 1) SetAmmo(amVampiric, 0, 1, 0, 1) for i, w in pairs(utilities) do SetAmmo(w, 0, 0, 0, 1) end for i, w in pairs(weapons) do SetAmmo(w, 0, 0, 0, 1) end for i, w in pairs(airweapons) do SetAmmo(w, 0, 0, 0, 1) end end function onNewTurn() local n = 3 --"points" to be allocated on weapons --pick random weapon and subtract cost local r = GetRandom(table.maxn(weapons_values)) + 1 AddAmmo(CurrentHedgehog, weapons[r]) local items_used = {} items_used[1] = weapons[r] n = n - weapons_values[r] --choose any weapons or utilities to use up remaining n while n > 0 do local items = {} local items_values = {} for i, w in pairs(weapons_values) do local used = false if w <= n then --check that this weapon hasn't been given already for j = 1, table.maxn(items_used) do if weapons[i] == items_used[j] then used = true end end if not used then table.insert(items_values, w) table.insert(items, weapons[i]) end end end for i, w in pairs(utilities_values) do local used = false if w <= n then --check that this weapon hasn't been given already for j = 1, table.maxn(items_used) do if utilities[i] == items_used[j] then used = true end end if not used then table.insert(items_values, w) table.insert(items, utilities[i]) end end end local r = GetRandom(table.maxn(items_values)) + 1 AddAmmo(CurrentHedgehog, items[r]) table.insert(items_used, items[r]) n = n - items_values[r] end end