Ir para conteúdo
  • Cadastre-se

Derivado [EXP2.0] Olá estou com muitos erros na minha EXP2.0


Posts Recomendados


[16/02/2016 10:13:17] [Error - CreatureScript Interface] 
[16/02/2016 10:13:17] data/creaturescripts/scripts/exp2.0.lua:onStatsChange
[16/02/2016 10:13:17] Description: 
[16/02/2016 10:13:17] data/creaturescripts/scripts/exp2.0.lua:676: attempt to index field '?' (a nil value)
[16/02/2016 10:13:17] stack traceback:
[16/02/2016 10:13:17]     data/creaturescripts/scripts/exp2.0.lua:676: in function <data/creaturescripts/scripts/exp2.0.lua:63>

 

local combats = {                         --alterado v1.6 \/
[PSYCHICDAMAGE] = {cor = COLOR_PSYCHIC},
[GRASSDAMAGE] = {cor = COLOR_GRASS},
[POISONEDDAMAGE] = {cor = COLOR_GRASS},
[FIREDAMAGE] = {cor = COLOR_FIRE2},                         
[BURNEDDAMAGE] = {cor = COLOR_BURN},
[WATERDAMAGE] = {cor = COLOR_WATER},
[ICEDAMAGE] = {cor = COLOR_ICE},
[NORMALDAMAGE] = {cor = COLOR_NORMAL},
[FLYDAMAGE] = {cor = COLOR_FLYING},           
[GHOSTDAMAGE] = {cor = COLOR_GHOST},
[GROUNDDAMAGE] = {cor = COLOR_GROUND},
[ELECTRICDAMAGE] = {cor = COLOR_ELECTRIC},
[ROCKDAMAGE] = {cor = COLOR_ROCK},
[BUGDAMAGE] = {cor = COLOR_BUG},
[FIGHTDAMAGE] = {cor = COLOR_FIGHTING},
[DRAGONDAMAGE] = {cor = COLOR_DRAGON},
[POISONDAMAGE] = {cor = COLOR_POISON},
[DARKDAMAGE] = {cor = COLOR_DARK},               
[STEELDAMAGE] = {cor = COLOR_STEEL},
[MIRACLEDAMAGE] = {cor = COLOR_PSYCHIC},  
[DARK_EYEDAMAGE] = {cor = COLOR_GHOST},
[SEED_BOMBDAMAGE] = {cor = COLOR_GRASS},
[SACREDDAMAGE] = {cor = COLOR_FIRE2}, 
}

--alterado v1.5  tabelas agora estao em lib/configuration.lua
local function sendPlayerDmgMsg(cid, text)
    if not isCreature(cid) then return true end
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, text)
end

local races = {
[4] = {cor = COLOR_FIRE2},
[6] = {cor = COLOR_WATER},
[7] = {cor = COLOR_NORMAL},
[8] = {cor = COLOR_FIRE2},
[9] = {cor = COLOR_FIGHTING},
[10] = {cor = COLOR_FLYING},
[11] = {cor = COLOR_GRASS},
[12] = {cor = COLOR_POISON},
[13] = {cor = COLOR_ELECTRIC},
[14] = {cor = COLOR_GROUND},
[15] = {cor = COLOR_PSYCHIC},
[16] = {cor = COLOR_ROCK},
[17] = {cor = COLOR_ICE},
[18] = {cor = COLOR_BUG},
[19] = {cor = COLOR_DRAGON},
[20] = {cor = COLOR_GHOST},
[21] = {cor = COLOR_STEEL},
[22] = {cor = COLOR_DARK},
[1] = {cor = 180},
[2] = {cor = 180},
[3] = {cor = 180},
[5] = {cor = 180},
}

local damages = {GROUNDDAMAGE, ELECTRICDAMAGE, ROCKDAMAGE, FLYDAMAGE, BUGDAMAGE, FIGHTINGDAMAGE, DRAGONDAMAGE, POISONDAMAGE, DARKDAMAGE, STEELDAMAGE}
local fixdmgs = {PSYCHICDAMAGE, COMBAT_PHYSICALDAMAGE, GRASSDAMAGE, FIREDAMAGE, WATERDAMAGE, ICEDAMAGE, NORMALDAMAGE, GHOSTDAMAGE}
local ignored = {POISONEDDAMAGE, BURNEDDAMAGE}                --alterado v1.6
local cannotkill = {BURNEDDAMAGE, POISONEDDAMAGE}

function onStatsChange(cid, attacker, type, combat, value)

if isPlayer(cid) and #getCreatureSummons(cid) <= 0 and type == STATSCHANGE_HEALTHLOSS and getTileInfo(getThingPos(cid)).protection then return false end
if isSummon(cid) and getTileInfo(getThingPos(cid)).protection and type == STATSCHANGE_HEALTHLOSS then return false end

if isWithFear(attacker) then return false end
if isParalyze(attacker) then return false end

