Initial commit
Initial commit
This commit is contained in:
parent
09dc8aec92
commit
d1c309ae63
4
.gitignore
vendored
Normal file
4
.gitignore
vendored
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
|
||||||
|
*.hak
|
||||||
|
*.md5
|
||||||
|
*.mod
|
3
_content/BuildHaks.cmd
Normal file
3
_content/BuildHaks.cmd
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
cd _tools\
|
||||||
|
NWN.CLI.exe -k
|
||||||
|
cd ..
|
BIN
_content/_hak/rune_prc8_top/nw_c2_default7.ncs
Normal file
BIN
_content/_hak/rune_prc8_top/nw_c2_default7.ncs
Normal file
Binary file not shown.
47
_content/_hak/rune_prc8_top/nw_c2_default7.nss
Normal file
47
_content/_hak/rune_prc8_top/nw_c2_default7.nss
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
//:://////////////////////////////////////////////////
|
||||||
|
//:: NW_C2_DEFAULT7
|
||||||
|
/*
|
||||||
|
Default OnDeath event handler for NPCs.
|
||||||
|
|
||||||
|
Adjusts killer's alignment if appropriate and
|
||||||
|
alerts allies to our death.
|
||||||
|
*/
|
||||||
|
//:://////////////////////////////////////////////////
|
||||||
|
//:: Copyright (c) 2002 Floodgate Entertainment
|
||||||
|
//:: Created By: Naomi Novik
|
||||||
|
//:: Created On: 12/22/2002
|
||||||
|
//:://////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#include "x2_inc_compon"
|
||||||
|
#include "x0_i0_spawncond"
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
ExecuteScript("prc_npc_death", OBJECT_SELF);
|
||||||
|
ExecuteScript("prc_pwondeath", OBJECT_SELF);
|
||||||
|
|
||||||
|
int nClass = GetLevelByClass(CLASS_TYPE_COMMONER);
|
||||||
|
int nAlign = GetAlignmentGoodEvil(OBJECT_SELF);
|
||||||
|
object oKiller = GetLastKiller();
|
||||||
|
|
||||||
|
// If we're a good/neutral commoner,
|
||||||
|
// adjust the killer's alignment evil
|
||||||
|
if(nClass > 0 && (nAlign == ALIGNMENT_GOOD || nAlign == ALIGNMENT_NEUTRAL))
|
||||||
|
{
|
||||||
|
AdjustAlignment(oKiller, ALIGNMENT_EVIL, 5);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Call to allies to let them know we're dead
|
||||||
|
SpeakString("NW_I_AM_DEAD", TALKVOLUME_SILENT_TALK);
|
||||||
|
|
||||||
|
//Shout Attack my target, only works with the On Spawn In setup
|
||||||
|
SpeakString("NW_ATTACK_MY_TARGET", TALKVOLUME_SILENT_TALK);
|
||||||
|
|
||||||
|
// NOTE: the OnDeath user-defined event does not
|
||||||
|
// trigger reliably and should probably be removed
|
||||||
|
if(GetSpawnInCondition(NW_FLAG_DEATH_EVENT))
|
||||||
|
{
|
||||||
|
SignalEvent(OBJECT_SELF, EventUserDefined(1007));
|
||||||
|
}
|
||||||
|
craft_drop_items(oKiller);
|
||||||
|
}
|
BIN
_content/_hak/rune_prc8_top/nw_c2_default9.ncs
Normal file
BIN
_content/_hak/rune_prc8_top/nw_c2_default9.ncs
Normal file
Binary file not shown.
643
_content/_hak/rune_prc8_top/nw_c2_default9.nss
Normal file
643
_content/_hak/rune_prc8_top/nw_c2_default9.nss
Normal file
@ -0,0 +1,643 @@
|
|||||||
|
/************************ [On Spawn] *******************************************
|
||||||
|
Filename: j_ai_onspawn or nw_c2_default9
|
||||||
|
************************* [On Spawn] *******************************************
|
||||||
|
This file contains options that will determine some AI behaviour, and a lot
|
||||||
|
of toggles for turning things on/off. A big read, but might be worthwhile.
|
||||||
|
|
||||||
|
The documentation is actually fully in the readme files, under the name
|
||||||
|
"On Spawn.html", under "AI File Explanations".
|
||||||
|
|
||||||
|
The order of the options:
|
||||||
|
|
||||||
|
- Important Spawn Settings N/A
|
||||||
|
- Targeting & Fleeing (AI_TARGETING_FLEE_MASTER)
|
||||||
|
- Fighting & Spells (AI_COMBAT_MASTER)
|
||||||
|
- Other Combat - Healing, Skills & Bosses (AI_OTHER_COMBAT_MASTER)
|
||||||
|
- Other - Death corpses, minor things (AI_OTHER_MASTER)
|
||||||
|
- User Defined (AI_UDE_MASTER)
|
||||||
|
- Shouts N/A
|
||||||
|
- Default Bioware settings (WP's, Anims) (NW_GENERIC_MASTER)
|
||||||
|
|
||||||
|
The OnSpawn file is a settings file. These things are set onto a creature, to
|
||||||
|
define cirtain actions. If more than one creature has this script, they all
|
||||||
|
use the settings, unless If/Else statements are used somehow. There is also
|
||||||
|
the process of setting any spells/feats availible, and hiding and walk waypoints
|
||||||
|
are started.
|
||||||
|
|
||||||
|
Other stuff:
|
||||||
|
- Targeting is imporant :-D
|
||||||
|
- If you delete this script, there is a template for the On Spawn file
|
||||||
|
in the zip it came in, for use in the "scripttemplate" directory.
|
||||||
|
************************* [History] ********************************************
|
||||||
|
Note: I have removed:
|
||||||
|
- Default "Teleporting" and exit/return (this seemed bugged anyway, or useless)
|
||||||
|
- Spawn in animation. This can be, of course, re-added.
|
||||||
|
- Day/night posting. This is uneeded, with a changed walk waypoints that does it automatically.
|
||||||
|
|
||||||
|
Changes from 1.0-1.2:
|
||||||
|
- All constants names are changed, I am afraid.
|
||||||
|
- Added Set/Delete/GetAIInteger/Constant/Object. This makes sure that the AI
|
||||||
|
doesn't ever interfere with other things - it pre-fixes all stored things
|
||||||
|
with AI_INTEGER_ (and so on)
|
||||||
|
************************* [Workings] *******************************************
|
||||||
|
Note: You can do without all the comments (it may be that you don't want
|
||||||
|
the extra KB it adds or something, although it does not at all slow down a module)
|
||||||
|
so as long as you have these at the end:
|
||||||
|
|
||||||
|
AI_SetUpEndOfSpawn();
|
||||||
|
DelayCommand(2.0, SpawnWalkWayPoints());
|
||||||
|
|
||||||
|
Oh, and the include file (Below, "j_inc_spawnin") must be at the top like
|
||||||
|
here. Also recommended is the AI_INTELLIGENCE and AI_MORALE being set (if
|
||||||
|
not using custom AI).
|
||||||
|
************************* [Arguments] ******************************************
|
||||||
|
Arguments: GetIsEncounterCreature
|
||||||
|
************************* [On Spawn] ******************************************/
|
||||||
|
|
||||||
|
// Treasure Includes - See end of spawn for uncomment options.
|
||||||
|
|
||||||
|
//#include "nw_o2_coninclude"
|
||||||
|
// Uncomment this if you want default NwN Treasure - Uses line "GenerateNPCTreasure()" at the end of spawn.
|
||||||
|
// - This generates random things from the default pallet based on the creatures level + race
|
||||||
|
|
||||||
|
#include "x0_i0_treasure"
|
||||||
|
// Uncomment this if you want the SoU Treasure - Uses line "CTG_GenerateNPCTreasure()" at the end of spawn.
|
||||||
|
// - This will spawn treasure based on chests placed in the module. See "x0_i0_treasure" for more information.
|
||||||
|
|
||||||
|
// This is required for all spawn in options!
|
||||||
|
#include "j_inc_spawnin"
|
||||||
|
//DMFI CODE ADDITIONS BEGIN HERE
|
||||||
|
#include "dmfi_dmw_inc"
|
||||||
|
//DMFI CODE ADDITIONS END HERE
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
ExecuteScript("prc_npc_spawn", OBJECT_SELF);
|
||||||
|
|
||||||
|
if (GetLevelByClass(CLASS_TYPE_COMMONER) > 0)
|
||||||
|
{
|
||||||
|
ExecuteScript("oai_default9", OBJECT_SELF);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
/************************ [Important Spawn Settings] **************************/
|
||||||
|
SetAIInteger(AI_INTELLIGENCE, 10);
|
||||||
|
// Intelligence value of the creauture. Can be 1-10, read readme's for help.
|
||||||
|
SetAIInteger(AI_MORALE, 10);
|
||||||
|
// Will save (See readme). Remember: -1 or below means they always flee.
|
||||||
|
//SetCustomAIFileName("CUSTOM_AI_FILE");
|
||||||
|
// Sets our custom AI file. Really, only animation settings will apply when this is set.
|
||||||
|
// - Can sort actions against a imputted target (EG: On Percieved enemy) by
|
||||||
|
// "GetLocalObject(OBJECT_SELF, "AI_TEMP_SET_TARGET");"
|
||||||
|
/************************ [Important Spawn Settings] **************************/
|
||||||
|
|
||||||
|
/************************ [Targeting] ******************************************
|
||||||
|
All targeting settings.
|
||||||
|
************************* [Targeting] *****************************************/
|
||||||
|
//SetSpawnInCondition(AI_FLAG_TARGETING_LIKE_LOWER_HP, AI_TARGETING_FLEE_MASTER);
|
||||||
|
// We only attack the lowest current HP.
|
||||||
|
//SetSpawnInCondition(AI_FLAG_TARGETING_LIKE_LOWER_AC, AI_TARGETING_FLEE_MASTER);
|
||||||
|
// We only attack the lowest AC (as in 1.2).
|
||||||
|
//SetSpawnInCondition(AI_FLAG_TARGETING_LIKE_LOWER_HD, AI_TARGETING_FLEE_MASTER);
|
||||||
|
// Target the lowest hit dice
|
||||||
|
//SetSpawnInCondition(AI_FLAG_TARGETING_LIKE_MAGE_CLASSES, AI_TARGETING_FLEE_MASTER);
|
||||||
|
// We go straight for mages/sorcerors. Nearest one.
|
||||||
|
//SetSpawnInCondition(AI_FLAG_TARGETING_LIKE_ARCHERS, AI_TARGETING_FLEE_MASTER);
|
||||||
|
// We go for the nearest enemy with a ranged weapon equipped.
|
||||||
|
//SetSpawnInCondition(AI_FLAG_TARGETING_LIKE_PCS, AI_TARGETING_FLEE_MASTER);
|
||||||
|
// We go for the nearest seen PC enemy.
|
||||||
|
|
||||||
|
//SetAIConstant(AI_FAVOURED_ENEMY_RACE, RACIAL_TYPE_HUMAN);
|
||||||
|
// The AI attacks the nearest enemy, seen, of this race. Use the RACIAL_* constants.
|
||||||
|
//SetAIConstant(AI_FAVOURED_ENEMY_CLASS, CLASS_TYPE_BARD);
|
||||||
|
// The AI attacks the nearest enemy, seen, of this class. Use the CLASS_* constants.
|
||||||
|
|
||||||
|
// Target changing - see readme for info.
|
||||||
|
//SetAIInteger(AI_MAX_TURNS_TO_ATTACK_ONE_TARGET, 6);
|
||||||
|
// Maximum rounds to attack the current target, before re-checking.
|
||||||
|
// % Chance to re-set each target type each round (Could result in current target still)
|
||||||
|
//SetAIInteger(AI_MELEE_LAST_TO_NEW_TARGET_CHANCE, 20);
|
||||||
|
//SetAIInteger(AI_RANGED_LAST_TO_NEW_TARGET_CHANCE, 20);
|
||||||
|
//SetAIInteger(AI_SPELL_LAST_TO_NEW_TARGET_CHANCE, 20);
|
||||||
|
|
||||||
|
// We only target PC's if there are any in range if this is set
|
||||||
|
//SetSpawnInCondition(AI_FLAG_TARGETING_FILTER_FOR_PC_TARGETS, AI_TARGETING_FLEE_MASTER);
|
||||||
|
|
||||||
|
// Main explanation of AI_SetAITargetingValues, see the AI readme (spawn file)
|
||||||
|
// - Remember, uncommenting one will just ignore it (so will never check target's
|
||||||
|
// AC without TARGETING_AC on)
|
||||||
|
|
||||||
|
AI_SetAITargetingValues(TARGETING_MANTALS, TARGET_LOWER, i1, i12);
|
||||||
|
// Spell mantals are checked only for the spell target. Either Absense of or got any.
|
||||||
|
AI_SetAITargetingValues(TARGETING_RANGE, TARGET_HIGHER, i2, i9);
|
||||||
|
// Range - very imporant! Basis for all ranged/spell attacks.
|
||||||
|
AI_SetAITargetingValues(TARGETING_AC, TARGET_LOWER, i2, i6);
|
||||||
|
// AC is used for all phisical attacks. Lower targets lower (By default).
|
||||||
|
AI_SetAITargetingValues(TARGETING_SAVES, TARGET_LOWER, i2, i4);
|
||||||
|
// Used for spell attacks. Saves are sorta a AC versus spells.
|
||||||
|
|
||||||
|
// Phisical protections. Used by spells, ranged and melee.
|
||||||
|
// Jasperre - simple check if we are a fighter (hit lower phisicals) or a
|
||||||
|
// mage (attack higher!)
|
||||||
|
if(GetBaseAttackBonus(OBJECT_SELF) > ((GetHitDice(OBJECT_SELF)/2) + 1))
|
||||||
|
{
|
||||||
|
// Fighter/Clerics (It is over a mages BAB + 1 (IE 0.5 BAB/Level) target lower
|
||||||
|
AI_SetAITargetingValues(TARGETING_PHISICALS, TARGET_LOWER, i2, i6);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Mages target higher (so dispel/elemental attack those who fighters
|
||||||
|
// cannot hit as much). (the lowest BAB, under half our hit dice in BAB)
|
||||||
|
AI_SetAITargetingValues(TARGETING_PHISICALS, TARGET_HIGHER, i1, i5);
|
||||||
|
}
|
||||||
|
// Base attack bonus. Used for spells and phisical attacks. Checked with GetBaseAttackBonus.
|
||||||
|
AI_SetAITargetingValues(TARGETING_BAB, TARGET_LOWER, i1, i4);
|
||||||
|
// Hit dice - how powerful in levels the enemy is. Used for all checks.
|
||||||
|
AI_SetAITargetingValues(TARGETING_HITDICE, TARGET_LOWER, i1, i3);
|
||||||
|
|
||||||
|
//AI_SetAITargetingValues(TARGETING_HP_PERCENT, TARGET_LOWER, i1, i3);
|
||||||
|
//AI_SetAITargetingValues(TARGETING_HP_CURRENT, TARGET_LOWER, i1, i3);
|
||||||
|
//AI_SetAITargetingValues(TARGETING_HP_MAXIMUM, TARGET_LOWER, i1, i3);
|
||||||
|
// The HP's are the last thing to choose a target with.
|
||||||
|
/************************ [Targeting] *****************************************/
|
||||||
|
|
||||||
|
/************************ [Fleeing] ********************************************
|
||||||
|
Fleeing - these are toggled on/off by FEARLESS flag.
|
||||||
|
|
||||||
|
3 or under intelligence will just run away. 4 or more will know where allies
|
||||||
|
are, and if there are none, will not run.
|
||||||
|
************************* [Fleeing] *******************************************/
|
||||||
|
SetSpawnInCondition(AI_FLAG_FLEEING_FEARLESS, AI_TARGETING_FLEE_MASTER);
|
||||||
|
// Forces them to not flee. This may be set with AI_SetMaybeFearless at the end.
|
||||||
|
//SetSpawnInCondition(AI_FLAG_FLEEING_NEVER_FIGHT_IMPOSSIBLE_ODDS, AI_TARGETING_FLEE_MASTER);
|
||||||
|
// This will make the creature never fight against impossible odds (8HD+ different)
|
||||||
|
//SetSpawnInCondition(AI_FLAG_FLEEING_TURN_OFF_GROUP_MORALE, AI_TARGETING_FLEE_MASTER);
|
||||||
|
// This turns OFF any sort of group morale bonuses.
|
||||||
|
|
||||||
|
//SetAIInteger(AMOUNT_OF_HD_DIFFERENCE_TO_CHECK, -2);
|
||||||
|
// If enemy is within this amount of HD, we do not check morale.
|
||||||
|
//SetAIInteger(BASE_MORALE_SAVE, 20);
|
||||||
|
// Base DC of the will save. It is set to 20 + HD difference - Morale - Group morale mod.
|
||||||
|
//SetAIInteger(HP_PERCENT_TO_CHECK_AT, 80);
|
||||||
|
// %HP needed to be at to check morale. This doesn't affect "Never fight impossible odds"
|
||||||
|
//SetSpawnInCondition(AI_FLAG_FLEEING_NO_OVERRIDING_HP_AMOUNT, AI_TARGETING_FLEE_MASTER);
|
||||||
|
// This will turn off overriding HP checks. AI may decide to run even
|
||||||
|
// not at the %HP above, this turns the checks off.
|
||||||
|
|
||||||
|
//SetAIInteger(AI_DAMAGE_AT_ONCE_FOR_MORALE_PENALTY, GetMaxHitPoints()/6);
|
||||||
|
// Damage needed to be done at once to get a massive morale penalty (Below)
|
||||||
|
//SetAIInteger(AI_DAMAGE_AT_ONCE_PENALTY, 6);
|
||||||
|
// Penalty for the above, set for some time to negativly affect morale. Added to save DC for fleeing.
|
||||||
|
|
||||||
|
//SetSpawnInCondition(AI_FLAG_FLEEING_FLEE_TO_NEAREST_NONE_SEEN, AI_TARGETING_FLEE_MASTER);
|
||||||
|
// If set, just runs to nearest non-seen ally, and removes the loop for a good group of allies to run to.
|
||||||
|
|
||||||
|
//SetSpawnInCondition(AI_FLAG_FLEEING_FLEE_TO_OBJECT, AI_TARGETING_FLEE_MASTER);
|
||||||
|
// They will flee to the nearest object of the tag below, if set.
|
||||||
|
//SetLocalString(OBJECT_SELF, AI_FLEE_OBJECT, "BOSS_TAG_OR_WHATEVER");
|
||||||
|
// This needs setting if the above is to work.
|
||||||
|
/************************ [Fleeing] *******************************************/
|
||||||
|
|
||||||
|
/************************ [Combat - Fighters] **********************************
|
||||||
|
Fighter (Phiscal attacks, really) specific stuff - disarmed weapons, better
|
||||||
|
at hand to hand, and archer behaviour.
|
||||||
|
************************* [Combat - Fighters] *********************************/
|
||||||
|
SetSpawnInCondition(AI_FLAG_COMBAT_PICK_UP_DISARMED_WEAPONS, AI_COMBAT_MASTER);
|
||||||
|
// This sets to pick up weapons which are disarmed.
|
||||||
|
|
||||||
|
//SetAIInteger(AI_RANGED_WEAPON_RANGE, 3);
|
||||||
|
// This is the range at which they go into melee (from using a ranged weapon). Default is 3 or 5.
|
||||||
|
|
||||||
|
//SetSpawnInCondition(AI_FLAG_COMBAT_BETTER_AT_HAND_TO_HAND, AI_COMBAT_MASTER);
|
||||||
|
// Set if you want them to move forwards into HTH sooner. Will always
|
||||||
|
// if the enemy is a mage/archer, else % based on range.
|
||||||
|
|
||||||
|
//SetSpawnInCondition(AI_FLAG_COMBAT_ARCHER_ATTACKING, AI_COMBAT_MASTER);
|
||||||
|
// For archers. If they have ally support, they'd rather move back & shoot then go into HTH.
|
||||||
|
//SetSpawnInCondition(AI_FLAG_COMBAT_ARCHER_ALWAYS_MOVE_BACK, AI_COMBAT_MASTER);
|
||||||
|
// This forces the move back from attackers, and shoot bows. Very small chance to go melee.
|
||||||
|
//SetSpawnInCondition(AI_FLAG_COMBAT_ARCHER_ALWAYS_USE_BOW, AI_COMBAT_MASTER);
|
||||||
|
// This will make the creature ALWAYs use any bows it has. ALWAYS.
|
||||||
|
|
||||||
|
//SetSpawnInCondition(AI_FLAG_COMBAT_NO_GO_FOR_THE_KILL, AI_COMBAT_MASTER);
|
||||||
|
// Turns off any attempts to kill dying PCs, or attack low hit point people.
|
||||||
|
// This is only ever attempted at 9 or 10 intelligence anyway.
|
||||||
|
/************************ [Combat - Fighters] *********************************/
|
||||||
|
|
||||||
|
/************************ [Combat - Spell Casters] *****************************
|
||||||
|
Spellcaster AI has been improved significantly. As well as adding all new spells,
|
||||||
|
now spellcasters more randomly choose spells from the same level (EG: they
|
||||||
|
may choose not to cast magic missile, and cast negative energy ray instead).
|
||||||
|
|
||||||
|
There are also options here for counterspelling, fast buffing, Cheat cast spells,
|
||||||
|
dispelling, spell triggers, long ranged spells first, immunity toggles, and AOE settings.
|
||||||
|
************************* [Combat - Spell Casters] ****************************/
|
||||||
|
|
||||||
|
//SetSpawnInCondition(AI_FLAG_COMBAT_LONGER_RANGED_SPELLS_FIRST, AI_COMBAT_MASTER);
|
||||||
|
// Casts spells only if the caster would not move into range to cast them.
|
||||||
|
// IE long range spells, then medium, then short (unless the enemy comes to us!)
|
||||||
|
//SetSpawnInCondition(AI_FLAG_COMBAT_FLAG_FAST_BUFF_ENEMY, AI_COMBAT_MASTER);
|
||||||
|
// When an enemy comes in 40M, we fast-cast many defensive spells, as if prepared.
|
||||||
|
//SetSpawnInCondition(AI_FLAG_COMBAT_SUMMON_FAMILIAR, AI_COMBAT_MASTER);
|
||||||
|
// The caster summons thier familiar/animal companion. Either a nameless Bat or Badger respectivly.
|
||||||
|
|
||||||
|
// Counterspelling/Dispelling...
|
||||||
|
// It checks for these classes within the 20M counterspell range.
|
||||||
|
//SetSpawnInCondition(AI_FLAG_COMBAT_COUNTER_SPELL_ARCANE, AI_COMBAT_MASTER);
|
||||||
|
// If got dispels, it counterspells Arcane (Mage/Sorceror) spellcasters.
|
||||||
|
//SetSpawnInCondition(AI_FLAG_COMBAT_COUNTER_SPELL_DIVINE, AI_COMBAT_MASTER);
|
||||||
|
// If got dispels, it counterspells Divine (Cleric/Druid) spellcasters.
|
||||||
|
//SetSpawnInCondition(AI_FLAG_COMBAT_COUNTER_SPELL_ONLY_IN_GROUP, AI_COMBAT_MASTER);
|
||||||
|
// Recommended. Only counterspells with 5+ allies in group.
|
||||||
|
|
||||||
|
//SetSpawnInCondition(AI_FLAG_COMBAT_DISPEL_MAGES_MORE, AI_COMBAT_MASTER);
|
||||||
|
// Targets seen mages to dispel, else uses normal spell target.
|
||||||
|
SetSpawnInCondition(AI_FLAG_COMBAT_DISPEL_IN_ORDER, AI_COMBAT_MASTER);
|
||||||
|
// This will make the mage not dispel just anything all the time, but important (spell-stopping)
|
||||||
|
// things first, others later, after some spells. If off, anything is dispelled.
|
||||||
|
|
||||||
|
// AOE's
|
||||||
|
//SetSpawnInCondition(AI_FLAG_COMBAT_NEVER_HIT_ALLIES, AI_COMBAT_MASTER);
|
||||||
|
// Override toggle. Forces to never cast AOE's if it will hit an ally + harm them.
|
||||||
|
//SetSpawnInCondition(AI_FLAG_COMBAT_AOE_DONT_MIND_IF_THEY_SURVIVE, AI_COMBAT_MASTER);
|
||||||
|
// Allies who will survive the blast are ignored for calculating best target.
|
||||||
|
//SetAIInteger(AI_AOE_ALLIES_LOWEST_IN_AOE, 3);
|
||||||
|
// Defualt: 3. If amount of allies in blast radius are equal or more then
|
||||||
|
// this, then that location is ignored.
|
||||||
|
//SetAIInteger(AI_AOE_HD_DIFFERENCE, -8);
|
||||||
|
// Very weak allies (who are not comparable to us) are ignored if we would hit them.
|
||||||
|
|
||||||
|
// For these 2, if neither are set, the AI will choose AOE more if there are
|
||||||
|
// lots of enemies, or singles if there are not many.
|
||||||
|
//SetSpawnInCondition(AI_FLAG_COMBAT_SINGLE_TARGETING, AI_COMBAT_MASTER);
|
||||||
|
// For Same-level spells, single target spells are used first.
|
||||||
|
//SetSpawnInCondition(AI_FLAG_COMBAT_MANY_TARGETING, AI_COMBAT_MASTER);
|
||||||
|
// For Same-level spells, AOE spells are used first.
|
||||||
|
|
||||||
|
SetSpawnInCondition(AI_FLAG_COMBAT_IMPROVED_INSTANT_DEATH_SPELLS, AI_COMBAT_MASTER);
|
||||||
|
// A few Death spells may be cast top-prioritory if the enemy will always fail saves.
|
||||||
|
SetSpawnInCondition(AI_FLAG_COMBAT_IMPROVED_SUMMON_TARGETING, AI_COMBAT_MASTER);
|
||||||
|
// Will use a better target to summon a creature at (EG: Ranged attacker)
|
||||||
|
SetSpawnInCondition(AI_FLAG_COMBAT_IMPROVED_IMMUNITY_CHECKING, AI_COMBAT_MASTER);
|
||||||
|
// Turns On "GetIsImmune" checks. Auto on for 7+ Intel.
|
||||||
|
SetSpawnInCondition(AI_FLAG_COMBAT_IMPROVED_SPECIFIC_SPELL_IMMUNITY, AI_COMBAT_MASTER);
|
||||||
|
// Turns On checks for Globes & levels of spells. Auto on for 9+ Intel.
|
||||||
|
|
||||||
|
//SetSpawnInCondition(AI_FLAG_COMBAT_MORE_ALLY_BUFFING_SPELLS, AI_COMBAT_MASTER);
|
||||||
|
// This will make the caster buff more allies - or, in fact, use spells
|
||||||
|
// to buff allies which they might have not used before.
|
||||||
|
|
||||||
|
//SetSpawnInCondition(AI_FLAG_COMBAT_USE_ALL_POTIONS, AI_COMBAT_MASTER);
|
||||||
|
// Uses all buffing spells before melee.
|
||||||
|
|
||||||
|
//SetAICheatCastSpells(SPELL_MAGIC_MISSILE, SPELL_ICE_DAGGER, SPELL_HORIZIKAULS_BOOM, SPELL_MELFS_ACID_ARROW, SPELL_NEGATIVE_ENERGY_RAY, SPELL_FLAME_ARROW);
|
||||||
|
// Special: Mages cast for ever with this set.
|
||||||
|
|
||||||
|
// Spell triggers
|
||||||
|
//SetSpellTrigger(SPELLTRIGGER_NOT_GOT_FIRST_SPELL, FALSE, 1, SPELL_PREMONITION);
|
||||||
|
// This is just an example. See readme for more info.
|
||||||
|
|
||||||
|
/************************ [Combat - Spell Casters] ****************************/
|
||||||
|
|
||||||
|
/************************ [Combat - Dragons] ***********************************
|
||||||
|
I have a fondness for dragons - in NWN they are deprived of many abilities. Here
|
||||||
|
are some new ones for your enjoyment! Switches and flying for ANYTHING! :-)
|
||||||
|
************************* [Combat - Dragons] **********************************/
|
||||||
|
|
||||||
|
//SetSpawnInCondition(AI_FLAG_COMBAT_NO_WING_BUFFET, AI_COMBAT_MASTER);
|
||||||
|
//This sets so there is no Dragon wing buffet. Readme has details of it.
|
||||||
|
//SetAIInteger(AI_DRAGON_FREQUENCY_OF_BUFFET, 3);
|
||||||
|
// Min. Amount of Rounds between each buffet. See readme for counter defaults. Def: 3
|
||||||
|
//SetAIInteger(AI_DRAGON_FREQUENCY_OF_BREATH, 3);
|
||||||
|
// Min. Amount of Rounds between each breath use. See readme for counter defaults. Def: 3
|
||||||
|
|
||||||
|
// Default checks for dragon flying automatic turning on of flying.
|
||||||
|
if(GetLevelByClass(CLASS_TYPE_DRAGON) || GetRacialType(OBJECT_SELF) == RACIAL_TYPE_DRAGON)
|
||||||
|
{
|
||||||
|
SetSpawnInCondition(AI_FLAG_COMBAT_FLYING, AI_COMBAT_MASTER);
|
||||||
|
// This turns ON combat flying. I think anything winged looks A-OK. See readme for info.
|
||||||
|
}
|
||||||
|
/************************ [Combat - Dragons] **********************************/
|
||||||
|
|
||||||
|
/************************ [Combat Other - Healers/Healing] *********************
|
||||||
|
Healing behaviour - not specifically clerics. See readme.
|
||||||
|
************************* [Combat Other - Healers/Healing] ********************/
|
||||||
|
//SetSpawnInCondition(AI_FLAG_OTHER_COMBAT_HEAL_AT_PERCENT_NOT_AMOUNT, AI_OTHER_COMBAT_MASTER);
|
||||||
|
// if this is set, we ignore the amount we need to be damaged, as long
|
||||||
|
// as we are under AI_HEALING_US_PERCENT.
|
||||||
|
//SetAIInteger(AI_HEALING_US_PERCENT, 50);
|
||||||
|
// % of HP we need to be at until we heal us at all. Default: 50
|
||||||
|
//SetAIInteger(AI_HEALING_ALLIES_PERCENT, 60);
|
||||||
|
// % of HP allies would need to be at to heal them Readme = info. Default: 60
|
||||||
|
//SetSpawnInCondition(AI_FLAG_OTHER_COMBAT_WILL_RAISE_ALLIES_IN_BATTLE, AI_OTHER_COMBAT_MASTER);
|
||||||
|
// Turns on rasing dead with Resurrection/Raise dead.
|
||||||
|
//SetSpawnInCondition(AI_FLAG_OTHER_COMBAT_NO_CURING, AI_OTHER_COMBAT_MASTER);
|
||||||
|
// This turns off all healing.
|
||||||
|
//SetSpawnInCondition(AI_FLAG_OTHER_COMBAT_ONLY_CURE_SELF, AI_OTHER_COMBAT_MASTER);
|
||||||
|
// This turns off ally healing.
|
||||||
|
//SetSpawnInCondition(AI_FLAG_OTHER_COMBAT_ONLY_RESTORE_SELF, AI_OTHER_COMBAT_MASTER);
|
||||||
|
// This turns off ally restoring (Remove/Restoration).
|
||||||
|
//SetSpawnInCondition(AI_FLAG_OTHER_COMBAT_USE_BAD_HEALING_SPELLS, AI_OTHER_COMBAT_MASTER);
|
||||||
|
// This forces all cure spells to be used, check readme.
|
||||||
|
//SetAIInteger(SECONDS_BETWEEN_STATUS_CHECKS, 30);
|
||||||
|
// Seconds between when we loop everyone for bad effects like Fear/stun ETC. If not set, done each round.
|
||||||
|
//SetSpawnInCondition(AI_FLAG_OTHER_COMBAT_GIVE_POTIONS_TO_HELP, AI_OTHER_COMBAT_MASTER);
|
||||||
|
// ActionGiveItem standard healing potion's to allies who need them, if they possess them.
|
||||||
|
|
||||||
|
/************************ [Combat Other - Healers/Healing] ********************/
|
||||||
|
|
||||||
|
/************************ [Combat Other - Skills] ******************************
|
||||||
|
Skills are a part of fighting - EG Taunt. These are mainly on/off switches.
|
||||||
|
A creature will *may* use it if they are not set to "NO_" for the skill.
|
||||||
|
************************* [Combat Other - Skills] *****************************/
|
||||||
|
|
||||||
|
// "NO" - This is for forcing the skill NEVER to be used by the combat AI.
|
||||||
|
// "FORCE" - This forces it on (and to be used), except if they have no got the skill.
|
||||||
|
|
||||||
|
SetSpawnInCondition(AI_FLAG_OTHER_COMBAT_NO_PICKPOCKETING, AI_OTHER_COMBAT_MASTER);
|
||||||
|
//SetSpawnInCondition(AI_FLAG_OTHER_COMBAT_FORCE_PICKPOCKETING, AI_OTHER_COMBAT_MASTER);
|
||||||
|
SetSpawnInCondition(AI_FLAG_OTHER_COMBAT_NO_TAUNTING, AI_OTHER_COMBAT_MASTER);
|
||||||
|
//SetSpawnInCondition(AI_FLAG_OTHER_COMBAT_FORCE_TAUNTING, AI_OTHER_COMBAT_MASTER);
|
||||||
|
SetSpawnInCondition(AI_FLAG_OTHER_COMBAT_NO_EMPATHY, AI_OTHER_COMBAT_MASTER);
|
||||||
|
//SetSpawnInCondition(AI_FLAG_OTHER_COMBAT_FORCE_EMPATHY, AI_OTHER_COMBAT_MASTER);
|
||||||
|
//SetSpawnInCondition(AI_FLAG_OTHER_COMBAT_NO_HIDING, AI_OTHER_COMBAT_MASTER);
|
||||||
|
//SetSpawnInCondition(AI_FLAG_OTHER_COMBAT_FORCE_HIDING, AI_OTHER_COMBAT_MASTER);
|
||||||
|
//SetSpawnInCondition(AI_FLAG_OTHER_COMBAT_NO_OPENING_LOCKED_DOORS, AI_OTHER_COMBAT_MASTER);
|
||||||
|
//SetSpawnInCondition(AI_FLAG_OTHER_COMBAT_FORCE_OPENING_LOCKED_DOORS, AI_OTHER_COMBAT_MASTER);
|
||||||
|
//SetSpawnInCondition(AI_FLAG_OTHER_COMBAT_NO_USING_HEALING_KITS, AI_OTHER_COMBAT_MASTER);
|
||||||
|
SetSpawnInCondition(AI_FLAG_OTHER_COMBAT_NO_PARRYING, AI_OTHER_COMBAT_MASTER);
|
||||||
|
//SetSpawnInCondition(AI_FLAG_OTHER_COMBAT_FORCE_PARRYING, AI_OTHER_COMBAT_MASTER);
|
||||||
|
//SetSpawnInCondition(AI_FLAG_OTHER_COMBAT_NO_SEARCH, AI_OTHER_COMBAT_MASTER);
|
||||||
|
//SetSpawnInCondition(AI_FLAG_OTHER_COMBAT_FORCE_SEARCH, AI_OTHER_COMBAT_MASTER);
|
||||||
|
// - Concentration - special notes in the readme
|
||||||
|
//SetSpawnInCondition(AI_FLAG_OTHER_COMBAT_NO_CONCENTRATION, AI_OTHER_COMBAT_MASTER);
|
||||||
|
//SetSpawnInCondition(AI_FLAG_OTHER_COMBAT_FORCE_CONCENTRATION, AI_OTHER_COMBAT_MASTER);
|
||||||
|
|
||||||
|
/************************ [Combat Other - Skills] *****************************/
|
||||||
|
|
||||||
|
/************************ [Combat Other - Leaders] *****************************
|
||||||
|
Leaders/Bosses can be set to issue some orders and inspire more morale - and bring
|
||||||
|
a lot of allies to a battle at once!
|
||||||
|
************************* [Combat Other - Leaders] ****************************/
|
||||||
|
//SetSpawnInCondition(AI_FLAG_OTHER_COMBAT_GROUP_LEADER, AI_OTHER_COMBAT_MASTER);
|
||||||
|
// Special leader. Can issuse some orders. See readme for details.
|
||||||
|
|
||||||
|
//SetSpawnInCondition(AI_FLAG_OTHER_COMBAT_BOSS_MONSTER_SHOUT, AI_OTHER_COMBAT_MASTER);
|
||||||
|
// Boss shout. 1 time use - calls all creatures in X meters (below) for battle!
|
||||||
|
//SetAIInteger(AI_BOSS_MONSTER_SHOUT_RANGE, 60);
|
||||||
|
// Defaults to a 60 M range. This can change it. Note: 1 toolset square = 10M.
|
||||||
|
|
||||||
|
/************************ [Combat Other - Leaders] ****************************/
|
||||||
|
|
||||||
|
/************************ [Other - Behaviour/Generic] **************************
|
||||||
|
This is generic behaviours - alright, really it is all things that cannot
|
||||||
|
really be categorised.
|
||||||
|
************************* [Other - Behaviour/Generic] *************************/
|
||||||
|
|
||||||
|
//SetSpawnInCondition(AI_FLAG_OTHER_NO_CLEAR_ACTIONS_BEFORE_CONVERSATION, AI_OTHER_MASTER);
|
||||||
|
// No ClearAllActions() before BeginConversation. May keep a creature sitting.
|
||||||
|
//SetSpawnInCondition(AI_FLAG_OTHER_NO_POLYMORPHING, AI_OTHER_MASTER);
|
||||||
|
// This will stop all polymorphing spells feats from being used.
|
||||||
|
//SetSpawnInCondition(AI_FLAG_OTHER_CHEAT_MORE_POTIONS, AI_OTHER_MASTER);
|
||||||
|
// If at low HP, and no potion, create one and use it.
|
||||||
|
//SetAIConstant(AI_POLYMORPH_INTO, POLYMORPH_TYPE_WEREWOLF);
|
||||||
|
// Polymorph to this creature when damaged (once, natural effect).
|
||||||
|
|
||||||
|
//AI_CreateRandomStats(-3, 3, 6);
|
||||||
|
// Create (Effect-applied) random statistics.
|
||||||
|
//AI_CreateRandomOther(-2, 2, -2, 2, -2, 2, -2, 2);
|
||||||
|
// Create (Effect-applied) random HP, saves, AC.
|
||||||
|
|
||||||
|
//SetSpawnInCondition(AI_FLAG_OTHER_RETURN_TO_SPAWN_LOCATION, AI_OTHER_MASTER);
|
||||||
|
// This will store our spawn location, and then move back there after combat.
|
||||||
|
//SetSpawnInCondition(AI_FLAG_OTHER_DONT_RESPOND_TO_EMOTES, AI_OTHER_MASTER);
|
||||||
|
// This will ignore ALL chat by PC's (Enemies) who speak actions in Stars - *Bow*
|
||||||
|
|
||||||
|
//SetSpawnInCondition(AI_FLAG_OTHER_DONT_SHOUT, AI_OTHER_MASTER);
|
||||||
|
// Turns off all silent talking NPC's do to other NPC's.
|
||||||
|
|
||||||
|
//SetSpawnInCondition(AI_FLAG_OTHER_SEARCH_IF_ENEMIES_NEAR, AI_OTHER_MASTER);
|
||||||
|
// Move randomly closer to enemies in range set below.
|
||||||
|
//SetAIInteger(AI_SEARCH_IF_ENEMIES_NEAR_RANGE, 25);
|
||||||
|
// This is the range creatures use, in metres.
|
||||||
|
|
||||||
|
//SetSpawnInCondition(AI_FLAG_OTHER_ONLY_ATTACK_IF_ATTACKED, AI_OTHER_MASTER);
|
||||||
|
// One shot. We won't instantly attack a creature we see. See readme.
|
||||||
|
|
||||||
|
//SetAIInteger(AI_DOOR_INTELLIGENCE, 1);
|
||||||
|
// 3 Special "What to do with Doors" settings. See readme. Good for animals.
|
||||||
|
|
||||||
|
//SetSpawnInCondition(AI_FLAG_OTHER_REST_AFTER_COMBAT, AI_OTHER_MASTER);
|
||||||
|
// When combat is over, creature rests. Useful for replenising health.
|
||||||
|
|
||||||
|
//SetSpawnInCondition(AI_FLAG_OTHER_NO_PLAYING_VOICE_CHAT, AI_OTHER_MASTER);
|
||||||
|
// Stops any use of "PlayVoiceChat". Use with Custom speakstrings.
|
||||||
|
|
||||||
|
/*** Death settings - still under AI_OTHER_MASTER ***/
|
||||||
|
|
||||||
|
//AI_SetDeathResRef("Resref Here");
|
||||||
|
// Creates a creature from the string set. Instantly destroys this creatures body on death.
|
||||||
|
|
||||||
|
//SetAIConstant(AI_DEATH_VISUAL_EFFECT, VFX_FNF_IMPLOSION);
|
||||||
|
// Fires this visual effect number instantly on death. Use FNF and IMP ones.
|
||||||
|
|
||||||
|
//SetAIInteger(AI_CORPSE_DESTROY_TIME, 600);
|
||||||
|
// Seconds before body finally gets destroyed. Used for Clerical Raise Dead on NPC's.
|
||||||
|
|
||||||
|
SetSpawnInCondition(AI_FLAG_OTHER_TURN_OFF_CORPSES, AI_OTHER_MASTER);
|
||||||
|
// This turns off the SetDestroyable() usually performed, and the above timer.
|
||||||
|
|
||||||
|
//SetSpawnInCondition(AI_FLAG_OTHER_USE_BIOWARE_LOOTING, AI_OTHER_MASTER);
|
||||||
|
// Makes the death file use Bioware's cool SetLootable() feature when corpses would disappear.
|
||||||
|
|
||||||
|
/*** Lag and a few performance settings - still under AI_OTHER_MASTER ***/
|
||||||
|
|
||||||
|
//SetSpawnInCondition(AI_FLAG_OTHER_LAG_NO_ITEMS, AI_OTHER_MASTER);
|
||||||
|
// The creature doesn't check for, or use any items that cast spells.
|
||||||
|
//SetSpawnInCondition(AI_FLAG_OTHER_LAG_NO_SPELLS, AI_OTHER_MASTER);
|
||||||
|
//The creature doesn't ever cast spells (and never checks them)
|
||||||
|
//SetSpawnInCondition(AI_FLAG_OTHER_LAG_NO_LISTENING, AI_OTHER_MASTER);
|
||||||
|
// The creature doesn't have SetListening() set. Turns of the basic listening for shouts.
|
||||||
|
//SetSpawnInCondition(AI_FLAG_OTHER_LAG_EQUIP_MOST_DAMAGING, AI_OTHER_MASTER);
|
||||||
|
// Uses EquipMostDamaging(), like Bioware code. No shield/second weapon equipped.
|
||||||
|
//SetSpawnInCondition(AI_FLAG_OTHER_LAG_NO_CURING_ALLIES, AI_OTHER_MASTER);
|
||||||
|
// This will stop checks for and curing of allies ailments.
|
||||||
|
//SetSpawnInCondition(AI_FLAG_OTHER_LAG_IGNORE_HEARTBEAT, AI_OTHER_MASTER);
|
||||||
|
// Stops the heartbeat running (Except Pre-Heartbeat-event).
|
||||||
|
//SetSpawnInCondition(AI_FLAG_OTHER_LAG_TARGET_NEAREST_ENEMY, AI_OTHER_MASTER);
|
||||||
|
// Ignores targeting settings. VERY good for lag/bad AI. Attacks nearest seen enemy.
|
||||||
|
|
||||||
|
/*** AI Level setting - Do not use AI_LEVEL_DEFAULT at all. ***/
|
||||||
|
|
||||||
|
//SetAIConstant(LAG_AI_LEVEL_NO_PC_OR_ENEMY_50M, AI_LEVEL_VERY_LOW);
|
||||||
|
// Changes to this AI setting if there is no enemy or PC in 50M.
|
||||||
|
//SetAIConstant(LAG_AI_LEVEL_YES_PC_OR_ENEMY_50M, AI_LEVEL_LOW);
|
||||||
|
// Changes to this AI setting if there IS an enemy or PC in 50M.
|
||||||
|
//SetAIConstant(LAG_AI_LEVEL_COMBAT, AI_LEVEL_NORMAL);
|
||||||
|
// This OVERRIDES others. Only used when a creature is put into combat.
|
||||||
|
|
||||||
|
/************************ [Other - Behaviour/Generic] *************************/
|
||||||
|
|
||||||
|
/************************ [User Defined and Shouts] ****************************
|
||||||
|
The user defined events, set up to fire here.
|
||||||
|
- New "Start combat attack" and "End Combat Attack" events
|
||||||
|
- New "Pre" events. Use these to optionally stop a script from firing
|
||||||
|
under cirtain circumstances as well! (Read nw_c2_defaultd or j_ai_onuserdef)
|
||||||
|
(User Defined Event = UDE)
|
||||||
|
************************* [User Defined and Shouts] ***************************/
|
||||||
|
|
||||||
|
//SetSpawnInCondition(AI_FLAG_UDE_HEARTBEAT_EVENT, AI_UDE_MASTER); // UDE 1001
|
||||||
|
//SetSpawnInCondition(AI_FLAG_UDE_HEARTBEAT_PRE_EVENT, AI_UDE_MASTER); // UDE 1021
|
||||||
|
//SetSpawnInCondition(AI_FLAG_UDE_PERCIEVE_EVENT, AI_UDE_MASTER); // UDE 1002
|
||||||
|
//SetSpawnInCondition(AI_FLAG_UDE_PERCIEVE_PRE_EVENT, AI_UDE_MASTER); // UDE 1022
|
||||||
|
//SetSpawnInCondition(AI_FLAG_UDE_END_COMBAT_ROUND_EVENT, AI_UDE_MASTER); // UDE 1003
|
||||||
|
//SetSpawnInCondition(AI_FLAG_UDE_END_COMBAT_ROUND_PRE_EVENT, AI_UDE_MASTER); // UDE 1023
|
||||||
|
//SetSpawnInCondition(AI_FLAG_UDE_ON_DIALOGUE_EVENT, AI_UDE_MASTER); // UDE 1004
|
||||||
|
//SetSpawnInCondition(AI_FLAG_UDE_ON_DIALOGUE_PRE_EVENT, AI_UDE_MASTER); // UDE 1024
|
||||||
|
//SetSpawnInCondition(AI_FLAG_UDE_ATTACK_EVENT, AI_UDE_MASTER); // UDE 1005
|
||||||
|
//SetSpawnInCondition(AI_FLAG_UDE_ATTACK_PRE_EVENT, AI_UDE_MASTER); // UDE 1025
|
||||||
|
//SetSpawnInCondition(AI_FLAG_UDE_DAMAGED_EVENT, AI_UDE_MASTER); // UDE 1006
|
||||||
|
//SetSpawnInCondition(AI_FLAG_UDE_DAMAGED_PRE_EVENT, AI_UDE_MASTER); // UDE 1026
|
||||||
|
//SetSpawnInCondition(AI_FLAG_UDE_DEATH_EVENT, AI_UDE_MASTER); // UDE 1007
|
||||||
|
//SetSpawnInCondition(AI_FLAG_UDE_DEATH_PRE_EVENT, AI_UDE_MASTER); // UDE 1027
|
||||||
|
//SetSpawnInCondition(AI_FLAG_UDE_DISTURBED_EVENT, AI_UDE_MASTER); // UDE 1008
|
||||||
|
//SetSpawnInCondition(AI_FLAG_UDE_DISTURBED_PRE_EVENT, AI_UDE_MASTER); // UDE 1028
|
||||||
|
//SetSpawnInCondition(AI_FLAG_UDE_RESTED_EVENT, AI_UDE_MASTER); // UDE 1009
|
||||||
|
//SetSpawnInCondition(AI_FLAG_UDE_RESTED_PRE_EVENT, AI_UDE_MASTER); // UDE 1029
|
||||||
|
//SetSpawnInCondition(AI_FLAG_UDE_SPELL_CAST_AT_EVENT, AI_UDE_MASTER); // UDE 1011
|
||||||
|
//SetSpawnInCondition(AI_FLAG_UDE_SPELL_CAST_AT_PRE_EVENT, AI_UDE_MASTER); // UDE 1031
|
||||||
|
//SetSpawnInCondition(AI_FLAG_UDE_ON_BLOCKED_EVENT, AI_UDE_MASTER); // UDE 1015
|
||||||
|
//SetSpawnInCondition(AI_FLAG_UDE_ON_BLOCKED_PRE_EVENT, AI_UDE_MASTER); // UDE 1035
|
||||||
|
|
||||||
|
//SetSpawnInCondition(AI_FLAG_UDE_COMBAT_ACTION_EVENT, AI_UDE_MASTER); // UDE 1012
|
||||||
|
// Fires when we have finnished all combat actions.
|
||||||
|
//SetSpawnInCondition(AI_FLAG_UDE_COMBAT_ACTION_PRE_EVENT, AI_UDE_MASTER); // UDE 1032
|
||||||
|
// This fires at the start of DetermineCombatRound() *IF they can do an action*.
|
||||||
|
//SetSpawnInCondition(AI_FLAG_UDE_DAMAGED_AT_1_HP, AI_UDE_MASTER); // UDE 1014
|
||||||
|
// Fires when we are damaged, and are at 1 HP. Use for immortal-flagged creatures.
|
||||||
|
|
||||||
|
/*** Speakstrings - as it were, said under cirtain conditions % chance each time ***/
|
||||||
|
|
||||||
|
//AI_SetSpawnInSpeakArray(AI_TALK_ON_CONVERSATION, 100, 4, "Hello there", "I hope you enjoy your stay", "Do you work here too?", "*Hic*");
|
||||||
|
// On Conversation - see readme. Replaces BeginConversation().
|
||||||
|
|
||||||
|
// Morale
|
||||||
|
//AI_SetSpawnInSpeakArray(AI_TALK_ON_MORALE_BREAK, 100, 3, "No more!", "I'm outta here!", "Catch me if you can!");
|
||||||
|
// Spoken at running point, if they run to a group of allies.
|
||||||
|
//AI_SetSpawnInSpeakArray(AI_TALK_ON_CANNOT_RUN, 100, 3, "Never give up! Never surrender!", "I've no where to run, so make my day!", "RRRAAAAA!!!");
|
||||||
|
// Spoken at running point, if they can find no ally to run to, and 4+ Intelligence. See readme
|
||||||
|
//AI_SetSpawnInSpeakValue(AI_TALK_ON_STUPID_RUN, "Ahhhhgggg! NO MORE! Run!!");
|
||||||
|
// As above, when morale breaks + no ally, but they panic and run from enemy at 3 or less intelligence.
|
||||||
|
|
||||||
|
// Combat
|
||||||
|
//AI_SetSpawnInSpeakArray(AI_TALK_ON_COMBAT_ROUND_EQUAL, 5, 4, "Come on!", "You won't win!", "We are not equals! I am better!", "Nothing will stop me!");
|
||||||
|
//AI_SetSpawnInSpeakArray(AI_TALK_ON_COMBAT_ROUND_THEM_OVER_US, 5, 4, "I'll try! try! and try again!", "Tough man, are we?", "Trying out your 'skills'? Pathetic excuse!", "Nothing good will come from killing me!");
|
||||||
|
//AI_SetSpawnInSpeakArray(AI_TALK_ON_COMBAT_ROUND_US_OVER_THEM, 5, 4, "My strength is mighty then yours!", "You will definatly die!", "NO chance for you!", "No mercy! Not for YOU!");
|
||||||
|
// Spoken each DetermineCombatRound. % is /1000. See readme for Equal/Over/Under values.
|
||||||
|
//AI_SetSpawnInSpeakArray(AI_TALK_ON_TAUNT, 100, 3, "You're going down!", "No need to think, let my blade do it for you!", "Time to meet your death!");
|
||||||
|
// If the creature uses thier skill, taunt, on an enemy this will be said.
|
||||||
|
|
||||||
|
// Event-driven.
|
||||||
|
//AI_SetSpawnInSpeakArray(AI_TALK_ON_PERCIEVE_ENEMY, 70, 6, "Stand and fight, lawbreaker!", "Don't run from the law!", "I have my orders!", "I am ready for violence!", "CHARGE!", "Time you died!");
|
||||||
|
// This is said when they see/hear a new enemy, and start attacking them.
|
||||||
|
//AI_SetSpawnInSpeakArray(AI_TALK_ON_DAMAGED, 20, 2, "Ouch, damn you!", "Haha! Nothing will stop me!");
|
||||||
|
// A random value is set to speak when damaged, and may fire same time as below ones.
|
||||||
|
//AI_SetSpawnInSpeakArray(AI_TALK_ON_PHISICALLY_ATTACKED, 20, 2, "Hah! Mear weapons won't defeat me!", "Pah! You cannot defeat me with such rubbish!");
|
||||||
|
// This is said when an enemy attacks the creature with a melee/ranged weapon.
|
||||||
|
//AI_SetSpawnInSpeakArray(AI_TALK_ON_HOSTILE_SPELL_CAST_AT, 20, 2, "No one spell will stop me!", "Is that all you have!?!");
|
||||||
|
// This is said when an enemy attacks the creature with a hostile spell.
|
||||||
|
//AI_SetSpawnInSpeakValue(AI_TALK_ON_DEATH, "Agggggg!");
|
||||||
|
// This will ALWAYS be said, whenever the creature dies.
|
||||||
|
|
||||||
|
// Specific potion ones.
|
||||||
|
//AI_SetSpawnInSpeakValue(AI_TALK_WE_PASS_POTION, "Here! Catch!");
|
||||||
|
// This will be spoken when the creature passes a potion to an ally. See readme.
|
||||||
|
//AI_SetSpawnInSpeakValue(AI_TALK_WE_GOT_POTION, "Got it!");
|
||||||
|
// This will be spoken by the creature we pass the potion too, using AssignCommand().
|
||||||
|
|
||||||
|
// Leader ones
|
||||||
|
//AI_SetSpawnInSpeakValue(AI_TALK_ON_LEADER_SEND_RUNNER, "Quickly! We need help!");
|
||||||
|
// This will be said when the leader, if this creature, sends a runner.
|
||||||
|
//AI_SetSpawnInSpeakValue(AI_TALK_ON_LEADER_ATTACK_TARGET, "Help attack this target!");
|
||||||
|
// When the leader thinks target X should be attacked, it will say this.
|
||||||
|
|
||||||
|
/************************ [User Defined and Shouts] ***************************/
|
||||||
|
|
||||||
|
/************************ [Bioware: Animations/Waypoints/Treasure] *************
|
||||||
|
All Bioware Stuff. I'd check out "x0_c2_spwn_def" for the SoU/Hordes revisions.
|
||||||
|
************************* [Bioware: Animations/Waypoints/Treasure] ************/
|
||||||
|
|
||||||
|
// SetSpawnInCondition(NW_FLAG_STEALTH, NW_GENERIC_MASTER);
|
||||||
|
// SetSpawnInCondition(NW_FLAG_SEARCH, NW_GENERIC_MASTER);
|
||||||
|
// Uses said skill while WalkWaypoints()
|
||||||
|
|
||||||
|
// SetSpawnInCondition(NW_FLAG_DAY_NIGHT_POSTING, NW_GENERIC_MASTER);
|
||||||
|
// Separate the NPC's waypoints into day & night. See comment in "nw_i0_generic" for use.
|
||||||
|
|
||||||
|
// SetSpawnInCondition(NW_FLAG_IMMOBILE_AMBIENT_ANIMATIONS, NW_GENERIC_MASTER);
|
||||||
|
// This will cause an NPC to use common animations it possesses,
|
||||||
|
// and use social ones to any other nearby friendly NPCs.
|
||||||
|
// SetSpawnInCondition(NW_FLAG_AMBIENT_ANIMATIONS, NW_GENERIC_MASTER);
|
||||||
|
// Same as above, except NPC will wander randomly around the area.
|
||||||
|
|
||||||
|
// SetAnimationCondition(NW_ANIM_FLAG_IS_CIVILIZED);
|
||||||
|
// Interacts with placeables + More civilized actions. See Readme.
|
||||||
|
// SetAnimationCondition(NW_ANIM_FLAG_CHATTER);
|
||||||
|
// Will use random voicechats during animations, if Civilized
|
||||||
|
// SetAnimationCondition(NW_ANIM_FLAG_IS_MOBILE_CLOSE_RANGE);
|
||||||
|
// Will move around the area a bit more, if using Immobile Animations. See readme.
|
||||||
|
|
||||||
|
// Treasure generating.
|
||||||
|
CTG_GenerateNPCTreasure();
|
||||||
|
// SoU. Requires "x0_i0_treasure" to be uncommented. See readme.
|
||||||
|
//GenerateNPCTreasure();
|
||||||
|
// Default NwN. Requires "nw_o2_coninclude" to be uncommented. See readme.
|
||||||
|
|
||||||
|
/************************ [Bioware: Animations/Waypoints/Treasure] ************/
|
||||||
|
|
||||||
|
// AI Behaviour. DO NOT CHANGE! DO NOT CHANGE!!!
|
||||||
|
AI_SetUpEndOfSpawn();
|
||||||
|
// This MUST be called. It fires these events:
|
||||||
|
// SetUpSpells, SetUpSkillToUse, SetListeningPatterns, SetWeapons, AdvancedAuras.
|
||||||
|
// These MUST be called! the AI might fail to work correctly if they don't fire!
|
||||||
|
|
||||||
|
/************************ [User] ***********************************************
|
||||||
|
This is the ONLY place you should add user things, on spawn, such as
|
||||||
|
visual effects or anything, as it is after SetUpEndOfSpawn. By default, this
|
||||||
|
does have encounter animations on. This is here, so is easily changed :-D
|
||||||
|
|
||||||
|
Be careful otherwise.
|
||||||
|
|
||||||
|
Notes:
|
||||||
|
- SetListening is already set to TRUE, unless AI_FLAG_OTHER_LAG_NO_LISTENING is on.
|
||||||
|
- SetListenPattern's are set from 0 to 7.
|
||||||
|
- You can use the wrappers AI_SpawnInInstantVisual and AI_SpawnInPermamentVisual
|
||||||
|
for visual effects (Instant/Permament as appropriate).
|
||||||
|
************************* [User] **********************************************/
|
||||||
|
// Example (and default) of user addition:
|
||||||
|
// - If we are from an encounter, set mobile (move around) animations.
|
||||||
|
if(GetIsEncounterCreature())
|
||||||
|
{
|
||||||
|
SetSpawnInCondition(NW_FLAG_AMBIENT_ANIMATIONS, NW_GENERIC_MASTER);
|
||||||
|
}
|
||||||
|
// Leave this in if you use the variable for creature attacks, as for golems. Bioware's code.
|
||||||
|
int nNumber = GetLocalInt(OBJECT_SELF, "CREATURE_VAR_NUMBER_OF_ATTACKS");
|
||||||
|
if(nNumber > 0)
|
||||||
|
{
|
||||||
|
SetBaseAttackBonus(nNumber);
|
||||||
|
}
|
||||||
|
//DMFI CODE ADDITIONS BEGIN HERE
|
||||||
|
if ((DMFI_LISTENING_GLOBAL) || (GetLocalInt(OBJECT_SELF, "DMFI_LISTEN")==1))
|
||||||
|
{
|
||||||
|
SetListening(OBJECT_SELF, TRUE);
|
||||||
|
SetListenPattern(OBJECT_SELF, "**", 20600);
|
||||||
|
SetLocalInt(OBJECT_SELF, "hls_Listening", 1); //listen to all text
|
||||||
|
}
|
||||||
|
//DMFI CODE ADDITIONS END HERE
|
||||||
|
|
||||||
|
/************************ [User] **********************************************/
|
||||||
|
|
||||||
|
// Note: You shouldn't really remove this, even if they have no waypoints.
|
||||||
|
DelayCommand(f2, SpawnWalkWayPoints());
|
||||||
|
// Delayed walk waypoints, as to not upset instant combat spawning.
|
||||||
|
// This will also check if to change to day/night posts during the walking, no heartbeats.
|
||||||
|
}
|
BIN
_content/_hak/rune_prc8_top/nw_c2_defaultd.ncs
Normal file
BIN
_content/_hak/rune_prc8_top/nw_c2_defaultd.ncs
Normal file
Binary file not shown.
321
_content/_hak/rune_prc8_top/nw_c2_defaultd.nss
Normal file
321
_content/_hak/rune_prc8_top/nw_c2_defaultd.nss
Normal file
@ -0,0 +1,321 @@
|
|||||||
|
/************************ [On User Defined] ************************************
|
||||||
|
Filename: j_ai_onuserdef or nw_c2_defaultd
|
||||||
|
************************* [Workings] *******************************************
|
||||||
|
This is NOT needed, but I have, because of new Pre-events, added it to the
|
||||||
|
files for completeness and documentation.
|
||||||
|
|
||||||
|
Can be deleted to save space if you want :-)
|
||||||
|
|
||||||
|
How to use user defined events (brief):
|
||||||
|
|
||||||
|
There are a set of optional Spawn In values you can set within the spawn file.
|
||||||
|
If you set one of the Events to fire, it will activate this script. Then,
|
||||||
|
under the correct choice (EG I choose the Pre-Heartbeat event, then I
|
||||||
|
uncomment the line "SetSpawnInCondition(AI_FLAG_UDE_HEARTBEAT_PRE_EVENT, AI_UDE_MASTER);"
|
||||||
|
and find, in this file, the section with EVENT_HEARTBEAT_PRE_EVENT above it).
|
||||||
|
add in whatever to do.
|
||||||
|
|
||||||
|
With my Pre-heartbeat example, if I wanted it to check for a PC, then
|
||||||
|
check for a combat dummy, and attack it, I'd add this between the brackets:
|
||||||
|
|
||||||
|
// Code:
|
||||||
|
|
||||||
|
// Not in combat, of course!
|
||||||
|
if(!GetIsInCombat())
|
||||||
|
{
|
||||||
|
// Function in j_inc_npc_attack to get nearest PC
|
||||||
|
object oPC = GetNearestPCCreature();
|
||||||
|
// Why check for a PC? Well, it saves memory
|
||||||
|
if(GetIsObjectValid(oPC) && GetDistanceToObject(oPC) <= 40.0)
|
||||||
|
{
|
||||||
|
object oDummy = GetNearestObjectByTag("DUMMY");
|
||||||
|
if(GetIsObjectValid(oDummy))
|
||||||
|
{
|
||||||
|
ClearAllActions();
|
||||||
|
ActionAttack(oDummy);
|
||||||
|
// Exit (Stop the rest of the script)
|
||||||
|
SetToExitFromUDE(EVENT_HEARTBEAT_PRE_EVENT);
|
||||||
|
// Stop rest of script
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// End code
|
||||||
|
|
||||||
|
Simple, no?
|
||||||
|
|
||||||
|
You can delete sections you don't need, and is recommended as long as you know
|
||||||
|
how to use User Defined events.
|
||||||
|
************************* [History] ********************************************
|
||||||
|
1.3 - Added in with some documentation
|
||||||
|
************************* [Arguments] ******************************************
|
||||||
|
Arguments: Dependant on event. See seperate event scripts.
|
||||||
|
************************* [On User Defined] ***********************************/
|
||||||
|
|
||||||
|
// This contains a lot of useful things.
|
||||||
|
// - Combat starting
|
||||||
|
// - Constant values
|
||||||
|
// - Get/Set spawn in values.
|
||||||
|
#include "j_inc_other_ai"
|
||||||
|
// This contains some useful things to get NPC's to attack and so on.
|
||||||
|
#include "j_inc_npc_attack"
|
||||||
|
|
||||||
|
/************************ [UDE Values] *****************************************
|
||||||
|
These are uneeded, but here for reference. Use the constants in the file
|
||||||
|
"j_inc_constants" like "EVENT_HEARTBEAT_PRE_EVENT" which is classed as 1021.
|
||||||
|
|
||||||
|
Name Normal-End event - Pre-Event
|
||||||
|
Heartbeat Event 1001 1021
|
||||||
|
Percieve Event 1002 1022
|
||||||
|
Combat Round Event 1003 1023
|
||||||
|
Dialog Event 1004 1024
|
||||||
|
Attack Event 1005 1025
|
||||||
|
Damaged Event 1006 1026
|
||||||
|
Death Event 1007 1027
|
||||||
|
Disturbed Event 1008 1028
|
||||||
|
Rested Event 1009 1029
|
||||||
|
Spell Cast At Event 1011 1031
|
||||||
|
Combat Action Event 1012 1032
|
||||||
|
Damaged 1HP Event 1014 -
|
||||||
|
Blocked Event 1015 1035
|
||||||
|
************************* [UDE Values] ****************************************/
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
ExecuteScript("prc_onuserdef", OBJECT_SELF);
|
||||||
|
|
||||||
|
// Get the user defined number.
|
||||||
|
int iEvent = GetUserDefinedEventNumber();
|
||||||
|
// Events.
|
||||||
|
switch(iEvent)
|
||||||
|
{
|
||||||
|
// Event Heartbeat
|
||||||
|
// Arguments: Basically, none. Nothing activates this script. Fires every 6 seconds.
|
||||||
|
case EVENT_HEARTBEAT_PRE_EVENT:
|
||||||
|
{
|
||||||
|
// This fires before the rest of the On Heartbeat file does
|
||||||
|
|
||||||
|
// Exit (Stop the rest of the script)
|
||||||
|
SetToExitFromUDE(EVENT_HEARTBEAT_PRE_EVENT);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case EVENT_HEARTBEAT_EVENT:
|
||||||
|
{
|
||||||
|
// This fires after the rest of the On Heartbeat file does
|
||||||
|
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
// Event Percieve
|
||||||
|
// Arguments: GetLastPerceived, GetLastPerceptionSeen, GetLastPerceptionHeard,
|
||||||
|
// GetLastPerceptionVanished, GetLastPerceptionInaudible.
|
||||||
|
case EVENT_PERCIEVE_PRE_EVENT:
|
||||||
|
{
|
||||||
|
// This fires before the rest of the On Percieve file does
|
||||||
|
|
||||||
|
// Exit (Stop the rest of the script)
|
||||||
|
SetToExitFromUDE(EVENT_PERCIEVE_PRE_EVENT);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case EVENT_PERCIEVE_EVENT:
|
||||||
|
{
|
||||||
|
// This fires after the rest of the On Percieve file does
|
||||||
|
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
// Event Combat Round End
|
||||||
|
// Arguments: GetAttackTarget, GetLastHostileActor, GetAttemptedAttackTarget,
|
||||||
|
// GetAttemptedSpellTarget (Or these are useful at least!)
|
||||||
|
case EVENT_END_COMBAT_ROUND_PRE_EVENT:
|
||||||
|
{
|
||||||
|
// This fires before the rest of the On Combat Round End file does
|
||||||
|
|
||||||
|
// Exit (Stop the rest of the script)
|
||||||
|
SetToExitFromUDE(EVENT_END_COMBAT_ROUND_PRE_EVENT);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case EVENT_END_COMBAT_ROUND_EVENT:
|
||||||
|
{
|
||||||
|
// This fires after the rest of the On Combat Round End file does
|
||||||
|
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
// Event Dialogue
|
||||||
|
// Arguments: GetListenPatternNumber, GetLastSpeaker, TestStringAgainstPattern,
|
||||||
|
// GetMatchedSubstring (I think),
|
||||||
|
case EVENT_ON_DIALOGUE_PRE_EVENT:
|
||||||
|
{
|
||||||
|
// This fires before the rest of the dialog file does
|
||||||
|
|
||||||
|
// Exit (Stop the rest of the script)
|
||||||
|
SetToExitFromUDE(EVENT_ON_DIALOGUE_PRE_EVENT);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case EVENT_ON_DIALOGUE_EVENT:
|
||||||
|
{
|
||||||
|
// This fires after the rest of the dialog file does
|
||||||
|
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
// Event Attacked
|
||||||
|
// Arguments: GetLastAttacker, GetLastWeaponUsed, GetLastAttackMode,
|
||||||
|
// GetLastAttackType
|
||||||
|
case EVENT_ATTACK_PRE_EVENT:
|
||||||
|
{
|
||||||
|
// This fires before the rest of the Attacked file does
|
||||||
|
|
||||||
|
// Exit (Stop the rest of the script)
|
||||||
|
SetToExitFromUDE(EVENT_ATTACK_PRE_EVENT);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case EVENT_ATTACK_EVENT:
|
||||||
|
{
|
||||||
|
// This fires after the rest of the Attacked file does
|
||||||
|
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
// Event Damaged
|
||||||
|
// Arguments: GetTotalDamageDealt, GetLastDamager, GetCurrentHitPoints
|
||||||
|
// (and max), GetDamageDealtByType
|
||||||
|
case EVENT_DAMAGED_PRE_EVENT:
|
||||||
|
{
|
||||||
|
// This fires before the rest of the damaged file does
|
||||||
|
|
||||||
|
// Exit (Stop the rest of the script)
|
||||||
|
SetToExitFromUDE(EVENT_DAMAGED_PRE_EVENT);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case EVENT_DAMAGED_EVENT:
|
||||||
|
{
|
||||||
|
// This fires after the rest of the damaged file does
|
||||||
|
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
// Event Death
|
||||||
|
// Arguments: GetLastKiller
|
||||||
|
case EVENT_DEATH_PRE_EVENT:
|
||||||
|
{
|
||||||
|
// This fires before the rest of the death file does
|
||||||
|
|
||||||
|
// Exit (Stop the rest of the script)
|
||||||
|
SetToExitFromUDE(EVENT_DEATH_PRE_EVENT);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case EVENT_DEATH_EVENT:
|
||||||
|
{
|
||||||
|
// This fires after the rest of the death file does
|
||||||
|
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
// Event Distrubed
|
||||||
|
// Arguments: GetInventoryDisturbItem, GetLastDisturbed,
|
||||||
|
// GetInventoryDisturbType (should always be stolen :-( ).
|
||||||
|
case EVENT_DISTURBED_PRE_EVENT:
|
||||||
|
{
|
||||||
|
// This fires before the rest of the disturbed file does
|
||||||
|
|
||||||
|
// Exit (Stop the rest of the script)
|
||||||
|
SetToExitFromUDE(EVENT_DISTURBED_PRE_EVENT);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case EVENT_DISTURBED_EVENT:
|
||||||
|
{
|
||||||
|
// This fires after the rest of the disturbed file does
|
||||||
|
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
// Event Rested
|
||||||
|
// Arguments: None
|
||||||
|
// Note: Not sure if this fires at the end of rest event, but the actual
|
||||||
|
// duration of the rest is 0, so you never "see" it.
|
||||||
|
case EVENT_RESTED_PRE_EVENT:
|
||||||
|
{
|
||||||
|
// This fires before the rest of the rested file does
|
||||||
|
|
||||||
|
// Exit (Stop the rest of the script)
|
||||||
|
SetToExitFromUDE(EVENT_RESTED_PRE_EVENT);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case EVENT_RESTED_EVENT:
|
||||||
|
{
|
||||||
|
// This fires after the rest of the rested file does
|
||||||
|
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
// Event Spell cast at
|
||||||
|
// Arguments: GetLastSpellCaster, GetLastSpellHarmful GetLastSpell()
|
||||||
|
case EVENT_SPELL_CAST_AT_PRE_EVENT:
|
||||||
|
{
|
||||||
|
// This fires before the rest of the Spell Cast At file does
|
||||||
|
|
||||||
|
// Exit (Stop the rest of the script)
|
||||||
|
SetToExitFromUDE(EVENT_SPELL_CAST_AT_PRE_EVENT);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case EVENT_SPELL_CAST_AT_EVENT:
|
||||||
|
{
|
||||||
|
// This fires after the rest of the Spell Cast At End file does
|
||||||
|
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
// Event Blocked
|
||||||
|
// Arguements: GetBlockingDoor, GetIsDoorActionPossible, GetLocked,
|
||||||
|
// GetLockKeyRequired, GetLockKeyTag, GetLockUnlockDC, GetPlotFlag.
|
||||||
|
case EVENT_ON_BLOCKED_PRE_EVENT:
|
||||||
|
{
|
||||||
|
// This fires before the rest of the on blocked file does
|
||||||
|
|
||||||
|
// Exit (Stop the rest of the script)
|
||||||
|
SetToExitFromUDE(EVENT_ON_BLOCKED_PRE_EVENT);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case EVENT_ON_BLOCKED_EVENT:
|
||||||
|
{
|
||||||
|
// This fires after the rest of the on blocked file does
|
||||||
|
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
// Event Combat Action
|
||||||
|
// Arguments: GetAttackTarget(), and lots of others.
|
||||||
|
// Note: Fires when DetermineCombatRound runs to perform an action.
|
||||||
|
case EVENT_COMBAT_ACTION_PRE_EVENT:
|
||||||
|
{
|
||||||
|
// This fires before the rest of the Determine Combat Round call does
|
||||||
|
|
||||||
|
// Exit (Stop the rest of the script)
|
||||||
|
SetToExitFromUDE(EVENT_COMBAT_ACTION_PRE_EVENT);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case EVENT_COMBAT_ACTION_EVENT:
|
||||||
|
{
|
||||||
|
// This fires after the rest of the Determine Combat Round call does
|
||||||
|
// Calling ClearAllActions should stop any actions added in the call.
|
||||||
|
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
// Event Damaged at 1 HP.
|
||||||
|
// Arguments: None really.
|
||||||
|
// Note: Fires OnDamaged, when we have exactly 1HP. Use for Immortal Creatures.
|
||||||
|
case EVENT_DAMAGED_AT_1_HP:
|
||||||
|
{
|
||||||
|
// This fires after the rest of the On Combat Round End file does
|
||||||
|
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
// End all in-built events. Add more in here, if you wish.
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
BIN
_content/_hak/rune_prc8_top/nw_s1_aurablnda.ncs
Normal file
BIN
_content/_hak/rune_prc8_top/nw_s1_aurablnda.ncs
Normal file
Binary file not shown.
48
_content/_hak/rune_prc8_top/nw_s1_aurablnda.nss
Normal file
48
_content/_hak/rune_prc8_top/nw_s1_aurablnda.nss
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
//::///////////////////////////////////////////////
|
||||||
|
//:: Aura of Blinding On Enter
|
||||||
|
//:: NW_S1_AuraBlndA.nss
|
||||||
|
//:: Copyright (c) 2001 Bioware Corp.
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
/*
|
||||||
|
Upon entering the aura of the creature the player
|
||||||
|
must make a will save or be blinded because of the
|
||||||
|
sheer ugliness or beauty of the creature.
|
||||||
|
*/
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
//:: Created By: Preston Watamaniuk
|
||||||
|
//:: Created On: May 25, 2001
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
//#include "wm_include"
|
||||||
|
#include "prc_inc_spells"
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
//:: Declare major variables
|
||||||
|
object oNPC = GetAreaOfEffectCreator();
|
||||||
|
object oTarget = GetEnteringObject();
|
||||||
|
|
||||||
|
int nHD = GetHitDice(oNPC);
|
||||||
|
int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
|
||||||
|
int nDC = 10 +nCHAMod+ (nHD/2);
|
||||||
|
int nDuration = 1 + (nHD/3);
|
||||||
|
|
||||||
|
effect eBlind = EffectBlindness();
|
||||||
|
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
|
||||||
|
effect eVis = EffectVisualEffect(VFX_IMP_BLIND_DEAF_M);
|
||||||
|
effect eLink = EffectLinkEffects(eBlind, eDur);
|
||||||
|
|
||||||
|
//if (NullMagicOverride(GetArea(oTarget), oTarget, oTarget)) {return;}
|
||||||
|
|
||||||
|
//Entering object must make a will save or be blinded for the duration.
|
||||||
|
if(GetIsEnemy(oTarget, GetAreaOfEffectCreator()))
|
||||||
|
{
|
||||||
|
//Fire cast spell at event for the specified target
|
||||||
|
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_AURA_BLINDING));
|
||||||
|
if (!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC))
|
||||||
|
{
|
||||||
|
//Apply the blind effect and the VFX impact
|
||||||
|
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
|
||||||
|
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nDuration)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
BIN
_content/_hak/rune_prc8_top/nw_s1_auracoldc.ncs
Normal file
BIN
_content/_hak/rune_prc8_top/nw_s1_auracoldc.ncs
Normal file
Binary file not shown.
62
_content/_hak/rune_prc8_top/nw_s1_auracoldc.nss
Normal file
62
_content/_hak/rune_prc8_top/nw_s1_auracoldc.nss
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
//::///////////////////////////////////////////////
|
||||||
|
//:: Aura of Frost on Heartbeat
|
||||||
|
//:: NW_S1_AuraColdC.nss
|
||||||
|
//:: Copyright (c) 2001 Bioware Corp.
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
/*
|
||||||
|
Prolonged exposure to the aura of the creature
|
||||||
|
causes frost damage to all within the aura.
|
||||||
|
*/
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
//:: Created By: Preston Watamaniuk
|
||||||
|
//:: Created On: May 25, 2001
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
#include "NW_I0_SPELLS"
|
||||||
|
//#include "wm_include"
|
||||||
|
#include "prc_inc_spells"
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
//:: Declare major variables
|
||||||
|
object oNPC = GetAreaOfEffectCreator();
|
||||||
|
object oTarget = GetEnteringObject();
|
||||||
|
|
||||||
|
int nHD = GetHitDice(oNPC);
|
||||||
|
int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
|
||||||
|
int nFrost = 1 + (nHD/3);
|
||||||
|
int nDC = 10 +nCHAMod+ (nHD/2);
|
||||||
|
int nDamage;
|
||||||
|
|
||||||
|
effect eDam;
|
||||||
|
effect eVis = EffectVisualEffect(VFX_IMP_FROST_S);
|
||||||
|
|
||||||
|
//Get the first target in the aura of cold
|
||||||
|
oTarget = GetFirstInPersistentObject();
|
||||||
|
|
||||||
|
while (GetIsObjectValid(oTarget))
|
||||||
|
{
|
||||||
|
/* if (NullMagicOverride(GetArea(oTarget), oTarget, oTarget))
|
||||||
|
{
|
||||||
|
oTarget = GetNextInPersistentObject(OBJECT_SELF);
|
||||||
|
continue;
|
||||||
|
} */
|
||||||
|
if(GetIsEnemy(oTarget, GetAreaOfEffectCreator()))
|
||||||
|
{
|
||||||
|
//Fire cast spell at event for the specified target
|
||||||
|
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_AURA_COLD));
|
||||||
|
//Roll damage based on the creatures HD
|
||||||
|
nDamage = d4(nFrost);
|
||||||
|
//Make a Fortitude save for half
|
||||||
|
if(PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_COLD))
|
||||||
|
{
|
||||||
|
nDamage = nDamage / 2;
|
||||||
|
}
|
||||||
|
//Set the damage effect
|
||||||
|
eDam = EffectDamage(nDamage, DAMAGE_TYPE_COLD);
|
||||||
|
//Apply the VFX constant and damage effect
|
||||||
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget);
|
||||||
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
|
||||||
|
}
|
||||||
|
//Get the next target in the aura of cold
|
||||||
|
oTarget = GetNextInPersistentObject();
|
||||||
|
}
|
||||||
|
}
|
BIN
_content/_hak/rune_prc8_top/nw_s1_auraelecc.ncs
Normal file
BIN
_content/_hak/rune_prc8_top/nw_s1_auraelecc.ncs
Normal file
Binary file not shown.
58
_content/_hak/rune_prc8_top/nw_s1_auraelecc.nss
Normal file
58
_content/_hak/rune_prc8_top/nw_s1_auraelecc.nss
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
//::///////////////////////////////////////////////
|
||||||
|
//:: Aura of Electricity on Heartbeat
|
||||||
|
//:: NW_S1_AuraElecC.nss
|
||||||
|
//:: Copyright (c) 2001 Bioware Corp.
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
/*
|
||||||
|
Prolonged exposure to the aura of the creature
|
||||||
|
causes electrical damage to all within the aura.
|
||||||
|
*/
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
//:: Created By: Preston Watamaniuk
|
||||||
|
//:: Created On: May 25, 2001
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
#include "NW_I0_SPELLS"
|
||||||
|
//#include "wm_include"
|
||||||
|
#include "prc_inc_spells"
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
//:: Declare major variables
|
||||||
|
object oNPC = GetAreaOfEffectCreator();
|
||||||
|
int nHD = GetHitDice(oNPC);
|
||||||
|
int nZap = 1 + (nHD / 3);
|
||||||
|
int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
|
||||||
|
int nDC = 10 + nCHAMod + (nHD/2);
|
||||||
|
int nDamage;
|
||||||
|
|
||||||
|
effect eDam;
|
||||||
|
effect eVis = EffectVisualEffect(VFX_IMP_LIGHTNING_S);
|
||||||
|
|
||||||
|
//Get first target in spell area
|
||||||
|
object oTarget = GetFirstInPersistentObject();
|
||||||
|
while (GetIsObjectValid(oTarget))
|
||||||
|
{
|
||||||
|
/* if (NullMagicOverride(GetArea(oTarget), oTarget, oTarget))
|
||||||
|
{
|
||||||
|
oTarget = GetNextInPersistentObject(OBJECT_SELF);
|
||||||
|
continue;
|
||||||
|
} */
|
||||||
|
if(GetIsEnemy(oTarget, GetAreaOfEffectCreator()))
|
||||||
|
{
|
||||||
|
nDamage = d4(nZap);
|
||||||
|
//Fire cast spell at event for the specified target
|
||||||
|
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_AURA_ELECTRICITY));
|
||||||
|
//Make a saving throw check
|
||||||
|
if(PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_ELECTRICITY))
|
||||||
|
{
|
||||||
|
nDamage = nDamage / 2;
|
||||||
|
}
|
||||||
|
eDam = EffectDamage(nDamage, DAMAGE_TYPE_ELECTRICAL);
|
||||||
|
//Apply the VFX impact and effects
|
||||||
|
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget));
|
||||||
|
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
|
||||||
|
}
|
||||||
|
//Get next target in spell area
|
||||||
|
oTarget = GetNextInPersistentObject();
|
||||||
|
}
|
||||||
|
}
|
BIN
_content/_hak/rune_prc8_top/nw_s1_aurafirec.ncs
Normal file
BIN
_content/_hak/rune_prc8_top/nw_s1_aurafirec.ncs
Normal file
Binary file not shown.
59
_content/_hak/rune_prc8_top/nw_s1_aurafirec.nss
Normal file
59
_content/_hak/rune_prc8_top/nw_s1_aurafirec.nss
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
//::///////////////////////////////////////////////
|
||||||
|
//:: Aura of Fire on Heartbeat
|
||||||
|
//:: NW_S1_AuraFireC.nss
|
||||||
|
//:: Copyright (c) 2001 Bioware Corp.
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
/*
|
||||||
|
Prolonged exposure to the aura of the creature
|
||||||
|
causes fire damage to all within the aura.
|
||||||
|
*/
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
//:: Created By: Preston Watamaniuk
|
||||||
|
//:: Created On: May 25, 2001
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
#include "NW_I0_SPELLS"
|
||||||
|
//#include "wm_include"
|
||||||
|
#include "prc_inc_spells"
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
//:: Declare major variables
|
||||||
|
object oNPC = GetAreaOfEffectCreator();
|
||||||
|
object oTarget = GetFirstInPersistentObject(); //:: Get first target in spell area
|
||||||
|
|
||||||
|
int nHD = GetHitDice(oNPC);
|
||||||
|
int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
|
||||||
|
int nBurn = 1 + (nHD/3);
|
||||||
|
int nDC = 10 +nCHAMod+ (nHD/2);
|
||||||
|
int nDamage;
|
||||||
|
int nDamSave;
|
||||||
|
|
||||||
|
effect eDam;
|
||||||
|
effect eVis = EffectVisualEffect(VFX_IMP_FLAME_S);
|
||||||
|
|
||||||
|
while(GetIsObjectValid(oTarget))
|
||||||
|
{
|
||||||
|
/* if (NullMagicOverride(GetArea(oTarget), oTarget, oTarget))
|
||||||
|
{
|
||||||
|
oTarget = GetNextInPersistentObject(OBJECT_SELF);
|
||||||
|
continue;
|
||||||
|
} */
|
||||||
|
if(GetIsEnemy(oTarget, GetAreaOfEffectCreator()))
|
||||||
|
{
|
||||||
|
//Fire cast spell at event for the specified target
|
||||||
|
SignalEvent(oTarget, EventSpellCastAt(GetAreaOfEffectCreator(), SPELLABILITY_AURA_FIRE));
|
||||||
|
//Roll damage
|
||||||
|
nDamage = d4(nBurn);
|
||||||
|
//Make a saving throw check
|
||||||
|
if(PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_FIRE))
|
||||||
|
{
|
||||||
|
nDamage = nDamage / 2;
|
||||||
|
}
|
||||||
|
//Set the damage effect
|
||||||
|
eDam = EffectDamage(nDamage, DAMAGE_TYPE_FIRE);
|
||||||
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
|
||||||
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget);
|
||||||
|
}
|
||||||
|
//Get next target in spell area
|
||||||
|
oTarget = GetNextInPersistentObject();
|
||||||
|
}
|
||||||
|
}
|
BIN
_content/_hak/rune_prc8_top/nw_s1_auramenca.ncs
Normal file
BIN
_content/_hak/rune_prc8_top/nw_s1_auramenca.ncs
Normal file
Binary file not shown.
46
_content/_hak/rune_prc8_top/nw_s1_auramenca.nss
Normal file
46
_content/_hak/rune_prc8_top/nw_s1_auramenca.nss
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
//::///////////////////////////////////////////////
|
||||||
|
//:: Aura of Menace On Enter
|
||||||
|
//:: NW_S1_AuraMencA.nss
|
||||||
|
//:: Copyright (c) 2001 Bioware Corp.
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
/*
|
||||||
|
Upon entering the aura all those that fail
|
||||||
|
a will save are stricken with Doom.
|
||||||
|
*/
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
//:: Created By: Preston Watamaniuk
|
||||||
|
//:: Created On: May 25, 2001
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
#include "NW_I0_SPELLS"
|
||||||
|
//#include "wm_include"
|
||||||
|
#include "prc_inc_spells"
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
//:: Declare major variables
|
||||||
|
object oNPC = GetAreaOfEffectCreator();
|
||||||
|
object oTarget = GetEnteringObject();
|
||||||
|
|
||||||
|
//if (NullMagicOverride(GetArea(oTarget), oTarget, oTarget)) {return;}
|
||||||
|
|
||||||
|
int nDuration = 1 + (GetHitDice(oNPC)/3);
|
||||||
|
int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
|
||||||
|
int nDC = 10 +nCHAMod+ (GetHitDice(oNPC)/2);
|
||||||
|
int nLevel = GetCasterLevel(OBJECT_SELF);
|
||||||
|
int nMetaMagic = PRCGetMetaMagicFeat();
|
||||||
|
|
||||||
|
effect eVis = EffectVisualEffect(VFX_IMP_DOOM);
|
||||||
|
effect eLink = CreateDoomEffectsLink();
|
||||||
|
|
||||||
|
if(GetIsEnemy(oTarget, GetAreaOfEffectCreator()))
|
||||||
|
{
|
||||||
|
//Fire cast spell at event for the specified target
|
||||||
|
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_AURA_MENACE));
|
||||||
|
//Spell Resistance and Saving throw
|
||||||
|
if (!/*Will Save*/ PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC))
|
||||||
|
{
|
||||||
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
|
||||||
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink , oTarget, TurnsToSeconds(nDuration));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
BIN
_content/_hak/rune_prc8_top/nw_s1_auraprota.ncs
Normal file
BIN
_content/_hak/rune_prc8_top/nw_s1_auraprota.ncs
Normal file
Binary file not shown.
35
_content/_hak/rune_prc8_top/nw_s1_auraprota.nss
Normal file
35
_content/_hak/rune_prc8_top/nw_s1_auraprota.nss
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
//::///////////////////////////////////////////////
|
||||||
|
//:: Aura of Protection: On Enter
|
||||||
|
//:: NW_S1_AuraProtA.nss
|
||||||
|
//:: Copyright (c) 2001 Bioware Corp.
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
/*
|
||||||
|
Acts as a double strength Magic Circle against
|
||||||
|
evil and a Minor Globe for those friends in
|
||||||
|
the area.
|
||||||
|
*/
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
//:: Created By: Preston Watamaniuk
|
||||||
|
//:: Created On:Jan 8, 2002, 2001
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
#include "NW_I0_SPELLS"
|
||||||
|
//#include "wm_include"
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
//Declare major variables
|
||||||
|
effect eProt = CreateProtectionFromAlignmentLink(ALIGNMENT_EVIL);
|
||||||
|
effect eGlobe = EffectSpellLevelAbsorption(3, 0);
|
||||||
|
effect eDur = EffectVisualEffect(VFX_DUR_GLOBE_MINOR);
|
||||||
|
|
||||||
|
effect eLink = EffectLinkEffects(eProt, eGlobe);
|
||||||
|
eLink = EffectLinkEffects(eLink, eDur);
|
||||||
|
|
||||||
|
object oTarget = GetEnteringObject();
|
||||||
|
//if (NullMagicOverride(GetArea(oTarget), oTarget, oTarget)) {return;}
|
||||||
|
//Faction Check
|
||||||
|
if(GetIsFriend(oTarget, GetAreaOfEffectCreator()))
|
||||||
|
{
|
||||||
|
//Apply the VFX impact and effects
|
||||||
|
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eLink, oTarget);
|
||||||
|
}
|
||||||
|
}
|
BIN
_content/_hak/rune_prc8_top/nw_s1_aurastuna.ncs
Normal file
BIN
_content/_hak/rune_prc8_top/nw_s1_aurastuna.ncs
Normal file
Binary file not shown.
48
_content/_hak/rune_prc8_top/nw_s1_aurastuna.nss
Normal file
48
_content/_hak/rune_prc8_top/nw_s1_aurastuna.nss
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
//::///////////////////////////////////////////////
|
||||||
|
//:: Aura Stunning On Enter
|
||||||
|
//:: NW_S1_AuraStunA.nss
|
||||||
|
//:: Copyright (c) 2001 Bioware Corp.
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
/*
|
||||||
|
Upon entering the aura of the creature the player
|
||||||
|
must make a will save or be stunned.
|
||||||
|
*/
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
//:: Created By: Preston Watamaniuk
|
||||||
|
//:: Created On: May 25, 2001
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
#include "NW_I0_SPELLS"
|
||||||
|
//#include "wm_include"
|
||||||
|
#include "prc_inc_spells"
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
//:: Declare major variables
|
||||||
|
object oNPC = GetAreaOfEffectCreator();
|
||||||
|
object oTarget = GetEnteringObject();
|
||||||
|
|
||||||
|
int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
|
||||||
|
int nDuration = GetHitDice(oNPC);
|
||||||
|
int nDC = 10 + nCHAMod + (nDuration/2);
|
||||||
|
|
||||||
|
//if (NullMagicOverride(GetArea(oTarget), oTarget, oTarget)) {return;}
|
||||||
|
|
||||||
|
effect eVis = EffectVisualEffect(VFX_IMP_STUN);
|
||||||
|
effect eVis2 = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_DISABLED);
|
||||||
|
effect eDeath = EffectStunned();
|
||||||
|
effect eLink = EffectLinkEffects(eVis2, eDeath);
|
||||||
|
|
||||||
|
nDuration = GetScaledDuration(nDuration, oTarget);
|
||||||
|
|
||||||
|
if(!GetIsFriend(oTarget))
|
||||||
|
{
|
||||||
|
//Fire cast spell at event for the specified target
|
||||||
|
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_AURA_STUN));
|
||||||
|
//Make a saving throw check
|
||||||
|
if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_MIND_SPELLS))
|
||||||
|
{
|
||||||
|
//Apply the VFX impact and effects
|
||||||
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nDuration));
|
||||||
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
BIN
_content/_hak/rune_prc8_top/nw_s1_auraunata.ncs
Normal file
BIN
_content/_hak/rune_prc8_top/nw_s1_auraunata.ncs
Normal file
Binary file not shown.
48
_content/_hak/rune_prc8_top/nw_s1_auraunata.nss
Normal file
48
_content/_hak/rune_prc8_top/nw_s1_auraunata.nss
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
//::///////////////////////////////////////////////
|
||||||
|
//:: Aura of the Unnatural On Enter
|
||||||
|
//:: NW_S1_AuraMencA.nss
|
||||||
|
//:: Copyright (c) 2001 Bioware Corp.
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
/*
|
||||||
|
Upon entering the aura all animals are struck with
|
||||||
|
fear.
|
||||||
|
*/
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
//:: Created By: Preston Watamaniuk
|
||||||
|
//:: Created On: May 25, 2001
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
#include "NW_I0_SPELLS"
|
||||||
|
//#include "wm_include"
|
||||||
|
#include "prc_inc_spells"
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
//:: Declare major variables
|
||||||
|
object oNPC = GetAreaOfEffectCreator();
|
||||||
|
effect eVis = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_FEAR);
|
||||||
|
effect eFear = EffectFrightened();
|
||||||
|
effect eLink = EffectLinkEffects(eVis, eFear);
|
||||||
|
object oTarget = GetEnteringObject();
|
||||||
|
|
||||||
|
//if (NullMagicOverride(GetArea(oTarget), oTarget, oTarget)) {return;}
|
||||||
|
|
||||||
|
int nDuration = GetHitDice(oNPC);
|
||||||
|
int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
|
||||||
|
int nRacial = GetRacialType(oTarget);
|
||||||
|
int nDC = 10 + nCHAMod + (GetHitDice(oNPC)/2);
|
||||||
|
|
||||||
|
if(GetIsEnemy(oTarget))
|
||||||
|
{
|
||||||
|
nDuration = (nDuration / 3) + 1;
|
||||||
|
//Make a saving throw check
|
||||||
|
if(nRacial == RACIAL_TYPE_ANIMAL)
|
||||||
|
{
|
||||||
|
//Fire cast spell at event for the specified target
|
||||||
|
SignalEvent(oTarget, EventSpellCastAt(GetAreaOfEffectCreator(), SPELLABILITY_AURA_UNNATURAL));
|
||||||
|
//if (!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_FEAR)) //:: This ability only affects animals & they don't get a save.
|
||||||
|
//{
|
||||||
|
//Apply the VFX impact and effects
|
||||||
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nDuration));
|
||||||
|
//}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
BIN
_content/_hak/rune_prc8_top/nw_s1_aurauneaa.ncs
Normal file
BIN
_content/_hak/rune_prc8_top/nw_s1_aurauneaa.ncs
Normal file
Binary file not shown.
46
_content/_hak/rune_prc8_top/nw_s1_aurauneaa.nss
Normal file
46
_content/_hak/rune_prc8_top/nw_s1_aurauneaa.nss
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
//::///////////////////////////////////////////////
|
||||||
|
//:: Aura Unearthly Visage On Enter
|
||||||
|
//:: NW_S1_AuraUnEaA.nss
|
||||||
|
//:: Copyright (c) 2001 Bioware Corp.
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
/*
|
||||||
|
Upon entering the aura of the creature the player
|
||||||
|
must make a will save or be killed because of the
|
||||||
|
sheer ugliness or beauty of the creature.
|
||||||
|
*/
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
//:: Created By: Preston Watamaniuk
|
||||||
|
//:: Created On: May 25, 2001
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
#include "NW_I0_SPELLS"
|
||||||
|
//#include "wm_include"
|
||||||
|
#include "prc_inc_spells"
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
//:: Declare major variables
|
||||||
|
object oNPC = GetAreaOfEffectCreator();
|
||||||
|
object oTarget = GetEnteringObject();
|
||||||
|
|
||||||
|
int nHD = GetHitDice(oNPC);
|
||||||
|
int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
|
||||||
|
int nDC = 10 +nCHAMod+ (nHD/2);
|
||||||
|
|
||||||
|
//if (NullMagicOverride(GetArea(oTarget), oTarget, oTarget)) {return;}
|
||||||
|
|
||||||
|
effect eDeath = EffectDeath();
|
||||||
|
effect eVis = EffectVisualEffect(VFX_IMP_DEATH);
|
||||||
|
|
||||||
|
if(GetIsEnemy(oTarget, oNPC))
|
||||||
|
{
|
||||||
|
//Fire cast spell at event for the specified target
|
||||||
|
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_AURA_UNEARTHLY_VISAGE));
|
||||||
|
//Make a saving throw check
|
||||||
|
if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_DEATH))
|
||||||
|
{
|
||||||
|
//Apply the VFX impact and effects
|
||||||
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, eDeath, oTarget);
|
||||||
|
//ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
BIN
_content/_hak/rune_prc8_top/nw_s1_bltacid.ncs
Normal file
BIN
_content/_hak/rune_prc8_top/nw_s1_bltacid.ncs
Normal file
Binary file not shown.
66
_content/_hak/rune_prc8_top/nw_s1_bltacid.nss
Normal file
66
_content/_hak/rune_prc8_top/nw_s1_bltacid.nss
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
//::///////////////////////////////////////////////
|
||||||
|
//:: Bolt: Acid
|
||||||
|
//:: NW_S1_BltAcid
|
||||||
|
//:: Copyright (c) 2001 Bioware Corp.
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
/*
|
||||||
|
Creature must make a ranged touch attack to hit
|
||||||
|
the intended target. Reflex or Will save is
|
||||||
|
needed to halve damage or avoid effect.
|
||||||
|
*/
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
//:: Created By: Preston Watamaniuk
|
||||||
|
//:: Created On: May 11 , 2001
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
#include "NW_I0_SPELLS"
|
||||||
|
#include "prc_inc_spells"
|
||||||
|
//#include "wm_include"
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
//if (WildMagicOverride()) { return; }
|
||||||
|
|
||||||
|
//:: Declare major variables
|
||||||
|
object oNPC = OBJECT_SELF;
|
||||||
|
object oTarget = PRCGetSpellTargetObject();
|
||||||
|
|
||||||
|
int nHD = GetHitDice(oNPC);
|
||||||
|
int nCONMod = GetAbilityModifier(ABILITY_CONSTITUTION, oNPC);
|
||||||
|
int nDC = 10 +nCONMod+ (nHD/2);
|
||||||
|
int nCount = nHD/2;
|
||||||
|
if (nCount == 0) { nCount = 1; }
|
||||||
|
int nDamage = d6(nCount);
|
||||||
|
|
||||||
|
effect eVis = EffectVisualEffect(VFX_IMP_ACID_S);
|
||||||
|
effect eBolt;
|
||||||
|
|
||||||
|
//ankheg
|
||||||
|
if(GetAppearanceType(oNPC) == APPEARANCE_TYPE_BEETLE_SLICER)
|
||||||
|
{
|
||||||
|
nDamage = d4(4);
|
||||||
|
}
|
||||||
|
|
||||||
|
//Fire cast spell at event for the specified target
|
||||||
|
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_BOLT_ACID));
|
||||||
|
|
||||||
|
//Adjust the damage based on the Reflex Save, Evasion and Improved Evasion.
|
||||||
|
nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC,SAVING_THROW_TYPE_ACID);
|
||||||
|
|
||||||
|
//Make a ranged touch attack
|
||||||
|
int nTouch = TouchAttackRanged(oTarget);
|
||||||
|
if(nTouch > 0)
|
||||||
|
{
|
||||||
|
if(nTouch == 2)
|
||||||
|
{
|
||||||
|
nDamage *= 2;
|
||||||
|
}
|
||||||
|
//Set damage effect
|
||||||
|
eBolt = EffectDamage(nDamage, DAMAGE_TYPE_ACID);
|
||||||
|
if(nDamage > 0)
|
||||||
|
{
|
||||||
|
//Apply the VFX impact and effects
|
||||||
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, eBolt, oTarget);
|
||||||
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
BIN
_content/_hak/rune_prc8_top/nw_s1_bltcharm.ncs
Normal file
BIN
_content/_hak/rune_prc8_top/nw_s1_bltcharm.ncs
Normal file
Binary file not shown.
47
_content/_hak/rune_prc8_top/nw_s1_bltcharm.nss
Normal file
47
_content/_hak/rune_prc8_top/nw_s1_bltcharm.nss
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
//::///////////////////////////////////////////////
|
||||||
|
//:: Bolt: Charm
|
||||||
|
//:: NW_S1_BltCharm
|
||||||
|
//:: Copyright (c) 2001 Bioware Corp.
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
/*
|
||||||
|
Creature must make a ranged touch attack to hit
|
||||||
|
the intended target. Reflex or Will save is
|
||||||
|
needed to halve damage or avoid effect.
|
||||||
|
*/
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
//:: Created By: Preston Watamaniuk
|
||||||
|
//:: Created On: May 11 , 2001
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
#include "prc_inc_spells"
|
||||||
|
//#include "wm_include"
|
||||||
|
#include "NW_I0_SPELLS"
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
//if (WildMagicOverride()) { return; }
|
||||||
|
|
||||||
|
//:: Declare major variables
|
||||||
|
object oNPC = OBJECT_SELF;
|
||||||
|
object oTarget = PRCGetSpellTargetObject();
|
||||||
|
|
||||||
|
int nHD = GetHitDice(oNPC);
|
||||||
|
int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
|
||||||
|
int nDC = 10 +nCHAMod+ (nHD/2);
|
||||||
|
int nCount = (nHD + 1) / 2;
|
||||||
|
nCount = GetScaledDuration(nCount, oTarget);
|
||||||
|
|
||||||
|
effect eVis = EffectVisualEffect(VFX_IMP_CHARM);
|
||||||
|
effect eBolt = EffectCharmed();
|
||||||
|
eBolt = GetScaledEffect(eBolt, oTarget);
|
||||||
|
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
|
||||||
|
effect eLink = EffectLinkEffects(eBolt, eDur);
|
||||||
|
|
||||||
|
//Fire cast spell at event for the specified target
|
||||||
|
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_BOLT_CHARM));
|
||||||
|
//Make a saving throw check
|
||||||
|
if (!/*Will Save*/ PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_MIND_SPELLS) && TouchAttackRanged(oTarget))
|
||||||
|
{
|
||||||
|
//Apply the VFX impact and effects
|
||||||
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nCount));
|
||||||
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
|
||||||
|
}
|
||||||
|
}
|
BIN
_content/_hak/rune_prc8_top/nw_s1_bltchrdr.ncs
Normal file
BIN
_content/_hak/rune_prc8_top/nw_s1_bltchrdr.ncs
Normal file
Binary file not shown.
48
_content/_hak/rune_prc8_top/nw_s1_bltchrdr.nss
Normal file
48
_content/_hak/rune_prc8_top/nw_s1_bltchrdr.nss
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
//::///////////////////////////////////////////////
|
||||||
|
//:: Bolt: Charisma Drain
|
||||||
|
//:: NW_S1_BltChrDr
|
||||||
|
//:: Copyright (c) 2001 Bioware Corp.
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
/*
|
||||||
|
Creature must make a ranged touch attack to hit
|
||||||
|
the intended target. Fortitude save is
|
||||||
|
needed to avoid effect.
|
||||||
|
*/
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
//:: Created By: Preston Watamaniuk
|
||||||
|
//:: Created On: May 11 , 2001
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
#include "NW_I0_SPELLS"
|
||||||
|
#include "prc_inc_spells"
|
||||||
|
//#include "wm_include"
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
//if (WildMagicOverride()) { return; }
|
||||||
|
|
||||||
|
//:: Declare major variables
|
||||||
|
object oNPC = OBJECT_SELF;
|
||||||
|
object oTarget = PRCGetSpellTargetObject();
|
||||||
|
|
||||||
|
int nHD = GetHitDice(oNPC);
|
||||||
|
int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
|
||||||
|
int nDC = 10 +nCHAMod+ (nHD/2);
|
||||||
|
int nCount = nHD / 3;
|
||||||
|
if (nCount == 0) { nCount = 1; }
|
||||||
|
int nDamage = d6(nCount);
|
||||||
|
|
||||||
|
effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY);
|
||||||
|
effect eBolt;
|
||||||
|
|
||||||
|
//Fire cast spell at event for the specified target
|
||||||
|
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_BOLT_ABILITY_DRAIN_CHARISMA));
|
||||||
|
//Make a saving throw check
|
||||||
|
if (!/*Fort Save*/ PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_NEGATIVE) && TouchAttackRanged(oTarget))
|
||||||
|
{
|
||||||
|
eBolt = EffectAbilityDecrease(ABILITY_CHARISMA, nCount);
|
||||||
|
eBolt = SupernaturalEffect(eBolt);
|
||||||
|
//Apply the VFX impact and effects
|
||||||
|
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eBolt, oTarget, RoundsToSeconds(nHD));
|
||||||
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
|
||||||
|
}
|
||||||
|
}
|
BIN
_content/_hak/rune_prc8_top/nw_s1_bltcold.ncs
Normal file
BIN
_content/_hak/rune_prc8_top/nw_s1_bltcold.ncs
Normal file
Binary file not shown.
60
_content/_hak/rune_prc8_top/nw_s1_bltcold.nss
Normal file
60
_content/_hak/rune_prc8_top/nw_s1_bltcold.nss
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
//::///////////////////////////////////////////////
|
||||||
|
//:: Bolt: Cold
|
||||||
|
//:: NW_S1_BltCold
|
||||||
|
//:: Copyright (c) 2001 Bioware Corp.
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
/*
|
||||||
|
Creature must make a ranged touch attack to hit
|
||||||
|
the intended target. Reflex or Will save is
|
||||||
|
needed to halve damage or avoid effect.
|
||||||
|
*/
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
//:: Created By: Preston Watamaniuk
|
||||||
|
//:: Created On: May 11 , 2001
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
#include "NW_I0_SPELLS"
|
||||||
|
#include "prc_inc_spells"
|
||||||
|
//#include "wm_include"
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
//if (WildMagicOverride()) { return; }
|
||||||
|
|
||||||
|
//:: Declare major variables
|
||||||
|
object oNPC = OBJECT_SELF;
|
||||||
|
object oTarget = PRCGetSpellTargetObject();
|
||||||
|
|
||||||
|
int nHD = GetHitDice(oNPC);
|
||||||
|
int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
|
||||||
|
int nDC = 10 +nCHAMod+ (nHD/2);
|
||||||
|
int nCount = nHD/2;
|
||||||
|
if (nCount == 0) { nCount = 1; }
|
||||||
|
int nDamage = d6(nCount);
|
||||||
|
|
||||||
|
effect eVis = EffectVisualEffect(VFX_IMP_FROST_S);
|
||||||
|
effect eBolt;
|
||||||
|
|
||||||
|
//Fire cast spell at event for the specified target
|
||||||
|
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_BOLT_COLD));
|
||||||
|
|
||||||
|
//Adjust the damage based on the Reflex Save, Evasion and Improved Evasion.
|
||||||
|
nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC,SAVING_THROW_TYPE_COLD);
|
||||||
|
|
||||||
|
//Make a ranged touch attack
|
||||||
|
int nTouch = TouchAttackRanged(oTarget);
|
||||||
|
if(nTouch > 0)
|
||||||
|
{
|
||||||
|
if(nTouch == 2)
|
||||||
|
{
|
||||||
|
nDamage *= 2;
|
||||||
|
}
|
||||||
|
//Set damage effect
|
||||||
|
eBolt = EffectDamage(nDamage, DAMAGE_TYPE_COLD);
|
||||||
|
if(nDamage > 0)
|
||||||
|
{
|
||||||
|
//Apply the VFX impact and effects
|
||||||
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, eBolt, oTarget);
|
||||||
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
BIN
_content/_hak/rune_prc8_top/nw_s1_bltcondr.ncs
Normal file
BIN
_content/_hak/rune_prc8_top/nw_s1_bltcondr.ncs
Normal file
Binary file not shown.
48
_content/_hak/rune_prc8_top/nw_s1_bltcondr.nss
Normal file
48
_content/_hak/rune_prc8_top/nw_s1_bltcondr.nss
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
//::///////////////////////////////////////////////
|
||||||
|
//:: Bolt: Constitution Drain
|
||||||
|
//:: NW_S1_BltConDr
|
||||||
|
//:: Copyright (c) 2001 Bioware Corp.
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
/*
|
||||||
|
Creature must make a ranged touch attack to hit
|
||||||
|
the intended target. Fort save is
|
||||||
|
needed to avoid effect.
|
||||||
|
*/
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
//:: Created By: Preston Watamaniuk
|
||||||
|
//:: Created On: May 11 , 2001
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
#include "NW_I0_SPELLS"
|
||||||
|
#include "prc_inc_spells"
|
||||||
|
//#include "wm_include"
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
//if (WildMagicOverride()) { return; }
|
||||||
|
|
||||||
|
//:: Declare major variables
|
||||||
|
object oNPC = OBJECT_SELF;
|
||||||
|
object oTarget = PRCGetSpellTargetObject();
|
||||||
|
|
||||||
|
int nHD = GetHitDice(oNPC);
|
||||||
|
int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
|
||||||
|
int nDC = 10 +nCHAMod+ (nHD/2);
|
||||||
|
int nCount = (nHD /3);
|
||||||
|
if (nCount == 0) { nCount = 1; }
|
||||||
|
int nDamage = d6(nCount);
|
||||||
|
|
||||||
|
effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY);
|
||||||
|
effect eBolt;
|
||||||
|
|
||||||
|
//Fire cast spell at event for the specified target
|
||||||
|
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_BOLT_ABILITY_DRAIN_CONSTITUTION));
|
||||||
|
//Make a saving throw check
|
||||||
|
if (!/*Fort Save*/ PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_NEGATIVE) && TouchAttackRanged(oTarget))
|
||||||
|
{
|
||||||
|
eBolt = EffectAbilityDecrease(ABILITY_CONSTITUTION, nCount);
|
||||||
|
eBolt = SupernaturalEffect(eBolt);
|
||||||
|
//Apply the VFX impact and effects
|
||||||
|
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eBolt, oTarget, RoundsToSeconds(nHD));
|
||||||
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
|
||||||
|
}
|
||||||
|
}
|
BIN
_content/_hak/rune_prc8_top/nw_s1_bltconf.ncs
Normal file
BIN
_content/_hak/rune_prc8_top/nw_s1_bltconf.ncs
Normal file
Binary file not shown.
48
_content/_hak/rune_prc8_top/nw_s1_bltconf.nss
Normal file
48
_content/_hak/rune_prc8_top/nw_s1_bltconf.nss
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
//::///////////////////////////////////////////////
|
||||||
|
//:: Bolt: Confuse
|
||||||
|
//:: NW_S1_BltConf
|
||||||
|
//:: Copyright (c) 2001 Bioware Corp.
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
/*
|
||||||
|
Creature must make a ranged touch attack to hit
|
||||||
|
the intended target. Reflex or Will save is
|
||||||
|
needed to halve damage or avoid effect.
|
||||||
|
*/
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
//:: Created By: Preston Watamaniuk
|
||||||
|
//:: Created On: May 11 , 2001
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
#include "prc_inc_spells"
|
||||||
|
//#include "wm_include"
|
||||||
|
#include "NW_I0_SPELLS"
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
//if (WildMagicOverride()) { return; }
|
||||||
|
|
||||||
|
//:: Declare major variables
|
||||||
|
object oNPC = OBJECT_SELF;
|
||||||
|
object oTarget = PRCGetSpellTargetObject();
|
||||||
|
|
||||||
|
int nHD = GetHitDice(oNPC);
|
||||||
|
int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
|
||||||
|
int nDC = 10 +nCHAMod+ (nHD/2);
|
||||||
|
int nCount = (nHD + 1) / 2;
|
||||||
|
nCount = GetScaledDuration(nCount, oTarget);
|
||||||
|
|
||||||
|
effect eVis2 = EffectVisualEffect(VFX_IMP_CONFUSION_S);
|
||||||
|
effect eVis = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_DISABLED);
|
||||||
|
effect eBolt = EffectConfused();
|
||||||
|
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
|
||||||
|
effect eLink = EffectLinkEffects(eBolt, eDur);
|
||||||
|
eLink = EffectLinkEffects(eLink, eVis);
|
||||||
|
|
||||||
|
//Fire cast spell at event for the specified target
|
||||||
|
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_BOLT_CONFUSE));
|
||||||
|
//Make a saving throw check
|
||||||
|
if (!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_MIND_SPELLS) && TouchAttackRanged(oTarget))
|
||||||
|
{
|
||||||
|
//Apply the VFX impact and effects
|
||||||
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nCount));
|
||||||
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis2, oTarget);
|
||||||
|
}
|
||||||
|
}
|
BIN
_content/_hak/rune_prc8_top/nw_s1_bltdaze.ncs
Normal file
BIN
_content/_hak/rune_prc8_top/nw_s1_bltdaze.ncs
Normal file
Binary file not shown.
47
_content/_hak/rune_prc8_top/nw_s1_bltdaze.nss
Normal file
47
_content/_hak/rune_prc8_top/nw_s1_bltdaze.nss
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
//::///////////////////////////////////////////////
|
||||||
|
//:: Bolt: Daze
|
||||||
|
//:: NW_S1_BltDaze
|
||||||
|
//:: Copyright (c) 2001 Bioware Corp.
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
/*
|
||||||
|
Creature must make a ranged touch attack to hit
|
||||||
|
the intended target. Reflex or Will save is
|
||||||
|
needed to halve damage or avoid effect.
|
||||||
|
*/
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
//:: Created By: Preston Watamaniuk
|
||||||
|
//:: Created On: May 11 , 2001
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
#include "prc_inc_spells"
|
||||||
|
//#include "wm_include"
|
||||||
|
#include "NW_I0_SPELLS"
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
//if (WildMagicOverride()) { return; }
|
||||||
|
|
||||||
|
//:: Declare major variables
|
||||||
|
object oNPC = OBJECT_SELF;
|
||||||
|
object oTarget = PRCGetSpellTargetObject();
|
||||||
|
|
||||||
|
int nHD = GetHitDice(oNPC);
|
||||||
|
int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
|
||||||
|
int nDC = 10 +nCHAMod+ (nHD/2);
|
||||||
|
int nCount = (nHD + 1) / 2;
|
||||||
|
nCount = GetScaledDuration(nCount, oTarget);
|
||||||
|
|
||||||
|
effect eVis = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_DISABLED);
|
||||||
|
effect eBolt = EffectDazed();
|
||||||
|
eBolt = GetScaledEffect(eBolt, oTarget);
|
||||||
|
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
|
||||||
|
effect eLink = EffectLinkEffects(eBolt, eDur);
|
||||||
|
eLink = EffectLinkEffects(eLink, eVis);
|
||||||
|
|
||||||
|
//Fire cast spell at event for the specified target
|
||||||
|
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_BOLT_DAZE));
|
||||||
|
//Make a saving throw check
|
||||||
|
if (!/*Will Save*/ PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_MIND_SPELLS) && TouchAttackRanged(oTarget))
|
||||||
|
{
|
||||||
|
//Apply the VFX impact and effects
|
||||||
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nCount));
|
||||||
|
}
|
||||||
|
}
|
BIN
_content/_hak/rune_prc8_top/nw_s1_bltdeath.ncs
Normal file
BIN
_content/_hak/rune_prc8_top/nw_s1_bltdeath.ncs
Normal file
Binary file not shown.
47
_content/_hak/rune_prc8_top/nw_s1_bltdeath.nss
Normal file
47
_content/_hak/rune_prc8_top/nw_s1_bltdeath.nss
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
//::///////////////////////////////////////////////
|
||||||
|
//:: Bolt: Death
|
||||||
|
//:: NW_S1_BltDeath
|
||||||
|
//:: Copyright (c) 2001 Bioware Corp.
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
/*
|
||||||
|
Creature must make a ranged touch attack to hit
|
||||||
|
the intended target. Reflex or Will save is
|
||||||
|
needed to halve damage or avoid effect.
|
||||||
|
*/
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
//:: Created By: Preston Watamaniuk
|
||||||
|
//:: Created On: May 11 , 2001
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
#include "NW_I0_SPELLS"
|
||||||
|
#include "prc_inc_spells"
|
||||||
|
//#include "wm_include"
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
//if (WildMagicOverride()) { return; }
|
||||||
|
|
||||||
|
//:: Declare major variables
|
||||||
|
object oNPC = OBJECT_SELF;
|
||||||
|
object oTarget = PRCGetSpellTargetObject();
|
||||||
|
|
||||||
|
int nHD = GetHitDice(oNPC);
|
||||||
|
int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
|
||||||
|
int nDC = 10 +nCHAMod+ (nHD/2);
|
||||||
|
|
||||||
|
effect eVis = EffectVisualEffect(VFX_IMP_DEATH);
|
||||||
|
effect eBolt = EffectDeath();
|
||||||
|
|
||||||
|
//Fire cast spell at event for the specified target
|
||||||
|
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_BOLT_DEATH));
|
||||||
|
//Make a saving throw check
|
||||||
|
if(TouchAttackRanged(oTarget))
|
||||||
|
{
|
||||||
|
if(!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_DEATH))
|
||||||
|
{
|
||||||
|
//Apply the VFX impact and effects
|
||||||
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, eBolt, oTarget);
|
||||||
|
//ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
BIN
_content/_hak/rune_prc8_top/nw_s1_bltdexdr.ncs
Normal file
BIN
_content/_hak/rune_prc8_top/nw_s1_bltdexdr.ncs
Normal file
Binary file not shown.
48
_content/_hak/rune_prc8_top/nw_s1_bltdexdr.nss
Normal file
48
_content/_hak/rune_prc8_top/nw_s1_bltdexdr.nss
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
//::///////////////////////////////////////////////
|
||||||
|
//:: Bolt: Dexterity Drain
|
||||||
|
//:: NW_S1_BltDexDr
|
||||||
|
//:: Copyright (c) 2001 Bioware Corp.
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
/*
|
||||||
|
Creature must make a ranged touch attack to hit
|
||||||
|
the intended target. Fort save is
|
||||||
|
needed to avoid effect.
|
||||||
|
*/
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
//:: Created By: Preston Watamaniuk
|
||||||
|
//:: Created On: May 11 , 2001
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
#include "NW_I0_SPELLS"
|
||||||
|
#include "prc_inc_spells"
|
||||||
|
//#include "wm_include"
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
//if (WildMagicOverride()) { return; }
|
||||||
|
|
||||||
|
//:: Declare major variables
|
||||||
|
object oNPC = OBJECT_SELF;
|
||||||
|
object oTarget = PRCGetSpellTargetObject();
|
||||||
|
|
||||||
|
int nHD = GetHitDice(oNPC);
|
||||||
|
int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
|
||||||
|
int nDC = 10 +nCHAMod+ (nHD/2);
|
||||||
|
int nCount = (nHD + 1) / 2;
|
||||||
|
if (nCount == 0) { nCount = 1; }
|
||||||
|
int nDamage = d6(nCount);
|
||||||
|
|
||||||
|
effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY);
|
||||||
|
effect eBolt;
|
||||||
|
|
||||||
|
//Fire cast spell at event for the specified target
|
||||||
|
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_BOLT_ABILITY_DRAIN_DEXTERITY));
|
||||||
|
//Make a saving throw check
|
||||||
|
if (!/*Fort Save*/ PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_NEGATIVE) && TouchAttackRanged(oTarget))
|
||||||
|
{
|
||||||
|
eBolt = EffectAbilityDecrease(ABILITY_DEXTERITY, nCount);
|
||||||
|
eBolt = SupernaturalEffect(eBolt);
|
||||||
|
//Apply the VFX impact and effects
|
||||||
|
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eBolt, oTarget, RoundsToSeconds(nHD));
|
||||||
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
|
||||||
|
}
|
||||||
|
}
|
BIN
_content/_hak/rune_prc8_top/nw_s1_bltdisese.ncs
Normal file
BIN
_content/_hak/rune_prc8_top/nw_s1_bltdisese.ncs
Normal file
Binary file not shown.
73
_content/_hak/rune_prc8_top/nw_s1_bltdisese.nss
Normal file
73
_content/_hak/rune_prc8_top/nw_s1_bltdisese.nss
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
//::///////////////////////////////////////////////
|
||||||
|
//:: Bolt: Disease
|
||||||
|
//:: NW_S1_BltDisease
|
||||||
|
//:: Copyright (c) 2001 Bioware Corp.
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
/*
|
||||||
|
Creature must make a ranged touch attack to infect
|
||||||
|
the target with a disease. The disease used
|
||||||
|
is chosen based upon the racial type of the
|
||||||
|
caster.
|
||||||
|
*/
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
//:: Created By: Preston Watamaniuk
|
||||||
|
//:: Created On: May 11 , 2001
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
#include "NW_I0_SPELLS"
|
||||||
|
#include "prc_inc_spells"
|
||||||
|
//#include "wm_include"
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
//if (WildMagicOverride()) { return; }
|
||||||
|
|
||||||
|
//:: Declare major variables
|
||||||
|
object oNPC = OBJECT_SELF;
|
||||||
|
object oTarget = PRCGetSpellTargetObject();
|
||||||
|
|
||||||
|
int nHD = GetHitDice(oNPC);
|
||||||
|
int nRacial = MyPRCGetRacialType(oNPC);
|
||||||
|
int nDisease;
|
||||||
|
|
||||||
|
//Fire cast spell at event for the specified target
|
||||||
|
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_BOLT_DISEASE));
|
||||||
|
|
||||||
|
//Here we use the racial type of the attacker to select an
|
||||||
|
//appropriate disease.
|
||||||
|
switch (nRacial)
|
||||||
|
{
|
||||||
|
case RACIAL_TYPE_VERMIN:
|
||||||
|
nDisease = DISEASE_VERMIN_MADNESS;
|
||||||
|
break;
|
||||||
|
case RACIAL_TYPE_UNDEAD:
|
||||||
|
nDisease = DISEASE_FILTH_FEVER;
|
||||||
|
break;
|
||||||
|
case RACIAL_TYPE_OUTSIDER:
|
||||||
|
if(GetTag(oNPC) == "NW_SLAADRED")
|
||||||
|
{
|
||||||
|
nDisease = DISEASE_RED_SLAAD_EGGS;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
nDisease = DISEASE_DEMON_FEVER;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case RACIAL_TYPE_MAGICAL_BEAST:
|
||||||
|
nDisease = DISEASE_SOLDIER_SHAKES;
|
||||||
|
break;
|
||||||
|
case RACIAL_TYPE_ABERRATION:
|
||||||
|
nDisease = DISEASE_BLINDING_SICKNESS;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
nDisease = DISEASE_SOLDIER_SHAKES;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
//Assign effect and chosen disease
|
||||||
|
effect eBolt = EffectDisease(nDisease);
|
||||||
|
//Make the ranged touch attack.
|
||||||
|
if (TouchAttackRanged(oTarget))
|
||||||
|
{
|
||||||
|
//Apply the VFX impact and effects
|
||||||
|
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eBolt, oTarget);
|
||||||
|
}
|
||||||
|
}
|
BIN
_content/_hak/rune_prc8_top/nw_s1_bltdomn.ncs
Normal file
BIN
_content/_hak/rune_prc8_top/nw_s1_bltdomn.ncs
Normal file
Binary file not shown.
53
_content/_hak/rune_prc8_top/nw_s1_bltdomn.nss
Normal file
53
_content/_hak/rune_prc8_top/nw_s1_bltdomn.nss
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
//::///////////////////////////////////////////////
|
||||||
|
//:: Bolt: Dominated
|
||||||
|
//:: NW_S1_BltDomn
|
||||||
|
//:: Copyright (c) 2001 Bioware Corp.
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
/*
|
||||||
|
Creature must make a ranged touch attack to hit
|
||||||
|
the intended target. Reflex or Will save is
|
||||||
|
needed to halve damage or avoid effect.
|
||||||
|
*/
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
//:: Created By: Preston Watamaniuk
|
||||||
|
//:: Created On: May 11 , 2001
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
#include "NW_I0_SPELLS"
|
||||||
|
#include "prc_inc_spells"
|
||||||
|
//#include "wm_include"
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
//if (WildMagicOverride()) { return; }
|
||||||
|
|
||||||
|
//:: Declare major variables
|
||||||
|
object oNPC = OBJECT_SELF;
|
||||||
|
object oTarget = PRCGetSpellTargetObject();
|
||||||
|
|
||||||
|
int nHD = GetHitDice(oNPC);
|
||||||
|
int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
|
||||||
|
int nDC = 10 +nCHAMod+ (nHD/2);
|
||||||
|
int nCount = (nHD + 1) / 2;
|
||||||
|
if (nCount == 0) { nCount = 1; }
|
||||||
|
nCount = GetScaledDuration(nCount, oTarget);
|
||||||
|
|
||||||
|
effect eVis = EffectVisualEffect(VFX_IMP_DOMINATE_S);
|
||||||
|
effect eBolt = EffectDominated();
|
||||||
|
eBolt = GetScaledEffect(eBolt, oTarget);
|
||||||
|
effect eVis2 = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_DOMINATED);
|
||||||
|
eBolt = GetScaledEffect(eBolt, oTarget);
|
||||||
|
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
|
||||||
|
effect eLink = EffectLinkEffects(eBolt, eDur);
|
||||||
|
eLink = EffectLinkEffects(eLink, eVis2);
|
||||||
|
|
||||||
|
//Fire cast spell at event for the specified target
|
||||||
|
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_BOLT_DOMINATE));
|
||||||
|
|
||||||
|
//Make a saving throw check
|
||||||
|
if (!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_MIND_SPELLS) && TouchAttackRanged(oTarget))
|
||||||
|
{
|
||||||
|
//Apply the VFX impact and effects
|
||||||
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nCount));
|
||||||
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
|
||||||
|
}
|
||||||
|
}
|
BIN
_content/_hak/rune_prc8_top/nw_s1_bltfire.ncs
Normal file
BIN
_content/_hak/rune_prc8_top/nw_s1_bltfire.ncs
Normal file
Binary file not shown.
58
_content/_hak/rune_prc8_top/nw_s1_bltfire.nss
Normal file
58
_content/_hak/rune_prc8_top/nw_s1_bltfire.nss
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
//::///////////////////////////////////////////////
|
||||||
|
//:: Bolt: Fire
|
||||||
|
//:: NW_S1_BoltFire
|
||||||
|
//:: Copyright (c) 2001 Bioware Corp.
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
/*
|
||||||
|
Creature must make a ranged touch attack to hit
|
||||||
|
the intended target. Reflex or Will save is
|
||||||
|
needed to halve damage or avoid effect.
|
||||||
|
*/
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
//:: Created By: Preston Watamaniuk
|
||||||
|
//:: Created On: May 11 , 2001
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
#include "NW_I0_SPELLS"
|
||||||
|
#include "prc_inc_spells"
|
||||||
|
//#include "wm_include"
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
//if (WildMagicOverride()) { return; }
|
||||||
|
|
||||||
|
//:: Declare major variables
|
||||||
|
object oNPC = OBJECT_SELF;
|
||||||
|
object oTarget = PRCGetSpellTargetObject();
|
||||||
|
|
||||||
|
int nHD = GetHitDice(oNPC);
|
||||||
|
int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
|
||||||
|
int nDC = 10 +nCHAMod+ (nHD/2);
|
||||||
|
int nCount = nHD/2;
|
||||||
|
if (nCount == 0) { nCount = 1; }
|
||||||
|
int nDamage = d6(nCount);
|
||||||
|
|
||||||
|
effect eVis = EffectVisualEffect(VFX_IMP_FLAME_S);
|
||||||
|
effect eBolt;
|
||||||
|
|
||||||
|
//Fire cast spell at event for the specified target
|
||||||
|
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_BOLT_FIRE));
|
||||||
|
//Adjust the damage based on the Reflex Save, Evasion and Improved Evasion.
|
||||||
|
nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC,SAVING_THROW_TYPE_FIRE);
|
||||||
|
//Make a ranged touch attack
|
||||||
|
int nTouch = TouchAttackRanged(oTarget);
|
||||||
|
if(nTouch > 0)
|
||||||
|
{
|
||||||
|
if(nTouch == 2)
|
||||||
|
{
|
||||||
|
nDamage *= 2;
|
||||||
|
}
|
||||||
|
//Set damage effect
|
||||||
|
eBolt = EffectDamage(nDamage, DAMAGE_TYPE_FIRE);
|
||||||
|
if(nDamage > 0)
|
||||||
|
{
|
||||||
|
//Apply the VFX impact and effects
|
||||||
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, eBolt, oTarget);
|
||||||
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
BIN
_content/_hak/rune_prc8_top/nw_s1_bltintdr.ncs
Normal file
BIN
_content/_hak/rune_prc8_top/nw_s1_bltintdr.ncs
Normal file
Binary file not shown.
48
_content/_hak/rune_prc8_top/nw_s1_bltintdr.nss
Normal file
48
_content/_hak/rune_prc8_top/nw_s1_bltintdr.nss
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
//::///////////////////////////////////////////////
|
||||||
|
//:: Bolt: Intelligence Drain
|
||||||
|
//:: NW_S1_BltIntDr
|
||||||
|
//:: Copyright (c) 2001 Bioware Corp.
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
/*
|
||||||
|
Creature must make a ranged touch attack to hit
|
||||||
|
the intended target. Reflex or Will save is
|
||||||
|
needed to halve damage or avoid effect.
|
||||||
|
*/
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
//:: Created By: Preston Watamaniuk
|
||||||
|
//:: Created On: May 11 , 2001
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
#include "NW_I0_SPELLS"
|
||||||
|
#include "prc_inc_spells"
|
||||||
|
//#include "wm_include"
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
//if (WildMagicOverride()) { return; }
|
||||||
|
|
||||||
|
//:: Declare major variables
|
||||||
|
object oNPC = OBJECT_SELF;
|
||||||
|
object oTarget = PRCGetSpellTargetObject();
|
||||||
|
|
||||||
|
int nHD = GetHitDice(oNPC);
|
||||||
|
int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
|
||||||
|
int nDC = 10 +nCHAMod+ (nHD/2);
|
||||||
|
int nCount = (nHD + 1) / 2;
|
||||||
|
if (nCount == 0) { nCount = 1; }
|
||||||
|
int nDamage = d6(nCount);
|
||||||
|
|
||||||
|
effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY);
|
||||||
|
effect eBolt;
|
||||||
|
|
||||||
|
//Fire cast spell at event for the specified target
|
||||||
|
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_BOLT_ABILITY_DRAIN_INTELLIGENCE));
|
||||||
|
//Make a saving throw check
|
||||||
|
if (!/*Fort Save*/ PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_NEGATIVE) && TouchAttackRanged(oTarget))
|
||||||
|
{
|
||||||
|
eBolt = EffectAbilityDecrease(ABILITY_INTELLIGENCE, nCount);
|
||||||
|
eBolt = SupernaturalEffect(eBolt);
|
||||||
|
//Apply the VFX impact and effects
|
||||||
|
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eBolt, oTarget, RoundsToSeconds(nHD));
|
||||||
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
|
||||||
|
}
|
||||||
|
}
|
BIN
_content/_hak/rune_prc8_top/nw_s1_bltknckd.ncs
Normal file
BIN
_content/_hak/rune_prc8_top/nw_s1_bltknckd.ncs
Normal file
Binary file not shown.
48
_content/_hak/rune_prc8_top/nw_s1_bltknckd.nss
Normal file
48
_content/_hak/rune_prc8_top/nw_s1_bltknckd.nss
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
//::///////////////////////////////////////////////
|
||||||
|
//:: Bolt: Knockdown
|
||||||
|
//:: NW_S1_BltKnckD
|
||||||
|
//:: Copyright (c) 2001 Bioware Corp.
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
/*
|
||||||
|
Creature must make a ranged touch attack to hit
|
||||||
|
the intended target. Reflex or Will save is
|
||||||
|
needed to halve damage or avoid effect.
|
||||||
|
*/
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
//:: Created By: Preston Watamaniuk
|
||||||
|
//:: Created On: May 11 , 2001
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
#include "NW_I0_SPELLS"
|
||||||
|
#include "prc_inc_spells"
|
||||||
|
//#include "wm_include"
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
//if (WildMagicOverride()) { return; }
|
||||||
|
|
||||||
|
//:: Declare major variables
|
||||||
|
object oNPC = OBJECT_SELF;
|
||||||
|
object oTarget = PRCGetSpellTargetObject();
|
||||||
|
|
||||||
|
int nHD = GetHitDice(oNPC);
|
||||||
|
int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
|
||||||
|
int nDC = 10 +nCHAMod+ (nHD/2);
|
||||||
|
int nCount = nHD/2;
|
||||||
|
if (nCount == 0) { nCount = 1; }
|
||||||
|
|
||||||
|
effect eVis = EffectVisualEffect(VFX_IMP_SONIC);
|
||||||
|
effect eBolt = EffectKnockdown();
|
||||||
|
effect eDam = EffectDamage(d6(), DAMAGE_TYPE_BLUDGEONING);
|
||||||
|
|
||||||
|
//Fire cast spell at event for the specified target
|
||||||
|
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_BOLT_KNOCKDOWN));
|
||||||
|
|
||||||
|
//Make a saving throw check
|
||||||
|
if (!/*Reflex Save*/ PRCMySavingThrow(SAVING_THROW_REFLEX, oTarget, nDC) && TouchAttackRanged(oTarget))
|
||||||
|
{
|
||||||
|
//Apply the VFX impact and effects
|
||||||
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eBolt, oTarget, RoundsToSeconds(3));
|
||||||
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
|
||||||
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget);
|
||||||
|
}
|
||||||
|
}
|
BIN
_content/_hak/rune_prc8_top/nw_s1_bltlightn.ncs
Normal file
BIN
_content/_hak/rune_prc8_top/nw_s1_bltlightn.ncs
Normal file
Binary file not shown.
59
_content/_hak/rune_prc8_top/nw_s1_bltlightn.nss
Normal file
59
_content/_hak/rune_prc8_top/nw_s1_bltlightn.nss
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
//::///////////////////////////////////////////////
|
||||||
|
//:: Bolt: Lightning
|
||||||
|
//:: NW_S1_BltLightn
|
||||||
|
//:: Copyright (c) 2001 Bioware Corp.
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
/*
|
||||||
|
Does 1d6 per level to a single target. Reflex
|
||||||
|
save for half
|
||||||
|
*/
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
//:: Created By: Preston Watamaniuk
|
||||||
|
//:: Created On: Aug 10, 2001
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
#include "NW_I0_SPELLS"
|
||||||
|
#include "prc_inc_spells"
|
||||||
|
//#include "wm_include"
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
//if (WildMagicOverride()) { return; }
|
||||||
|
|
||||||
|
//:: Declare major variables
|
||||||
|
object oNPC = OBJECT_SELF;
|
||||||
|
object oTarget = PRCGetSpellTargetObject();
|
||||||
|
|
||||||
|
int nHD = GetHitDice(oNPC);
|
||||||
|
int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
|
||||||
|
int nDC = 10 +nCHAMod+ (nHD/2);
|
||||||
|
int nCount = nHD/2;
|
||||||
|
if (nCount == 0) { nCount = 1; }
|
||||||
|
int nDamage = d6(nCount);
|
||||||
|
|
||||||
|
effect eLightning = EffectBeam(VFX_BEAM_LIGHTNING, OBJECT_SELF,BODY_NODE_HAND);
|
||||||
|
effect eVis = EffectVisualEffect(VFX_IMP_LIGHTNING_S);
|
||||||
|
effect eBolt;
|
||||||
|
|
||||||
|
//Fire cast spell at event for the specified target
|
||||||
|
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_BOLT_LIGHTNING));
|
||||||
|
//Adjust the damage based on the Reflex Save, Evasion and Improved Evasion.
|
||||||
|
nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC,SAVING_THROW_TYPE_ELECTRICITY);
|
||||||
|
//Make a ranged touch attack
|
||||||
|
int nTouch = TouchAttackRanged(oTarget);
|
||||||
|
if(nTouch > 0)
|
||||||
|
{
|
||||||
|
if(nTouch == 2)
|
||||||
|
{
|
||||||
|
nDamage *= 2;
|
||||||
|
}
|
||||||
|
//Set damage effect
|
||||||
|
eBolt = EffectDamage(nDamage, DAMAGE_TYPE_ELECTRICAL);
|
||||||
|
if(nDamage > 0)
|
||||||
|
{
|
||||||
|
//Apply the VFX impact and effects
|
||||||
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, eBolt, oTarget);
|
||||||
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
|
||||||
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLightning, oTarget, 1.7);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
BIN
_content/_hak/rune_prc8_top/nw_s1_bltlvldr.ncs
Normal file
BIN
_content/_hak/rune_prc8_top/nw_s1_bltlvldr.ncs
Normal file
Binary file not shown.
49
_content/_hak/rune_prc8_top/nw_s1_bltlvldr.nss
Normal file
49
_content/_hak/rune_prc8_top/nw_s1_bltlvldr.nss
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
//::///////////////////////////////////////////////
|
||||||
|
//:: Bolt: Level Drain
|
||||||
|
//:: NW_S1_BltLvlDr
|
||||||
|
//:: Copyright (c) 2001 Bioware Corp.
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
/*
|
||||||
|
Creature must make a ranged touch attack to hit
|
||||||
|
the intended target. Reflex or Will save is
|
||||||
|
needed to halve damage or avoid effect.
|
||||||
|
*/
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
//:: Created By: Preston Watamaniuk
|
||||||
|
//:: Created On: May 11 , 2001
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
#include "NW_I0_SPELLS"
|
||||||
|
#include "prc_inc_spells"
|
||||||
|
//#include "wm_include"
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
//if (WildMagicOverride()) { return; }
|
||||||
|
|
||||||
|
//:: Declare major variables
|
||||||
|
object oNPC = OBJECT_SELF;
|
||||||
|
object oTarget = PRCGetSpellTargetObject();
|
||||||
|
|
||||||
|
int nHD = GetHitDice(oNPC);
|
||||||
|
int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
|
||||||
|
int nDC = 10 +nCHAMod+ (nHD/2);
|
||||||
|
int nCount = nHD/5;
|
||||||
|
if (nCount == 0) { nCount = 1; }
|
||||||
|
int nDamage = d6(nCount);
|
||||||
|
|
||||||
|
effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY);
|
||||||
|
effect eBolt = EffectNegativeLevel(1);
|
||||||
|
|
||||||
|
//Fire cast spell at event for the specified target
|
||||||
|
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_BOLT_LEVEL_DRAIN));
|
||||||
|
|
||||||
|
//Make a saving throw check
|
||||||
|
if (!/*Fort Save*/ PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_NEGATIVE) && TouchAttackRanged(oTarget))
|
||||||
|
{
|
||||||
|
//eBolt = LEVEL DRAIN EFFECT
|
||||||
|
eBolt = SupernaturalEffect(eBolt);
|
||||||
|
//Apply the VFX impact and effects
|
||||||
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, eBolt, oTarget);
|
||||||
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
|
||||||
|
}
|
||||||
|
}
|
BIN
_content/_hak/rune_prc8_top/nw_s1_bltparal.ncs
Normal file
BIN
_content/_hak/rune_prc8_top/nw_s1_bltparal.ncs
Normal file
Binary file not shown.
48
_content/_hak/rune_prc8_top/nw_s1_bltparal.nss
Normal file
48
_content/_hak/rune_prc8_top/nw_s1_bltparal.nss
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
//::///////////////////////////////////////////////
|
||||||
|
//:: Bolt: Paralyze
|
||||||
|
//:: NW_S1_BltParal
|
||||||
|
//:: Copyright (c) 2001 Bioware Corp.
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
/*
|
||||||
|
Creature must make a ranged touch attack to hit
|
||||||
|
the intended target. Reflex or Will save is
|
||||||
|
needed to halve damage or avoid effect.
|
||||||
|
*/
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
//:: Created By: Preston Watamaniuk
|
||||||
|
//:: Created On: May 11 , 2001
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
#include "NW_I0_SPELLS"
|
||||||
|
#include "prc_inc_spells"
|
||||||
|
//#include "wm_include"
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
//if (WildMagicOverride()) { return; }
|
||||||
|
|
||||||
|
//:: Declare major variables
|
||||||
|
object oNPC = OBJECT_SELF;
|
||||||
|
object oTarget = PRCGetSpellTargetObject();
|
||||||
|
|
||||||
|
int nHD = GetHitDice(oNPC);
|
||||||
|
int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
|
||||||
|
int nDC = 10 +nCHAMod+ (nHD/2);
|
||||||
|
int nCount = (nHD + 1) / 2;
|
||||||
|
if (nCount == 0) { nCount = 1; }
|
||||||
|
nCount = GetScaledDuration(nCount, oTarget);
|
||||||
|
|
||||||
|
effect eVis = EffectVisualEffect(VFX_DUR_PARALYZED);
|
||||||
|
effect eBolt = EffectParalyze();
|
||||||
|
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
|
||||||
|
effect eLink = EffectLinkEffects(eBolt, eDur);
|
||||||
|
eLink = EffectLinkEffects(eLink, eVis);
|
||||||
|
|
||||||
|
//Fire cast spell at event for the specified target
|
||||||
|
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_BOLT_PARALYZE));
|
||||||
|
//Make a saving throw check
|
||||||
|
if (!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC) && TouchAttackRanged(oTarget))
|
||||||
|
{
|
||||||
|
//Apply the VFX impact and effects
|
||||||
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nCount));
|
||||||
|
}
|
||||||
|
}
|
BIN
_content/_hak/rune_prc8_top/nw_s1_bltpoison.ncs
Normal file
BIN
_content/_hak/rune_prc8_top/nw_s1_bltpoison.ncs
Normal file
Binary file not shown.
123
_content/_hak/rune_prc8_top/nw_s1_bltpoison.nss
Normal file
123
_content/_hak/rune_prc8_top/nw_s1_bltpoison.nss
Normal file
@ -0,0 +1,123 @@
|
|||||||
|
//::///////////////////////////////////////////////
|
||||||
|
//:: Bolt: Poison
|
||||||
|
//:: NW_S1_BltPoison.nss
|
||||||
|
//:: Copyright (c) 2001 Bioware Corp.
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
/*
|
||||||
|
Must make a ranged touch attack. If successful
|
||||||
|
the target is struck down with poison that
|
||||||
|
scales with level.
|
||||||
|
*/
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
//:: Created By: Preston Watamaniuk
|
||||||
|
//:: Created On: May 22, 2001
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
#include "NW_I0_SPELLS"
|
||||||
|
#include "prc_inc_spells"
|
||||||
|
//#include "wm_include"
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
//if (WildMagicOverride()) { return; }
|
||||||
|
|
||||||
|
//:: Declare major variables
|
||||||
|
object oNPC = OBJECT_SELF;
|
||||||
|
object oTarget = PRCGetSpellTargetObject();
|
||||||
|
|
||||||
|
int nHD = GetHitDice(oNPC);
|
||||||
|
int nRacial = MyPRCGetRacialType(OBJECT_SELF);
|
||||||
|
int nPoison;
|
||||||
|
|
||||||
|
effect ePoison;
|
||||||
|
|
||||||
|
//Fire cast spell at event for the specified target
|
||||||
|
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_BOLT_POISON));
|
||||||
|
|
||||||
|
//Determine the poison type based on the Racial Type and HD
|
||||||
|
switch (nRacial)
|
||||||
|
{
|
||||||
|
case RACIAL_TYPE_OUTSIDER:
|
||||||
|
if (nHD <= 9)
|
||||||
|
{
|
||||||
|
nPoison = POISON_QUASIT_VENOM;
|
||||||
|
}
|
||||||
|
else if (nHD > 9 && nHD < 13)
|
||||||
|
{
|
||||||
|
nPoison = POISON_BEBILITH_VENOM;
|
||||||
|
}
|
||||||
|
else if (nHD >= 13)
|
||||||
|
{
|
||||||
|
nPoison = POISON_PIT_FIEND_ICHOR;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case RACIAL_TYPE_VERMIN:
|
||||||
|
if (nHD < 3)
|
||||||
|
{
|
||||||
|
nPoison = POISON_TINY_SPIDER_VENOM;
|
||||||
|
}
|
||||||
|
else if (nHD <= 3 && nHD < 6)
|
||||||
|
{
|
||||||
|
nPoison = POISON_SMALL_SPIDER_VENOM;
|
||||||
|
}
|
||||||
|
else if (nHD <= 6 && nHD < 9)
|
||||||
|
{
|
||||||
|
nPoison = POISON_MEDIUM_SPIDER_VENOM;
|
||||||
|
}
|
||||||
|
else if (nHD <= 9 && nHD < 12)
|
||||||
|
{
|
||||||
|
nPoison = POISON_LARGE_SPIDER_VENOM;
|
||||||
|
}
|
||||||
|
else if (nHD <= 12 && nHD < 15)
|
||||||
|
{
|
||||||
|
nPoison = POISON_HUGE_SPIDER_VENOM;
|
||||||
|
}
|
||||||
|
else if (nHD <= 15 && nHD < 18)
|
||||||
|
{
|
||||||
|
nPoison = POISON_GARGANTUAN_SPIDER_VENOM;
|
||||||
|
}
|
||||||
|
else if (nHD >= 18)
|
||||||
|
{
|
||||||
|
nPoison = POISON_COLOSSAL_SPIDER_VENOM;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
if (nHD < 3)
|
||||||
|
{
|
||||||
|
nPoison = POISON_NIGHTSHADE;
|
||||||
|
}
|
||||||
|
else if (nHD <= 3 && nHD < 6)
|
||||||
|
{
|
||||||
|
nPoison = POISON_BLADE_BANE;
|
||||||
|
}
|
||||||
|
else if (nHD <= 6 && nHD < 9)
|
||||||
|
{
|
||||||
|
nPoison = POISON_BLOODROOT;
|
||||||
|
}
|
||||||
|
else if (nHD <= 9 && nHD < 12)
|
||||||
|
{
|
||||||
|
nPoison = POISON_LARGE_SPIDER_VENOM;
|
||||||
|
}
|
||||||
|
else if (nHD <= 12 && nHD < 15)
|
||||||
|
{
|
||||||
|
nPoison = POISON_LICH_DUST;
|
||||||
|
}
|
||||||
|
else if (nHD <= 15 && nHD < 18)
|
||||||
|
{
|
||||||
|
nPoison = POISON_DARK_REAVER_POWDER;
|
||||||
|
}
|
||||||
|
else if (nHD >= 18 )
|
||||||
|
{
|
||||||
|
nPoison = POISON_BLACK_LOTUS_EXTRACT;
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
//Make a ranged touch attack
|
||||||
|
if (TouchAttackRanged (oTarget))
|
||||||
|
{
|
||||||
|
ePoison = EffectPoison(nPoison);
|
||||||
|
//Apply effects
|
||||||
|
ApplyEffectToObject(DURATION_TYPE_PERMANENT, ePoison, oTarget);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
BIN
_content/_hak/rune_prc8_top/nw_s1_bltshards.ncs
Normal file
BIN
_content/_hak/rune_prc8_top/nw_s1_bltshards.ncs
Normal file
Binary file not shown.
58
_content/_hak/rune_prc8_top/nw_s1_bltshards.nss
Normal file
58
_content/_hak/rune_prc8_top/nw_s1_bltshards.nss
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
//::///////////////////////////////////////////////
|
||||||
|
//:: Bolt: Shards
|
||||||
|
//:: NW_S1_BltShard
|
||||||
|
//:: Copyright (c) 2001 Bioware Corp.
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
/*
|
||||||
|
Creature must make a ranged touch attack to hit
|
||||||
|
the intended target. Reflex or Will save is
|
||||||
|
needed to halve damage or avoid effect.
|
||||||
|
*/
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
//:: Created By: Preston Watamaniuk
|
||||||
|
//:: Created On: May 11 , 2001
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
#include "NW_I0_SPELLS"
|
||||||
|
#include "prc_inc_spells"
|
||||||
|
//#include "wm_include"
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
//if (WildMagicOverride()) { return; }
|
||||||
|
|
||||||
|
//:: Declare major variables
|
||||||
|
object oNPC = OBJECT_SELF;
|
||||||
|
object oTarget = PRCGetSpellTargetObject();
|
||||||
|
|
||||||
|
int nHD = GetHitDice(oNPC);
|
||||||
|
int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
|
||||||
|
int nDC = 10 +nCHAMod+ (nHD/2);
|
||||||
|
int nCount = (nHD + 1) / 2;
|
||||||
|
if (nCount == 0) { nCount = 1; }
|
||||||
|
int nDamage = d6(nCount);
|
||||||
|
|
||||||
|
effect eBolt;
|
||||||
|
|
||||||
|
//Fire cast spell at event for the specified target
|
||||||
|
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_BOLT_SHARDS));
|
||||||
|
|
||||||
|
//Adjust the damage based on the Reflex Save, Evasion and Improved Evasion.
|
||||||
|
nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC);
|
||||||
|
|
||||||
|
//Make a ranged touch attack
|
||||||
|
int nTouch = TouchAttackRanged(oTarget);
|
||||||
|
if(nTouch > 0)
|
||||||
|
{
|
||||||
|
if(nTouch == 2)
|
||||||
|
{
|
||||||
|
nDamage *= 2;
|
||||||
|
}
|
||||||
|
//Set damage effect
|
||||||
|
eBolt = EffectDamage(nDamage, DAMAGE_TYPE_PIERCING, DAMAGE_POWER_PLUS_ONE);
|
||||||
|
if(nDamage > 0)
|
||||||
|
{
|
||||||
|
//Apply the VFX impact and effects
|
||||||
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, eBolt, oTarget);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
BIN
_content/_hak/rune_prc8_top/nw_s1_bltslow.ncs
Normal file
BIN
_content/_hak/rune_prc8_top/nw_s1_bltslow.ncs
Normal file
Binary file not shown.
47
_content/_hak/rune_prc8_top/nw_s1_bltslow.nss
Normal file
47
_content/_hak/rune_prc8_top/nw_s1_bltslow.nss
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
//::///////////////////////////////////////////////
|
||||||
|
//:: Bolt: Slow
|
||||||
|
//:: NW_S1_BltSlow
|
||||||
|
//:: Copyright (c) 2001 Bioware Corp.
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
/*
|
||||||
|
Creature must make a ranged touch attack to hit
|
||||||
|
the intended target. Reflex save is
|
||||||
|
needed to or avoid effect.
|
||||||
|
*/
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
//:: Created By: Preston Watamaniuk
|
||||||
|
//:: Created On: June 18 , 2001
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
#include "NW_I0_SPELLS"
|
||||||
|
#include "prc_inc_spells"
|
||||||
|
//#include "wm_include"
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
//if (WildMagicOverride()) { return; }
|
||||||
|
|
||||||
|
//:: Declare major variables
|
||||||
|
object oNPC = OBJECT_SELF;
|
||||||
|
object oTarget = PRCGetSpellTargetObject();
|
||||||
|
|
||||||
|
int nHD = GetHitDice(oNPC);
|
||||||
|
int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
|
||||||
|
int nDC = 10 +nCHAMod+ (nHD/2);
|
||||||
|
int nCount = (nHD + 1) / 2;
|
||||||
|
if (nCount == 0) { nCount = 1; }
|
||||||
|
|
||||||
|
effect eVis = EffectVisualEffect(VFX_IMP_SLOW);
|
||||||
|
effect eBolt = EffectSlow();
|
||||||
|
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
|
||||||
|
effect eLink = EffectLinkEffects(eBolt, eDur);
|
||||||
|
|
||||||
|
//Fire cast spell at event for the specified target
|
||||||
|
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_BOLT_SLOW));
|
||||||
|
//Make a saving throw check
|
||||||
|
if (!/*Will Save*/ PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_MIND_SPELLS) && TouchAttackRanged(oTarget))
|
||||||
|
{
|
||||||
|
//Apply the VFX impact and effects
|
||||||
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nCount));
|
||||||
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
|
||||||
|
}
|
||||||
|
}
|
BIN
_content/_hak/rune_prc8_top/nw_s1_bltstrdr.ncs
Normal file
BIN
_content/_hak/rune_prc8_top/nw_s1_bltstrdr.ncs
Normal file
Binary file not shown.
48
_content/_hak/rune_prc8_top/nw_s1_bltstrdr.nss
Normal file
48
_content/_hak/rune_prc8_top/nw_s1_bltstrdr.nss
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
//::///////////////////////////////////////////////
|
||||||
|
//:: Bolt: Strength Drain
|
||||||
|
//:: NW_S1_BltStrDr
|
||||||
|
//:: Copyright (c) 2001 Bioware Corp.
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
/*
|
||||||
|
Creature must make a ranged touch attack to hit
|
||||||
|
the intended target. Fort save is
|
||||||
|
needed to avoid effect.
|
||||||
|
*/
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
//:: Created By: Preston Watamaniuk
|
||||||
|
//:: Created On: May 11 , 2001
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
#include "NW_I0_SPELLS"
|
||||||
|
#include "prc_inc_spells"
|
||||||
|
//#include "wm_include"
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
//if (WildMagicOverride()) { return; }
|
||||||
|
|
||||||
|
//:: Declare major variables
|
||||||
|
object oNPC = OBJECT_SELF;
|
||||||
|
object oTarget = PRCGetSpellTargetObject();
|
||||||
|
|
||||||
|
int nHD = GetHitDice(oNPC);
|
||||||
|
int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
|
||||||
|
int nDC = 10 +nCHAMod+ (nHD/2);
|
||||||
|
int nCount = (nHD + 1) / 2;
|
||||||
|
if (nCount == 0) { nCount = 1; }
|
||||||
|
int nDamage = d6(nCount);
|
||||||
|
|
||||||
|
effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY);
|
||||||
|
effect eBolt;
|
||||||
|
|
||||||
|
//Fire cast spell at event for the specified target
|
||||||
|
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_BOLT_ABILITY_DRAIN_STRENGTH));
|
||||||
|
//Make a saving throw check
|
||||||
|
if (!/*Fort Save*/ PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_NEGATIVE) && TouchAttackRanged(oTarget))
|
||||||
|
{
|
||||||
|
eBolt = EffectAbilityDecrease(ABILITY_STRENGTH, nCount);
|
||||||
|
eBolt = SupernaturalEffect(eBolt);
|
||||||
|
//Apply the VFX impact and effects
|
||||||
|
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eBolt, oTarget, RoundsToSeconds(nHD));
|
||||||
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
|
||||||
|
}
|
||||||
|
}
|
BIN
_content/_hak/rune_prc8_top/nw_s1_bltstun.ncs
Normal file
BIN
_content/_hak/rune_prc8_top/nw_s1_bltstun.ncs
Normal file
Binary file not shown.
50
_content/_hak/rune_prc8_top/nw_s1_bltstun.nss
Normal file
50
_content/_hak/rune_prc8_top/nw_s1_bltstun.nss
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
//::///////////////////////////////////////////////
|
||||||
|
//:: Bolt: Stun
|
||||||
|
//:: NW_S1_BltStun
|
||||||
|
//:: Copyright (c) 2001 Bioware Corp.
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
/*
|
||||||
|
Creature must make a ranged touch attack to hit
|
||||||
|
the intended target. Reflex or Will save is
|
||||||
|
needed to halve damage or avoid effect.
|
||||||
|
*/
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
//:: Created By: Preston Watamaniuk
|
||||||
|
//:: Created On: May 11 , 2001
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
#include "NW_I0_SPELLS"
|
||||||
|
#include "prc_inc_spells"
|
||||||
|
//#include "wm_include"
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
//if (WildMagicOverride()) { return; }
|
||||||
|
|
||||||
|
//:: Declare major variables
|
||||||
|
object oNPC = OBJECT_SELF;
|
||||||
|
object oTarget = PRCGetSpellTargetObject();
|
||||||
|
|
||||||
|
int nHD = GetHitDice(oNPC);
|
||||||
|
int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
|
||||||
|
int nDC = 10 +nCHAMod+ (nHD/2);
|
||||||
|
int nCount = (nHD + 1) / 2;
|
||||||
|
if (nCount == 0) { nCount = 1; }
|
||||||
|
nCount = GetScaledDuration(nCount, oTarget);
|
||||||
|
int nDamage = d6(nCount);
|
||||||
|
|
||||||
|
effect eVis = EffectVisualEffect(VFX_IMP_STUN);
|
||||||
|
effect eBolt = EffectStunned();
|
||||||
|
eBolt = GetScaledEffect(eBolt, oTarget);
|
||||||
|
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
|
||||||
|
effect eLink = EffectLinkEffects(eBolt, eDur);
|
||||||
|
|
||||||
|
//Fire cast spell at event for the specified target
|
||||||
|
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_BOLT_STUN));
|
||||||
|
//Make a saving throw check
|
||||||
|
if (!/*Will Save*/ PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_MIND_SPELLS) && TouchAttackRanged(oTarget))
|
||||||
|
{
|
||||||
|
//Apply the VFX impact and effects
|
||||||
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nCount));
|
||||||
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
|
||||||
|
}
|
||||||
|
}
|
BIN
_content/_hak/rune_prc8_top/nw_s1_bltweb.ncs
Normal file
BIN
_content/_hak/rune_prc8_top/nw_s1_bltweb.ncs
Normal file
Binary file not shown.
44
_content/_hak/rune_prc8_top/nw_s1_bltweb.nss
Normal file
44
_content/_hak/rune_prc8_top/nw_s1_bltweb.nss
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
//::///////////////////////////////////////////////
|
||||||
|
//:: Bolt: Web
|
||||||
|
//:: NW_S1_BltWeb
|
||||||
|
//:: Copyright (c) 2001 Bioware Corp.
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
/*
|
||||||
|
Glues a single target to the ground with
|
||||||
|
sticky strands of webbing.
|
||||||
|
*/
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
//:: Created By: Preston Watamaniuk
|
||||||
|
//:: Created On: Jan 28, 2002
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
#include "NW_I0_SPELLS"
|
||||||
|
#include "prc_inc_spells"
|
||||||
|
//#include "wm_include"
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
//if (WildMagicOverride()) { return; }
|
||||||
|
|
||||||
|
//:: Declare major variables
|
||||||
|
object oNPC = OBJECT_SELF;
|
||||||
|
object oTarget = PRCGetSpellTargetObject();
|
||||||
|
|
||||||
|
int nHD = GetHitDice(oNPC);
|
||||||
|
int nCONMod = GetAbilityModifier(ABILITY_CONSTITUTION, oNPC);
|
||||||
|
int nDC = 10 +nCONMod+ (nHD/2);
|
||||||
|
int nCount = 1 + (nHD /2);
|
||||||
|
if (nCount == 0) { nCount = 1; }
|
||||||
|
|
||||||
|
effect eVis = EffectVisualEffect(VFX_DUR_WEB);
|
||||||
|
effect eStick = EffectEntangle();
|
||||||
|
effect eLink = EffectLinkEffects(eVis, eStick);
|
||||||
|
|
||||||
|
//Fire cast spell at event for the specified target
|
||||||
|
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_BOLT_WEB));
|
||||||
|
//Make a saving throw check
|
||||||
|
if (!PRCMySavingThrow(SAVING_THROW_REFLEX, oTarget, nDC) && TouchAttackRanged(oTarget))
|
||||||
|
{
|
||||||
|
//Apply the VFX impact and effects
|
||||||
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nCount));
|
||||||
|
}
|
||||||
|
}
|
BIN
_content/_hak/rune_prc8_top/nw_s1_bltwisdr.ncs
Normal file
BIN
_content/_hak/rune_prc8_top/nw_s1_bltwisdr.ncs
Normal file
Binary file not shown.
48
_content/_hak/rune_prc8_top/nw_s1_bltwisdr.nss
Normal file
48
_content/_hak/rune_prc8_top/nw_s1_bltwisdr.nss
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
//::///////////////////////////////////////////////
|
||||||
|
//:: Bolt: Wisdom Drain
|
||||||
|
//:: NW_S1_BltWisDr
|
||||||
|
//:: Copyright (c) 2001 Bioware Corp.
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
/*
|
||||||
|
Creature must make a ranged touch attack to hit
|
||||||
|
the intended target. Fort save is
|
||||||
|
needed to avoid effect.
|
||||||
|
*/
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
//:: Created By: Preston Watamaniuk
|
||||||
|
//:: Created On: May 11 , 2001
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
#include "NW_I0_SPELLS"
|
||||||
|
#include "prc_inc_spells"
|
||||||
|
//#include "wm_include"
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
//if (WildMagicOverride()) { return; }
|
||||||
|
|
||||||
|
//:: Declare major variables
|
||||||
|
object oNPC = OBJECT_SELF;
|
||||||
|
object oTarget = PRCGetSpellTargetObject();
|
||||||
|
|
||||||
|
int nHD = GetHitDice(oNPC);
|
||||||
|
int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
|
||||||
|
int nDC = 10 +nCHAMod+ (nHD/2);
|
||||||
|
int nCount = (nHD /3);
|
||||||
|
if (nCount == 0) { nCount = 1; }
|
||||||
|
int nDamage = d6(nCount);
|
||||||
|
|
||||||
|
effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY);
|
||||||
|
effect eBolt;
|
||||||
|
|
||||||
|
//Fire cast spell at event for the specified target
|
||||||
|
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_BOLT_ABILITY_DRAIN_WISDOM));
|
||||||
|
//Make a saving throw check
|
||||||
|
if (!/*Fort Save*/ PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_NEGATIVE) && TouchAttackRanged(oTarget))
|
||||||
|
{
|
||||||
|
eBolt = EffectAbilityDecrease(ABILITY_WISDOM, nCount);
|
||||||
|
eBolt = SupernaturalEffect(eBolt);
|
||||||
|
//Apply the VFX impact and effects
|
||||||
|
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eBolt, oTarget);
|
||||||
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
|
||||||
|
}
|
||||||
|
}
|
BIN
_content/_hak/rune_prc8_top/nw_s1_coneacid.ncs
Normal file
BIN
_content/_hak/rune_prc8_top/nw_s1_coneacid.ncs
Normal file
Binary file not shown.
76
_content/_hak/rune_prc8_top/nw_s1_coneacid.nss
Normal file
76
_content/_hak/rune_prc8_top/nw_s1_coneacid.nss
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
//::///////////////////////////////////////////////
|
||||||
|
//:: Cone: Acid
|
||||||
|
//:: NW_S1_ConeAcid
|
||||||
|
//:: Copyright (c) 2001 Bioware Corp.
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
/*
|
||||||
|
A cone of damage eminated from the monster. Does
|
||||||
|
a set amount of damage based upon the creatures HD
|
||||||
|
and can be halved with a Reflex Save.
|
||||||
|
*/
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
//:: Created By: Preston Watamaniuk
|
||||||
|
//:: Created On: May 11, 2001
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
#include "NW_I0_SPELLS"
|
||||||
|
#include "prc_inc_spells"
|
||||||
|
//#include "wm_include"
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
//if (WildMagicOverride()) { return; }
|
||||||
|
|
||||||
|
//:: Declare major variables
|
||||||
|
object oNPC = OBJECT_SELF;
|
||||||
|
object oTarget;
|
||||||
|
|
||||||
|
int nHD = GetHitDice(oNPC);
|
||||||
|
int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
|
||||||
|
int nDC = 10 +nCHAMod+ (nHD/2);
|
||||||
|
int nDamage;
|
||||||
|
int nLoop = nHD / 3;
|
||||||
|
|
||||||
|
float fDelay;
|
||||||
|
|
||||||
|
if(nLoop == 0)
|
||||||
|
{
|
||||||
|
nLoop = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Calculate the damage
|
||||||
|
for (nLoop; nLoop > 0; nLoop--)
|
||||||
|
{
|
||||||
|
nDamage = nDamage + d6(2);
|
||||||
|
}
|
||||||
|
location lTargetLocation = PRCGetSpellTargetLocation();
|
||||||
|
|
||||||
|
effect eCone;
|
||||||
|
effect eVis = EffectVisualEffect(VFX_IMP_ACID_S);
|
||||||
|
|
||||||
|
oTarget = GetFirstObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE);
|
||||||
|
//Get first target in spell area
|
||||||
|
while(GetIsObjectValid(oTarget))
|
||||||
|
{
|
||||||
|
if(!GetIsReactionTypeFriendly(oTarget) && oTarget != oNPC)
|
||||||
|
{
|
||||||
|
//Fire cast spell at event for the specified target
|
||||||
|
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_CONE_ACID));
|
||||||
|
//Determine effect delay
|
||||||
|
fDelay = GetDistanceBetween(oNPC, oTarget)/20;
|
||||||
|
//Adjust the damage based on the Reflex Save, Evasion and Improved Evasion.
|
||||||
|
nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC, SAVING_THROW_TYPE_ACID);
|
||||||
|
//Set damage effect
|
||||||
|
eCone = EffectDamage(nDamage, DAMAGE_TYPE_ACID);
|
||||||
|
if(nDamage > 0)
|
||||||
|
{
|
||||||
|
//Apply the VFX impact and effects
|
||||||
|
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
|
||||||
|
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eCone, oTarget));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//Get next target in spell area
|
||||||
|
oTarget = GetNextObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
BIN
_content/_hak/rune_prc8_top/nw_s1_conecold.ncs
Normal file
BIN
_content/_hak/rune_prc8_top/nw_s1_conecold.ncs
Normal file
Binary file not shown.
76
_content/_hak/rune_prc8_top/nw_s1_conecold.nss
Normal file
76
_content/_hak/rune_prc8_top/nw_s1_conecold.nss
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
//::///////////////////////////////////////////////
|
||||||
|
//:: Cone: Cold
|
||||||
|
//:: NW_S1_ConeCold
|
||||||
|
//:: Copyright (c) 2001 Bioware Corp.
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
/*
|
||||||
|
A cone of damage eminated from the monster. Does
|
||||||
|
a set amount of damage based upon the creatures HD
|
||||||
|
and can be halved with a Reflex Save.
|
||||||
|
*/
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
//:: Created By: Preston Watamaniuk
|
||||||
|
//:: Created On: May 11, 2001
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
#include "NW_I0_SPELLS"
|
||||||
|
#include "prc_inc_spells"
|
||||||
|
//#include "wm_include"
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
//if (WildMagicOverride()) { return; }
|
||||||
|
|
||||||
|
//:: Declare major variables
|
||||||
|
object oNPC = OBJECT_SELF;
|
||||||
|
object oTarget;
|
||||||
|
|
||||||
|
int nHD = GetHitDice(oNPC);
|
||||||
|
int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
|
||||||
|
int nDC = 10 +nCHAMod+ (nHD/2);
|
||||||
|
int nDamage;
|
||||||
|
int nLoop = nHD / 3;
|
||||||
|
|
||||||
|
float fDelay;
|
||||||
|
|
||||||
|
if(nLoop == 0)
|
||||||
|
{
|
||||||
|
nLoop = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Calculate the damage
|
||||||
|
for (nLoop; nLoop > 0; nLoop--)
|
||||||
|
{
|
||||||
|
nDamage = nDamage + d6(2);
|
||||||
|
}
|
||||||
|
location lTargetLocation = PRCGetSpellTargetLocation();
|
||||||
|
|
||||||
|
effect eCone;
|
||||||
|
effect eVis = EffectVisualEffect(VFX_IMP_FROST_S);
|
||||||
|
|
||||||
|
oTarget = GetFirstObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE);
|
||||||
|
//Get first target in spell area
|
||||||
|
while(GetIsObjectValid(oTarget))
|
||||||
|
{
|
||||||
|
if(!GetIsReactionTypeFriendly(oTarget) && oTarget != oNPC)
|
||||||
|
{
|
||||||
|
//Fire cast spell at event for the specified target
|
||||||
|
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_CONE_COLD));
|
||||||
|
//Determine effect delay
|
||||||
|
fDelay = GetDistanceBetween(oNPC, oTarget)/20;
|
||||||
|
//Adjust the damage based on the Reflex Save, Evasion and Improved Evasion.
|
||||||
|
nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC, SAVING_THROW_TYPE_COLD);
|
||||||
|
//Set damage effect
|
||||||
|
eCone = EffectDamage(nDamage, DAMAGE_TYPE_COLD);
|
||||||
|
if(nDamage > 0)
|
||||||
|
{
|
||||||
|
//Apply the VFX impact and effects
|
||||||
|
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
|
||||||
|
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eCone, oTarget));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//Get next target in spell area
|
||||||
|
oTarget = GetNextObjectInShape(SHAPE_SPELLCONE, 11.0, lTargetLocation, TRUE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
BIN
_content/_hak/rune_prc8_top/nw_s1_conedisea.ncs
Normal file
BIN
_content/_hak/rune_prc8_top/nw_s1_conedisea.ncs
Normal file
Binary file not shown.
99
_content/_hak/rune_prc8_top/nw_s1_conedisea.nss
Normal file
99
_content/_hak/rune_prc8_top/nw_s1_conedisea.nss
Normal file
@ -0,0 +1,99 @@
|
|||||||
|
//::///////////////////////////////////////////////
|
||||||
|
//:: Cone: Disease
|
||||||
|
//:: NW_S1_ConeDisea
|
||||||
|
//:: Copyright (c) 2001 Bioware Corp.
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
/*
|
||||||
|
Creature spits out a cone of disease that cannot
|
||||||
|
be avoided unless a Reflex save is made.
|
||||||
|
*/
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
//:: Created By: Preston Watamaniuk
|
||||||
|
//:: Created On: May 22, 2001
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
#include "NW_I0_SPELLS"
|
||||||
|
#include "prc_inc_spells"
|
||||||
|
//#include "wm_include"
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
//if (WildMagicOverride()) { return; }
|
||||||
|
|
||||||
|
//:: Declare major variables
|
||||||
|
object oNPC = OBJECT_SELF;
|
||||||
|
object oTarget;
|
||||||
|
|
||||||
|
int nHD = GetHitDice(oNPC);
|
||||||
|
int nRacial = MyPRCGetRacialType(oNPC);
|
||||||
|
int nDisease;
|
||||||
|
|
||||||
|
location lTargetLocation = PRCGetSpellTargetLocation();
|
||||||
|
|
||||||
|
float fDelay;
|
||||||
|
|
||||||
|
effect eCone = EffectDisease(nDisease);
|
||||||
|
effect eVis = EffectVisualEffect(VFX_IMP_DISEASE_S);
|
||||||
|
|
||||||
|
|
||||||
|
//Determine the disease type based on the Racial Type and HD
|
||||||
|
switch (nRacial)
|
||||||
|
{
|
||||||
|
case RACIAL_TYPE_OUTSIDER:
|
||||||
|
nDisease = DISEASE_DEMON_FEVER;
|
||||||
|
break;
|
||||||
|
case RACIAL_TYPE_VERMIN:
|
||||||
|
nDisease = DISEASE_VERMIN_MADNESS;
|
||||||
|
break;
|
||||||
|
case RACIAL_TYPE_UNDEAD:
|
||||||
|
if(nHD <= 3)
|
||||||
|
{
|
||||||
|
nDisease = DISEASE_ZOMBIE_CREEP;
|
||||||
|
}
|
||||||
|
else if (nHD > 3 && nHD <= 10)
|
||||||
|
{
|
||||||
|
nDisease = DISEASE_GHOUL_ROT;
|
||||||
|
}
|
||||||
|
else if(nHD > 10)
|
||||||
|
{
|
||||||
|
nDisease = DISEASE_MUMMY_ROT;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
if(nHD <= 3)
|
||||||
|
{
|
||||||
|
nDisease = DISEASE_MINDFIRE;
|
||||||
|
}
|
||||||
|
else if (nHD > 3 && nHD <= 10)
|
||||||
|
{
|
||||||
|
nDisease = DISEASE_RED_ACHE;
|
||||||
|
}
|
||||||
|
else if(nHD > 10)
|
||||||
|
{
|
||||||
|
nDisease = DISEASE_SHAKES;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
oTarget = GetFirstObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE);
|
||||||
|
//Get first target in spell area
|
||||||
|
while(GetIsObjectValid(oTarget))
|
||||||
|
{
|
||||||
|
if(!GetIsReactionTypeFriendly(oTarget) && oTarget != OBJECT_SELF)
|
||||||
|
{
|
||||||
|
//Fire cast spell at event for the specified target
|
||||||
|
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_CONE_DISEASE));
|
||||||
|
//Get the delay time
|
||||||
|
fDelay = GetDistanceBetween(OBJECT_SELF, oTarget)/20;
|
||||||
|
//Apply the VFX impact and effects
|
||||||
|
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
|
||||||
|
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eCone, oTarget));
|
||||||
|
}
|
||||||
|
//Get next target in spell area
|
||||||
|
oTarget = GetNextObjectInShape(SHAPE_SPELLCONE, 11.0, lTargetLocation, TRUE);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
BIN
_content/_hak/rune_prc8_top/nw_s1_coneelec.ncs
Normal file
BIN
_content/_hak/rune_prc8_top/nw_s1_coneelec.ncs
Normal file
Binary file not shown.
78
_content/_hak/rune_prc8_top/nw_s1_coneelec.nss
Normal file
78
_content/_hak/rune_prc8_top/nw_s1_coneelec.nss
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
//::///////////////////////////////////////////////
|
||||||
|
//:: Cone: Lightning
|
||||||
|
//:: NW_S1_ConeElec
|
||||||
|
//:: Copyright (c) 2001 Bioware Corp.
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
/*
|
||||||
|
A cone of damage eminates from the monster. Does
|
||||||
|
a set amount of damage based upon the creatures HD
|
||||||
|
and can be halved with a Reflex Save.
|
||||||
|
*/
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
//:: Created By: Preston Watamaniuk
|
||||||
|
//:: Created On: May 11, 2001
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
#include "NW_I0_SPELLS"
|
||||||
|
#include "prc_inc_spells"
|
||||||
|
//#include "wm_include"
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
//if (WildMagicOverride()) { return; }
|
||||||
|
|
||||||
|
//:: Declare major variables
|
||||||
|
object oNPC = OBJECT_SELF;
|
||||||
|
object oTarget;
|
||||||
|
|
||||||
|
int nHD = GetHitDice(oNPC);
|
||||||
|
int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
|
||||||
|
int nDC = 10 +nCHAMod+ (nHD/2);
|
||||||
|
int nDamage;
|
||||||
|
int nLoop = nHD / 3;
|
||||||
|
|
||||||
|
float fDelay;
|
||||||
|
|
||||||
|
if(nLoop == 0)
|
||||||
|
{
|
||||||
|
nLoop = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Calculate the damage
|
||||||
|
for (nLoop; nLoop > 0; nLoop--)
|
||||||
|
{
|
||||||
|
nDamage = nDamage + d6(2);
|
||||||
|
}
|
||||||
|
location lTargetLocation = PRCGetSpellTargetLocation();
|
||||||
|
|
||||||
|
effect eLightning = EffectBeam(VFX_BEAM_LIGHTNING, oNPC, BODY_NODE_HAND);
|
||||||
|
effect eCone;
|
||||||
|
effect eVis = EffectVisualEffect(VFX_IMP_LIGHTNING_S);
|
||||||
|
|
||||||
|
oTarget = GetFirstObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE);
|
||||||
|
//Get first target in spell area
|
||||||
|
while(GetIsObjectValid(oTarget))
|
||||||
|
{
|
||||||
|
if(!GetIsReactionTypeFriendly(oTarget) && oTarget != oNPC)
|
||||||
|
{
|
||||||
|
//Fire cast spell at event for the specified target
|
||||||
|
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_CONE_LIGHTNING));
|
||||||
|
//Determine effect delay
|
||||||
|
fDelay = GetDistanceBetween(oNPC, oTarget)/20;
|
||||||
|
//Adjust the damage based on the Reflex Save, Evasion and Improved Evasion.
|
||||||
|
nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC, SAVING_THROW_TYPE_ELECTRICITY);
|
||||||
|
//Set damage effect
|
||||||
|
eCone = EffectDamage(nDamage, DAMAGE_TYPE_ELECTRICAL);
|
||||||
|
if(nDamage > 0)
|
||||||
|
{
|
||||||
|
//Apply the VFX impact and effects
|
||||||
|
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eLightning,oTarget,0.5));
|
||||||
|
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
|
||||||
|
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eCone, oTarget));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//Get next target in spell area
|
||||||
|
oTarget = GetNextObjectInShape(SHAPE_SPELLCONE, 11.0, lTargetLocation, TRUE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
BIN
_content/_hak/rune_prc8_top/nw_s1_conesonic.ncs
Normal file
BIN
_content/_hak/rune_prc8_top/nw_s1_conesonic.ncs
Normal file
Binary file not shown.
75
_content/_hak/rune_prc8_top/nw_s1_conesonic.nss
Normal file
75
_content/_hak/rune_prc8_top/nw_s1_conesonic.nss
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
//::///////////////////////////////////////////////
|
||||||
|
//:: Cone: Sonic
|
||||||
|
//:: NW_S1_ConeSonic
|
||||||
|
//:: Copyright (c) 2001 Bioware Corp.
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
/*
|
||||||
|
A cone of damage eminated from the monster. Does
|
||||||
|
a set amount of damage based upon the creatures HD
|
||||||
|
and can be halved with a Reflex Save.
|
||||||
|
*/
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
//:: Created By: Preston Watamaniuk
|
||||||
|
//:: Created On: May 11, 2001
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
#include "prc_inc_spells"
|
||||||
|
#include "NW_I0_SPELLS"
|
||||||
|
//#include "wm_include"
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
//if (WildMagicOverride()) { return; }
|
||||||
|
|
||||||
|
//:: Declare major variables
|
||||||
|
object oNPC = OBJECT_SELF;
|
||||||
|
object oTarget;
|
||||||
|
|
||||||
|
int nHD = GetHitDice(oNPC);
|
||||||
|
int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
|
||||||
|
int nDC = 10 +nCHAMod+ (nHD/2);
|
||||||
|
int nDamage;
|
||||||
|
int nLoop = nHD / 3;
|
||||||
|
|
||||||
|
float fDelay;
|
||||||
|
|
||||||
|
if(nLoop == 0)
|
||||||
|
{
|
||||||
|
nLoop = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Calculate the damage
|
||||||
|
for (nLoop; nLoop > 0; nLoop--)
|
||||||
|
{
|
||||||
|
nDamage = nDamage + d6(2);
|
||||||
|
}
|
||||||
|
location lTargetLocation = PRCGetSpellTargetLocation();
|
||||||
|
|
||||||
|
effect eCone;
|
||||||
|
effect eVis = EffectVisualEffect(VFX_IMP_SONIC);
|
||||||
|
|
||||||
|
oTarget = GetFirstObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE);
|
||||||
|
//Get first target in spell area
|
||||||
|
while(GetIsObjectValid(oTarget))
|
||||||
|
{
|
||||||
|
if(!GetIsReactionTypeFriendly(oTarget) && oTarget != OBJECT_SELF)
|
||||||
|
{
|
||||||
|
//Fire cast spell at event for the specified target
|
||||||
|
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_CONE_SONIC));
|
||||||
|
//Determine effect delay
|
||||||
|
fDelay = GetDistanceBetween(OBJECT_SELF, oTarget)/20;
|
||||||
|
//Adjust the damage based on the Reflex Save, Evasion and Improved Evasion.
|
||||||
|
nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC,DAMAGE_TYPE_SONIC);
|
||||||
|
//Set damage effect
|
||||||
|
eCone = EffectDamage(nDamage, DAMAGE_TYPE_SONIC);
|
||||||
|
if(nDamage > 0)
|
||||||
|
{
|
||||||
|
//Apply the VFX impact and effects
|
||||||
|
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
|
||||||
|
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eCone, oTarget));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//Get next target in spell area
|
||||||
|
oTarget = GetNextObjectInShape(SHAPE_SPELLCONE, 11.0, lTargetLocation, TRUE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
BIN
_content/_hak/rune_prc8_top/nw_s1_dragfear.ncs
Normal file
BIN
_content/_hak/rune_prc8_top/nw_s1_dragfear.ncs
Normal file
Binary file not shown.
119
_content/_hak/rune_prc8_top/nw_s1_dragfear.nss
Normal file
119
_content/_hak/rune_prc8_top/nw_s1_dragfear.nss
Normal file
@ -0,0 +1,119 @@
|
|||||||
|
//::///////////////////////////////////////////////
|
||||||
|
//:: Dragon Breath Fear
|
||||||
|
//:: NW_S1_DragFear
|
||||||
|
//:: Copyright (c) 2001 Bioware Corp.
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
/*
|
||||||
|
Calculates the proper DC Save for the
|
||||||
|
breath weapon based on the HD of the dragon.
|
||||||
|
*/
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
//:: Created By: Preston Watamaniuk
|
||||||
|
//:: Created On: May 9, 2001
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
#include "NW_I0_SPELLS"
|
||||||
|
#include "prc_inc_spells"
|
||||||
|
//#include "wm_include"
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
//if (WildMagicOverride()) { return; }
|
||||||
|
//Declare major variables
|
||||||
|
int nAge = GetHitDice(OBJECT_SELF);
|
||||||
|
int nCount;
|
||||||
|
int nDC;
|
||||||
|
float fDelay;
|
||||||
|
object oTarget;
|
||||||
|
effect eBreath = EffectFrightened();
|
||||||
|
effect eFear = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_FEAR);
|
||||||
|
effect eVis = EffectVisualEffect(VFX_IMP_FEAR_S);
|
||||||
|
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
|
||||||
|
effect eLink = EffectLinkEffects(eBreath, eDur);
|
||||||
|
eLink = EffectLinkEffects(eLink, eFear);
|
||||||
|
|
||||||
|
//Determine the duration and save DC
|
||||||
|
if (nAge <= 6) //Wyrmling
|
||||||
|
{
|
||||||
|
nDC = 13;
|
||||||
|
nCount = 1;
|
||||||
|
}
|
||||||
|
else if (nAge >= 7 && nAge <= 9) //Very Young
|
||||||
|
{
|
||||||
|
nDC = 15;
|
||||||
|
nCount = 2;
|
||||||
|
}
|
||||||
|
else if (nAge >= 10 && nAge <= 12) //Young
|
||||||
|
{
|
||||||
|
nDC = 17;
|
||||||
|
nCount = 3;
|
||||||
|
}
|
||||||
|
else if (nAge >= 13 && nAge <= 15) //Juvenile
|
||||||
|
{
|
||||||
|
nDC = 19;
|
||||||
|
nCount = 4;
|
||||||
|
}
|
||||||
|
else if (nAge >= 16 && nAge <= 18) //Young Adult
|
||||||
|
{
|
||||||
|
nDC = 21;
|
||||||
|
nCount = 5;
|
||||||
|
}
|
||||||
|
else if (nAge >= 19 && nAge <= 21) //Adult
|
||||||
|
{
|
||||||
|
nDC = 24;
|
||||||
|
nCount = 6;
|
||||||
|
}
|
||||||
|
else if (nAge >= 22 && nAge <= 24) //Mature Adult
|
||||||
|
{
|
||||||
|
nDC = 27;
|
||||||
|
nCount = 7;
|
||||||
|
}
|
||||||
|
else if (nAge >= 25 && nAge <= 27) //Old
|
||||||
|
{
|
||||||
|
nDC = 28;
|
||||||
|
nCount = 8;
|
||||||
|
}
|
||||||
|
else if (nAge >= 28 && nAge <= 30) //Very Old
|
||||||
|
{
|
||||||
|
nDC = 30;
|
||||||
|
nCount = 9;
|
||||||
|
}
|
||||||
|
else if (nAge >= 31 && nAge <= 33) //Ancient
|
||||||
|
{
|
||||||
|
nDC = 32;
|
||||||
|
nCount = 10;
|
||||||
|
}
|
||||||
|
else if (nAge >= 34 && nAge <= 37) //Wyrm
|
||||||
|
{
|
||||||
|
nDC = 34;
|
||||||
|
nCount = 11;
|
||||||
|
}
|
||||||
|
else if (nAge > 37) //Great Wyrm
|
||||||
|
{
|
||||||
|
nDC = 37;
|
||||||
|
nCount = 12;
|
||||||
|
}
|
||||||
|
PlayDragonBattleCry();
|
||||||
|
oTarget = GetFirstObjectInShape(SHAPE_SPELLCONE, 14.0, PRCGetSpellTargetLocation(), TRUE);
|
||||||
|
//Get first target in spell area
|
||||||
|
while(GetIsObjectValid(oTarget))
|
||||||
|
{
|
||||||
|
if(oTarget != OBJECT_SELF && !GetIsReactionTypeFriendly(oTarget))
|
||||||
|
{
|
||||||
|
nCount = GetScaledDuration(nCount, oTarget);
|
||||||
|
//Fire cast spell at event for the specified target
|
||||||
|
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_DRAGON_BREATH_FEAR));
|
||||||
|
//Determine the effect delay time
|
||||||
|
fDelay = GetDistanceBetween(oTarget, OBJECT_SELF)/20;
|
||||||
|
//Make a saving throw check
|
||||||
|
if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_FEAR, OBJECT_SELF, fDelay))
|
||||||
|
{
|
||||||
|
//Apply the VFX impact and effects
|
||||||
|
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
|
||||||
|
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nCount)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//Get next target in spell area
|
||||||
|
oTarget = GetNextObjectInShape(SHAPE_SPELLCONE, 14.0, PRCGetSpellTargetLocation(), TRUE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
BIN
_content/_hak/rune_prc8_top/nw_s1_dragfeara.ncs
Normal file
BIN
_content/_hak/rune_prc8_top/nw_s1_dragfeara.ncs
Normal file
Binary file not shown.
45
_content/_hak/rune_prc8_top/nw_s1_dragfeara.nss
Normal file
45
_content/_hak/rune_prc8_top/nw_s1_dragfeara.nss
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
//::///////////////////////////////////////////////
|
||||||
|
//:: Aura of Fear On Enter
|
||||||
|
//:: NW_S1_DragFearA.nss
|
||||||
|
//:: Copyright (c) 2001 Bioware Corp.
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
/*
|
||||||
|
Upon entering the aura of the creature the player
|
||||||
|
must make a will save or be struck with fear because
|
||||||
|
of the creatures presence.
|
||||||
|
*/
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
//:: Created By: Preston Watamaniuk
|
||||||
|
//:: Created On: May 25, 2001
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
#include "NW_I0_SPELLS"
|
||||||
|
//#include "wm_include"
|
||||||
|
#include "prc_inc_spells"
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
//Declare major variables
|
||||||
|
object oTarget = GetEnteringObject();
|
||||||
|
//if (NullMagicOverride(GetArea(oTarget), oTarget, oTarget)) {return;}
|
||||||
|
effect eVis = EffectVisualEffect(VFX_IMP_FEAR_S);
|
||||||
|
effect eDur = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_FEAR);
|
||||||
|
effect eDur2 = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
|
||||||
|
effect eFear = EffectFrightened();
|
||||||
|
effect eLink = EffectLinkEffects(eFear, eDur);
|
||||||
|
eLink = EffectLinkEffects(eLink, eDur2);
|
||||||
|
|
||||||
|
int nHD = GetHitDice(GetAreaOfEffectCreator());
|
||||||
|
int nDC = 10 + GetHitDice(GetAreaOfEffectCreator())/3;
|
||||||
|
int nDuration = GetScaledDuration(nHD, oTarget);
|
||||||
|
if(GetIsEnemy(oTarget, GetAreaOfEffectCreator()))
|
||||||
|
{
|
||||||
|
//Fire cast spell at event for the specified target
|
||||||
|
SignalEvent(oTarget, EventSpellCastAt(GetAreaOfEffectCreator(), SPELLABILITY_AURA_FEAR));
|
||||||
|
//Make a saving throw check
|
||||||
|
if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_FEAR))
|
||||||
|
{
|
||||||
|
//Apply the VFX impact and effects
|
||||||
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nDuration));
|
||||||
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
BIN
_content/_hak/rune_prc8_top/nw_s1_feroc3.ncs
Normal file
BIN
_content/_hak/rune_prc8_top/nw_s1_feroc3.ncs
Normal file
Binary file not shown.
41
_content/_hak/rune_prc8_top/nw_s1_feroc3.nss
Normal file
41
_content/_hak/rune_prc8_top/nw_s1_feroc3.nss
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
//::///////////////////////////////////////////////
|
||||||
|
//:: Ferocity 3
|
||||||
|
//:: NW_S1_Feroc3
|
||||||
|
//:: Copyright (c) 2001 Bioware Corp.
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
/*
|
||||||
|
The Dex and Str of the target increases
|
||||||
|
*/
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
//:: Created By: Preston Watamaniuk
|
||||||
|
//:: Created On: Aug 13, 2001
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
//:: Declare major variables
|
||||||
|
object oNPC = OBJECT_SELF;
|
||||||
|
|
||||||
|
int nHD = GetHitDice(oNPC);
|
||||||
|
int nCONMod = GetAbilityModifier(ABILITY_CONSTITUTION); //:: Determine the duration by getting the con modifier
|
||||||
|
int nIncrease = 9;
|
||||||
|
int nDuration = 1 + nCONMod;
|
||||||
|
if(nDuration == 0) { nDuration = 1; }
|
||||||
|
|
||||||
|
|
||||||
|
effect eDex = EffectAbilityIncrease(ABILITY_DEXTERITY, nIncrease);
|
||||||
|
effect eStr = EffectAbilityIncrease(ABILITY_STRENGTH, nIncrease);
|
||||||
|
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE);
|
||||||
|
effect eLink = EffectLinkEffects(eStr, eDex);
|
||||||
|
eLink = EffectLinkEffects(eLink, eDur);
|
||||||
|
eLink = ExtraordinaryEffect(eLink); //:: Make effect extraordinary
|
||||||
|
|
||||||
|
//effect eVis = EffectVisualEffect(VFX_IMP_IMPROVE_ABILITY_SCORE);
|
||||||
|
SignalEvent(oNPC, EventSpellCastAt(oNPC, SPELLABILITY_FEROCITY_3, FALSE));
|
||||||
|
if (nCONMod > 0)
|
||||||
|
{
|
||||||
|
//Apply the VFX impact and effects
|
||||||
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oNPC, RoundsToSeconds(nDuration));
|
||||||
|
//ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, OBJECT_SELF) ;
|
||||||
|
}
|
||||||
|
}
|
BIN
_content/_hak/rune_prc8_top/nw_s1_gazechaos.ncs
Normal file
BIN
_content/_hak/rune_prc8_top/nw_s1_gazechaos.ncs
Normal file
Binary file not shown.
69
_content/_hak/rune_prc8_top/nw_s1_gazechaos.nss
Normal file
69
_content/_hak/rune_prc8_top/nw_s1_gazechaos.nss
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
//::///////////////////////////////////////////////
|
||||||
|
//:: Gaze: Destroy Law
|
||||||
|
//:: NW_S1_GazeChaos
|
||||||
|
//:: Copyright (c) 2001 Bioware Corp.
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
/*
|
||||||
|
Cone shape that affects all within the AoE if they
|
||||||
|
fail a Will Save and are of Lawful alignment.
|
||||||
|
*/
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
//:: Created By: Preston Watamaniuk
|
||||||
|
//:: Created On: May 13, 2001
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
#include "prc_inc_spells"
|
||||||
|
#include "NW_I0_SPELLS"
|
||||||
|
//#include "wm_include"
|
||||||
|
#include "x0_i0_match"
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
//--------------------------------------------------------------------------
|
||||||
|
// Make sure we are not blind
|
||||||
|
//--------------------------------------------------------------------------
|
||||||
|
if (PRCGetHasEffect(EFFECT_TYPE_BLINDNESS, OBJECT_SELF))
|
||||||
|
{
|
||||||
|
FloatingTextStrRefOnCreature(84530, OBJECT_SELF, FALSE);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//if (WildMagicOverride()) { return; }
|
||||||
|
|
||||||
|
//:: Declare major variables
|
||||||
|
object oNPC = OBJECT_SELF;
|
||||||
|
object oTarget;
|
||||||
|
|
||||||
|
int nHD = GetHitDice(oNPC);
|
||||||
|
int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
|
||||||
|
int nDC = 10 +nCHAMod+ (nHD/2);
|
||||||
|
|
||||||
|
location lTargetLocation = PRCGetSpellTargetLocation();
|
||||||
|
|
||||||
|
effect eGaze = EffectDeath();
|
||||||
|
effect eVis = EffectVisualEffect(VFX_IMP_DEATH);
|
||||||
|
|
||||||
|
//Get first target in spell area
|
||||||
|
oTarget = GetFirstObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE);
|
||||||
|
while(GetIsObjectValid(oTarget))
|
||||||
|
{
|
||||||
|
if(!GetIsReactionTypeFriendly(oTarget) && oTarget != oNPC)
|
||||||
|
{
|
||||||
|
if(GetAlignmentLawChaos(oTarget) == ALIGNMENT_LAWFUL)
|
||||||
|
{
|
||||||
|
//Fire cast spell at event for the specified target
|
||||||
|
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_GAZE_DESTROY_LAW));
|
||||||
|
//Determine effect delay
|
||||||
|
float fDelay = GetDistanceBetween(oNPC, oTarget)/20;
|
||||||
|
if(!/*WillSave*/PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_DEATH, oNPC, fDelay))
|
||||||
|
{
|
||||||
|
//Apply the VFX impact and effects
|
||||||
|
//DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
|
||||||
|
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eGaze, oTarget));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//Get next target in spell area
|
||||||
|
oTarget = GetNextObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
BIN
_content/_hak/rune_prc8_top/nw_s1_gazecharm.ncs
Normal file
BIN
_content/_hak/rune_prc8_top/nw_s1_gazecharm.ncs
Normal file
Binary file not shown.
76
_content/_hak/rune_prc8_top/nw_s1_gazecharm.nss
Normal file
76
_content/_hak/rune_prc8_top/nw_s1_gazecharm.nss
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
//::///////////////////////////////////////////////
|
||||||
|
//:: Gaze: Charm
|
||||||
|
//:: NW_S1_GazeCharm
|
||||||
|
//:: Copyright (c) 2001 Bioware Corp.
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
/*
|
||||||
|
Cone shape that affects all within the AoE if they
|
||||||
|
fail a Will Save.
|
||||||
|
*/
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
//:: Created By: Preston Watamaniuk
|
||||||
|
//:: Created On: May 9, 2001
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
#include "prc_inc_spells"
|
||||||
|
#include "NW_I0_SPELLS"
|
||||||
|
//#include "wm_include"
|
||||||
|
#include "x0_i0_match"
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
//--------------------------------------------------------------------------
|
||||||
|
// Make sure we are not blind
|
||||||
|
//--------------------------------------------------------------------------
|
||||||
|
if (PRCGetHasEffect(EFFECT_TYPE_BLINDNESS, OBJECT_SELF))
|
||||||
|
{
|
||||||
|
FloatingTextStrRefOnCreature(84530, OBJECT_SELF, FALSE);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//if (WildMagicOverride()) { return; }
|
||||||
|
|
||||||
|
//:: Declare major variables
|
||||||
|
object oNPC = OBJECT_SELF;
|
||||||
|
object oTarget;
|
||||||
|
|
||||||
|
int nHD = GetHitDice(oNPC);
|
||||||
|
int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
|
||||||
|
int nDC = 10 +nCHAMod+ (nHD/2);
|
||||||
|
int nDuration = 1 + (nHD / 3);
|
||||||
|
if(nDuration == 0) { nDuration = 1; }
|
||||||
|
|
||||||
|
location lTargetLocation = PRCGetSpellTargetLocation();
|
||||||
|
|
||||||
|
effect eGaze = EffectCharmed();
|
||||||
|
|
||||||
|
effect eVis = EffectVisualEffect(VFX_IMP_CHARM);
|
||||||
|
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
|
||||||
|
effect eVisDur = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_NEGATIVE);
|
||||||
|
effect eLink = EffectLinkEffects(eDur, eVisDur);
|
||||||
|
|
||||||
|
//Get first target in spell area
|
||||||
|
oTarget = GetFirstObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE);
|
||||||
|
while(GetIsObjectValid(oTarget))
|
||||||
|
{
|
||||||
|
if(!GetIsReactionTypeFriendly(oTarget) && oTarget != OBJECT_SELF)
|
||||||
|
{
|
||||||
|
nDuration = GetScaledDuration(nDuration, oTarget);
|
||||||
|
//Fire cast spell at event for the specified target
|
||||||
|
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_GAZE_CHARM));
|
||||||
|
//Determine effect delay
|
||||||
|
float fDelay = GetDistanceBetween(oNPC, oTarget)/20;
|
||||||
|
if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_MIND_SPELLS, oNPC, fDelay))
|
||||||
|
{
|
||||||
|
eGaze = GetScaledEffect(eGaze, oTarget);
|
||||||
|
eLink = EffectLinkEffects(eLink, eGaze);
|
||||||
|
//Apply the VFX impact and effects
|
||||||
|
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
|
||||||
|
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nDuration)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//Get next target in spell area
|
||||||
|
oTarget = GetNextObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
BIN
_content/_hak/rune_prc8_top/nw_s1_gazeconfu.ncs
Normal file
BIN
_content/_hak/rune_prc8_top/nw_s1_gazeconfu.ncs
Normal file
Binary file not shown.
77
_content/_hak/rune_prc8_top/nw_s1_gazeconfu.nss
Normal file
77
_content/_hak/rune_prc8_top/nw_s1_gazeconfu.nss
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
//::///////////////////////////////////////////////
|
||||||
|
//:: Gaze: Confusion
|
||||||
|
//:: NW_S1_GazeConfu
|
||||||
|
//:: Copyright (c) 2001 Bioware Corp.
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
/*
|
||||||
|
Cone shape that affects all within the AoE if they
|
||||||
|
fail a Will Save.
|
||||||
|
*/
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
//:: Created By: Preston Watamaniuk
|
||||||
|
//:: Created On: May 9, 2001
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
#include "prc_inc_spells"
|
||||||
|
#include "NW_I0_SPELLS"
|
||||||
|
//#include "wm_include"
|
||||||
|
#include "x0_i0_match"
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
//--------------------------------------------------------------------------
|
||||||
|
// Make sure we are not blind
|
||||||
|
//--------------------------------------------------------------------------
|
||||||
|
if (PRCGetHasEffect(EFFECT_TYPE_BLINDNESS, OBJECT_SELF))
|
||||||
|
{
|
||||||
|
FloatingTextStrRefOnCreature(84530, OBJECT_SELF, FALSE);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//if (WildMagicOverride()) { return; }
|
||||||
|
|
||||||
|
//:: Declare major variables
|
||||||
|
object oNPC = OBJECT_SELF;
|
||||||
|
object oTarget;
|
||||||
|
|
||||||
|
int nHD = GetHitDice(oNPC);
|
||||||
|
int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
|
||||||
|
int nDC = 10 +nCHAMod+ (nHD/2);
|
||||||
|
int nDuration = 1 + (nHD / 3);
|
||||||
|
if(nDuration == 0) { nDuration = 1; }
|
||||||
|
|
||||||
|
location lTargetLocation = PRCGetSpellTargetLocation();
|
||||||
|
|
||||||
|
effect eGaze = EffectConfused();
|
||||||
|
effect eVis = EffectVisualEffect(VFX_IMP_CONFUSION_S);
|
||||||
|
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
|
||||||
|
effect eVisDur = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_DISABLED);
|
||||||
|
effect eLink = EffectLinkEffects(eDur, eVisDur);
|
||||||
|
|
||||||
|
//Get first target in spell area
|
||||||
|
oTarget = GetFirstObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE);
|
||||||
|
while(GetIsObjectValid(oTarget))
|
||||||
|
{
|
||||||
|
if(!GetIsReactionTypeFriendly(oTarget) && oTarget != oNPC)
|
||||||
|
{
|
||||||
|
if(oTarget != oNPC)
|
||||||
|
{
|
||||||
|
nDuration = GetScaledDuration(nDuration , oTarget);
|
||||||
|
//Determine effect delay
|
||||||
|
float fDelay = GetDistanceBetween(oNPC, oTarget)/20;
|
||||||
|
//Fire cast spell at event for the specified target
|
||||||
|
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_GAZE_CONFUSION));
|
||||||
|
if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_MIND_SPELLS, oNPC, fDelay))
|
||||||
|
{
|
||||||
|
eGaze = GetScaledEffect(eGaze, oTarget);
|
||||||
|
eLink = EffectLinkEffects(eLink, eGaze);
|
||||||
|
|
||||||
|
//Apply the VFX impact and effects
|
||||||
|
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
|
||||||
|
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nDuration)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//Get next target in spell area
|
||||||
|
oTarget = GetNextObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE);
|
||||||
|
}
|
||||||
|
}
|
BIN
_content/_hak/rune_prc8_top/nw_s1_gazedaze.ncs
Normal file
BIN
_content/_hak/rune_prc8_top/nw_s1_gazedaze.ncs
Normal file
Binary file not shown.
74
_content/_hak/rune_prc8_top/nw_s1_gazedaze.nss
Normal file
74
_content/_hak/rune_prc8_top/nw_s1_gazedaze.nss
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
//::///////////////////////////////////////////////
|
||||||
|
//:: Gaze: Daze
|
||||||
|
//:: NW_S1_GazeDaze
|
||||||
|
//:: Copyright (c) 2001 Bioware Corp.
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
/*
|
||||||
|
Cone shape that affects all within the AoE if they
|
||||||
|
fail a Will Save.
|
||||||
|
*/
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
//:: Created By: Preston Watamaniuk
|
||||||
|
//:: Created On: May 11, 2001
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
#include "prc_inc_spells"
|
||||||
|
#include "NW_I0_SPELLS"
|
||||||
|
//#include "wm_include"
|
||||||
|
#include "x0_i0_match"
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
//--------------------------------------------------------------------------
|
||||||
|
// Make sure we are not blind
|
||||||
|
//--------------------------------------------------------------------------
|
||||||
|
if (PRCGetHasEffect(EFFECT_TYPE_BLINDNESS, OBJECT_SELF))
|
||||||
|
{
|
||||||
|
FloatingTextStrRefOnCreature(84530, OBJECT_SELF, FALSE);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//if (WildMagicOverride()) { return; }
|
||||||
|
|
||||||
|
//:: Declare major variables
|
||||||
|
object oNPC = OBJECT_SELF;
|
||||||
|
object oTarget;
|
||||||
|
|
||||||
|
int nHD = GetHitDice(oNPC);
|
||||||
|
int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
|
||||||
|
int nDC = 10 +nCHAMod+ (nHD/2);
|
||||||
|
int nDuration = 1 + (nHD / 3);
|
||||||
|
if(nDuration == 0) { nDuration = 1; }
|
||||||
|
|
||||||
|
location lTargetLocation = PRCGetSpellTargetLocation();
|
||||||
|
|
||||||
|
effect eGaze = EffectDazed();
|
||||||
|
effect eVis = EffectVisualEffect(VFX_IMP_DAZED_S);
|
||||||
|
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
|
||||||
|
effect eVisDur = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_DISABLED);
|
||||||
|
effect eLink = EffectLinkEffects(eGaze, eVisDur);
|
||||||
|
eLink = EffectLinkEffects(eLink, eDur);
|
||||||
|
|
||||||
|
//Get first target in spell area
|
||||||
|
oTarget = GetFirstObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE);
|
||||||
|
while(GetIsObjectValid(oTarget))
|
||||||
|
{
|
||||||
|
if(!GetIsReactionTypeFriendly(oTarget) && oTarget != oNPC)
|
||||||
|
{
|
||||||
|
nDuration = GetScaledDuration(nDuration , oTarget);
|
||||||
|
//Fire cast spell at event for the specified target
|
||||||
|
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_GAZE_DAZE));
|
||||||
|
|
||||||
|
//Determine effect delay
|
||||||
|
float fDelay = GetDistanceBetween(oNPC, oTarget)/20;
|
||||||
|
if(!/*WillSave*/PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_MIND_SPELLS, oNPC, fDelay))
|
||||||
|
{
|
||||||
|
//Apply the VFX impact and effects
|
||||||
|
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
|
||||||
|
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nDuration)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//Get next target in spell area
|
||||||
|
oTarget = GetNextObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
BIN
_content/_hak/rune_prc8_top/nw_s1_gazedeath.ncs
Normal file
BIN
_content/_hak/rune_prc8_top/nw_s1_gazedeath.ncs
Normal file
Binary file not shown.
66
_content/_hak/rune_prc8_top/nw_s1_gazedeath.nss
Normal file
66
_content/_hak/rune_prc8_top/nw_s1_gazedeath.nss
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
//::///////////////////////////////////////////////
|
||||||
|
//:: Gaze: Death
|
||||||
|
//:: NW_S1_GazeDeath
|
||||||
|
//:: Copyright (c) 2001 Bioware Corp.
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
/*
|
||||||
|
Cone shape that affects all within the AoE if they
|
||||||
|
fail a Will Save.
|
||||||
|
*/
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
//:: Created By: Preston Watamaniuk
|
||||||
|
//:: Created On: May 9, 2001
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
#include "prc_inc_spells"
|
||||||
|
#include "NW_I0_SPELLS"
|
||||||
|
//#include "wm_include"
|
||||||
|
#include "x0_i0_match"
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
//--------------------------------------------------------------------------
|
||||||
|
// Make sure we are not blind
|
||||||
|
//--------------------------------------------------------------------------
|
||||||
|
if (PRCGetHasEffect(EFFECT_TYPE_BLINDNESS, OBJECT_SELF))
|
||||||
|
{
|
||||||
|
FloatingTextStrRefOnCreature(84530, OBJECT_SELF, FALSE);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//if (WildMagicOverride()) { return; }
|
||||||
|
|
||||||
|
//:: Declare major variables
|
||||||
|
object oNPC = OBJECT_SELF;
|
||||||
|
object oTarget;
|
||||||
|
|
||||||
|
int nHD = GetHitDice(oNPC);
|
||||||
|
int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
|
||||||
|
int nDC = 10 +nCHAMod+ (nHD/2);
|
||||||
|
|
||||||
|
location lTargetLocation = PRCGetSpellTargetLocation();
|
||||||
|
|
||||||
|
effect eGaze = EffectDeath();
|
||||||
|
effect eVis = EffectVisualEffect(VFX_IMP_DEATH);
|
||||||
|
|
||||||
|
//Get first target in spell area
|
||||||
|
oTarget = GetFirstObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE);
|
||||||
|
while(GetIsObjectValid(oTarget))
|
||||||
|
{
|
||||||
|
if(!GetIsReactionTypeFriendly(oTarget) || oTarget != oNPC)
|
||||||
|
{
|
||||||
|
//Fire cast spell at event for the specified target
|
||||||
|
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_GAZE_DEATH));
|
||||||
|
//Determine effect delay
|
||||||
|
float fDelay = GetDistanceBetween(oNPC, oTarget)/20;
|
||||||
|
if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_DEATH, oNPC, fDelay))
|
||||||
|
{
|
||||||
|
//Apply the VFX impact and effects
|
||||||
|
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
|
||||||
|
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eGaze, oTarget));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//Get next target in spell area
|
||||||
|
oTarget = GetNextObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user