-- ----------------------------------------------------------------- -- View update -- ----------------------------------------------------------------- local function animateFish(model) if model:isAlive() then local action = model:getAction() if "move_up" == action then model:runAnim("vertical_up") elseif "move_down" == action then model:runAnim("vertical_down") elseif "move_left" == action or "move_right" == action then model:runAnim("swam") elseif "turn" == action then model:runAnim("turn") elseif "activate" == action then model:setAnim("turn", 0) elseif "busy" == action then model:setAnim("turn", 0) else --NOTE: for talking see animateHead() bellow model:runAnim("rest") end else model:runAnim("skeleton") end end -- ----------------------------------------------------------------- local function animateHead(model) if model:isAlive() then local state = model:getState() if "talking" == state or model_isTalking(TALK_INDEX_BOTH) then if not model.talk_phase then model.talk_phase = random(3) elseif math.mod(game_getCycles(), 2) == 0 then model.talk_phase = math.mod( model.talk_phase + randint(1, 2), 3) end else model.talk_phase = false end local action = model:getAction() if "busy" == action then if model.talk_phase then model:setAnim("talk", model.talk_phase) else model:setAnim("turn", 0) end else if "talking" == state or model_isTalking(TALK_INDEX_BOTH) then model:useSpecialAnim("head_talking", model.talk_phase) elseif "pushing" == state then model:useSpecialAnim("head_pushing", 0) elseif random(100) < 6 then model:useSpecialAnim("head_blink", 0) end end end end -- ----------------------------------------------------------------- function animateUnits() for index, unit in pairs(getUnitTable()) do animateFish(unit) animateHead(unit) end end