private void listarHabilidades(Jogador jogador) { List <HabilidadeNode> habilidades = getHabilidades(jogador); int y = 181; //posicao do primeito HabilidadeRacial if (habilidades.Count == 0) { this.AddLabel(65, y, 0, @"Você não possui habilidade."); } for (int i = 0; i < habilidades.Count; i++) { HabilidadeNode habilidadeNode = habilidades[i]; Habilidade habilidade = getHabilidade(habilidadeNode.Id); if (habilidade != null) { this.AddLabel(65, y + (i * 20), 0, habilidade.Nome); this.AddLabel(347, y + (i * 20), 0, habilidadeNode.Nivel + ""); this.AddLabel(416, y + (i * 20), 0, habilidade.NivelMaximo + ""); this.AddButton(45, y + (i * 20), 1210, 1209, (habilidade.Id + 1), GumpButtonType.Reply, 1); } else { this.AddLabel(65, y + (i * 20), 0, "Não foi encontrado habilidade com id: " + habilidades[i]); } } }
public override void aplicar(Jogador jogador, HabilidadeNode node, bool primeiraVez) { int ponto = primeiraVez ? node.Nivel : node.Nivel - 1; jogador.RawStr += ponto; jogador.RawDex += ponto; jogador.RawInt += ponto; }
/* * Bonus que a habilidade da no tipo de resistência. */ public override int resistenciaBonus(HabilidadeNode node, ResistanceType type) { if (ResistanceType.Poison.Equals(type)) { return node.Nivel * 3; } return 0; }
/* * Bonus que a habilidade da no tipo de resistência. */ public override int resistenciaBonus(HabilidadeNode node, ResistanceType type) { if (ResistanceType.Fire.Equals(type) || ResistanceType.Cold.Equals(type) || ResistanceType.Energy.Equals(type)) { return node.Nivel * 3; } return 0; }
/* * Bonus que a habilidade da na skill. */ public override double skillBonus(HabilidadeNode node, SkillName skillName) { if (SkillName.Tactics.Equals(skillName)) { return node.Nivel * 5; } return 0; }
public override int acertarBonus(HabilidadeNode node, Jogador jogador, Mobile defensor) { BaseWeapon arma = jogador.Weapon as BaseWeapon; if(arma.DefSkill.Equals(TipoGrupo)) { return node.Nivel * 5; } return 0; }
public override int chanceAtaqueCriticoBonus(HabilidadeNode node, Jogador atacante, Mobile defensor) { BaseWeapon arma = atacante.Weapon as BaseWeapon; if (arma.DefSkill.Equals(TipoGrupo)) { return 5; } return 0; }
public override int danoBonus(HabilidadeNode node, Jogador atacante, Mobile defensor) { BaseWeapon arma = atacante.Weapon as BaseWeapon; if (arma.DefSkill.Equals(TipoGrupo)) { return node.Nivel * 5; } return 0; }
public override int danoBonus(HabilidadeNode node, Jogador atacante, Mobile defensor) { int bonus = 0; Point3D locA = atacante.Location; Point3D locD = defensor.Location; Console.WriteLine("flanquear 1"); //esta no alcance de 1 tile if (Utility.InRange(locA, locD, 1)) { Console.WriteLine("flanquear 2"); Direction dirD = defensor.Direction; int x = locD.X; int y = locD.Y; //ajusta o valor de X if (Direction.Mask.Equals(dirD) || Direction.West.Equals(dirD) || Direction.Left.Equals(dirD)) { x++; } else if (Direction.Down.Equals(dirD) || Direction.East.Equals(dirD) || Direction.Right.Equals(dirD)) { x--; } //ajusta o valor de Y if (Direction.Mask.Equals(dirD) || Direction.North.Equals(dirD) || Direction.Right.Equals(dirD)) { y++; } else if (Direction.Left.Equals(dirD) || Direction.South.Equals(dirD) || Direction.Down.Equals(dirD)) { y--; } //se o atacante estiver nas costas do adversário if (locA.X == x && locA.Y == y) { int divisor = node.Nivel == 1 ? 15 : 10; bonus = atacante.Dex / divisor; atacante.SendMessage("Bonus dano flanqueado: {0}", bonus); //mensagem para atacante e defensor atacante.PublicOverheadMessage(Server.Network.MessageType.Regular, 0, false, "Flanqueando!"); defensor.PrivateOverheadMessage(Server.Network.MessageType.Regular, 0, false, "Você foi flanqueando!", defensor.NetState); } } return bonus; }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int versao = reader.ReadInt(); //recuperas as habilidades habilidades = new Dictionary<IdHabilidadeTalento, HabilidadeNode>(); int numHabilidade = reader.ReadInt(); for (int i = 0; i < numHabilidade; i++) { HabilidadeNode hn = new HabilidadeNode(); hn.Deserialize(reader); habilidades.Add((IdHabilidadeTalento)hn.Id, hn); } }
public override int danoBonus(HabilidadeNode node, Jogador atacante, Mobile defensor) { int bonus = 0; if(isMortoVivo(defensor)) { bonus = (int) (atacante.Skills.SpiritSpeak.Value / 10); atacante.SendMessage("Bonus dano Poder da Fé: {0}", bonus); //mensagem para atacante e defensor atacante.PublicOverheadMessage(Server.Network.MessageType.Regular, 0, false, "Poder da Fé!"); defensor.PrivateOverheadMessage(Server.Network.MessageType.Regular, 0, false, "Você recebeu o Poder da Fé!", defensor.NetState); } return bonus; }
public override void aplicar(Jogador jogador, HabilidadeNode node, bool primeiraVez) { jogador.Mana += node.Nivel; jogador.Hits += node.Nivel; jogador.Stam += node.Nivel; if (jogador.Mana > jogador.ManaMax) { jogador.Mana = jogador.ManaMax; } if (jogador.Hits > jogador.HitsMax) { jogador.Hits = jogador.HitsMax; } if (jogador.Stam > jogador.StamMax) { jogador.Stam = jogador.StamMax; } }
/* * Bonus que a habilidade da para a destreza. */ public virtual int destrezaBonus(HabilidadeNode node) { return(0); }
/* * Bonus que a habilidade da para a inteligência. */ public virtual int inteligenciaBonus(HabilidadeNode node) { return(0); }
/* * Bonus que a habilidade da para a vida. */ public virtual int vidaBonus(HabilidadeNode node) { return 0; }
/* * Bonus que a habilidade da na skill. */ public virtual double skillBonus(HabilidadeNode node, SkillName skillName) { return(0); }
/** * Bonus no dano com o tipo de arma usada * */ public virtual int danoBonus(HabilidadeNode node, Jogador atacante, Mobile defensor) { return 0; }
/* * Bonus que a habilidade da para acertar com o tipo de arma. * Bonus em % exemplo: 5 = 5%. */ public virtual int acertarBonus(HabilidadeNode node, Jogador jogador, Mobile defensor) { return(0); }
/* * Bonus que a habilidade da para a vida. */ public virtual int vidaBonus(HabilidadeNode node) { return(0); }
/** * Invocado quando uma habilidade e aprendia ou tem seu valor aumentado. */ public virtual void aplicar(Jogador jogador, HabilidadeNode node, bool primeiraVez) { }
/** * Bonus no dano do ataqueCritico. Valor em %. exemplo 10 para 10% no dano crítico, que já é de 25% a mais no dano. */ public virtual int danoAtaqueCriticoBonus(HabilidadeNode node, Jogador atacante, Mobile defensor) { return(0); }
/** * Invocado quando uma habilidade e aprendia ou tem seu valor aumentado. */ public virtual void aplicar(Jogador jogador, HabilidadeNode node, bool primeiraVez) { }
/** * Bonus que a habilidade concede ao cap de skill de trabalho. Normalmente toda habilidade que da bonus em um determinada skill, deve dar o mesmo bonus do Cap. * */ public virtual int skillsCapTrabalhoBonus(HabilidadeNode node) { return(0); }
/* * Bonus que a habilidade da para aparar os ataques. * O item pode ser um escudo ou arma. Nao esta aparando com as maos. * O bonus deve ser muito pouco, como no scrito BaseWeapon linha 1153 * * Exemplo 0.05 = 5% */ public virtual double apararBonus(HabilidadeNode node, Item item) { return(0); }
/* * Bonus que a habilidade da para defender com a arma e escudo. * O escudo, pode nao ser um escudo, pode ser outro item que esta na mão do defensor. */ public virtual int defenderBonus(HabilidadeNode node, BaseWeapon arma, Item escudo) { return(0); }
/* * Bonus que a habilidade da para acertar com o tipo de arma. * Bonus em % exemplo: 5 = 5%. */ public virtual int acertarBonus(HabilidadeNode node, Jogador jogador, Mobile defensor) { return 0; }
/* * Bonus que a habilidade da para a destreza. */ public virtual int destrezaBonus(HabilidadeNode node) { return 0; }
/* * Bonus que a habilidade da para aparar os ataques. * O item pode ser um escudo ou arma. Nao esta aparando com as maos. * O bonus deve ser muito pouco, como no scrito BaseWeapon linha 1153 * * Exemplo 0.05 = 5% */ public virtual double apararBonus(HabilidadeNode node, Item item) { return 0; }
/* * Bonus que a habilidade da para a inteligência. */ public virtual int inteligenciaBonus(HabilidadeNode node) { return 0; }
/** * Bonus na chance do ataque crítico. Valor em %. exemplo 10 para 10% a mais na chance, que já é de 5%. */ public virtual int chanceAtaqueCriticoBonus(HabilidadeNode node, Jogador atacante, Mobile defensor) { return 0; }
/* * Bonus que a habilidade da na skill. */ public virtual double skillBonus(HabilidadeNode node, SkillName skillName) { return 0; }
/* * Bonus que a habilidade da para defender com a arma e escudo. * O escudo, pode nao ser um escudo, pode ser outro item que esta na mão do defensor. */ public virtual int defenderBonus(HabilidadeNode node, BaseWeapon arma, Item escudo) { return 0; }
/* * Bonus que a habilidade da no tipo de resistência. */ public virtual int resistenciaBonus(HabilidadeNode node, ResistanceType type) { return(0); }
/* * Bonus que a habilidade da para a folego. */ public virtual int folegoBonus(HabilidadeNode node) { return 0; }
public override void aplicar(Jogador jogador, HabilidadeNode node, bool primeiraVez) { int ponto = primeiraVez ? node.Nivel : node.Nivel - 1; jogador.Stam += bonus(ponto); }
/* * Bonus que a habilidade da no tipo de resistência. */ public virtual int resistenciaBonus(HabilidadeNode node, ResistanceType type) { return 0; }
/* * Bonus que a habilidade da para a mana. */ public override int folegoBonus(HabilidadeNode node) { return bonus(node.Nivel); }
/** * Bonus que a habilidade concede ao cap de skill de trabalho. Normalmente toda habilidade que da bonus em um determinada skill, deve dar o mesmo bonus do Cap. * */ public virtual int skillsCapTrabalhoBonus(HabilidadeNode node) { return 0; }
/* * Bonus que a habilidade da para a destreza. */ public override int inteligenciaBonus(HabilidadeNode node) { return node.Nivel * 3; }
public override int forcaBonus(HabilidadeNode node) { return node.Nivel * 5; }
public override void aplicar(Jogador jogador, HabilidadeNode node, bool primeiraVez) { jogador.UpdateResistances(); }
/* * Bonus que a habilidade da para a vida. */ public override int vidaBonus(HabilidadeNode node) { return node.Nivel * 2; }
/* * Bonus que a habilidade da para a folego. */ public virtual int folegoBonus(HabilidadeNode node) { return(0); }