Changeset 3324

Show
Ignore:
Timestamp:
11/29/08 21:21:36 (5 weeks ago)
Author:
licho
Message:
  • extra commanders given in planetwars to balance teams should start with boost too (untested)
  • boost has external method AddBoost?(id, [boost], [maxBoost])
Location:
trunk/mods/ca/LuaRules/Gadgets
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • trunk/mods/ca/LuaRules/Gadgets/planetwars.lua

    r3296 r3324  
    4040                                tryy = GetGroundHeight(tryx, tryz) 
    4141                                if TestBuildOrder(unitDefID, tryx, tryy, tryz, 'N') or spawnTries > 20 then 
    42                                          
     42                                        local uid = nil 
    4343                                        if (unitDef.isBuilding == true or unitDef.maxAcc == 0) then -- structure 
    44                                                 local uid = CreateUnit("armpwdeploy", tryx, tryy, tryz, 'N', teamnum - 1) -- todo determine side name 
     44                                                uid = CreateUnit("armpwdeploy", tryx, tryy, tryz, 'N', teamnum - 1) -- todo determine side name 
    4545                                                GG.morphHandler.AddExtraUnitMorph(uid, {into = m.unitname, time = 10, metal=0, energy=0,}) 
    4646                                        else -- normal unit 
    47                                                 local uid = CreateUnit(m.unitname, tryx, tryy, tryz, 'N', teamnum - 1)                                   
     47                                                uid = CreateUnit(m.unitname, tryx, tryy, tryz, 'N', teamnum - 1)                                         
     48                                        end 
     49                                         
     50                                        if (m.unitname == 'armcom' or m.unitname == 'corcom') then 
     51                                                GG.boostHandler.AddBoost(uid) 
    4852                                        end 
    4953                                         
  • trunk/mods/ca/LuaRules/Gadgets/unit_start_boost.lua

    r3321 r3324  
    4747 
    4848local boost = {} 
    49 local startMetal = {} 
    50  
     49local boostMax = {} 
     50local teamMetal = {} 
    5151 
    5252-------------------------------------------------------------------------------- 
    5353-------------------------------------------------------------------------------- 
     54 
     55local function AddBoost(unitID, newBoost, newBoostMax) 
     56        local tm = teamMetal[Spring.GetUnitTeam(unitID)] 
     57        boost[unitID]  = newBoost or tm 
     58        boostMax[unitID] = newBoostMax or tm 
     59        SendToUnsynced("UpdateBoost", unitID, boost[unitID], boostMax[unitID])    
     60end 
     61 
     62 
     63function gadget:Initialize()  
     64  -- self linking 
     65  GG['boostHandler'] = {} 
     66  GG['boostHandler'].AddBoost = AddBoost 
     67end 
     68 
    5469 
    5570function gadget:UnitDestroyed(unitID)  
     
    8095            boost[builderID] = boost[builderID] - BOOST_RATE 
    8196            Spring.SetUnitHealth(unitID, { health = progress*maxHealth,  build  = progress }) 
    82                 SendToUnsynced("UpdateBoost", builderID, boost[builderID], startMetal[builderID])    
     97                SendToUnsynced("UpdateBoost", builderID, boost[builderID], boostMax[builderID])    
    8398                return false 
    8499          else  
     
    99114                if (teamID ~= gaiaID and (not teamLuaAI or teamLuaAI == "")) then 
    100115                        local metal = Spring.GetTeamResources(teamID, 'metal') 
    101                                  
     116                        teamMetal[teamID] = metal 
    102117                        --Spring.SendMessage("Initializing team "..teamID.." with "..metal) 
    103118                                 
     
    111126                                local defID = Spring.GetUnitDefID(unitID) 
    112127                                if (defID ~= nil and UnitDefs[defID] ~= nil and UnitDefs[defID].isCommander and UnitDefs[defID].name ~= "chickenbroodqueen") then 
    113                                         boost[unitID]  = metal 
    114                                         startMetal[unitID] = metal 
    115                                         --Spring.SendMessage("for unit " ..unitID) 
    116                                         SendToUnsynced("UpdateBoost", unitID, metal, metal)    
     128                                        AddBoost(unitID) 
    117129                                        break 
    118130                                end