Crystal_
Puntuación de reacción
119

Mensajes de perfil Última actividad Publicaciones Acerca

  • (parte 2)

    Estoy haciendo un parche que cheque el HP tanto del oponente como del usuario para activar las berrys pero no se me ha funcionado, me das tu consejo:

    push hl
    push de
    push bc
    push af
    ld a,[$FF00 + $E6]// [hBattleTurn]
    and a,a
    jr nz,@.enemy
    ld hl,$525E// AICheckEnemyQuarterHP $3925E
    ld a,$e
    rst $8
    jr @next

    @.enemy
    ld hl,$5279// AICheckPlayerQuarterHP $39279
    ld a,$e
    rst $8

    @next
    pop af
    pop bc
    pop de
    pop hl

    jp nc,$5D5A ; regreso a la rutina original donde NO se activa el efecto

    pop bc ;fragmentos de la rutina original
    ld a,[bc] ;fragmentos de la rutina original
    ld [$D151],a ;fragmentos de la rutina original
    jp $5D37 ; regreso a la rutina original donde SI se activa el efecto
    GRACIAS!!! Todo funciono muy bien, aunque al final hice unas variables que no están en el item original.

    Descubri que las berrys que aumentan stats estan en el juego original, pero el problema es que se activan al final del turno sin restriccion. Para poder usarlas necesito poner la condicionante de que el HP se encuentre al 33%, asi que te queria preguntar si consideras bien esta formula que me da 37.5% para usarla?

    call GetQuarterMaxHP ; output: bc
    ld h,b
    ld l,c
    push hl
    call GetEighthMaxHP ; output: bc
    pop hl
    add hl,de

    Edit: ahora que recuerdo se activan con 25% del HP y para eso si hay rutina, aun asi ayudame para el efecto de Blaze!
    Si en lugar de hacer toda la ruina del item solo hago ld a,[BattleMonItem]??

    Tengo un problema con la parte que activa el efecto de endure, ya que no se activa, incluso lo cambie a como lo tienes redactado tu y ni asi logro hacerlo funcionar.

    Voy a intentar en un rom limpio a ver si tengo suerte.

    Edit: Error en las labels, maldito DoTurn. Corrijo y quizás ya tenga suerte.
    Esta era ka rutina, pero al no haber espacio la tendre que modificar para mandarla a otro banco.

    Edit: no logro que la rutina que activa el endure funcione.... ya intente incluso hacer un call directo a ella y nada.

    DoTurn: ; $3402C
    (...)
    ld a, [$c6b4]; call @extendida, salda de $34033
    and a
    ret nz
    (...)

    @extendida
    call @main
    ld a,[$CB92]// crystal $c6b4
    ret

    @main
    call $7E8C//GetOpponentItem//; Return the effect of the opponent's item in bc, and its id at hl.
    ld a,b
    cp $4F//HELD_FOCUS_BAND ; cambiar por focus sash
    //ld b,$0
    jr nz,@end


    ld a,[$A7E6]//hBattleTurn, $0 =player, $1 =enemy
    and a
    jr z,@playerturn
    call $525E//AICheckPlayerMaxHP ; si el hp es igual al Maxhp regresea carry flag
    jr c,@next
    jr nc@end


    @playerturn
    call $5217//AICheckEnemyMaxHP
    jr c,@next
    jr nc,@end


    @next // endure stuff
    ld a,$00// BATTLE_VARS_SUBSTATUS1
    call $3C0B//_GetBattleVar
    set $5,[hl]//SUBSTATUS_ENDURE
    ret
    JAJA si lo se, la segunda rutina era innecesaria.

    Aun asi, necesito hacer una Excepcion en el texto para que indique que la focus sash/band esta equipada y no crea que es el efecto de endure.

    Se que debe desaparecer, pero no quiero hacerlo que desaparesca.... ademas, no hay espacio para llevar a cabo todo el mecanismo de eliminacion.
    (parte 2)
    Otro problema es que el juego siempre atribuye el bit_endure a "endure" antes que a los items, por lo que aun teniendo la Focush Sash Equipada el texto mostrado sera el incorrecto.

    Una idea que tenia al inicio, era la de fusionar ambos efectos, el de la SASH y la BAND, de esta menera tenia un item mas "decente". Al aplicar los dos efectos lo unico que cambiaria seria que la el efecto de la BAND no se podria usar dos veces seguidas, pero es muy improbable que algo asi suceda realmente.

    Deja sigo ajustando detalles y te muestro.
    (parte 1)
    Pues hacerlo de manera profesional es algo dificil, te cuento.

    Estoy aplicando la primera rutina en el comando "doturn" que se incluye en todos los movimientos, asi se activa el chequeo del item y el HP al momento de realizar el ataque y deja que cosas como Spikes actuen normalmente durante la entrada del poke.

    Una segunda rutina en "checkfaint" comprueba que el item en cuestión sea Focus Sash.

    Una tercer rutina, en "checkfaint" de nuevo, manda a la ram el nombre del item para ser mostrado en el mensaje que se usa en Focus Band y de paso elimina el item SOLO en batalla. (no quiero que desaparesca de la party).

    Problemas: Ese banco esta saturado de informacion y junto a la seleccion de genero, physic/special split y el cambio de typo de Roost, el banco se ha saturado y tengo muy muy poco espacio para trabajar.
    Sr. Bilbabo, me asesora?

    Veras, quiero crear el item Focus Sash, no se si lo conozcas por que nunca te pregunte si juegas competitivo aparte de GSC. En fin, el item funciona igual que Focus Band pero este tiene 100% de efecto si tienes el 100% de HP, en cualquier otro caso falla.

    Mi duda es si poner la rutina en BattleCommand0e (checkfaint) que es donde Focus Band hace su chequeo. Ademas, tengo la duda si en este punto de la secuencia del ataque aun puedo saber si el pokemon tiene el 100% de su HP o si ya es demasiado tarde. Me ayudas a improvisar la rutina?
    Maldita sea!!!!

    En dos segundos ha quedado todo! JAJAJAJAJAJA

    Muchas Gracias!
    Nada, simplemente al llegar el limite me permite usar el candy aun.

    Es curioso que antes del call GetPartyParamLocation el valor que carga es el $B en lugar del $1F
    Pinche juego sigue sin funcionar:

    RareCandy:
    ;(...)
    ;eea1
    call GetPartyParamLocation
    add hl,bc
    jp $7A73//rcpatch ; jump from eea5
    jr nc,$6ED7//
    ;(...)

    rcpatch:
    ; cap at current badge level instead of at level 100
    push bc
    push af
    push de
    push hl
    call @getBadgeLevel
    pop hl
    pop de
    pop af
    ld a,[hl]
    cp a,b
    pop bc
    jp $6EA8


    @getBadgeLevel
    ld hl,$D57C// JohtoBadges
    ld b,$2
    call $35A2// CountSetBits
    ld e,a
    ld d,$0
    ld hl,@BadgeLevels
    add hl,de
    ld a,[hl]
    ld b,a
    ret

    @BadgeLevels
    db $05//$14
    db $1E
    db $26
    db $2D
    db $36
    db $3C
    db $3F
    db $49
    db $52
    db $54
    db $56
    db $58
    db $5A
    db $5C
    db $5E
    db $60
    db $64
    agregue el EED7 al rcpatch por la falta de espacio y adelante 3-bytes el ultimo jp:

    rcpatch:
    ; cap at current badge level instead of at level 100
    push bc
    push af
    push de
    push hl
    call @getBadgeLevel
    pop hl
    pop de
    pop af
    ld a,[hl]
    cp a,b
    pop bc
    jp nc,$EED7
    jp $6EAA

    Y ni asi logra funcionar.
    JA! Si si vi, ya te tenia una lista de errores. Deja intento esta nueva.

    Edit: el problema es que jp nc,Functioneed7 no cabe, solo hay dos bytes. tendria que ser un jr pero no llega...
    Incluso, llegue al punto de ignorar completamente la rutina original e indicar mendiante otra rutina mia el nivel del pokemon seleccionado antes de compararlo con el nivel permitido de la medalla y ni asi logro que funcione.
    A no espera, ya te entendi, solo olvide decirte eso.

    Veras, cuando hay algun label de Function no lo cambio, simplemente dejo la label de crystal. en este caso el ese jp nc nos lleva hasta function6DE7 por default, aun asi lo cambio por el que dices?
  • Cargando…
  • Cargando…
  • Cargando…
Arriba