if combat == FLYSYSTEMDAMAGE then return false end
if isPlayer(cid) and getCreatureOutfit(cid).lookType == 814 then return false end -- TV
if not isCreature(attacker) then  --alterado v1.5 cid == attacker
    if not isInArray(fixdamages, combat) and combats[combat] then
        doSendAnimatedText(getThingPos(cid), value, combats[combat].cor)
    end
return true
end
local damageCombat = combat
if getPlayerStorageValue(cid, 43934) >= 1 and type == STATSCHANGE_HEALTHLOSS then
    setPlayerStorageValue(cid, 43934, -1)
    docastspell(cid, "Destiny Bond2")
end
if combat == WHIRLDAMAGE then
    if getCreatureName(attacker) == "Rhyperior" then
        damageCombat = GROUNDDAMAGE
    elseif isInArray({"Forretress", "Shiny Forretress"}, getCreatureName(attacker)) then
        damageCombat = STEELDAMAGE
    else
        damageCombat = FLYDAMAGE
    end
end
if combat == WHIRLDAMAGE then
    pos = getThingPosWithDebug(cid)
    dist = 1
    if getCreatureLookDir(attacker) == 0 then
        newpos = {x = pos.x, y = pos.y - dist, z = pos.z}
    elseif getCreatureLookDir(attacker) == 1 then
        newpos = {x = pos.x + dist, y = pos.y, z = pos.z}
    elseif getCreatureLookDir(attacker) == 2 then                
        newpos = {x = pos.x, y = pos.y + dist, z = pos.z}
    elseif getCreatureLookDir(attacker) == 3 then
        newpos = {x = pos.x - dist, y = pos.y, z = pos.z}
    end
    if isWalkable(newpos) and not isInArray(waters, getTileInfo(newpos).itemid) then
        doTeleportThing(cid, newpos)
    end
    if notWhirlDamage then return false end
end
    --------------------------------------------------
--alterado v1.6  retirado os combats sleep_powder e poison_powder daki!
--------------------------------------------------
if type == STATSCHANGE_HEALTHGAIN then
    if cid == attacker then
    return true
    end
    if isSummon(cid) and isSummon(attacker) and canAttackOther(cid, attacker) == "Cant" then
    return false
    end
return true
end
--------------------------------------------------
if isMonster(cid) then
local valor = value
   if not pokes[getCreatureName(cid)] and damageCombat == COMBAT_PHYSICALDAMAGE then
      valor = getOffense(attacker) * playerDamageReduction
      doCreatureAddHealth(cid, -math.abs(valor), 3, races[7].cor)                       --alterado v1.6 dano nos npcs
      return false
   elseif not pokes[getCreatureName(cid)] and damageCombat ~= COMBAT_PHYSICALDAMAGE then
      doCreatureAddHealth(cid, -math.abs(valor), 3, combats[damageCombat].cor)
      return false
   end
end
--------------------------------------------------
if isPlayer(attacker) then

    local valor = value
    if valor > getCreatureHealth(cid) then
        valor = getCreatureHealth(cid)
    end

    if combat == COMBAT_PHYSICALDAMAGE then
    return false
    end

    if combat == PHYSICALDAMAGE then
    doSendMagicEffect(getThingPos(cid), 3)
    doSendAnimatedText(getThingPos(cid), valor, races[getMonsterInfo(getCreatureName(cid)).race].cor)
    end

    if combats[damageCombat] and not isInArray(fixdmgs, damageCombat) then
    doSendAnimatedText(getThingPos(cid), valor, combats[damageCombat].cor)
    end

    if #getCreatureSummons(attacker) >= 1 and not isInArray({POISONEDDAMAGE, BURNEDDAMAGE}, combat) then
        doPlayerSendTextMessage(attacker, MESSAGE_STATUS_DEFAULT, "Your "..getPokeName(getCreatureSummons(attacker)[1]).." dealt "..valor.." damage to "..getSomeoneDescription(cid)..".")
    end

return true
end
--------------------------------------------------
if isPlayer(cid) and #getCreatureSummons(cid) >= 1 and type == STATSCHANGE_HEALTHLOSS then
return false                                                                           
end
--------------------------------------------------
if isPlayer(cid) and #getCreatureSummons(cid) <= 0 and type == STATSCHANGE_HEALTHLOSS then

if isSummon(attacker) or isPlayer(attacker) then
   if canAttackOther(cid, attacker) == "Cant" then return false end
