示例#1
0
        public void OnImpact(NWPlayer player, NWObject target, int level)
        {
            var   effectiveStats = _playerStat.GetPlayerItemEffectiveStats(player);
            int   luck           = _perk.GetPCPerkLevel(player, PerkType.Lucky) + effectiveStats.Luck;
            int   lightBonus     = effectiveStats.LightAbility;
            int   min            = 1;
            float length;
            int   damage;
            int   wisdom       = player.WisdomModifier;
            int   intelligence = player.IntelligenceModifier;

            min += lightBonus / 4 + wisdom / 3 + intelligence / 4;

            switch (level)
            {
            case 1:
                damage = _random.D4(1, min);
                length = 3;
                break;

            case 2:
                damage = _random.D4(1, min);
                length = 6;
                break;

            case 3:
                damage = _random.D6(1, min);
                length = 6;
                break;

            case 4:
                damage = _random.D8(1, min);
                length = 6;
                break;

            case 5:
                damage = _random.D8(1, min);
                length = 9;
                break;

            case 6:     // Only available with background perk
                damage = _random.D12(1, min);
                length = 9;
                break;

            default: return;
            }

            if (_random.Random(100) + 1 <= luck)
            {
                length = length * 2;
                player.SendMessage("Lucky force push!");
            }

            _.ApplyEffectToObject(DURATION_TYPE_INSTANT, _.EffectDamage(damage, DAMAGE_TYPE_POSITIVE), target);
            _.ApplyEffectToObject(DURATION_TYPE_TEMPORARY, _.EffectKnockdown(), target, length);
            _skill.RegisterPCToNPCForSkill(player, target, SkillType.LightSideAbilities);
        }
示例#2
0
        public void OnImpact(NWPlayer player, NWObject target, int level)
        {
            int   damage;
            float duration;

            switch (level)
            {
            case 1:
                damage   = _random.D4(1);
                duration = 6;
                break;

            case 2:
                damage   = _random.D8(1);
                duration = 6;
                break;

            case 3:
                damage   = _random.D8(2);
                duration = 6;
                break;

            case 4:
                damage   = _random.D8(2);
                duration = 12;
                break;

            case 5:
                damage   = _random.D8(3);
                duration = 12;
                break;

            case 6:
                damage   = _random.D8(4);
                duration = 12;
                break;

            case 7:
                damage   = _random.D8(5);
                duration = 12;
                break;

            case 8:
                damage   = _random.D8(5);
                duration = 18;
                break;

            case 9:
                damage   = _random.D8(6);
                duration = 24;
                break;

            default: return;
            }


            _.ApplyEffectToObject(DURATION_TYPE_INSTANT, _.EffectDamage(damage, DAMAGE_TYPE_PIERCING), target);
            _.ApplyEffectToObject(DURATION_TYPE_TEMPORARY, _.EffectCutsceneImmobilize(), target, duration);
            _.ApplyEffectToObject(DURATION_TYPE_TEMPORARY, _.EffectVisualEffect(VFX_IMP_ACID_L), target, duration);
        }
示例#3
0
 public void Tick(NWCreature oCaster, NWObject oTarget, int currentTick, int effectiveLevel, string data)
 {
     if (currentTick % 2 != 0) return;
     int damage = _random.D4(1);
     oCaster.AssignCommand(() =>
     {
         _.ApplyEffectToObject(DURATION_TYPE_INSTANT, _.EffectDamage(damage, DAMAGE_TYPE_FIRE), oTarget);
     });
 }
示例#4
0
        public void OnImpact(NWPlayer player, NWObject target, int perkLevel)
        {
            int   damage;
            float length;

            switch (perkLevel)
            {
            case 1:
                damage = _random.D4(1);
                length = 6.0f;
                break;

            case 2:
                damage = _random.D4(2);
                length = 6.0f;
                break;

            case 3:
                damage = _random.D6(2);
                length = 6.0f;
                break;

            case 4:
                damage = _random.D6(2);
                length = 9.0f;
                break;

            case 5:
                damage = _random.D6(3);
                length = 9.0f;
                break;

            case 6:
                damage = _random.D8(3);
                length = 9.0f;
                break;

            default: return;
            }

            _.ApplyEffectToObject(DURATION_TYPE_TEMPORARY, _.EffectKnockdown(), target.Object, length);
            _.ApplyEffectToObject(DURATION_TYPE_INSTANT, _.EffectDamage(damage, DAMAGE_TYPE_BLUDGEONING), target);
        }
