private void HealTarget(NWCreature member, int level, int luck) { int amount; switch (level) { case 1: amount = RandomService.D12(1); break; case 2: amount = RandomService.D8(2); break; case 3: amount = RandomService.D8(3); break; case 4: amount = RandomService.D8(4); break; case 5: amount = RandomService.D8(5); break; case 6: amount = RandomService.D8(6); break; default: return; } if (RandomService.D100(1) <= luck) { amount *= 2; } _.ApplyEffectToObject(DURATION_TYPE_INSTANT, _.EffectHeal(amount), member); _.ApplyEffectToObject(DURATION_TYPE_INSTANT, _.EffectVisualEffect(VFX_IMP_HEALING_S), member); }
private void HealTarget(NWCreature member, int level, int luck) { int amount; switch (level) { case 1: amount = RandomService.D12(1); break; case 2: amount = RandomService.D8(2); break; case 3: amount = RandomService.D8(3); break; case 4: amount = RandomService.D8(4); break; case 5: amount = RandomService.D8(5); break; case 6: amount = RandomService.D8(6); break; default: return; } if (RandomService.D100(1) <= luck) { amount *= 2; } _.ApplyEffectToObject(DurationType.Instant, _.EffectHeal(amount), member); _.ApplyEffectToObject(DurationType.Instant, _.EffectVisualEffect(VisualEffect.Vfx_Imp_Healing_S), member); }
public void DoImpact(NWCreature user, NWItem item, Location targetLocation, string grenadeType, int perkLevel, float fExplosionRadius, ObjectType nObjectFilter) { Effect damageEffect = EffectDamage(0, DamageType.Negative); Effect durationEffect = null; int duration = perkLevel + 1; int bonus = item.DamageBonus; int medbonus = item.MedicineBonus; switch (grenadeType) { case "SMOKE": durationEffect = EffectAreaOfEffect(AreaOfEffect.FogOfBewilderment, "grenade_smoke_en", "grenade_smoke_hb", ""); break; case "BACTABOMB": durationEffect = EffectAreaOfEffect(AreaOfEffect.FogMind, "grenade_bbomb_en", "grenade_bbomb_hb", ""); break; case "INCENDIARY": durationEffect = EffectAreaOfEffect(AreaOfEffect.FogFire, "grenade_incen_en", "grenade_incen_hb", ""); break; case "GAS": durationEffect = EffectAreaOfEffect(AreaOfEffect.FogAcid, "grenade_gas_en", "grenade_gas_hb", ""); break; default: break; } if (durationEffect != null) { //Apply AOE ApplyEffectAtLocation(DurationType.Temporary, durationEffect, targetLocation, duration * 6.0f); } else { //Apply impact // Target the next nearest creature and do the same thing. NWObject targetCreature = GetFirstObjectInShape(Shape.Sphere, fExplosionRadius, targetLocation, true, nObjectFilter); while (targetCreature.IsValid) { //Console.WriteLine("Grenade hit on " + targetCreature.Name); switch (grenadeType) { case "FRAG": damageEffect = EffectDamage(RandomService.D6(perkLevel) + bonus, DamageType.Fire); damageEffect = EffectLinkEffects(EffectDamage(RandomService.D6(perkLevel) + bonus, DamageType.Piercing), damageEffect); if (RandomService.D6(1) > 4) { //Console.WriteLine("grenade effect bleeding - frag"); CustomEffectService.ApplyCustomEffect(user, targetCreature.Object, CustomEffectType.Bleeding, duration * 6, perkLevel, Convert.ToString(perkLevel)); } if (RandomService.D6(1) > 4) { //Console.WriteLine("grenade effects burning - frag"); CustomEffectService.ApplyCustomEffect(user, targetCreature.Object, CustomEffectType.Burning, duration * 6, perkLevel, Convert.ToString(perkLevel)); } //Console.WriteLine("grenade effects set - frag"); break; case "CONCUSSION": damageEffect = EffectDamage(RandomService.D12(perkLevel) + bonus, DamageType.Sonic); durationEffect = EffectDeaf(); if (RandomService.D6(1) > 4) { FloatingTextStringOnCreature("Your ears ring and your body shakes.", targetCreature); durationEffect = EffectLinkEffects(AbilityService.EffectKnockdown(targetCreature, duration), durationEffect); } break; case "FLASHBANG": duration = RandomService.D4(1); durationEffect = EffectDeaf(); if (RandomService.D6(1) > 4) { FloatingTextStringOnCreature("Your vision blurs and blacks out.", targetCreature); durationEffect = EffectLinkEffects(EffectBlindness(), durationEffect); } break; case "ION": duration = RandomService.D4(1); damageEffect = EffectDamage(RandomService.D6(perkLevel) + bonus, DamageType.Electrical); if (GetRacialType(targetCreature) == RacialType.Robot || (RandomService.D6(1) > 4 && GetRacialType(targetCreature) == RacialType.Cyborg)) { FloatingTextStringOnCreature("Your circuits are overloaded.", targetCreature); durationEffect = EffectStunned(); } break; case "BACTA": damageEffect = null; durationEffect = EffectRegenerate(perkLevel + 1 + medbonus, 6.0f); break; case "ADHESIVE": durationEffect = EffectSlow(); if (RandomService.D6(1) > 4) { FloatingTextStringOnCreature("You are slowed by the adhesive explosion.", targetCreature); durationEffect = EffectLinkEffects(EffectCutsceneImmobilize(), durationEffect); } break; default: throw new ArgumentOutOfRangeException(nameof(grenadeType)); } //Console.WriteLine("applying effects to " + GetName(targetCreature)); if (damageEffect != null) { ApplyEffectToObject(DurationType.Instant, damageEffect, targetCreature); } if (durationEffect != null) { ApplyEffectToObject(DurationType.Temporary, durationEffect, targetCreature, duration * 6.0f); } if (!targetCreature.IsPlayer) { SkillService.RegisterPCToNPCForSkill(user.Object, targetCreature, SkillType.Throwing); } targetCreature = GetNextObjectInShape(Shape.Sphere, fExplosionRadius, targetLocation, true, nObjectFilter); } } }