end

    local valor = 0
        if combat == COMBAT_PHYSICALDAMAGE then
            valor = getOffense(attacker)
        else
            valor = getSpecialAttack(attacker)
        end

    valor = valor * playerDamageReduction
    valor = valor * math.random(83, 117) / 100

    if valor >= getCreatureHealth(cid) then
        valor = getCreatureHealth(cid)
    end

    valor = math.floor(valor)

    if valor >= getCreatureHealth(cid) then
       if getPlayerStorageValue(cid, 6598754) >= 1 or getPlayerStorageValue(cid, 6598755) >= 1 then
          setPlayerStorageValue(cid, 6598754, -1)
          setPlayerStorageValue(cid, 6598755, -1)
          doRemoveCondition(cid, CONDITION_OUTFIT)             --alterado v1.7
          doTeleportThing(cid, posBackPVP, false) --pos pra onde o player vai ser teleportado quando morrer no pvp! configurar no lib/configuration.lua!!
          doCreatureAddHealth(cid, getCreatureMaxHealth(cid))
          return true
       end
       if getPlayerStorageValue(cid, 89050) and getPlayerStorageValue(cid, 89050) >= 1 then
          doCreatureAddHealth(cid, getCreatureMaxHealth(cid))
       return true
       end
       if getPlayerStorageValue(cid, 17001) >= 1 or getPlayerStorageValue(cid, 17000) >= 1 or getPlayerStorageValue(cid, 63215) >= 1 then
          doRemoveCondition(cid, CONDITION_OUTFIT)
          setPlayerStorageValue(cid, 17000, 0)
          setPlayerStorageValue(cid, 17001, 0)
          setPlayerStorageValue(cid, 63215, -1) 
          doChangeSpeed(cid, PlayerSpeed)
local item = getPlayerSlotItem(cid, 8)
local btype = getPokeballType(item.itemid)
      if #getCreatureSummons(cid) <= 0 then
        if isInArray(pokeballs[btype].all, item.itemid) then
            doTransformItem(item.uid, pokeballs[btype].off)
            doItemSetAttribute(item.uid, "hp", 0)
        end
      end
      end

   ------------Survival-------------------
if getPlayerStorageValue(cid, 17769) > 0 then
doCreatureAddHealth(cid, getCreatureMaxHealth(cid))
doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))
setPlayerStorageValue(cid, 17769, -2)
return true
end
      ------------Edited Golden Arena------------------   --alterado v1.7 \/\/
      if getPlayerStorageValue(cid, 22545) == 1 then
         if getGlobalStorageValue(22550) == 1 then
            doPlayerSendTextMessage(cid, 20, "You are the last survivor of the golden arena! Take your reward!")
            doPlayerAddItem(cid, 2152, getPlayerStorageValue(cid, 22551)*2)  --recompensa, a storage ali eh qnts waves o player guento!
            setPlayerStorageValue(cid, 22545, -1)
            doTeleportThing(cid, getClosestFreeTile(cid, getClosestFreeTile(cid, posBackGolden)), false)  
            doCreatureAddHealth(cid, getCreatureMaxHealth(cid)-getCreatureHealth(cid))
            setPlayerRecordWaves(cid)     
            endGoldenArena()
            return true           
         else
             setGlobalStorageValue(22550, getGlobalStorageValue(22550)-1)
             setPlayerStorageValue(cid, 22545, -1)
             doTeleportThing(cid, getClosestFreeTile(cid, posBackGolden), false)    
             doCreatureAddHealth(cid, getCreatureMaxHealth(cid)-getCreatureHealth(cid))
             setPlayerRecordWaves(cid)     
             return true
         end 
     end
     -------------------------------------------    /\/\
     ---
     local corpse = doCreateItem(3058, 1, getThingPos(cid))
     doDecayItem(corpse)
     doItemSetAttribute(corpse, "pName", getCreatureName(cid))          --alterado v1.7 coloca corpse quando o player morre!
     doItemSetAttribute(corpse, "attacker", getCreatureName(attacker))
     doItemSetAttribute(corpse, "article", getPlayerSex(cid) == 0 and "She" or "He")
     ---   
    end
    setPlayerStorageValue(cid, 31040, -1)
    doCreatureAddHealth(cid, -valor, 3, 180)
    if not isPlayer(cid) then
    addEvent(sendPlayerDmgMsg, 5, cid, "You lost "..valor.." hitpoints due to an attack from "..getSomeoneDescription(attacker)..".")
    end
return false
end
--------------------------------------------------
if isMonster(attacker) and getPlayerStorageValue(attacker, 201) ~= -1 then
    if isPlayer(cid) then
    return false
    end
    if getPlayerStorageValue(getCreatureMaster(cid), ginasios[getPlayerStorageValue(attacker, 201)].storage) ~= 1 then
    return false
    end
end
--------------------------------------------------
if isMonster(cid) and getPlayerStorageValue(cid, 201) ~= -1 then
    if getPlayerStorageValue(getCreatureMaster(attacker), ginasios[getPlayerStorageValue(cid, 201)].storage) ~= 1 then
    return false
    end
