Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- case BCardType.CardType.DrainAndSteal:
- if (ServerManager.RandomNumber() < FirstData)
- {
- return;
- }
- switch (SubType)
- {
- case (byte)AdditionalTypes.DrainAndSteal.LeechEnemyHP / 10 :
- int heal = 0;
- switch (session)
- {
- case MapMonster toDrain when caster is Character drainer:
- heal = drainer.Level * SecondData;
- drainer.Hp = (int)(heal + drainer.Hp > drainer.HpLoad() ? drainer.HpLoad() : drainer.Hp + heal);
- drainer.MapInstance?.Broadcast(drainer.GenerateRc((int)(heal + drainer.Hp > drainer.HpLoad() ? drainer.HpLoad() - drainer.Hp : heal)));
- toDrain.CurrentHp -= heal;
- drainer.Session.SendPacket(drainer.GenerateStat());
- if (toDrain.CurrentHp <= 0)
- {
- toDrain.CurrentHp = 1;
- }
- break;
- case Character characterDrained when caster is Character drainerCharacter:
- heal = drainerCharacter.Level * SecondData;
- drainerCharacter.Hp = (int)(heal + drainerCharacter.Hp > drainerCharacter.HpLoad() ? drainerCharacter.HpLoad() : drainerCharacter.Hp + heal);
- drainerCharacter.MapInstance?.Broadcast(drainerCharacter.GenerateRc((int)(heal + drainerCharacter.Hp > drainerCharacter.HpLoad() ? drainerCharacter.HpLoad() - drainerCharacter.Hp : heal)));
- characterDrained.Hp -= heal;
- characterDrained.Session.SendPacket(characterDrained.GenerateStat());
- drainerCharacter.Session.SendPacket(drainerCharacter.GenerateStat());
- if (characterDrained.Hp <= 0)
- {
- characterDrained.Hp = 1;
- }
- break;
- case Character characterDrained when caster is MapMonster drainerMapMonster:
- heal = drainerMapMonster.Monster.Level * SecondData;
- drainerMapMonster.CurrentHp = (heal + drainerMapMonster.CurrentHp > drainerMapMonster.MaxHp ? drainerMapMonster.MaxHp : drainerMapMonster.CurrentHp + heal);
- drainerMapMonster.MapInstance?.Broadcast(drainerMapMonster.GenerateRc((heal + drainerMapMonster.CurrentHp > drainerMapMonster.MaxHp ? drainerMapMonster.MaxHp - drainerMapMonster.CurrentHp : heal)));
- characterDrained.Hp -= heal;
- characterDrained.Session.SendPacket(characterDrained.GenerateStat());
- if (characterDrained.Hp <= 0)
- {
- characterDrained.Hp = 1;
- }
- break;
- }
- break;
- case (byte)AdditionalTypes.DrainAndSteal.LeechEnemyMP / 10:
- int mpDrain = 0;
- switch (session)
- {
- case MapMonster toDrain when caster is Character drainer:
- mpDrain = drainer.Level * SecondData;
- drainer.Mp = (int)(mpDrain + drainer.Mp > drainer.MpLoad() ? drainer.MpLoad() : drainer.Mp + mpDrain);
- toDrain.CurrentMp -= mpDrain;
- drainer.Session.SendPacket(drainer.GenerateStat());
- if (toDrain.CurrentMp <= 0)
- {
- toDrain.CurrentMp = 1;
- }
- break;
- case Character characterDrained when caster is Character drainerCharacter:
- mpDrain = drainerCharacter.Level * SecondData;
- drainerCharacter.Mp = (int)(mpDrain + drainerCharacter.Mp > drainerCharacter.MpLoad() ? drainerCharacter.MpLoad() : drainerCharacter.Mp + mpDrain);
- characterDrained.Mp -= mpDrain;
- characterDrained.Session.SendPacket(characterDrained.GenerateStat());
- drainerCharacter.Session.SendPacket(drainerCharacter.GenerateStat());
- if (characterDrained.Mp <= 0)
- {
- characterDrained.Mp = 1;
- }
- break;
- case Character characterDrained when caster is MapMonster drainerMapMonster:
- // TODO: Add a MaxMp property to MapMonsters
- /*
- mpDrain = drainerMapMonster.Monster.Level * SecondData;
- drainerMapMonster.CurrentMp = (mpDrain + drainerMapMonster.CurrentMp > drainerMapMonster.MaxHp ? drainerMapMonster.MaxHp : drainerMapMonster.CurrentHp + mpDrain);
- drainerMapMonster.MapInstance?.Broadcast(drainerMapMonster.GenerateRc((mpDrain + drainerMapMonster.CurrentHp > drainerMapMonster.MaxHp ? drainerMapMonster.MaxHp - drainerMapMonster.CurrentHp : mpDrain)));
- characterDrained.Hp -= mpDrain;
- characterDrained.MapInstance?.Broadcast(characterDrained.GenerateStat());
- if (characterDrained.Hp <= 0)
- {
- characterDrained.Hp = 1;
- }*/
- break;
- }
- break;
- default:
- break;
- }
- break;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement