• Our software update is now concluded. You will need to reset your password to log in. In order to do this, you will have to click "Log in" in the top right corner and then "Forgot your password?".
  • Welcome to PokéCommunity! Register now and join one of the best fan communities on the 'net to talk Pokémon and more! We are not affiliated with The Pokémon Company or Nintendo.

[Scripting Question] Natural Gift Not working - Pokemon Essentials V18

1
Posts
3
Years
    • Seen Mar 19, 2023
    Hello every time I use natural gift it is calculated as a normal type damage regardless of held berry

    Here is the script of the move

    #===============================================================================
    # Power and type depend on the user's held berry. Destroys the berry.
    # (Natural Gift)
    #===============================================================================
    class PokeBattle_Move_096 < PokeBattle_Move
    def initialize(battle,move)
    super
    @typeArray = {
    :NORMAL => [:CHILANBERRY],
    :FIRE => [:CHERIBERRY, :BLUKBERRY, :WATMELBERRY, :OCCABERRY],
    :WATER => [:CHESTOBERRY, :NANABBERRY, :DURINBERRY, :PASSHOBERRY],
    :ELECTRIC => [:PECHABERRY, :WEPEARBERRY, :BELUEBERRY, :WACANBERRY],
    :GRASS => [:RAWSTBERRY, :PINAPBERRY, :RINDOBERRY, :LIECHIBERRY],
    :ICE => [:ASPEARBERRY, :POMEGBERRY, :YACHEBERRY, :GANLONBERRY],
    :FIGHTING => [:LEPPABERRY, :KELPSYBERRY, :CHOPLEBERRY, :SALACBERRY],
    :POISON => [:ORANBERRY, :QUALOTBERRY, :KEBIABERRY, :PETAYABERRY],
    :GROUND => [:PERSIMBERRY, :HONDEWBERRY, :SHUCABERRY, :APICOTBERRY],
    :FLYING => [:LUMBERRY, :GREPABERRY, :COBABERRY, :LANSATBERRY],
    :PSYCHIC => [:SITRUSBERRY, :TAMATOBERRY, :PAYAPABERRY, :STARFBERRY],
    :BUG => [:FIGYBERRY, :CORNNBERRY, :TANGABERRY, :ENIGMABERRY],
    :ROCK => [:WIKIBERRY, :MAGOSTBERRY, :CHARTIBERRY, :MICLEBERRY],
    :GHOST => [:MAGOBERRY, :RABUTABERRY, :KASIBBERRY, :CUSTAPBERRY],
    :DRAGON => [:AGUAVBERRY, :NOMELBERRY, :HABANBERRY, :JABOCABERRY],
    :DARK => [:IAPAPABERRY, :SPELONBERRY, :COLBURBERRY, :ROWAPBERRY, :MARANGABERRY],
    :STEEL => [:RAZZBERRY, :PAMTREBERRY, :BABIRIBERRY],
    :FAIRY => [:ROSELIBERRY, :KEEBERRY]
    }
    @damageArray = {
    60 => [:CHERIBERRY, :CHESTOBERRY, :PECHABERRY, :RAWSTBERRY, :ASPEARBERRY,
    :LEPPABERRY, :ORANBERRY, :PERSIMBERRY, :LUMBERRY, :SITRUSBERRY,
    :FIGYBERRY, :WIKIBERRY, :MAGOBERRY, :AGUAVBERRY, :IAPAPABERRY,
    :RAZZBERRY, :OCCABERRY, :PASSHOBERRY, :WACANBERRY, :RINDOBERRY,
    :YACHEBERRY, :CHOPLEBERRY, :KEBIABERRY, :SHUCABERRY, :COBABERRY,
    :PAYAPABERRY, :TANGABERRY, :CHARTIBERRY, :KASIBBERRY, :HABANBERRY,
    :COLBURBERRY, :BABIRIBERRY, :CHILANBERRY, :ROSELIBERRY],
    70 => [:BLUKBERRY, :NANABBERRY, :WEPEARBERRY, :PINAPBERRY, :POMEGBERRY,
    :KELPSYBERRY, :QUALOTBERRY, :HONDEWBERRY, :GREPABERRY, :TAMATOBERRY,
    :CORNNBERRY, :MAGOSTBERRY, :RABUTABERRY, :NOMELBERRY, :SPELONBERRY,
    :PAMTREBERRY],
    80 => [:WATMELBERRY, :DURINBERRY, :BELUEBERRY, :LIECHIBERRY, :GANLONBERRY,
    :SALACBERRY, :PETAYABERRY, :APICOTBERRY, :LANSATBERRY, :STARFBERRY,
    :ENIGMABERRY, :MICLEBERRY, :CUSTAPBERRY, :JABOCABERRY, :ROWAPBERRY,
    :KEEBERRY, :MARANGABERRY]
    }
    @berry = 0
    end

    def pbMoveFailed?(user,targets)
    # NOTE: Unnerve does not stop a Pokémon using this move.
    @berry = user.item
    if !pbIsBerry?(@berry) || !user.itemActive?
    @battle.pbDisplay(_INTL("But it failed!"))
    return true
    end
    return false
    end

    # NOTE: The AI calls this method via pbCalcType, but it involves @berry which
    # won't always be accurate (although it will always be defined). Since
    # the AI won't want to use it if the user has no item anyway, and
    # complex item movement is unlikely, perhaps this is good enough.
    def pbBaseType(user)
    ret = getID(PBTypes,:NORMAL)
    found = false
    @typeArray.each do |type, items|
    items.each do |i|
    next if !isConst?(@berry,PBItems,i)
    ret = getConst(PBTypes,type) || ret
    found = true; break
    end
    break if found
    end
    return ret
    end

    # This is a separate method so that the AI can use it as well
    def pbNaturalGiftBaseDamage(heldItem)
    ret = 1
    found = false
    @damageArray.each do |dmg, items|
    items.each do |i|
    next if !isConst?(heldItem,PBItems,i)
    ret = dmg
    ret += 20 if NEWEST_BATTLE_MECHANICS
    found = true; break
    end
    break if found
    end
    return ret
    end

    def pbBaseDamage(baseDmg,user,target)
    return pbNaturalGiftBaseDamage(@berry)
    end

    def pbEndOfMoveUsageEffect(user,targets,numHits,switchedBattlers)
    # NOTE: The item is consumed even if this move was Protected against or it
    # missed. The item is not consumed if the target was switched out by
    # an effect like a target's Red Card.
    # NOTE: There is no item consumption animation.
    user.pbConsumeItem(true,true,false) if user.item>0
    @berry = 0
    end
    end
     
    Back
    Top