end
--------------------------------------------------
if ehMonstro(cid) and ehMonstro(attacker) then 
return false                                          --edited monstro nao atacar monstro
end
--------------------------------------------------
--------------------REFLECT-----------------------
if getPlayerStorageValue(cid, 21099) >= 1 and combat ~= COMBAT_PHYSICALDAMAGE then
   if not isInArray(reflectBlock, getPlayerStorageValue(attacker, 21102)) then
      doSendMagicEffect(getThingPosWithDebug(cid), 135)
      doSendAnimatedText(getThingPosWithDebug(cid), "REFLECT", COLOR_GRASS)
      addEvent(docastspell, 100, cid, getPlayerStorageValue(attacker, 21102))
      if getCreatureName(cid) == "Wobbuffet" or getCreatureName(cid) == "Shiny Wobbuffet" then
         doRemoveCondition(cid, CONDITION_OUTFIT)
      elseif getCreatureName(cid) == "Ditto" and isSummon(cid) then
         doSetCreatureOutfit(cid, {lookType = getItemAttribute(getPlayerSlotItem(getCreatureMaster(cid), 8).uid, "transOutfit")}, -1)
      end
      setPlayerStorageValue(cid, 21099, -1)                    --alterado v1.6
      setPlayerStorageValue(cid, 21100, 1)
      setPlayerStorageValue(cid, 21101, attacker)
      setPlayerStorageValue(cid, 21103, getTableMove(attacker, getPlayerStorageValue(attacker, 21102)).f)
      setPlayerStorageValue(cid, 21104, getCreatureOutfit(attacker).lookType)
      return false
   end
end
-------------------------------------------------

local multiplier = 1

   if isCreature(cid) then
      poketype1 = pokes[getCreatureName(cid)].type        --alterado v1.6
      poketype2 = pokes[getCreatureName(cid)].type2
   end
   if not poketype1 or not poketype2 then return false end  --alterado v1.6 
   
    if getCreatureCondition(cid, CONDITION_INVISIBLE) then
    return false
    end
if damageCombat ~= COMBAT_PHYSICALDAMAGE and not isInArray(ignored, damageCombat) then
    if effectiveness[damageCombat] then
    if isInArray(effectiveness[damageCombat].super, poketype1) then
        multiplier = multiplier + 0.5
    end
    if isInArray(effectiveness[damageCombat].super, poketype2) then
        multiplier = multiplier + 0.5
    end
    if isInArray(effectiveness[damageCombat].weak, poketype1) then    --Edited effetivenes = pxg... ;p
        multiplier = multiplier - 0.25
    end
    if isInArray(effectiveness[damageCombat].weak, poketype2) then
        multiplier = multiplier - 0.25
    end
    if isInArray(effectiveness[damageCombat].non, poketype1) or isInArray(effectiveness[damageCombat].non, poketype2) then
      if isInArray(specialabilities["foresight"], getCreatureName(attacker)) then   --alterado v1.5
         multiplier = 0.5                 
      end
      if isLegendaryPokemon(getCreatureName(attacker)) then
         multiplier = 0.5
      end
    end
    end
elseif combat == COMBAT_PHYSICALDAMAGE then
    if isGhostPokemon(cid) then               --alterado v1.3
       if not isInArray(specialabilities["foresight"], getCreatureName(attacker)) then  --passiva Foresight!!
          doSendMagicEffect(getThingPos(cid), 3)     
          return false
       end
    end
        local cd = getPlayerStorageValue(attacker, conds["Miss"])
        local cd2 = getPlayerStorageValue(attacker, conds["Confusion"]) 
        local cd3 = getPlayerStorageValue(attacker, conds["Stun"]) 
        if cd >= 0 or cd2 >= 0 or cd3 >= 0 then
           if math.random(1, 100) > 50 then  --Edited miss system  -- 50% chance de da miss no atk fisico
              doSendMagicEffect(getThingPos(cid), 211)
              doSendAnimatedText(getThingPos(attacker), "MISS", 215)         --alterado v1.5
              return false
           end
        end
end
--------------------------------------------------
local valor = value

    if multiplier == 1.5 and poketype2 == "no type" then
        multiplier = 2                                         --alterado v1.6
    elseif multiplier == 1.5 and poketype2 ~= "no type" then    
        multiplier = 1.75       
    elseif multiplier == 1.25 then    --edited effetivines = pxg
        multiplier = 1    
    end

