project_files/Android-build/SDL-android-project/assets/Data/Scripts/Multiplayer/Random_Weapon.lua
changeset 7568 75ba91f14ed5
equal deleted inserted replaced
7566:57d343ee382f 7568:75ba91f14ed5
       
     1 -- Random Weapons, example for gameplay scripts
       
     2 
       
     3 -- Load the library for localisation ("loc" function)
       
     4 loadfile(GetDataPath() .. "Scripts/Locale.lua")()
       
     5 
       
     6 -- Load the gear tracker
       
     7 loadfile(GetDataPath() .. "Scripts/Tracker.lua")()
       
     8 
       
     9 -- List of available weapons
       
    10 local weapons = { amGrenade, amClusterBomb, amBazooka, amBee, amShotgun,
       
    11             amMine, amDEagle, amDynamite, amFirePunch, amWhip, amPickHammer,
       
    12             amBaseballBat, amTeleport, amMortar, amCake, amSeduction,
       
    13             amWatermelon, amHellishBomb, amDrill, amBallgun, amRCPlane,
       
    14             amSniperRifle, amMolotov, amBirdy, amBlowTorch, amGasBomb,
       
    15             amFlamethrower, amSMine, amHammer }
       
    16 
       
    17 -- List of weapons that attack from the air
       
    18 local airweapons = { amAirAttack, amMineStrike, amNapalm, amDrillStrike }
       
    19 
       
    20 -- Function that assigns the team their weapon
       
    21 function assignAmmo(hog)
       
    22     -- Get name of the current team
       
    23     local name = GetHogTeamName(hog)
       
    24     -- Get whither the team has been processed
       
    25     local processed = getTeamValue(name, "processed")
       
    26     -- If it has not, process it
       
    27     if processed == nil or not processed then
       
    28         -- Get the ammo for this hog's team
       
    29         local ammo = getTeamValue(name, "ammo")
       
    30         -- If there is no ammo, get a random one from the list and store it
       
    31         if ammo == nil then
       
    32             ammo = weapons[GetRandom(table.maxn(weapons)) + 1]
       
    33             setTeamValue(name, "ammo", ammo)
       
    34         end
       
    35         -- Add the ammo for the hog
       
    36         AddAmmo(hog, ammo)
       
    37         -- Mark as processed
       
    38         setTeamValue(name, "processed", true)
       
    39     end
       
    40 end
       
    41 
       
    42 -- Mark team as not processed
       
    43 function reset(hog)
       
    44     setTeamValue(GetHogTeamName(hog), "processed", false)
       
    45 end
       
    46 
       
    47 function onGameInit()
       
    48     -- Limit flags that can be set, but allow game schemes to be used
       
    49     GameFlags = band(bor(GameFlags, gfResetWeps), bnot(gfInfAttack))
       
    50     -- Set a custom game goal that will show together with the scheme ones
       
    51     Goals = loc("Each turn you get one random weapon")
       
    52 end
       
    53 
       
    54 function onGameStart()
       
    55     -- Initialize the tracking of hogs and teams
       
    56     trackTeams()
       
    57     -- Add air weapons to the game if the border is not active
       
    58     if MapHasBorder() == false then
       
    59         for i, w in pairs(airweapons) do
       
    60             table.insert(weapons, w)
       
    61         end
       
    62     end
       
    63 end
       
    64 
       
    65 function onAmmoStoreInit()
       
    66     -- Allow skip at all times
       
    67     SetAmmo(amSkip, 9, 0, 0, 0)
       
    68 
       
    69     -- Let utilities be available through crates
       
    70     SetAmmo(amParachute, 0, 1, 0, 1)
       
    71     SetAmmo(amGirder, 0, 1, 0, 2)
       
    72     SetAmmo(amSwitch, 0, 1, 0, 1)
       
    73     SetAmmo(amLowGravity, 0, 1, 0, 1)
       
    74     SetAmmo(amExtraDamage, 0, 1, 0, 1)
       
    75     SetAmmo(amInvulnerable, 0, 1, 0, 1)
       
    76     SetAmmo(amExtraTime, 0, 1, 0, 1)
       
    77     SetAmmo(amLaserSight, 0, 1, 0, 1)
       
    78     SetAmmo(amVampiric, 0, 1, 0, 1)
       
    79     SetAmmo(amJetpack, 0, 1, 0, 1)
       
    80     SetAmmo(amPortalGun, 0, 1, 0, 1)
       
    81     SetAmmo(amResurrector, 0, 1, 0, 1)
       
    82 
       
    83     -- Allow weapons to be used
       
    84     for i, w in pairs(weapons) do
       
    85         SetAmmo(w, 0, 0, 0, 1)
       
    86     end
       
    87 
       
    88     -- Allow air weapons to be used
       
    89     for i, w in pairs(airweapons) do
       
    90         SetAmmo(w, 0, 0, 0, 1)
       
    91     end
       
    92 end
       
    93 
       
    94 function onNewTurn()
       
    95     -- Give every team their weapons, so one can plan during anothers turn
       
    96     runOnGears(assignAmmo)
       
    97     -- Mark all teams as not processed
       
    98     runOnGears(reset)
       
    99     -- Set the current teams weapons to nil so they will get new after the turn has ended
       
   100     setTeamValue(GetHogTeamName(CurrentHedgehog), "ammo", nil)
       
   101 end
       
   102 
       
   103 function onGearAdd(gear)
       
   104     -- Catch hedgehogs for the tracker
       
   105     if GetGearType(gear) == gtHedgehog then
       
   106         trackGear(gear)
       
   107     end
       
   108 end
       
   109 
       
   110 function onGearDelete(gear)
       
   111     -- Remove hogs that are gone
       
   112     trackDeletion(gear)
       
   113 end