7568
+ − 1
loadfile(GetDataPath() .. "Scripts/Locale.lua")()
+ − 2
loadfile(GetDataPath() .. "Scripts/Tracker.lua")()
+ − 3
+ − 4
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 }
+ − 5
+ − 6
-- 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
+ − 7
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}
+ − 8
+ − 9
local airweapons = { amAirAttack, amMineStrike, amNapalm, amDrillStrike }
+ − 10
+ − 11
-- A,M,N,D
+ − 12
local airweapons_values = {2,2,2,2}
+ − 13
+ − 14
local utilities = { amTeleport, amGirder, amSwitch, amLowGravity, amResurrector, amRope, amParachute, amJetpack, amPortalGun, amSnowball }
+ − 15
+ − 16
-- T,G,S,L,R,R,P,J,P,S
+ − 17
local utilities_values = {1,2,2,1,2,2,1,2,2,2}
+ − 18
+ − 19
function randomAmmo()
+ − 20
local n = 3 --"points" to be allocated on weapons
+ − 21
+ − 22
--pick random weapon and subtract cost
+ − 23
local r = GetRandom(table.maxn(weapons_values)) + 1
+ − 24
local picked_items = {}
+ − 25
table.insert(picked_items, weapons[r])
+ − 26
n = n - weapons_values[r]
+ − 27
+ − 28
+ − 29
--choose any weapons or utilities to use up remaining n
+ − 30
+ − 31
while n > 0 do
+ − 32
local items = {}
+ − 33
local items_values = {}
+ − 34
+ − 35
for i, w in pairs(weapons_values) do
+ − 36
local used = false
+ − 37
if w <= n then
+ − 38
--check that this weapon hasn't been given already
+ − 39
for j, k in pairs(picked_items) do
+ − 40
if weapons[i] == k then
+ − 41
used = true
+ − 42
end
+ − 43
end
+ − 44
if not used then
+ − 45
table.insert(items_values, w)
+ − 46
table.insert(items, weapons[i])
+ − 47
end
+ − 48
end
+ − 49
end
+ − 50
+ − 51
for i, w in pairs(utilities_values) do
+ − 52
local used = false
+ − 53
if w <= n then
+ − 54
--check that this weapon hasn't been given already
+ − 55
for j, k in pairs(picked_items) do
+ − 56
if utilities[i] == k then
+ − 57
used = true
+ − 58
end
+ − 59
end
+ − 60
if not used then
+ − 61
table.insert(items_values, w)
+ − 62
table.insert(items, utilities[i])
+ − 63
end
+ − 64
end
+ − 65
end
+ − 66
+ − 67
local r = GetRandom(table.maxn(items_values)) + 1
+ − 68
table.insert(picked_items, items[r])
+ − 69
n = n - items_values[r]
+ − 70
end
+ − 71
+ − 72
return picked_items
+ − 73
end
+ − 74
+ − 75
function assignAmmo(hog)
+ − 76
local name = GetHogTeamName(hog)
+ − 77
local processed = getTeamValue(name, "processed")
+ − 78
if processed == nil or not processed then
+ − 79
local ammo = getTeamValue(name, "ammo")
+ − 80
if ammo == nil then
+ − 81
ammo = randomAmmo()
+ − 82
setTeamValue(name, "ammo", ammo)
+ − 83
end
+ − 84
for i, w in pairs(ammo) do
+ − 85
AddAmmo(hog, w)
+ − 86
end
+ − 87
setTeamValue(name, "processed", true)
+ − 88
end
+ − 89
end
+ − 90
+ − 91
function reset(hog)
+ − 92
setTeamValue(GetHogTeamName(hog), "processed", false)
+ − 93
end
+ − 94
+ − 95
function onGameInit()
+ − 96
GameFlags = band(bor(GameFlags, gfResetWeps), bnot(gfPerHogAmmo))
+ − 97
Goals = loc("Each turn you get 1-3 random weapons")
+ − 98
end
+ − 99
+ − 100
function onGameStart()
+ − 101
trackTeams()
+ − 102
if MapHasBorder() == false then
+ − 103
for i, w in pairs(airweapons) do
+ − 104
table.insert(weapons, w)
+ − 105
end
+ − 106
for i, w in pairs(airweapons_values) do
+ − 107
table.insert(weapons_values, w)
+ − 108
end
+ − 109
end
+ − 110
end
+ − 111
+ − 112
function onAmmoStoreInit()
+ − 113
SetAmmo(amSkip, 9, 0, 0, 0)
+ − 114
+ − 115
SetAmmo(amExtraDamage, 0, 1, 0, 1)
+ − 116
SetAmmo(amInvulnerable, 0, 1, 0, 1)
+ − 117
SetAmmo(amExtraTime, 0, 1, 0, 1)
+ − 118
SetAmmo(amLaserSight, 0, 1, 0, 1)
+ − 119
SetAmmo(amVampiric, 0, 1, 0, 1)
+ − 120
+ − 121
for i, w in pairs(utilities) do
+ − 122
SetAmmo(w, 0, 0, 0, 1)
+ − 123
end
+ − 124
+ − 125
for i, w in pairs(weapons) do
+ − 126
SetAmmo(w, 0, 0, 0, 1)
+ − 127
end
+ − 128
+ − 129
for i, w in pairs(airweapons) do
+ − 130
SetAmmo(w, 0, 0, 0, 1)
+ − 131
end
+ − 132
end
+ − 133
+ − 134
function onNewTurn()
+ − 135
runOnGears(assignAmmo)
+ − 136
runOnGears(reset)
+ − 137
setTeamValue(GetHogTeamName(CurrentHedgehog), "ammo", nil)
+ − 138
end
+ − 139
+ − 140
function onGearAdd(gear)
+ − 141
if GetGearType(gear) == gtHedgehog then
+ − 142
trackGear(gear)
+ − 143
end
+ − 144
end
+ − 145
+ − 146
function onGearDelete(gear)
+ − 147
trackDeletion(gear)
+ − 148
end