--------------------------------------------------
    if isSummon(cid) and isSummon(attacker) then
        if getCreatureMaster(cid) == getCreatureMaster(attacker) then
           return false
        end
        if canAttackOther(cid, attacker) == "Cant" then
           return false
        end
    end

    valor = valor * multiplier

    if isSummon(attacker) then
        valor = valor * getHappinessRate(attacker)
    else
        valor = valor * summonReduction
    end

    valor = math.floor(valor)
    
    if combat == COMBAT_PHYSICALDAMAGE then
        LvLP = getPokemonLevel(attacker)
        if isSummon(attacker) then
            if LvLP > getPlayerLevel(getCreatureMaster(attacker)) then
                LvLP = getPlayerLevel(getCreatureMaster(attacker))
            end
        end
       block = 1 - (((2 * LvLP + 10) / 250) * (getOffense(attacker)) / (getDefense(cid) * getPokemonLevel(attacker)) + 2)
       --block = 1 - (((2 * LvLP + 10) / 250) * ((pokes[getCreatureName(attacker)].offense * getPokemonLevel(attacker)) / (pokes[getCreatureName(cid)].defense * getPokemonLevel(attacker))) + 2)
        if block < 0 then
            block = 1 - (block)
        end
        
        lvMin = LvLP - 2
        lvMax = LvLP + 2
        valor = math.floor((math.random(lvMin, lvMax) * block) * 2.5)
       
       
        if isSummon(cid) then
            if hasHeldItem(getPlayerSlotItem(getCreatureMaster(cid), 8).uid) then
                if getHeldName(getPlayerSlotItem(getCreatureMaster(cid), 8).uid) == "return" then
                    if isMonster(attacker) and not isSummon(attacker) then
                        valorReturn = math.abs(valor * helds.returnHunt[getHeldTier(getPlayerSlotItem(getCreatureMaster(cid), 8).uid)])
                    else
                        valorReturn = math.abs(valor * helds.returnDuel[getHeldTier(getPlayerSlotItem(getCreatureMaster(cid), 8).uid)])
                    end
                    if getCreatureName(cid) == "Blissey" then
                        valorReturn = valorReturn / 4
                    end
                    doTargetCombatHealth(getCreatureMaster(cid), attacker, PHYSICALDAMAGE, -valorReturn, -valorReturn, 255)
                end
            end
        end
       if isInArray(specialabilities["counter"], getCreatureName(cid)) then
          if math.random(1, 100) <= 10 then
             doCreatureAddHealth(attacker, -valor, 3, 180)    --alterado v1.5
             valor = 0
             doSendAnimatedText(getThingPosWithDebug(cid), "COUNTER", 215)
          end
       end
       
          
    else
       valor = valor / getDefense(cid) 
    end
    
    -------------------------Edited CLAN SYSTEM-----------------------------------
    if isSummon(attacker) and getPlayerStorageValue(getCreatureMaster(attacker), 86228) >= 1 then
      valor = valor*getClanPorcent(getCreatureMaster(attacker), damageCombat, "atk")                           --alterado v1.3
    elseif isSummon(cid) and getPlayerStorageValue(getCreatureMaster(cid), 86228) >= 1 then
       valor = valor - (valor*getClanPorcent(getCreatureMaster(cid), damageCombat, "def", pokes[getCreatureName(cid)].type, pokes[getCreatureName(cid)].type2))
    end
    -----------------------------------------------------------------------
    ---------------------- FEAR / ROAR ------------------------------------
    if getPlayerStorageValue(attacker, conds["Fear"]) >= 1 then         --alterado!!
    return true
    end
    
    if isParalyze(attacker) then return false end
--------------------------------------------------------------------------
if damageCombat ~= COMBAT_PHYSICALDAMAGE and not isInArray(ignored, damageCombat) then
    if effectiveness[damageCombat] then
   if isInArray(effectiveness[damageCombat].non, poketype1) or isInArray(effectiveness[damageCombat].non, poketype2) then
      if not isInArray(specialabilities["foresight"], getCreatureName(attacker)) then     --alterado v1.6
         valor = valor * 0                      --alterado v1.5
      end
   end
    end
end

if damageCombat == GROUNDDAMAGE then
   if isInArray(specialabilities["levitate"], getCreatureName(cid)) then
      valor = 0                      --alterado v1.5
   end
end
-----------------------------------------------------------------------------
local p = getThingPos(cid)                     
if p.x == 1 and p.y == 1 and p.z == 10 then
return false                                    
end

if getPlayerStorageValue(cid, 9658783) == 1 then
return false     --imune
end
-----------------------------------------------------------------------------

--------------- FIGHT MODE -----------------------
if useOTClient then
if isSummon(cid) then                                  --alterado v1.7 soh funciona com o OTClient q eu disponibilizei...
   local master = getCreatureMaster(cid)
   if getPlayerStorageValue(master, 248759) == 1 then
      valor = valor * 1.1                                    --ta aumentando 10% de dano/def e diminuindo 10% de dano/def
   elseif getPlayerStorageValue(master, 248759) == 3 then
      valor = valor * 0.9
   end
end
if isSummon(attacker) then
   local master = getCreatureMaster(attacker)
   if getPlayerStorageValue(master, 248759) == 1 then
      valor = valor * 1.1
   elseif getPlayerStorageValue(master, 248759) == 3 then
      valor = valor * 0.9
   end
end 
end   
-----------------------------------------------------------------------------
    if valor >= getCreatureHealth(cid) then
        if isInArray(cannotKill, combat) and isPlayer(cid) then
            valor = getCreatureHealth(cid) - 1
        else
            valor = getCreatureHealth(cid)
        end
    end
    valor = math.floor(valor)             --alterado v1.6
    if valor == getCreatureHealth(cid) then
        if getCreatureName(cid) == "Dusknoir" and getPlayerStorageValue(cid, 43935) <= 0 then
        doSendMagicEffect({x = getThingPos(cid).x + 1, y = getThingPos(cid).y + 1, z = getThingPos(cid).z}, 94)
        doCreatureAddHealth(cid, getCreatureMaxHealth(cid))
        setPlayerStorageValue(cid, 43935, 1)
        return false
        elseif getCreatureName(cid) == "Aggron" and getPlayerStorageValue(cid, 43935) <= 0 then
        docastspell(cid, "Sturdy")        
        setPlayerStorageValue(cid, 43935, 1)
        return false
    end
    end
    