示例#5
0
        private void DoDiceRoll(NWPlayer user, int sides, int number)
        {
            int value;

            if (number < 1)
            {
                number = 1;
            }
            else if (number > 10)
            {
                number = 10;
            }

            switch (sides)
            {
            case 2:
                value = _random.D2(number);
                break;

            case 4:
                value = _random.D4(number);
                break;

            case 6:
                value = _random.D6(number);
                break;

            case 8:
                value = _random.D8(number);
                break;

            case 10:
                value = _random.D10(number);
                break;

            case 20:
                value = _random.D20(number);
                break;

            case 100:
                value = _random.D100(number);
                break;

            default:
                value = 0;
                break;
            }

            string dieRoll = number + "d" + sides;
            string message = _color.SkillCheck("Dice Roll: ") + dieRoll + ": " + value;

            user.SpeakString(message);
        }
示例#6
0
        public void OnImpact(NWPlayer player, NWObject target, int level)
        {
            int damage;
            int seconds;
            int dotDamage;

            switch (level)
            {
            case 1:
                damage    = _random.D4(1);
                seconds   = 6;
                dotDamage = 1;
                break;

            case 2:
                damage    = _random.D8(1);
                seconds   = 6;
                dotDamage = 1;
                break;

            case 3:
                damage    = _random.D8(2);
                seconds   = 6;
                dotDamage = 1;
                break;

            case 4:
                damage    = _random.D8(2);
                seconds   = 12;
                dotDamage = 2;
                break;

            case 5:
                damage    = _random.D8(3);
                seconds   = 12;
                dotDamage = 2;
                break;

            case 6:
                damage    = _random.D8(4);
                seconds   = 12;
                dotDamage = 2;
                break;

            case 7:
                damage    = _random.D8(5);
                seconds   = 12;
                dotDamage = 3;
                break;

            case 8:
                damage    = _random.D8(5);
                seconds   = 18;
                dotDamage = 3;
                break;

            case 9:
                damage    = _random.D8(6);
                seconds   = 24;
                dotDamage = 3;
                break;

            default: return;
            }

            _.ApplyEffectToObject(DURATION_TYPE_INSTANT, _.EffectDamage(damage, DAMAGE_TYPE_PIERCING), target);
            _customEffect.ApplyCustomEffect(player, target.Object, CustomEffectType.Bleeding, seconds, level, Convert.ToString(dotDamage));
        }
示例#7
0
        public void OnImpact(NWPlayer player, NWObject target, int perkLevel)
        {
            int   damage   = 0;
            float duration = 0.0f;

            switch (perkLevel)
            {
            case 1:
                damage   = _random.D4(1);
                duration = 6;
                break;

            case 2:
                damage   = _random.D4(2);
                duration = 6;
                break;

            case 3:
                damage   = _random.D4(2);
                duration = 9;
                break;

            case 4:
                damage   = _random.D8(2);
                duration = 9;
                break;

            case 5:
                damage   = _random.D8(2);
                duration = 12;
                break;

            case 6:
                damage   = _random.D6(3);
                duration = 15;
                break;

            case 7:
                damage   = _random.D8(3);
                duration = 15;
                break;

            case 8:
                damage   = _random.D8(3);
                duration = 18;
                break;

            case 9:
                damage   = _random.D8(4);
                duration = 18;
                break;

            case 10:
                damage   = _random.D8(4);
                duration = 21;
                break;
            }

            _.ApplyEffectToObject(DURATION_TYPE_INSTANT, _.EffectDamage(damage, DAMAGE_TYPE_SLASHING), target);
            _.ApplyEffectToObject(DURATION_TYPE_TEMPORARY, _.EffectACDecrease(3), target, duration);
            _.ApplyEffectToObject(DURATION_TYPE_INSTANT, _.EffectVisualEffect(VFX_IMP_HEAD_EVIL), target);

            player.SendMessage("Your target's armor has been breached.");
        }