from django.db import models
from django.contrib.auth.models import User
TIPOS_DANO = ( ('M','Magico'),('C','Corporal'))
TIPOS_ARMA = ( ('H','Hacha'),('P','Palo'),('E','Espada'),('A','Arco'),('D','Daga'),('B','Baston'))
TIPOS_PERSONAJES = ( ('M','Mago'),('G','Guerrero'), ('A','Arquero') )
TIPOS_HABILIDADES = (('H','Hechizo' ), ('G','Golpe'),('E','Movimiento_Especial'))
TIPOS_ESTADO_CELDA = ( ('N','NPC'),('J','Jugador'),('B','Bloqueada'),('V','Vacia'))
TIPOS_ESTADO_PERSONAJE = ( ('A','Atacando'), ('P','Pasivo'), ('R','Recuperandose-descansando') , ('D','Desconectado') )
TIPOS_ACCION = ( ('A','Atacar') , ('H' ,'Usar habilidad') ,('D','Desplazarse'))
TIPOS_ARMADURA=(('C','Cuero'),('S','Seda'),('H','Hierro'))
class Arma(models.Model):
nombre_es = models.CharField(maxlength=100,blank=False)
nombre_en = models.CharField(maxlength=100,blank=False)
tipo_dano = models.CharField(maxlength=1, choices=TIPOS_DANO)
tipo_arma = models.CharField(maxlength=1, choices=TIPOS_ARMA)
nivel_req = models.IntegerField()
dos_manos = models.BooleanField(default=False)
dano = models.FloatField(max_digits=5, decimal_places=2)
icono = models.CharField(maxlength=75,blank=True)
icono_pro = models.CharField(maxlength=75,blank=True)
verbose_name = _('Arma que utiliza unpersonajes')
verbose_name_plural = _('Armas que utilizan los personajes')
class Admin : pass
def __str__(self):
return self.nombre_es+" ( "+self.nombre_en+" )"
class Habilidad(models.Model):
nombre_es = models.CharField(maxlength=100,blank=False)
nombre_en = models.CharField(maxlength=100,blank=False)
dano = models.FloatField(max_digits=5, decimal_places=2)
descripcion_es = models.TextField('Descripcion espanol',blank=True)
descripcion_en = models.TextField('Descripcion ingles',blank=True)
tipo_dano = models.CharField(maxlength=1, choices=TIPOS_DANO,blank=True)
icono = models.CharField(maxlength=75,blank=True)
animacion = models.CharField(maxlength=75,blank=True)
nivel_req = models.IntegerField()
verbose_name = _('Habilidad de un personaje')
verbose_name_plural = _('Habilidades')
class Admin: pass
def __str__(self):
return self.nombre_es+" ( "+self.nombre_en+" )"
class Hechizo(Habilidad):
alcance = models.FloatField(max_digits=5, decimal_places=2)
mana = models.FloatField(max_digits=5, decimal_places=2)
class Admin:pass
def __str__(self):
return " Hechizo " + str(self.id)
class Golpe(Habilidad):
arma_req = models.ForeignKey(Arma, verbose_name='Tipo de arma para ejecutarlo')
ataque_extra = models.BooleanField(default=False)
furia = models.FloatField(max_digits=5, decimal_places=2,blank=True)
class Admin: pass
def __str__(self):
return " Golpe "+ str(self.id)
class Movimiento_Especial(Habilidad):
nombre_es = nombre_es = models.CharField(maxlength=100,blank=False)
nombre_en = models.CharField(maxlength=100,blank=False)
energia = models.FloatField(max_digits=5, decimal_places=2,blank=True)
verbose_name_plural = _('Movimientos especiales')
class Admin:pass
def __str__(self):
return " Movimiento Especial "+ str(self.id)
class Clase(models.Model):
tipo = models.CharField(maxlength=1, choices=TIPOS_PERSONAJES)
tipo_armadura = models.CharField(maxlength=1, choices=TIPOS_ARMADURA)
verbose_name = _('Clase de personaje')
verbose_name_plural = _('Clases de personaje')
class Mago(models.Model):
mana = models.FloatField(max_digits=5, decimal_places=2)
tipo_armas = models.CharField(maxlength=1, choices=(('P','Palo'),('B','Baston')))
class Admin: pass
def __str__(self):
return "Mago"
class Guerrero(models.Model):
furia = models.FloatField(max_digits=5, decimal_places=2)
tipo_armas = models.CharField(maxlength=1, choices=( ('P','Palo'),('E','Espada'),('H','Hacha')))
class Admin: pass
def __str__(self):
return "Guerrero"
class Arquero(models.Model):
energia = models.FloatField(max_digits=5, decimal_places=2)
tipo_armas = models.CharField(maxlength=1, choices=(('A','Arco'),('D','Daga')))
class Admin: pass
def __str__(self):
return "Arquero"
def __str__(self):
return self.tipo
class Admin: pass
class Personaje(models.Model):
nick = models.CharField(maxlength=16,blank=False)
biografia = models.TextField('Biografia del personaje')
descripcion_es = models.TextField('Descripcion de la clase en espanol')
descripcion_en = models.TextField('Descripcion de la clase en ingles')
habilidades = models.ManyToManyField(Habilidad)
num_muertes = models.IntegerField()
inteligencia= models.FloatField(max_digits=5, decimal_places=2)
habilidad = models.FloatField(max_digits=5, decimal_places=2)
fuerza = models.FloatField(max_digits=5, decimal_places=2)
destreza = models.FloatField(max_digits=5, decimal_places=2)
resistencia = models.FloatField(max_digits=5, decimal_places=2)
armadura = models.FloatField(max_digits=5, decimal_places=2)
salud = models.FloatField(max_digits=5, decimal_places=2)
clase = models.ForeignKey(Clase, verbose_name='Tipo de clase del personaje')
nivel = models.IntegerField()
class Admin: pass
def __str__(self):
return " Personaje "+str(self.id)+" :"+self.nick+" [ "+ self.clase.tipo+ " ,nivel "+ str(self.nivel) +"]"
class Especie(models.Model):
nombre_especie_es = models.CharField(maxlength=100,blank=False)
nombre_especie_en = models.CharField(maxlength=100,blank=False)
descripcion_es = models.TextField('Descripcion de la especie en espanol')
descripcion_en = models.TextField('Descripcion de la especie en ingles')
habilidades_especie = models.ManyToManyField(Habilidad)
class Admin: pass
def __str__(self):
return self.nombre_especie_es+" ("+self.nombre_especie_en+" )"
class Raza(models.Model):
especie = models.ForeignKey(Especie, verbose_name='Especie a la que pertenece la raza')
nombre_raza_es = models.CharField(maxlength=100,blank=False)
nombre_raza_en = models.CharField(maxlength=100,blank=False)
descripcion_es = models.TextField('Descripcion de la raza en espanol')
descripcion_en = models.TextField('Descripcion de la raza en ingles')
habilidades_raza = models.ManyToManyField(Habilidad)
clases = models.ManyToManyField(Clase)
personajes= models.ManyToManyField(Personaje,blank=True)
class Admin: pass
def __str__(self):
return self.nombre_raza_es+" ("+self.nombre_raza_en+" )"
class Mundo(models.Model):
nombre_mundo_es = models.CharField(maxlength=100,blank=False)
nombre_mundo_en = models.CharField(maxlength=100,blank=False)
descripcion_mundo_es = models.TextField('Descripcion del mundo en espanol')
descripcion_mundo_en = models.TextField('Descripcion del mundo en ingles')
especies = models.ManyToManyField(Especie,blank=True)
def __str__(self):
return self.nombre_mundo_es+" ("+self.nombre_mundo_en+" )"
class Admin: pass
class Colonia(models.Model):
nombre_colonia_es = models.CharField(maxlength=100,blank=False)
nombre_colonia_en = models.CharField(maxlength=100,blank=False)
descripcion_es = models.TextField('Descripcion de la colonia en espanol')
descripcion_en = models.TextField('Descripcion de la colonia en ingles')
mundo = models.ForeignKey(Mundo, verbose_name='Mundo al que pertenece la colonia')
razas = models.ManyToManyField(Raza)
def __str__(self):
return self.nombre_colonia_es+" ("+self.nombre_colonia_en+" )"
class Admin: pass
class Celda(models.Model):
x = models.IntegerField()
y = models.IntegerField()
z = models.IntegerField()
imagen = models.CharField(maxlength=75,blank=True)
estado = models.CharField(maxlength=1, choices=TIPOS_ESTADO_CELDA)
verbose_name = _('Celda de una zona de un mapa(editar desde una zona)')
verbose_name_plural = _('Celdas de una zona concreta')
class Admin: pass
def __str__(self):
return "( X:"+ str(self.x)+",Y:"+str(self.y)+",Z:"+str(self.z)+") | estado:"+self.estado
class Zona(models.Model):
nombre_zona_es = models.CharField(maxlength=100,blank=False)
nombre_zona_en = models.CharField(maxlength=100,blank=False)
imagen_zona = models.CharField(maxlength=75,blank=False)
descripcion_es = models.TextField('Descripcion de la zona en espanol')
descripcion_en = models.TextField('Descripcion de la zona en ingles')
colonia = models.ForeignKey(Colonia, verbose_name='Colonia a la que pertenece la zona')
celdas = models.ManyToManyField(Celda,blank=True)
class Admin: pass
def __str__(self):
return self.nombre_zona_es+" ("+self.nombre_zona_en+" )"
class Mapa(models.Model):
nombre_mapa_es = models.CharField(maxlength=100,blank=False)
nombre_mapa_en = models.CharField(maxlength=100,blank=False)
ancho = models.IntegerField()
alto = models.IntegerField()
celdas = models.ManyToManyField(Celda)
zona = models.ForeignKey(Zona, verbose_name='Zona a la que pertenece el Mapa')
class Admin:pass
def __str__(self):
return self.nombre_mapa_es+" ( "+self.nombre_mapa_en+" )"
class Jugador(models.Model):
celda_actual = models.ForeignKey(Celda,blank=True)
zona_actual = models.ForeignKey(Zona,blank=True)
estado_actual = models.CharField(maxlength=1, choices=TIPOS_ESTADO_PERSONAJE)
accion_actual = models.CharField(maxlength=1, choices=TIPOS_ACCION,blank=True)
ultima_actividad = models.DateTimeField()
persona_asoc = models.ForeignKey(User)
personaje_asoc = models.ForeignKey(Personaje)
verbose_name = _('Jugador (personaje humano)')
verbose_name_plural = _('Jugadores (personajes humanos)')
class Admin:pass
def __str__(self):
return "Jugador "+ str(self.id)