------------------ SKILLs Q CURAM O ATTACKER ---------------------------------
local function doHeal(cid, amount)
if (getCreatureHealth(cid) + amount) >= getCreatureMaxHealth(cid) then
   amount = math.abs(getCreatureHealth(cid)-getCreatureMaxHealth(cid))
end
if getCreatureHealth(cid) ~= getCreatureMaxHealth(cid) then           --alterado v1.6
   doCreatureAddHealth(cid, amount)
   doSendAnimatedText(getThingPosWithDebug(cid), "+"..amount.."", 65) 
end
end
          
if damageCombat == PSYCHICDAMAGE or damageCombat == MIRACLEDAMAGE then
   if getPlayerStorageValue(attacker, 95487) >= 1 then
      doHeal(attacker, valor)
      setPlayerStorageValue(attacker, 95487, -1)                  --alterado v1.6
   end
elseif damageCombat == SEED_BOMBDAMAGE then
   doHeal(attacker, valor)
end
--------------------------------------------
----------SACRED FIRE-----------------------
if combat == SACREDDAMAGE and not ehNPC(cid) then    --alterado v1.6
   local ret = {}
   ret.id = cid
   ret.cd = 9
   ret.check = getPlayerStorageValue(cid, conds["Silence"])
   ret.eff = 39
   ret.cond = "Silence"

   doCondition2(ret)
end
---------------------------------------------
--------------Passiva Lifesteal Clobat------------
if combat == COMBAT_PHYSICALDAMAGE then
   if isInArray(lifestealPassive, getCreatureName(attacker)) then                    --alterado v1.4
      doCreatureAddHealth(attacker, math.floor(valor))
      doSendAnimatedText(getThingPos(attacker), "+"..math.floor(valor), 30)
   end
end

if getCreatureName(cid) == "Absol" then
    if damageCombat == DARKDAMAGE then
        setPlayerStorageValue(cid, 253, 1)
    end
end

if combat == COMBAT_PHYSICALDAMAGE or combat == PHYSICALDAMAGE then
    if getPlayerStorageValue(attacker, 51695) >= 1 then
        valor = math.floor(valor * 2)
    end
end
--------------------------------------------
    if isSummon(cid) then
        if hasHeldItem(getPlayerSlotItem(getCreatureMaster(cid), 8).uid) then
            if getHeldName(getPlayerSlotItem(getCreatureMaster(cid), 8).uid) == "return" then
                if isMonster(attacker) and not isSummon(attacker) then
                    valorReturn = math.abs(valor * helds.returnHunt[getHeldTier(getPlayerSlotItem(getCreatureMaster(cid), 8).uid)])
                else
                    valorReturn = math.abs(valor * helds.returnDuel[getHeldTier(getPlayerSlotItem(getCreatureMaster(cid), 8).uid)])
                end
                if getCreatureName(cid) == "Blissey" then
                    valorReturn = valorReturn / 4
                end
                doTargetCombatHealth(getCreatureMaster(cid), attacker, damageCombat, -valorReturn, -valorReturn, 255)
            end
        end
    end
    if isSummon(attacker) then
    if isParalyze(attacker) then return false end
        if combat == COMBAT_PHYSICALDAMAGE then
            doTargetCombatHealth(getCreatureMaster(attacker), cid, PHYSICALDAMAGE, -valor, -valor, 255)
            addEvent(doDoubleHit, 1000, attacker, cid, valor, races)      --alterado v1.6
        else
            doTargetCombatHealth(getCreatureMaster(attacker), cid, damageCombat, -valor, -valor, 255)
        end
    else
        if combat ~= COMBAT_PHYSICALDAMAGE then
            doCreatureAddHealth(cid, -math.abs(valor), 3, combats[damageCombat].cor)
        else
            doCreatureAddHealth(cid, -math.abs(valor), 3, races[getMonsterInfo(getCreatureName(cid)).race].cor)
            addEvent(doDoubleHit, 1000, attacker, cid, valor, races)   --alterado v1.6
        end

        if isSummon(cid) and valor ~= 0 then
            addEvent(sendPlayerDmgMsg, 5, getCreatureMaster(cid), "Your "..getCreatureName(cid).." lost "..valor.." hitpoints due to an attack from "..getSomeoneDescription(attacker)..".")
            addEvent(doPlayerSendCancel, 10, getCreatureMaster(cid), "#ph#,"..getCreatureHealth(cid)..","..getCreatureMaxHealth(cid).."")
        end

    end
    
    if damageCombat == FIREDAMAGE and not isBurning(cid) then
       local ret = {}
       ret.id = cid
       ret.cd = math.random(5, 12)
       ret.check = getPlayerStorageValue(cid, conds["Burn"])
       local lvl = isSummon(attacker) and getMasterLevel(attacker) or getPokemonLevel(attacker)
       damage = math.floor((getPokemonLevel(attacker)+lvl)/2)
       if isSummon(attacker) then
        if hasHeldItem(getPlayerSlotItem(getCreatureMaster(attacker), 8).uid) then
            if getHeldName(getPlayerSlotItem(getCreatureMaster(attacker), 8).uid) == "hellfire" then
                damage = math.floor(damage * helds.hellfire[getHeldTier(getPlayerSlotItem(getCreatureMaster(attacker), 8).uid)])
            end
        end
       end
       ret.damage = damage
       ret.cond = "Burn"
       
       doCondition2(ret)
    elseif damageCombat == POISONDAMAGE and not isPoisoned(cid) then
       local ret = {}
       ret.id = cid
       ret.cd = math.random(6, 15)
       ret.check = getPlayerStorageValue(cid, conds["Poison"])
       local lvl = isSummon(attacker) and getMasterLevel(attacker) or getPokemonLevel(attacker)
       damage = math.floor((getPokemonLevel(attacker)+lvl)/2)
       if isSummon(attacker) then
        if hasHeldItem(getPlayerSlotItem(getCreatureMaster(attacker), 8).uid) then
            if getHeldName(getPlayerSlotItem(getCreatureMaster(attacker), 8).uid) == "poison" then
                damage = math.floor(damage * helds.poison[getHeldTier(getPlayerSlotItem(getCreatureMaster(attacker), 8).uid)])
            end
        end
       end
       ret.damage = damage
       ret.cond = "Poison"
       
       doCondition2(ret)
    end
