i added the code below and with the next code... seems like TWoFolds is now working.. it wont sway the katanas... if i took of the below code and leave the next code... it works but the damage is only 100 somethin...
Am i missing somethin here?
Quote:
Originally Posted by Kiyono
This works...sort off.
Code:
case 6000: //TwoFoldBlades
{
Dictionary<int, int> Targets = new Dictionary<int, int>();
int RemainingHP = AttackedMob.CurrentHP;
int Level = AttackSkill.Level;
double ExtPCT = 0;
if (Level == 0)
ExtPCT = 1.10;
if (Level == 1)
ExtPCT = 1.15;
if (Level == 2)
ExtPCT = 1.20;
if (Level == 3)
ExtPCT = 1.25;
if (Level == 4)
ExtPCT = 1.30;
Damage = (int)Math.Floor((Calculation.Damage(Attacker, AttackedMob, 2, 0, 0) * 1.725) * ExtPCT);
bool killed = Calculation.doMonster(AttackedMob, Damage, AType, CSocket);
Targets.Add(AttackedMob.UID, Damage);
ConquerPacket.ToLocal(ConquerPacket.MagicAttack(CSocket.Client.ID, AttackSkill.ID, AttackSkill.Level, Targets, AttackedMob.X, AttackedMob.Y), CSocket.Client.X, CSocket.Client.Y, (int)CSocket.Client.Map, 0, 0);
Targets.Clear();
break;
}
|
this the code i add up...
Code:
using System;
using System.Collections;
using System.Collections.Generic;
using CoEmu_v2_GameServer.Connections;
using CoEmu_v2_GameServer.Entities;
using CoEmu_v2_GameServer.Structs;
using CoEmu_v2_GameServer.Packets;
namespace CoEmu_v2_GameServer.Calculations
{
/// <summary>
/// Calculates damage to a character or monster.
/// </summary>
public partial class Calculation
{
public static int Damage(Character Attacker, Character Attacked, int AType, int SkillID, int SkillLevel)
{
if(Attacker.MinAttack > Attacker.MaxAttack)
{
return 0;
}
if(AType == 2)
{
int Damage = Nano.Rand.Next(Attacker.MinAttack, Attacker.MaxAttack);
Damage -= Attacked.Defense;
if(Attacked.Reborn == 1)
{
Damage = (int)Math.Floor(Damage*.7);
}
else if(Attacked.Reborn == 2)
{
Damage = (int)Math.Floor(Damage*.7);
if(Attacker.Reborn < 2)
Damage = (int)Math.Floor(Damage*.5);
}
double Tort = 0;
Tort += Attacked.NTG*0.02;
Tort += Attacked.RTG*0.04;
Tort += Attacked.STG*0.06;
Damage = (int)Math.Floor(Damage*(1-Tort));
if(Attacked.Bless > 0)
{
Damage = (int)Math.Floor(Damage * (1 - (Attacked.Bless*0.01)));
}
//TODO: Superman
if(Damage < 0)
Damage = 1;
if((Attacked.isGM || Attacked.isPM) && Attacked.Invincible)
Damage = 0;
Damage += (int)Attacker.PlusDamage;
Damage -= (int)Attacked.MinusDamage;
if (Damage < 2) Damage = 1;
return Damage;
}
else if(AType == 21)
{
int Damage = AddedMagicDamage(SkillID, SkillLevel);
if (SkillID <= 6011 && SkillID >= 6000)
Damage += Nano.Rand.Next(Attacker.MinAttack, Attacker.MaxAttack);
else
Damage += Attacker.MagicAttack;
if(Attacked.MagicDefense > 0)
{
double MDef = 1;
if(Attacked.MagicDefense < 90)
{
MDef = (Attacked.MagicDefense * 0.01);
}
else
{
MDef = (90 * 0.01);
}
Damage = (int)Math.Floor(Damage - (Damage*MDef));
}
Damage = Convert.ToInt32(Damage*0.75);
if(Attacked.Reborn == 1)
{
Damage = (int)Math.Floor(Damage*.7);
}
else if(Attacked.Reborn == 2)
{
Damage = (int)Math.Floor(Damage*.7);
if(Attacker.Reborn < 2)
Damage = (int)Math.Floor(Damage*.5);
}
Damage += Attacker.BonusMagicAttack;
Damage -= Attacked.BonusMagicDefense;
double Tort = 0;
Tort += Attacked.NTG*0.02;
Tort += Attacked.RTG*0.04;
Tort += Attacked.STG*0.06;
Damage = (int)Math.Floor(Damage*(1-Tort));
if(Attacked.Bless > 0)
{
Damage = (int)Math.Floor(Damage * (1 - (Attacked.Bless*0.01)));
}
if(Damage < 0)
Damage = 1;
if((Attacked.isGM || Attacked.isPM) && Attacked.Invincible)
Damage = 0;
Damage += (int)Attacker.PlusMagicDamage;
Damage -= (int)Attacked.MinusMagicDamage;
if (Damage < 2) Damage = 1;
return Damage;
}
else if(AType == 25)
{
int Damage = Nano.Rand.Next(Attacker.MinAttack, Attacker.MaxAttack);
if(Attacked.Dodge > 0)
{
double Dodge = 0;
if(Attacked.Dodge <= 94)
Dodge = Attacked.Dodge*0.01;
else
Dodge = 94*0.01;
Damage = (int)Math.Floor(Damage - (Damage*Dodge));
}
if(Attacked.Reborn == 1)
{
Damage = (int)Math.Floor(Damage*.7);
}
else if(Attacked.Reborn == 2)
{
Damage = (int)Math.Floor(Damage*.7);
if(Attacker.Reborn < 2)
Damage = (int)Math.Floor(Damage*.5);
}
Damage += Attacker.BonusMagicAttack;
Damage -= Attacked.BonusMagicDefense;
double Tort = 0;
Tort += Attacked.NTG*0.02;
Tort += Attacked.RTG*0.04;
Tort += Attacked.STG*0.06;
Damage = (int)Math.Floor(Damage*(1-Tort));
if(Attacked.Bless > 0)
{
Damage = (int)Math.Floor(Damage * (1 - (Attacked.Bless*0.01)));
}
if(Damage < 0)
Damage = 1;
if((Attacked.isGM || Attacked.isPM) && Attacked.Invincible)
Damage = 0;
Damage += (int)Attacker.PlusDamage;
Damage -= (int)Attacked.MinusDamage;
if (Damage < 2) Damage = 1;
return Damage;
}
return 0;
}
public static int Damage(Character Attacker, Monster Attacked, int AType, int MagicID, int MagicLevel)
{
if(Attacker.MinAttack > Attacker.MaxAttack)
{
return 0;
}
//TODO: Magic, Archer
if(AType == 2)
{
int Damage = Nano.Rand.Next(Attacker.MinAttack, Attacker.MaxAttack);
if(Attacked.Info.Name != "CoEmuGuard" && Attacked.Info.Name != "CoEmuPatrol" && Attacked.Info.Name != "GuildPatrol" && Attacked.Info.Name != "GuardReviver")
{
int Leveldiff = (Attacker.Level+2) - Attacked.Level;
int Damageadd = (int)Math.Floor(1 + (Leveldiff/5)*0.8);
if(Damageadd > 1)
Damage = Damageadd * Damage;
}
Damage -= Attacked.Info.Defense;
if(Damage < 0)
Damage = 1;
Damage += (int)Attacker.PlusDamage;
//TODO: Superman
return Damage;
}
else if (AType == 21)
{
int Damage = AddedMagicDamage(MagicID, MagicLevel); ;
if (MagicID <= 6011 && MagicID >= 6000)
Damage += Nano.Rand.Next(Attacker.MinAttack, Attacker.MaxAttack);
else
Damage += Attacker.MagicAttack;
if (Attacked.Info.MDefense > 0)
{
double MDef = (Attacked.Info.MDefense * 0.01);
Damage = (int)Math.Floor(Damage - (Damage * MDef));
}
if (Attacked.Info.Name != "CoEmuGuard" && Attacked.Info.Name != "CoEmuPatrol" && Attacked.Info.Name != "GuildPatrol" && Attacked.Info.Name != "GuardReviver")
{
int Leveldiff = (Attacker.Level + 2) - Attacked.Level;
int Damageadd = (int)Math.Floor(1 + (Leveldiff / 5) * 0.8);
if (Damageadd > 1)
Damage = Damageadd * Damage;
}
if (Damage < 0)
Damage = 1;
Damage += (int)Attacker.PlusDamage;
return Damage;
}
else if (AType == 25)
{
int Damage = Nano.Rand.Next(Attacker.MinAttack, Attacker.MaxAttack);
if (Attacked.Info.Dodge > 0)
{
double Dodge = Attacked.Info.Dodge * 0.01;
Damage = (int)Math.Floor(Damage - (Damage * Dodge));
}
if (Attacked.Info.Name != "CoEmuGuard" && Attacked.Info.Name != "CoEmuPatrol" && Attacked.Info.Name != "GuildPatrol" && Attacked.Info.Name != "GuardReviver")
{
int Leveldiff = (Attacker.Level + 2) - Attacked.Level;
int Damageadd = (int)Math.Floor(1 + (Leveldiff / 5) * 0.8);
if (Damageadd > 1)
Damage = Damageadd * Damage;
}
if (Damage < 0)
Damage = 1;
Damage += (int)Attacker.PlusDamage;
return Damage;
}
return 0;
}
}
}