Changeset 5859


Ignore:
Timestamp:
11/20/16 22:39:53 (3 years ago)
Author:
nixtux
Message:

Metal makers will now turn off production of metal and close for a short period when they take damage.

Location:
branches/BAR
Files:
17 edited

Legend:

Unmodified
Added
Removed
  • branches/BAR/luarules/gadgets/game_energy_conversion.lua

    r5120 r5859  
    33        name      = 'Energy Conversion', 
    44        desc      = 'Handles converting energy to metal', 
    5         author    = 'Niobium(modified by TheFatController, Finkky)', 
     5        author    = 'Niobium(modified by TheFatController, Finkky, Nixtux)', 
    66        version   = 'v2.3', 
    77        date      = 'May 2011', 
     
    2222-- Config 
    2323---------------------------------------------------------------- 
    24 local convertCapacities = include("LuaRules/Configs/maker_defs.lua") 
    25  
    2624local alterLevelRegex = '^' .. string.char(137) .. '(%d+)$' 
    2725local mmLevelParamName = 'mmLevel' 
     
    3028local mmAvgEfficiencyParamName = 'mmAvgEfficiency' 
    3129local mmAvgEffiParamName = 'mmAvgEffi' 
    32 local function SetMMRulesParams() 
    33     -- make convertCapacities accessible to all 
    34     for uDID,conv in pairs(convertCapacities) do 
    35         local unitName = UnitDefs[uDID].name or "" 
    36         local capacity = conv.c 
    37         local ratio = conv.e 
    38         Spring.SetGameRulesParam(unitName .. "_mm_capacity", capacity) 
    39         Spring.SetGameRulesParam(unitName .. "_mm_ratio", ratio)         
    40     end 
    41 end 
    4230 
    4331local frameRate = 30 
     
    4634local resourceUpdatesPerGameSec = frameRate / resourceRefreshRate 
    4735 
    48  
     36local convertCapacities = include("LuaRules/Configs/maker_defs.lua") 
    4937local currentFrameStamp = 0 
    5038 
     
    7361local min = math.min 
    7462local max = math.max 
     63local ceil = math.ceil 
    7564local spGetPlayerInfo = Spring.GetPlayerInfo 
    7665local spGetTeamRulesParam = Spring.GetTeamRulesParam 
     
    8574local spUseUnitResource = Spring.UseUnitResource 
    8675local spSetUnitResourcing = Spring.SetUnitResourcing 
     76local spValidUnitID = Spring.ValidUnitID 
    8777 
    8878---------------------------------------------------------------- 
     
    10797end 
    10898 
    109 local function updateUnitConversion(unitID, amount, e) 
     99local function updateUnitCoversion(unitID, amount, e) 
    110100        spSetUnitResourcing(unitID, "umm", amount * e) 
    111101        spSetUnitResourcing(unitID, "uue", amount) 
     
    119109                                        amount = max(0,min(energyUse, defs.capacity)) 
    120110                                        energyUse = (energyUse - defs.capacity) 
    121                                         updateUnitConversion(unitID, amount, eSteps[j]) 
     111                                        updateUnitCoversion(unitID, amount, eSteps[j]) 
    122112                                         
    123113                                        if (defs.status == 0) then 
     
    129119                                        if (teamActiveMM[teamID] == 0) then break end 
    130120                                        if (defs.status == 1) then 
    131                                                 updateUnitConversion(unitID, 0, 0) 
     121                                                updateUnitCoversion(unitID, 0, 0) 
    132122                                                Spring.CallCOBScript(unitID,"MMStatus",0,0) 
    133123                                                defs.status = 0 
     
    141131end 
    142132 
     133local function SetMMRulesParams() 
     134    -- make convertCapacities accessible to all 
     135    for uDID,conv in pairs(convertCapacities) do 
     136        local unitName = UnitDefs[uDID].name or "" 
     137        local capacity = conv.c 
     138        local ratio = conv.e 
     139        Spring.SetGameRulesParam(unitName .. "_mm_capacity", capacity) 
     140        Spring.SetGameRulesParam(unitName .. "_mm_ratio", ratio)         
     141    end 
     142end 
     143 
    143144---------------------------------------------------------------- 
    144145-- Pseudo Callins 
    145146---------------------------------------------------------------- 
    146147 
    147 local function UnitParalysed(uID, uDefID, uTeam) 
    148         local cDefs = convertCapacities[uDefID] 
     148local function UnitTakingDamage(uID, uDefID, uTeam, notEmpDamage) 
     149    local cDefs = convertCapacities[uDefID] 
    149150    if cDefs then 
    150         if teamMMList[uTeam][cDefs.e][uID].built then 
     151        if teamMMList[uTeam][cDefs.e][uID] and teamMMList[uTeam][cDefs.e][uID].built then 
    151152                        teamMMList[uTeam][cDefs.e][uID].emped = true 
    152             AdjustTeamCapacity(uTeam, -cDefs.c, cDefs.e) 
    153         end 
    154     end 
    155 end 
    156  
    157 local function UnitParalysisOver(uID, uDefID, uTeam) 
    158         local cDefs = convertCapacities[uDefID] 
     153                        AdjustTeamCapacity(uTeam, -cDefs.c, cDefs.e) 
     154                if notEmpDamage == true then 
     155                    teamMMList[uTeam][cDefs.e][uID].damaged = true 
     156                    --Spring.Echo(currentFrameStamp, "  Closes due to damage ", unitID) 
     157                    Spring.CallCOBScript(uID,"MMStatus",0,0) 
     158                end 
     159        end 
     160    end 
     161end 
     162 
     163local function UnitDamageOver(uID, uDefID, uTeam, notEmpDamage) 
     164    local cDefs = convertCapacities[uDefID] 
    159165    if cDefs then 
    160                 if (teamMMList[uTeam][cDefs.e][uID] and teamMMList[uTeam][cDefs.e][uID].built) then 
     166                if teamMMList[uTeam][cDefs.e][uID] and teamMMList[uTeam][cDefs.e][uID].built then         
    161167                        teamMMList[uTeam][cDefs.e][uID].emped = false 
    162168                        AdjustTeamCapacity(uTeam, cDefs.c, cDefs.e) 
    163                 end 
    164     end 
    165 end 
    166  
    167 ---------------------------------------------------------------- 
    168 -- EmpedVector Methods 
    169 ---------------------------------------------------------------- 
    170 local EmpedVector = {unitBuffer={}} 
     169                        if teamMMList[uTeam][cDefs.e][uID].damaged == true then 
     170                        teamMMList[uTeam][cDefs.e][uID].damaged = false 
     171                        --Spring.Echo(currentFrameStamp, "  Reopened from damage ", unitID) 
     172                                Spring.CallCOBScript(uID,"MMStatus",0,1) 
     173                end 
     174                end 
     175    end 
     176end 
     177 
     178---------------------------------------------------------------- 
     179-- Damagedvector Methods 
     180---------------------------------------------------------------- 
     181local Damagedvector = {unitBuffer={}} 
    171182local tableInsert = table.insert 
    172183 
    173 function EmpedVector:push(uID, frameID) 
     184function Damagedvector:push(uID, frameID, notEmpDamage) 
    174185        if self.unitBuffer[uID] then 
    175186                self.unitBuffer[uID] = frameID 
    176187        else 
    177188                tableInsert(self.unitBuffer, uID, frameID) 
    178                 UnitParalysed(uID, spGetUnitDefID(uID), spGetUnitTeam(uID)) 
    179         end 
    180 end 
    181  
    182 function EmpedVector:process(currentFrame) 
     189                UnitTakingDamage(uID, spGetUnitDefID(uID), spGetUnitTeam(uID), notEmpDamage) 
     190        end 
     191end 
     192 
     193function Damagedvector:process(currentFrame) 
    183194        for uID, frameID in pairs(self.unitBuffer) do 
    184195                if (currentFrame >= frameID) then 
    185                         UnitParalysisOver(uID, spGetUnitDefID(uID), spGetUnitTeam(uID)) 
     196                        UnitDamageOver(uID, spGetUnitDefID(uID), spGetUnitTeam(uID)) 
    186197                         
    187198                        self.unitBuffer[uID] = nil 
     
    260271        spSetTeamRulesParam(tID, mmCapacityParamName, 0) 
    261272        spSetTeamRulesParam(tID, mmUseParamName, 0) 
    262                 spSetTeamRulesParam(tID, mmAvgEffiParamName, teamEfficiencies[tID]:avg()) 
     273        spSetTeamRulesParam(tID, mmAvgEffiParamName, teamEfficiencies[tID]:avg()) 
    263274 
    264275    end 
     
    268279 
    269280function gadget:GameFrame(n) 
    270  
    271281 
    272282        -- process emped in the least likely used frame by the actual per team maker computations 
    273283        if (n % resourceRefreshRate == resourceRefreshRate - 1) then 
    274284                currentFrameStamp = currentFrameStamp + 1 
    275                 EmpedVector:process(currentFrameStamp) 
     285                Damagedvector:process(currentFrameStamp) 
    276286        end 
    277287 
     
    280290 
    281291        if (n % resourceRefreshRate == (splitMMPointer-1)) then 
    282                 for i = 0, (math.ceil(#teamList / resourceRefreshRate) -1) do 
     292                for i = 0, (ceil(#teamList / resourceRefreshRate) - 1) do 
    283293                        local tID 
    284                         local tpos = (splitMMPointer + (i * resourceRefreshRate)) 
    285                         if tpos < #teamList then  
     294                        local tpos = (splitMMPointer + i * resourceRefreshRate) 
     295                        if tpos <= #teamList then 
    286296                                tID = teamList[tpos] 
    287297                                 
     
    307317                                spSetTeamRulesParam(tID, mmUseParamName, tUsage) 
    308318                                spSetTeamRulesParam(tID, mmAvgEffiParamName, teamEfficiencies[tID]:avg()) 
    309                         end 
     319                                end 
    310320                end 
    311321        if (splitMMPointer == resourceRefreshRate) then 
     
    320330function gadget:UnitCreated(uID, uDefID, uTeam, builderID) 
    321331        local cDefs = convertCapacities[uDefID] 
    322     if cDefs then 
    323         teamMMList[uTeam][cDefs.e][uID] = {capacity = 0, status = 0, built = false, emped = false} 
     332        if cDefs then 
     333                teamMMList[uTeam][cDefs.e][uID] = {capacity = 0, status = 0, built = false, emped = false, damaged = false} 
    324334    end 
    325335end 
     
    328338function gadget:UnitFinished(uID, uDefID, uTeam) 
    329339    local cDefs = convertCapacities[uDefID] 
    330     if cDefs then 
    331         if not teamMMList[uTeam][cDefs.e][uID] then  
    332             teamMMList[uTeam][cDefs.e][uID] = {capacity = 0, status = 0, built = false, emped = false} 
    333         end 
     340    if cDefs and spValidUnitID(uID) then 
     341         
     342                if not teamMMList[uTeam][cDefs.e][uID] then  
     343                    teamMMList[uTeam][cDefs.e][uID] = {capacity = 0, status = 0, built = false, emped = false, damaged = false} 
     344                end 
     345         
    334346        teamMMList[uTeam][cDefs.e][uID].capacity = cDefs.c 
    335347                teamMMList[uTeam][cDefs.e][uID].built = true 
     
    344356 
    345357 
    346 function gadget:UnitDamaged(uID, uDefID, uTeam, damage, paralyzer) 
    347         local cDefs = convertCapacities[uDefID] 
    348  
     358function gadget:UnitDamaged(uID, uDefID, uTeam, damage, paralyzer, weaponDefID) 
     359    local cDefs = convertCapacities[uDefID] 
     360     
    349361    if paralyzer and cDefs then 
    350                 local _, maxHealth, paralyzeDamage, _ ,_ = spGetUnitHealth(uID) 
     362        local _, maxHealth, paralyzeDamage, _ ,_ = spGetUnitHealth(uID) 
    351363                local relativeParDmg = paralyzeDamage -  maxHealth 
    352                 if (relativeParDmg > 0) then  
    353                         EmpedVector:push(uID, currentFrameStamp + math.ceil(relativeParDmg / (maxHealth / paralysisRelRate))) 
    354                 end 
     364                if (relativeParDmg > 0) then 
     365            Damagedvector:push(uID, currentFrameStamp + ceil(relativeParDmg / (maxHealth / paralysisRelRate)),false) 
     366                end 
     367    elseif (damage and not paralyzer) and cDefs then 
     368        if (damage > 0) and weaponDefID == -1 then  
     369                         Damagedvector:push(uID, currentFrameStamp+5,true) 
     370        elseif (damage > 0) then 
     371                         Damagedvector:push(uID, currentFrameStamp+20,true) 
     372        end 
    355373    end 
    356374end 
     
    359377function gadget:UnitDestroyed(uID, uDefID, uTeam) 
    360378    local cDefs = convertCapacities[uDefID] 
    361     if cDefs then 
     379    if cDefs and spValidUnitID(uID) then 
    362380        if teamMMList[uTeam][cDefs.e][uID] and teamMMList[uTeam][cDefs.e][uID].built then 
    363381                        if (teamMMList[uTeam][cDefs.e][uID].status == 1) then 
     
    392410                        teamMMList[newTeam][cDefs.e][uID].status = teamMMList[oldTeam][cDefs.e][uID].status 
    393411                        teamMMList[newTeam][cDefs.e][uID].emped = teamMMList[oldTeam][cDefs.e][uID].emped 
     412                        teamMMList[newTeam][cDefs.e][uID].damaged  = teamMMList[oldTeam][cDefs.e][uID].damaged 
    394413                        teamMMList[newTeam][cDefs.e][uID].built  = teamMMList[oldTeam][cDefs.e][uID].built 
    395414                         
  • branches/BAR/scripts/armfmkr.bos

    r5120 r5859  
    3131} 
    3232 
    33 HitByWeapon(anglex, anglez) 
    34 { 
    35         turn base to z-axis anglez speed <65.000000>; 
    36         turn base to x-axis <0> - anglex speed <65.000000>; 
    37         wait-for-turn base around z-axis; 
    38         wait-for-turn base around x-axis; 
    39         turn base to z-axis <0.000000> speed <20.000000>; 
    40         turn base to x-axis <0.000000> speed <20.000000>; 
    41 } 
    42  
    4333RockOnWaves() 
    4434{ 
     
    6252} 
    6353 
     54Go() 
     55{ 
     56        start-script activatescr(); 
     57        dont-cache cover1; 
     58} 
     59 
     60Stop() 
     61{ 
     62        call-script deactivatescr(); 
     63        cache cover1; 
     64} 
     65 
     66ImAMetalMaker() 
     67{ 
     68        mmState = -1; 
     69        while( TRUE ) 
     70        { 
     71                if( Active == 1 ) 
     72                { 
     73                        if( mmState != 1 ) 
     74                        { 
     75                                call-script Go(); 
     76                                mmState = 1; 
     77                        } 
     78                } 
     79                else if( mmState != 0 ) 
     80                { 
     81                        call-script Stop(); 
     82                        mmState = 0; 
     83                } 
     84                sleep 1000; 
     85        } 
     86} 
     87 
    6488SmokeUnit(healthpercent, sleeptime, smoketype) 
    6589{ 
     
    6993        } 
    7094        start-script RockOnWaves(); 
     95        start-script ImAMetalMaker(); 
    7196        while( TRUE ) 
    7297        { 
     
    90115} 
    91116 
    92 Go() 
    93 { 
    94         start-script activatescr(); 
    95         dont-cache cover1; 
    96 } 
    97  
    98 Stop() 
    99 { 
    100         call-script deactivatescr(); 
    101         cache cover1; 
    102 } 
    103  
    104117MMStatus(State) 
    105118{ 
    106119        Active = State; 
    107120        //get PRINT(Active); 
    108 } 
    109  
    110 ImAMetalMaker() 
    111 { 
    112         while( get BUILD_PERCENT_LEFT ) 
    113         { 
    114                 sleep 150; 
    115         } 
    116         mmState = -1; 
    117         while( TRUE ) 
    118         { 
    119                 if( Active == 1 ) 
    120                 { 
    121                         if( mmState != 1 ) 
    122                         { 
    123                                 call-script Go(); 
    124                                 mmState = 1; 
    125                         } 
    126                 } 
    127                 else if( mmState != 0 ) 
    128                 { 
    129                         call-script Stop(); 
    130                         mmState = 0; 
    131                 } 
    132                 sleep 1000; 
    133         } 
    134121} 
    135122 
     
    139126        dont-shade cover1; 
    140127        start-script SmokeUnit(); 
    141         start-script ImAMetalMaker(); 
    142128} 
    143129 
  • branches/BAR/scripts/armfmmm.bos

    r5120 r5859  
    1010activatescr() 
    1111{ 
    12         if( TRUE ) 
    13         { 
    14                 turn cover1 to y-axis <-45> speed <60>; 
    15                 turn cover2 to y-axis <45> speed <60>; 
    16                 sleep 1603; 
    17         } 
    18         sleep 73; 
     12        turn cover1 to y-axis <-45> speed <60>; 
     13        turn cover2 to y-axis <45> speed <60>; 
     14        sleep 1603; 
    1915} 
    2016 
    2117deactivatescr() 
    2218{ 
    23         if( TRUE ) 
    24         { 
    25                 turn cover1 to y-axis <0> speed <60>; 
    26                 turn cover2 to y-axis <0> speed <60>; 
    27                 sleep 1603; 
    28         } 
    29         sleep 73; 
     19        turn cover1 to y-axis <0> speed <60>; 
     20        turn cover2 to y-axis <0> speed <60>; 
     21        sleep 1603; 
    3022} 
    3123 
     
    5143} 
    5244 
     45Go() 
     46{ 
     47        start-script activatescr(); 
     48        dont-cache cover1; 
     49} 
     50 
     51Stop() 
     52{ 
     53        call-script deactivatescr(); 
     54        cache cover1; 
     55} 
     56 
     57ImAMetalMaker() 
     58{ 
     59        mmState = -1; 
     60        while( TRUE ) 
     61        { 
     62                if (Active == 1) 
     63                { 
     64                        if (mmState != 1) { 
     65                                call-script Go(); 
     66                                mmState = 1; 
     67                        } 
     68                } 
     69                else 
     70                { 
     71                        if (mmState != 0) { 
     72                                call-script Stop(); 
     73                                mmState = 0; 
     74                        } 
     75                } 
     76                sleep 1000; 
     77        } 
     78} 
     79 
    5380SmokeUnit(healthpercent, sleeptime, smoketype) 
    5481{ 
     
    5885        } 
    5986        start-script RockOnWaves(); 
     87        start-script ImAMetalMaker(); 
    6088        while( TRUE ) 
    6189        { 
     
    79107} 
    80108 
    81 Go() 
    82 { 
    83         start-script activatescr(); 
    84         dont-cache cover1; 
    85 } 
    86  
    87 Stop() 
    88 { 
    89         call-script deactivatescr(); 
    90         cache cover1; 
    91 } 
    92  
    93109MMStatus(State) 
    94110{ 
    95111        Active = State; 
    96112        //get PRINT(Active); 
    97 } 
    98  
    99 ImAMetalMaker() 
    100 { 
    101         while( get BUILD_PERCENT_LEFT ) 
    102         { 
    103                 sleep 150; 
    104         } 
    105         mmState = -1; 
    106         while( TRUE ) 
    107         { 
    108                 if (Active == 1) 
    109                 { 
    110                         if (mmState != 1) { 
    111                                 call-script Go(); 
    112                                 mmState = 1; 
    113                         } 
    114                 } 
    115                 else 
    116                 { 
    117                         if (mmState != 0) { 
    118                                 call-script Stop(); 
    119                                 mmState = 0; 
    120                         } 
    121                 } 
    122                 sleep 1000; 
    123         } 
    124113} 
    125114 
     
    129118        dont-shade cover1; 
    130119        start-script SmokeUnit(); 
    131         start-script ImAMetalMaker(); 
    132120} 
    133121 
  • branches/BAR/scripts/armmakr.bos

    r5120 r5859  
    88static-var  mmState, Active; 
    99 
     10ImAMetalMaker() 
     11{ 
     12        mmState = -1; 
     13        while( TRUE ) 
     14        { 
     15                if (Active == 1) 
     16                { 
     17                        if (mmState != 1) { 
     18                                turn cover1 to z-axis <-60> speed <60>; 
     19                                turn cover2 to z-axis <60> speed <60>; 
     20                                sleep 1000; 
     21                                mmState = 1; 
     22                        } 
     23                } 
     24                else 
     25                { 
     26                        if (mmState != 0) {      
     27                                turn cover1 to z-axis <0> speed <60>; 
     28                                turn cover2 to z-axis <0> speed <60>; 
     29                                sleep 1000; 
     30                                mmState = 0; 
     31                        } 
     32                } 
     33                sleep 1000; 
     34        } 
     35} 
     36 
     37 
    1038SmokeUnit(healthpercent, sleeptime, smoketype) 
    1139{ 
     
    1442                sleep 500; 
    1543        } 
     44        start-script ImAMetalMaker(); 
    1645        while( TRUE ) 
    1746        { 
     
    4170} 
    4271 
    43 ImAMetalMaker() 
    44 { 
    45         while( get BUILD_PERCENT_LEFT ) 
    46         { 
    47                 sleep 150; 
    48         } 
    49         mmState = -1; 
    50         while( TRUE ) 
    51         { 
    52                 if (Active == 1) 
    53                 { 
    54                         if (mmState != 1) { 
    55                                 turn cover1 to z-axis <-60> speed <60>; 
    56                                 turn cover2 to z-axis <60> speed <60>; 
    57                                 sleep 1000; 
    58                                 mmState = 1; 
    59                         } 
    60                 } 
    61                 else 
    62                 { 
    63                         if (mmState != 0) {      
    64                                 turn cover1 to z-axis <0> speed <60>; 
    65                                 turn cover2 to z-axis <0> speed <60>; 
    66                                 sleep 1000; 
    67                                 mmState = 0; 
    68                         } 
    69                 } 
    70                 sleep 1000; 
    71         } 
    72 } 
    73  
    7472Create() 
    7573{ 
    7674        start-script SmokeUnit(); 
    77         start-script ImAMetalMaker(); 
    7875} 
    7976 
  • branches/BAR/scripts/armmmkr.bos

    r5120 r5859  
    66piece  base, cover1, cover2; 
    77 
    8 static-var  Static_Var_1, mmState, Active; 
     8static-var  mmState, Active; 
    99 
    1010activatescr() 
    1111{ 
    12         if( TRUE ) 
    13         { 
    14                 turn cover1 to z-axis <60> speed <60>; 
    15                 turn cover2 to z-axis <-60> speed <60>; 
    16                 sleep 1000; 
    17         } 
    18         sleep 774; 
    19         return (0); 
    20         // Build by COBBLER Ver4.0 Copyright @1998 DIGITAL CONCEPT SOFTWARE (MANU@inext.fr) / http://www.annihilationcenter.com/DCS/   
     12        turn cover1 to z-axis <60> speed <60>; 
     13        turn cover2 to z-axis <-60> speed <60>; 
     14        sleep 1000; 
    2115} 
    2216 
    2317deactivatescr() 
    2418{ 
    25         if( TRUE ) 
     19        turn cover1 to z-axis <0> speed <60>; 
     20        turn cover2 to z-axis <0> speed <60>; 
     21        sleep 1000; 
     22} 
     23 
     24 
     25Go() 
     26{ 
     27        call-script activatescr(); 
     28        set ARMORED to 0; //Not needed as MM in BAR have no damage modifyer tag set 
     29} 
     30 
     31Stop() 
     32{ 
     33        set ARMORED to 1; 
     34        call-script deactivatescr(); 
     35} 
     36 
     37ImAMetalMaker() 
     38{ 
     39        mmState = -1; 
     40        while( TRUE ) 
    2641        { 
    27                 turn cover1 to z-axis <0> speed <60>; 
    28                 turn cover2 to z-axis <0> speed <60>; 
     42                if (Active == 1) 
     43                { 
     44                        if (mmState != 1) { 
     45                                call-script Go(); 
     46                                mmState = 1; 
     47                        } 
     48                } 
     49                else 
     50                { 
     51                        if (mmState != 0) { 
     52                                call-script Stop(); 
     53                                mmState = 0; 
     54                        } 
     55                } 
    2956                sleep 1000; 
    3057        } 
    31         sleep 774; 
    32         return (0); 
    3358} 
    3459 
     
    3964                sleep 400; 
    4065        } 
     66        start-script ImAMetalMaker(); 
    4167        while( TRUE ) 
    4268        { 
     
    6086} 
    6187 
    62 Go() 
    63 { 
    64         call-script activatescr(); 
    65         set ARMORED to 0; 
    66 } 
    67  
    68 Stop() 
    69 { 
    70         set ARMORED to 1; 
    71         call-script deactivatescr(); 
    72 } 
    73  
    7488MMStatus(State) 
    7589{ 
     
    7892} 
    7993 
    80 ImAMetalMaker() 
    81 { 
    82         while( get BUILD_PERCENT_LEFT ) 
    83         { 
    84                 sleep 150; 
    85         } 
    86         mmState = -1; 
    87         while( TRUE ) 
    88         { 
    89                 if (Active == 1) 
    90                 { 
    91                         if (mmState != 1) { 
    92                                 call-script Go(); 
    93                                 mmState = 1; 
    94                         } 
    95                 } 
    96                 else 
    97                 { 
    98                         if (mmState != 0) { 
    99                                 call-script Stop(); 
    100                                 mmState = 0; 
    101                         } 
    102                 } 
    103                 sleep 1000; 
    104         } 
    105 } 
    106  
    10794Create() 
    10895{ 
    10996        start-script SmokeUnit(); 
    110         Static_Var_1 = 0; 
    111         while( get BUILD_PERCENT_LEFT ) 
    112         { 
    113                 sleep 1000; 
    114         } 
    115         set ARMORED to 1; 
    116         start-script ImAMetalMaker(); 
    117 } 
    118  
    119 HitByWeapon(anglex, anglez)  //Can be removed does nothing at all only visualy they will look closed (MM are controled by gadget and still producing metal) 
    120 { 
    121         if( get ACTIVATION ) 
    122         { 
    123                 Static_Var_1 = 1; 
    124         } 
    125         if( Static_Var_1 ) 
    126         { 
    127                 signal 2; 
    128                 set-signal-mask 2; 
    129                 set ACTIVATION to 0; 
    130                 sleep 8000; 
    131                 Static_Var_1 = 0; 
    132                 set ACTIVATION to 100; 
    133         } 
    13497} 
    13598 
  • branches/BAR/scripts/corfmkr.bos

    r5120 r5859  
    2929} 
    3030 
    31 HitByWeapon(anglex, anglez) 
     31ImAMetalMaker() 
    3232{ 
    33         turn base to z-axis anglez speed <65.000000>; 
    34         turn base to x-axis <0> - anglex speed <65.000000>; 
    35         wait-for-turn base around z-axis; 
    36         wait-for-turn base around x-axis; 
    37         turn base to z-axis <0.000000> speed <20.000000>; 
    38         turn base to x-axis <0.000000> speed <20.000000>; 
     33        mmState = -1; 
     34        while( TRUE ) 
     35        { 
     36                if( Active == 1 ) 
     37                { 
     38                        if( mmState != 1 ) 
     39                        { 
     40                        set ACTIVATION to 1; 
     41                        mmState = 1; 
     42                        } 
     43                } 
     44                else if( mmState != 0 ) 
     45                { 
     46                        set ACTIVATION to 0; 
     47                        mmState = 0; 
     48                } 
     49                sleep 10; 
     50        } 
    3951} 
    4052 
     
    4658        } 
    4759        start-script RockOnWaves(); 
     60        start-script ImAMetalMaker(); 
    4861        while( TRUE ) 
    4962        { 
     
    7386} 
    7487 
    75 ImAMetalMaker() 
    76 { 
    77         while( get BUILD_PERCENT_LEFT ) 
    78         { 
    79                 sleep 150; 
    80         } 
    81         mmState = -1; 
    82         while( TRUE ) 
    83         { 
    84                 if( Active == 1 ) 
    85                 { 
    86                         if( mmState != 1 ) 
    87                         { 
    88                         set ACTIVATION to 1; 
    89                         mmState = 1; 
    90                         } 
    91                 } 
    92                 else if( mmState != 0 ) 
    93                 { 
    94                         set ACTIVATION to 0; 
    95                         mmState = 0; 
    96                 } 
    97                 sleep 10; 
    98         } 
    99 } 
    100  
    10188Create() 
    10289{ 
    10390        start-script SmokeUnit(); 
    104         call-script ImAMetalMaker(); 
    10591} 
    10692 
  • branches/BAR/scripts/corfmmm.bos

    r5379 r5859  
    66piece  base, fan; 
    77 
    8 static-var  Static_Var_1, mmState, Active; 
     8static-var  mmState, Active; 
    99 
    1010RockOnWaves() 
     
    2929} 
    3030 
     31Go() 
     32{ 
     33        spin fan around y-axis speed <300.000000> accelerate <10>; 
     34} 
     35 
     36Stop() 
     37{ 
     38        stop-spin fan around y-axis decelerate <5>; 
     39        sleep 30; 
     40} 
     41 
     42ImAMetalMaker() 
     43{ 
     44        mmState = -1; 
     45        while( TRUE ) 
     46        { 
     47                if( Active == 1 ) 
     48                { 
     49                        if( mmState != 1 ) 
     50                        { 
     51                                call-script Go(); 
     52                                mmState = 1; 
     53                        } 
     54                } 
     55                else if( mmState != 0 ) 
     56                { 
     57                        call-script Stop(); 
     58                        mmState = 0; 
     59                } 
     60                sleep 1000; 
     61        } 
     62} 
     63 
    3164SmokeUnit(healthpercent, sleeptime, smoketype) 
    3265{ 
     
    3669        } 
    3770        start-script RockOnWaves(); 
     71        start-script ImAMetalMaker(); 
    3872        while( TRUE ) 
    3973        { 
     
    5791} 
    5892 
    59 Go() 
    60 { 
    61         spin fan around y-axis speed <300.000000> accelerate <10>; 
    62 } 
    63  
    64 Stop() 
    65 { 
    66         stop-spin fan around y-axis decelerate <5>; 
    67         sleep 30; 
    68 } 
    69  
    7093MMStatus(State) 
    7194{ 
     
    7497} 
    7598 
    76 ImAMetalMaker() 
    77 { 
    78         while( get BUILD_PERCENT_LEFT ) 
    79         { 
    80                 sleep 150; 
    81         } 
    82         mmState = -1; 
    83         while( TRUE ) 
    84         { 
    85                 if( Active == 1 ) 
    86                 { 
    87                         if( mmState != 1 ) 
    88                         { 
    89                                 call-script Go(); 
    90                                 mmState = 1; 
    91                         } 
    92                 } 
    93                 else if( mmState != 0 ) 
    94                 { 
    95                         call-script Stop(); 
    96                         mmState = 0; 
    97                 } 
    98                 sleep 1000; 
    99         } 
    100 } 
    101  
    10299Create() 
    103100{        
    104101        start-script SmokeUnit(); 
    105         call-script ImAMetalMaker(); 
    106         Static_Var_1 = 0; 
    107102} 
    108103 
  • branches/BAR/scripts/cormakr.bos

    r5120 r5859  
    88static-var  mmState, Active; 
    99 
     10ImAMetalMaker() 
     11{ 
     12        mmState = -1; 
     13        while( TRUE ) 
     14        {        
     15                if (Active == 1) 
     16                { 
     17                        if (mmState != 1) { 
     18                                set ACTIVATION to 1; 
     19                                mmState = 1; 
     20                        } 
     21                } 
     22                else 
     23                { 
     24                        if (mmState != 0) { 
     25                                set ACTIVATION to 0; 
     26                                mmState = 0; 
     27                        } 
     28                } 
     29                sleep 1000; 
     30        } 
     31} 
     32 
    1033SmokeUnit(healthpercent, sleeptime, smoketype) 
    1134{ 
     
    1437                sleep 400; 
    1538        } 
     39        start-script ImAMetalMaker(); 
    1640        while( TRUE ) 
    1741        { 
     
    4165} 
    4266 
    43 ImAMetalMaker() 
     67Create() 
    4468{ 
    45         while( get BUILD_PERCENT_LEFT ) 
    46         { 
    47                 sleep 150; 
    48         } 
    49         mmState = -1; 
    50         while( TRUE ) 
    51         {        
    52                 if (Active == 1) 
    53                 { 
    54                         if (mmState != 1) { 
    55                                 set ACTIVATION to 1; 
    56                                 mmState = 1; 
    57                         } 
    58                 } 
    59                 else 
    60                 { 
    61                         if (mmState != 0) { 
    62                                 set ACTIVATION to 0; 
    63                                 mmState = 0; 
    64                         } 
    65                 } 
    66                 sleep 1000; 
    67         } 
     69        start-script SmokeUnit(); 
    6870} 
    6971 
    70 Create() 
    71 { 
    72  
    73         call-script ImAMetalMaker(); 
    74         start-script SmokeUnit(); 
    75  
    76 } 
    7772SweetSpot(piecenum) 
    7873{ 
  • branches/BAR/scripts/cormmkr.bos

    r5120 r5859  
    88piece  base, fan, tank1, tank2; 
    99 
    10 static-var  Static_Var_1, mmState, Active; 
     10static-var  mmState, Active; 
    1111 
    1212 
    1313activatescr() 
    1414{ 
    15         spin fan around y-axis speed <300.000000> accelerate <10>; 
    16          
    17         //set-signal-mask SIG_ANIM; 
    18         while (TRUE) 
    19         { 
    20          
    21                 move tank1 to y-axis [1.800000] speed [5.000000]; 
    22                 move tank2 to y-axis [-2.300000] speed [5.000000]; 
    23  
    24                 sleep 1000; 
    25                  
    26                 move tank1 to y-axis [0.000000] speed [5.000000]; 
    27                 move tank2 to y-axis [0.000000] speed [5.000000]; 
    28                 sleep 1000; 
    29          
    30         } 
    31          
     15        spin fan around y-axis speed <300.000000> accelerate <10>;               
    3216} 
    3317 
     
    4024} 
    4125 
     26Go() 
     27{ 
     28        call-script activatescr(); 
     29        set ARMORED to 0;  //Not needed as MM in BAR have no damage modifyer tag set 
     30} 
     31 
     32Stop() 
     33{ 
     34        set ARMORED to 1; 
     35        call-script deactivatescr(); 
     36} 
     37 
     38MovementControl() 
     39{ 
     40        while (TRUE) 
     41        { 
     42                while (mmState == 1) 
     43                { 
     44                        move tank1 to y-axis [1.800000] speed [5.000000]; 
     45                        move tank2 to y-axis [-2.300000] speed [5.000000]; 
     46 
     47                        sleep 1000; 
     48                 
     49                        move tank1 to y-axis [0.000000] speed [5.000000]; 
     50                        move tank2 to y-axis [0.000000] speed [5.000000]; 
     51                        sleep 1000; 
     52                        } 
     53                        sleep 100; 
     54        }        
     55} 
     56 
     57ImAMetalMaker() 
     58{ 
     59        mmState = -1; 
     60        while( TRUE ) 
     61        { 
     62                if (Active == 1) 
     63                { 
     64                        if (mmState != 1) { 
     65                                call-script Go(); 
     66                                mmState = 1; 
     67                        } 
     68                } 
     69                else 
     70                { 
     71                        if (mmState != 0) { 
     72                                call-script Stop(); 
     73                                mmState = 0; 
     74                        } 
     75                } 
     76                sleep 1000; 
     77        } 
     78} 
     79 
    4280SmokeUnit(healthpercent, sleeptime, smoketype) 
    4381{ 
     
    4684                sleep 400; 
    4785        } 
     86        start-script MovementControl(); 
     87        start-script ImAMetalMaker(); 
    4888        while( TRUE ) 
    4989        { 
     
    67107} 
    68108 
    69 Go() 
    70 { 
    71         if( Static_Var_1 ) 
    72         { 
    73                 set ACTIVATION to 0; 
    74                 return (0); 
    75         } 
    76         //signal SIG_ANIM; 
    77         call-script activatescr(); 
    78         set ARMORED to 0; 
    79 } 
    80  
    81 Stop() 
    82 { 
    83         set ARMORED to 1; 
    84         //signal SIG_ANIM; 
    85         call-script deactivatescr(); 
    86 } 
    87  
    88109MMStatus(State) 
    89110{ 
     
    92113} 
    93114 
    94 ImAMetalMaker() 
    95 { 
    96         while( get BUILD_PERCENT_LEFT ) 
    97         { 
    98                 sleep 150; 
    99         } 
    100         mmState = -1; 
    101         while( TRUE ) 
    102         { 
    103                 if( Active == 1 ) 
    104                 { 
    105                         if( mmState != 1 ) 
    106                         { 
    107                                 call-script Go(); 
    108                                 mmState = 1; 
    109                         } 
    110                 } 
    111                 else if( mmState != 0 ) 
    112                 { 
    113                         call-script Stop(); 
    114                         mmState = 0; 
    115                 } 
    116                 sleep 1000; 
    117         } 
    118 } 
    119  
    120115Create() 
    121116{ 
    122         spin fan around y-axis speed <30.000000> accelerate <3.000000>; 
    123         call-script ImAMetalMaker(); 
    124117        start-script SmokeUnit(); 
    125         Static_Var_1 = 0; 
    126         while( get BUILD_PERCENT_LEFT ) 
    127         { 
    128                 sleep 1000; 
    129         } 
    130         set ARMORED to 1; 
    131 } 
    132  
    133 HitByWeapon(anglex, anglez) 
    134 { 
    135         if( get ACTIVATION ) 
    136         { 
    137                 Static_Var_1 = 1; 
    138         } 
    139         if( Static_Var_1 ) 
    140         { 
    141                 signal 2; 
    142                 set-signal-mask 2; 
    143                 set ACTIVATION to 0; 
    144                 sleep 8000; 
    145                 Static_Var_1 = 0; 
    146                 set ACTIVATION to 100; 
    147         } 
    148118} 
    149119 
Note: See TracChangeset for help on using the changeset viewer.