diff -r b6140f35735f -r f991f87969ff share/hedgewars/Data/Scripts/Multiplayer/Random_Weapon.lua --- a/share/hedgewars/Data/Scripts/Multiplayer/Random_Weapon.lua Sun Apr 10 17:25:34 2011 -0400 +++ b/share/hedgewars/Data/Scripts/Multiplayer/Random_Weapon.lua Mon Apr 11 00:35:53 2011 +0200 @@ -1,32 +1,59 @@ +-- Random Weapons, example for gameplay scripts + +-- Load the library for localisation ("loc" function) loadfile(GetDataPath() .. "Scripts/Locale.lua")() +-- Load the gear tracker +loadfile(GetDataPath() .. "Scripts/Tracker.lua")() + +-- List of available weapons local weapons = { amGrenade, amClusterBomb, amBazooka, amBee, amShotgun, amMine, amDEagle, amDynamite, amFirePunch, amWhip, amPickHammer, amBaseballBat, amTeleport, amMortar, amCake, amSeduction, amWatermelon, amHellishBomb, amDrill, amBallgun, amRCPlane, amSniperRifle, amMolotov, amBirdy, amBlowTorch, amGasBomb, - amFlamethrower, amSMine, amHammer, amSnowball, amTardis, amStructure } + amFlamethrower, amSMine, amHammer } +-- List of weapons that attack from the air local airweapons = { amAirAttack, amMineStrike, amNapalm, amDrillStrike } +-- Function that assigns the team their weapon +-- Due to the fact that the gameplay uses reset weapons and no inf attack there is no point in limiting the ammo count +function assignWeapon(hog) + -- Get the ammo for this hog's team + local ammo = getTeamValue(GetHogTeamName(hog), "ammo") + -- If there is no ammo, get a random one from the list and store it + if ammo == nil then + ammo = weapons[GetRandom(table.maxn(weapons)) + 1] + setTeamValue(GetHogTeamName(hog), "ammo", ammo) + end + -- Add the ammo for the hog + AddAmmo(hog, ammo) +end function onGameInit() + -- Limit flags that can be set, but allow game schemes to be used GameFlags = band(bor(GameFlags, gfResetWeps), bnot(gfInfAttack + gfPerHogAmmo)) + -- Set a custom game goal that will show together with the scheme ones Goals = loc("Each turn you get one random weapon") end function onGameStart() + -- Initialize the tracking of hogs and teams + trackTeams() + -- Add air weapons to the game if the border is not active if MapHasBorder() == false then for i, w in pairs(airweapons) do table.insert(weapons, w) end end - --ShowMission(loc("Random Weapons"), loc("A game of luck"), loc("There has been a mix-up with your gear and now you|have to utilize whatever is coming your way!"), -amSkip, 0) end function onAmmoStoreInit() + -- Allow skip at all times SetAmmo(amSkip, 9, 0, 0, 0) + -- Let utilities be available through crates SetAmmo(amParachute, 0, 1, 0, 1) SetAmmo(amGirder, 0, 1, 0, 2) SetAmmo(amSwitch, 0, 1, 0, 1) @@ -40,15 +67,32 @@ SetAmmo(amPortalGun, 0, 1, 0, 1) SetAmmo(amResurrector, 0, 1, 0, 1) + -- Allow weapons to be used for i, w in pairs(weapons) do SetAmmo(w, 0, 0, 0, 1) end + -- Allow air weapons to be used for i, w in pairs(airweapons) do SetAmmo(w, 0, 0, 0, 1) end end function onNewTurn() - AddAmmo(CurrentHedgehog, weapons[GetRandom(table.maxn(weapons)) + 1]) + -- Give every team their weapons, so one can plan during anothers turn + runOnGears(assignWeapon) + -- Set the current teams weapons to nil so they will get new after the turn has ended + setTeamValue(GetHogTeamName(CurrentHedgehog), "ammo", nil) end + +function onGearAdd(gear) + -- Catch hedgehogs for the tracker + if GetGearType(gear) == gtHedgehog then + trackGear(gear) + end +end + +function onGearDelete(gear) + -- Remove hogs that are gone + trackDeletion(gear) +end