Duda de Decorate (para expertos)

Iniciado por Darkmon, Marzo 07, 2008, 09:38:44 AM

Tema anterior - Siguiente tema

Darkmon

Esta pregunta ya no es de novato, es para expertos de Decorate. A ver si alguien puede resolver mi duda.

Me gustaría saber si existe algún comando o acción de Decorate que, aplicado a un objeto proyectil, actúe sólo cuando golpea a un enemigo vivo, no a un objeto o pared.

Por ejemplo, este comando sería util para hacer un arma que drene la energía (que quite vida de los monstruos y la traspase al jugador), porque no tiene sentido que cuando el proyectil golpee la pared el jugador obtenga sangre, esto sólo tendría sentido con un monstruo.

O, en mi ejemplo, quiero hacer un arma que dispare una especie de almas las cuales, al golpear al enemigo, lo envuelvan en un abrazo y lo chupen. Tampoco tiene sentido que, cuando el misil golpee la pared, se vea la animación del abrazo: sólo tendría sentido al golpear a un enemigo.

Muchas gracias de antemano por vuestra respuesta.

BAZOOKA

Para que ocurra algo distinto, si golpea en la pared o un objeto, necesitas añadir en el código del proyectil diferentes states:

XDeath se utiliza cuando golpea un enemigo.
Death se utiliza cuando golpea la pared o un objeto.

Karnizero

Cita de: "BAZOOKA"Para que ocurra algo distinto, si golpea en la pared o un objeto, necesitas añadir en el código del proyectil diferentes states:

XDeath se utiliza cuando golpea un enemigo.
Death se utiliza cuando golpea la pared o un objeto.

Creo que te equivocas:

Death y XDeath son States, no Propiedades ni efectos.

Death es cuando el Actor "muere" de forma normal, y XDeath es cuando al enemigo se le hace tres más de daño que vida tiene, es decir, cuando al actor se le hace 300 de daño (o máss), y éste tiene 100 de vida.

XDeath viene de "eXtreme Death".

BAZOOKA

Yo he dicho que son states. Los proyectiles también son actores por eso me he referido de esa forma a los mismos factores.
Lo he utilizado en mi último mod de armas (shurikens y cuchillos). Cuando lanzas estos proyectiles a la pared los puedes recoger pero si los diriges a enemigos entonces no.

Darkmon

La verdad es que no entiendo muy bien lo que quieres decir, Bazooka, pero gracias por tu respuesta. Sé lo que son los states y sé que Death y Xdeath sirven para definir la muerte normal y la muerte extrema, como indica Carnicero. Pero, ¿cómo hacer que un proyectil distinga entre los objetos que dispara en sus states?

De todas formas, ya lo solucioné por medio de una clase que desconocía y ahora he descubierto: la clase stuff. Tuve que liarme un poco, pero al final el efecto está conseguido. Si a alguien le interesa, no tengo ningún problema en explicarlo.

Gracias a todos de todas formas.

BAZOOKA

Cita de: "Darkmon"Sé lo que son los states y sé que Death y Xdeath sirven para definir la muerte normal y la muerte extrema, como indica Carnicero. Pero, ¿cómo hacer que un proyectil distinga entre los objetos que dispara en sus states?
Te lo he dicho.
Un proyectil también es un actor con sus states.
Aplicale el Death y el XDeath para que haga una cosa distinga dependiendo a que dispares.

Ejemplo:

states
 {
 ...
 XDeath: (Aquí pones lo que quieras una vez que le dan a los enemigos)
   EJEM S 1 A_PlaySound("seclava")
   EJEM S 2 A_Explode (50, 30, 0)
   stop
 Death: (Aquí algo diferente cuando chocan con las paredes u objetos)
   EJEM S 1 A_PlaySound("pared")
   stop
 }

Darkmon

Seguramente me equivoco, puesto que mis conocimientos de Decorate son bastante limitados, pero yo creo que Carnicero está en lo cierto, y que los states Death y XDeath definen el comportamiento del actor al ser golpeado y no al golpear él mismo. En concreto, definen la muerte normal y la muerte extrema del actor (al ser golpeado y herido), y no el comportamiento del actor al golpear una pared o un enemigo. Da igual que el actor sea un proyectil o un enemigo. Pero ya digo que, más que posiblemente, lo mismo estoy equivocado yo.

En cualquier caso, muchas gracias de nuevo por tu respuesta y por la molestia, Bazooka. La clase puff también me ha solucionado este problema.

BAZOOKA

Pero si he dicho que son lo mismo pero al traterse de proyectiles cambia el punto de vista  :lol:
Lo mismo que los monigotes también para los proyectiles pero al referirse a esos comportamientos que quieres que haga, entonces se utiliza esto (al menos yo).

Darkmon

Ahora te he comprendido. Resulta que, dependiendo del tipo de actor, los states Death y XDeath cambian el significado. Para actores de tipo MONSTER definen la muerte y la muerte extrema, y para actores de tipo PROJECTILE definen el comportamiento del proyectil al golpear, dependiendo de que sangre o no sangre.

Zdoom wiki te da la razón. Me quito el sombrero. Una cosa más que aprendo hoy. ¡Muchas gracias!