------------------------------------POTIONS-------------------------------------------
if isSummon(cid) and type == STATSCHANGE_HEALTHLOSS then
   if getPlayerStorageValue(cid, 173) >= 1 then
      if damageCombat ~= BURNEDDAMAGE and damageCombat ~= POISONEDDAMAGE then
         setPlayerStorageValue(cid, 173, -1)  --alterado v1.6
         doSendAnimatedText(getThingPos(cid), "LOST HEAL", 144)
     doPlayerSendCancel(getCreatureMaster(cid), "#ph#,"..getCreatureHealth(cid)..","..getCreatureMaxHealth(cid).."")
      end
   end
end

----------------------------------------PASSIVAS------------------------------------- --alterado v1.7 \/ 
passiveName = getCreatureName(cid)
if isSummon(cid) and isInArray({"Ditto", "Shiny Ditto"}, passiveName) then
    passiveName = getItemAttribute(getPlayerSlotItem(getCreatureMaster(cid), 8).uid, "transName") or getCreatureName(cid)
end

if isSummon(cid) then
    if hasHeldItem(getPlayerSlotItem(getCreatureMaster(cid), 8).uid) then
        if getHeldName(getPlayerSlotItem(getCreatureMaster(cid), 8).uid) == "elemental" then
            if math.random(1, 100) <= helds.elemental[getHeldTier(getPlayerSlotItem(getCreatureMaster(cid), 8).uid)] then
                docastspell(cid, "Elemental")
            end
        end
    end
end

if isSummon(cid) and isSummon(attacker) then
if valor >= getCreatureHealth(cid) or getCreatureHealth(cid) <= 0 then
local owner = getCreatureMaster(cid)
if getLivePokes(owner) <= 1 then
local pvpp = getPlayerStorageValue(getCreatureMaster(attacker), 89051) and getPlayerStorageValue(getCreatureMaster(attacker), 89051) or 0
setPlayerStorageValue(getCreatureMaster(attacker), 89051, pvpp + 1)
local pvplp = getPlayerStorageValue(getCreatureMaster(owner), 89052) and getPlayerStorageValue(getCreatureMaster(owner), 89052) or 0
setPlayerStorageValue(owner, 89052, pvplp + 1)
end
end
end
if passivesChances["Sheer Cold"][passiveName] and math.random(1, 100) <= passivesChances["Sheer Cold"][passiveName] then
   docastspell(cid, "Sheer Cold")
end
if passivesChances["Bone Spin"][passiveName] and math.random(1, 100) <= passivesChances["Bone Spin"][passiveName] then
   docastspell(cid, "Bone Slash")
end
if passivesChances["Rage"][passiveName] and math.random(1, 100) <= passivesChances["Rage"][passiveName] then
   docastspell(cid, "Rage")
end
if passivesChances["Night Daze"][passiveName] and math.random(1, 100) <= passivesChances["Night Daze"][passiveName] then
   docastspell(cid, "Night Daze")
end
if passivesChances["Spikes"][passiveName] and math.random(1, 100) <= passivesChances["Spikes"][passiveName] then
   docastspell(cid, "Spikes")
end
if passivesChances["Poison Powder"][passiveName] and math.random(1, 100) <= passivesChances["Poison Powder"][passiveName] then
   docastspell(cid, "Poison Powder")
end
-------------------------------------------Counter Helix------------------------------------
if passivesChances["Helix"][passiveName] and math.random(1, 100) <= passivesChances["Helix"][passiveName] then
   docastspell(cid, "Counter Helix")
end
-------------------------------------------Lava Counter/Electricity----------------------------
if passivesChances["Fire_Thunder"][passiveName] and math.random(1, 100) <= passivesChances["Fire_Thunder"][passiveName] then
   docastspell(cid, "Lava-Electricity")
end
---------------------------------------Stunning Confusion-----------------------------------------
if passivesChances["Stunning"][passiveName] and math.random(1, 100) <= passivesChances["Stunning"][passiveName] then  
   docastspell(cid, "Stunning Confusion")
end
-----------------------------------------Groundshock-----------------------------------
if passivesChances["Groundshock"][passiveName] and math.random(1, 100) <= passivesChances["Groundshock"][passiveName] then
   docastspell(cid, "Groundshock")
end
--------------------------------------Electric Charge---------------------------------------------
if passivesChances["Electric Charge"][passiveName] and math.random(1, 100) <= passivesChances["Electric Charge"][passiveName] then
   docastspell(cid, "Electric Charge", 0, 0)
end
-------------------------------------Melody------------------------------------
if passivesChances["Melody"][passiveName] and math.random(1, 100) <= passivesChances["Melody"][passiveName] then 
   docastspell(cid, "Melody")
end
------------------------------------- Dragon Fury / Fury ---------------------------------------
if passivesChances["Dragon Fury"][passiveName] and math.random(1, 100) <= passivesChances["Dragon Fury"][passiveName] then
   docastspell(cid, "Dragon Fury", 0, 0)
end
------------------------------------- Mega Drain ---------------------------------------
if passivesChances["Mega Drain"][passiveName] and math.random(1, 100) <= passivesChances["Mega Drain"][passiveName] then
   docastspell(cid, "Mega Drain")
end
------------------------------------- Spores Reaction ---------------------------------------
if isSummon(attacker) then
if passivesChances["Spores Reaction"][passiveName] and math.random(1, 100) <= passivesChances["Spores Reaction"][passiveName] then
   docastspell(cid, "Spores Reaction")
end
else
chance = passivesChances["Spores Reaction"][passiveName]
if chance and math.random(1, 100) <= (chance - 5) then
   docastspell(cid, "Spores Reaction")
end
end

------------------------------------ Amnesia ----------------------------------------   
if passivesChances["Amnesia"][passiveName] and math.random(1, 100) <= passivesChances["Amnesia"][passiveName] then 
   docastspell(cid, "Amnesia", 0, 0)
end
----------------------------------- Zen Mind -----------------------------------------
if passivesChances["Zen Mind"][passiveName] and isWithCondition(cid) and math.random(1, 100) <= passivesChances["Zen Mind"][passiveName] then
   docastspell(cid, "Zen Mind", 0, 0)
end
---------------------------------- Mirror Coat ---------------------------------------
if passivesChances["Mirror Coat"][passiveName] and math.random(1, 100) <= passivesChances["Mirror Coat"][passiveName] then   
   docastspell(cid, "Mirror Coat", 0, 0)
end
------------------------------------ Blaze -------------------------------------------
if passivesChances["Blaze"][passiveName] and math.random(1, 100) <= passivesChances["Blaze"][passiveName] then   
   docastspell(cid, "Blaze", 0, 0)
end
--------------------------------- Illusion -----------------------------------------
return false
end

                                                         Raafa.isaias23.png

                                                                                 

Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

  • Conteúdo Similar

    • Por LeoTK
      Salve galera neste tópico irei postar algumas prints do mapa do servidor para quem queira acompanhar e quem sabe até utilizar de inspiração para mapear o seu NTO.
       
      #Att 11/08/2022

       
       
       
       
      Konoha (Em Desenvolvimento)
       
       
       
       
    • Por DiigooMix
      Como o título já diz, será que alguém possui sprite do hitto e se possível as transformações dele?
    • Por OmegaZero
      Olá gostaria que alguém me ajudasse com uma "scripting" não sei se é pela mesma, seria o seguinte uma determinada arma teria a chance de dar double hit e não sei oque fazer alguem poderia ajudar?

      OBS:não sei se é o local correto se não for mova, desculpe
    • Por Madarasenju
      Olá galera do Tibia King, queria por uns npc's no meu server que não tem função de trade nem nada do tipo, queria que eles só andassem como enfeite, Rep+ Pra quem me ajudar... grato desde já.
    • Por SilenceRoot
      A magia é assim o você usa a a magia e ela ficará ativado por 10 segundos, até que o inimigo lance a primeira magia ou todos de uma vez, quando ele lançar a primeira magia, ele não lhe acertará ou seja esquivando dela, e logo em seguida será teletransportado aleatoriamente ao redor do inimigo que usou.
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo