2025/12/25 Initial Upload

2025/12/25 Initial Upload
This commit is contained in:
Jaysyn904
2025-12-25 23:49:41 -05:00
parent 7de463c591
commit 35ed943c01
6145 changed files with 6546499 additions and 27 deletions

View File

@@ -1,19 +1,18 @@
# Default Module Template # Tortured Hearts I - Epilogue 1 [PRC8-CEP3]
Repository for the development of the PRC8 version of ..... Repository for the development of the PRC8 version of Tortured Hearts I.
[Discussion Thread on Discord](https://discord.gg/ca2ru3KxYd) [Discussion Thread on Discord](https://discord.gg/ca2ru3KxYd)
## Requirements ## Requirements
1.) [Nasher](https://github.com/squattingmonk/nasher), installed in your system path. 1.) [Nasher](https://github.com/squattingmonk/nasher), installed in your system path.
2.) [Original module resources]() 2.) [Original module resources](https://neverwintervault.org/project/nwn1/module/tortured-hearts-i)
3.) [PRC8](https://gitea.raptio.us/Jaysyn/PRC8/releases) 3.) [PRC8](https://gitea.raptio.us/Jaysyn/PRC8/releases)
3.) [CEP3](https://neverwintervault.org/project/nwnee/hakpak/combined/cep-3-community-expansion-pack) 3.) [CEP3](https://neverwintervault.org/project/nwnee/hakpak/combined/cep-3-community-expansion-pack)
4.) [CEP2](https://neverwintervault.org/cep)
## Instructions ## Instructions

View File

@@ -1,9 +1,9 @@
[package] [package]
name = "Default Module" name = "Tortured Hearts I"
description = "PRC8 version of ..." description = "PRC8 version of Tortured Hearts I."
version = "1.01prc8" version = "2.16prc8"
url = "https://discord.gg/ca2ru3KxYd" url = "https://discord.gg/ca2ru3KxYd"
author = "Original Author" author = "Zoltan Gonda"
author = "Jaysyn904 <68194417+Jaysyn904@users.noreply.github.com>" author = "Jaysyn904 <68194417+Jaysyn904@users.noreply.github.com>"
[package.sources] [package.sources]
@@ -15,10 +15,11 @@ author = "Jaysyn904 <68194417+Jaysyn904@users.noreply.github.com>"
[target] [target]
name = "default" name = "default"
file = "Default Module.mod" group = "modules"
description = "PRC8 version of ..." file = "Tortured Hearts I.mod"
description = "PRC8 version of Tortured Hearts I."
[target.sources] [target.sources]
include = "src/module/**/*" include = "src/module/default/**/*"
include = "src/include/**/*" include = "src/include/**/*"
filter = "bnd_inc_bndfunc.nss" filter = "bnd_inc_bndfunc.nss"
filter = "bnd_vestig_const.nss" filter = "bnd_vestig_const.nss"
@@ -242,24 +243,479 @@ description = "PRC8 version of ..."
filter = "nw_inc_gff.nss" filter = "nw_inc_gff.nss"
filter = "inc_infusion.nss" filter = "inc_infusion.nss"
[target.rules] [target.rules]
"*" = "src/module/$ext" "*" = "src/module/default/$ext"
[target] [target]
name = "tlk" name = "epilogue1"
file = "custom.tlk" group = "modules"
description = "Merge tlk for the PRC8 version ..." file = "Tortured Hearts I - Epilogue 1 [PRC8-CEP3].mod"
[target.sources] description = "PRC8 version of Tortured Hearts I - Epilogue 1."
include = "src/tlk/*.json" [target.sources]
include = "src/module/epilogue1/**/*"
include = "src/include/**/*"
filter = "bnd_inc_bndfunc.nss"
filter = "bnd_vestig_const.nss"
filter = "inc_2dacache.nss"
filter = "inc_abil_damage.nss"
filter = "inc_acp.nss"
filter = "inc_addragebonus.nss"
filter = "inc_area.nss"
filter = "inc_array_sort.nss"
filter = "inc_cache_setup.nss"
filter = "inc_debug.nss"
filter = "inc_dispel.nss"
filter = "inc_draw.nss"
filter = "inc_draw_prc.nss"
filter = "inc_draw_text.nss"
filter = "inc_draw_tools.nss"
filter = "inc_dynconv.nss"
filter = "inc_ecl.nss"
filter = "inc_epicspellai.nss"
filter = "inc_epicspelldef.nss"
filter = "inc_epicspellfnc.nss"
filter = "inc_epicspells.nss"
filter = "inc_eventhook.nss"
filter = "inc_heap.nss"
filter = "inc_item_props.nss"
filter = "inc_logmessage.nss"
filter = "inc_lookups.nss"
filter = "inc_metalocation.nss"
filter = "inc_newspellbook.nss"
filter = "inc_npc.nss"
filter = "inc_nwnx_funcs.nss"
filter = "inc_persistsql.nss"
filter = "inc_persist_loca.nss"
filter = "inc_pers_array.nss"
filter = "inc_poison.nss"
filter = "inc_prc_npc.nss"
filter = "inc_prc_poly.nss"
filter = "inc_rand_equip.nss"
filter = "inc_ravage.nss"
filter = "inc_rend.nss"
filter = "inc_sbr_readme.nss"
filter = "inc_set.nss"
filter = "inc_spirit_weapn.nss"
filter = "inc_sp_gain_mem.nss"
filter = "inc_sql.nss"
filter = "inc_switch_setup.nss"
filter = "inc_target_list.nss"
filter = "inc_threads.nss"
filter = "inc_time.nss"
filter = "inc_timestop.nss"
filter = "inc_uniqueid.nss"
filter = "inc_utility.nss"
filter = "inc_vfx_const.nss"
filter = "inv_inc_blast.nss"
filter = "inv_inc_invfunc.nss"
filter = "inv_inc_invknown.nss"
filter = "inv_inc_invoke.nss"
filter = "inv_invoc_const.nss"
filter = "inv_invokehook.nss"
filter = "lookup_2da_spell.nss"
filter = "moi_inc_moifunc.nss"
filter = "moi_meld_const.nss"
filter = "nw_o2_coninclude.nss"
filter = "pnp_lich_inc.nss"
filter = "pnp_shft_main.nss"
filter = "pnp_shft_poly.nss"
filter = "prcsp_archmaginc.nss"
filter = "prcsp_engine.nss"
filter = "prcsp_reputation.nss"
filter = "prc_add_spell_dc.nss"
filter = "prc_add_spl_pen.nss"
filter = "prc_allow_const.nss"
filter = "prc_alterations.nss"
filter = "prc_ccc_const.nss"
filter = "prc_ccc_readme.nss"
filter = "prc_class_const.nss"
filter = "prc_compan_inc.nss"
filter = "prc_craft_inc.nss"
filter = "prc_effect_inc.nss"
filter = "prc_feat_const.nss"
filter = "prc_getbest_inc.nss"
filter = "prc_inc_actions.nss"
filter = "prc_inc_array.nss"
filter = "prc_inc_assoc.nss"
filter = "prc_inc_breath.nss"
filter = "prc_inc_burn.nss"
filter = "prc_inc_castlvl.nss"
filter = "prc_inc_chat.nss"
filter = "prc_inc_chat_dm.nss"
filter = "prc_inc_chat_pow.nss"
filter = "prc_inc_chat_shf.nss"
filter = "prc_inc_clsfunc.nss"
filter = "prc_inc_combat.nss"
filter = "prc_inc_combmove.nss"
filter = "prc_inc_core.nss"
filter = "prc_inc_damage.nss"
filter = "prc_inc_descrptr.nss"
filter = "prc_inc_domain.nss"
filter = "prc_inc_dragsham.nss"
filter = "prc_inc_drugfunc.nss"
filter = "prc_inc_effect.nss"
filter = "prc_inc_factotum.nss"
filter = "prc_inc_fork.nss"
filter = "prc_inc_function.nss"
filter = "prc_inc_hextor.nss"
filter = "prc_inc_itmrstr.nss"
filter = "prc_inc_leadersh.nss"
filter = "prc_inc_listener.nss"
filter = "prc_inc_material.nss"
filter = "prc_inc_natweap.nss"
filter = "prc_inc_nat_hb.nss"
filter = "prc_inc_newip.nss"
filter = "prc_inc_nwscript.nss"
filter = "prc_inc_onhit.nss"
filter = "prc_inc_racial.nss"
filter = "prc_inc_sbheir.nss"
filter = "prc_inc_sb_const.nss"
filter = "prc_inc_scry.nss"
filter = "prc_inc_shifting.nss"
filter = "prc_inc_skills.nss"
filter = "prc_inc_skin.nss"
filter = "prc_inc_smite.nss"
filter = "prc_inc_sneak.nss"
filter = "prc_inc_spells.nss"
filter = "prc_inc_sp_tch.nss"
filter = "prc_inc_stunfist.nss"
filter = "prc_inc_switch.nss"
filter = "prc_inc_s_det.nss"
filter = "prc_inc_teleport.nss"
filter = "prc_inc_template.nss"
filter = "prc_inc_turning.nss"
filter = "prc_inc_unarmed.nss"
filter = "prc_inc_util.nss"
filter = "prc_inc_wpnrest.nss"
filter = "prc_ipfeat_const.nss"
filter = "prc_ip_srcost.nss"
filter = "prc_misc_const.nss"
filter = "prc_racial_const.nss"
filter = "prc_shifter_info.nss"
filter = "prc_spellf_inc.nss"
filter = "prc_spellhook.nss"
filter = "prc_spell_const.nss"
filter = "prc_sp_func.nss"
filter = "prc_template_con.nss"
filter = "prc_weap_apt.nss"
filter = "prc_x2_craft.nss"
filter = "prc_x2_itemprop.nss"
filter = "prgt_inc.nss"
filter = "prgt_inc_trap.nss"
filter = "psi_inc_ac_const.nss"
filter = "psi_inc_ac_convo.nss"
filter = "psi_inc_ac_manif.nss"
filter = "psi_inc_ac_spawn.nss"
filter = "psi_inc_augment.nss"
filter = "psi_inc_const.nss"
filter = "psi_inc_core.nss"
filter = "psi_inc_enrgypow.nss"
filter = "psi_inc_metapsi.nss"
filter = "psi_inc_onhit.nss"
filter = "psi_inc_powknown.nss"
filter = "psi_inc_ppoints.nss"
filter = "psi_inc_psicraft.nss"
filter = "psi_inc_psifunc.nss"
filter = "psi_inc_pwresist.nss"
filter = "psi_inc_soulkn.nss"
filter = "psi_power_const.nss"
filter = "psi_spellhook.nss"
filter = "sbr_include.nss"
filter = "shd_inc_metashd.nss"
filter = "shd_inc_myst.nss"
filter = "shd_inc_mystknwn.nss"
filter = "shd_inc_shdfunc.nss"
filter = "shd_mysthook.nss"
filter = "shd_myst_const.nss"
filter = "spinc_bolt.nss"
filter = "spinc_burst.nss"
filter = "spinc_cone.nss"
filter = "spinc_dimdoor.nss"
filter = "spinc_engimm.nss"
filter = "spinc_fdisk.nss"
filter = "spinc_greenfire.nss"
filter = "spinc_lessorb.nss"
filter = "spinc_maze.nss"
filter = "spinc_necro_cyst.nss"
filter = "spinc_orb.nss"
filter = "spinc_remeffct.nss"
filter = "spinc_telecircle.nss"
filter = "spinc_teleport.nss"
filter = "spinc_trans.nss"
filter = "tob_inc_martlore.nss"
filter = "tob_inc_move.nss"
filter = "tob_inc_moveknwn.nss"
filter = "tob_inc_recovery.nss"
filter = "tob_inc_tobfunc.nss"
filter = "tob_movehook.nss"
filter = "tob_move_const.nss"
filter = "true_inc_metautr.nss"
filter = "true_inc_truespk.nss"
filter = "true_inc_trufunc.nss"
filter = "true_inc_truknwn.nss"
filter = "true_inc_utter.nss"
filter = "true_utterhook.nss"
filter = "true_utter_const.nss"
filter = "utl_i_sqluuid.nss"
filter = "x0_i0_transport.nss"
filter = "x2_inc_cutscenep.nss"
filter = "x2_inc_spellhook.nss"
filter = "x3_inc_horse.nss"
filter = "prc_nui_sc_inc.nss"
filter = "prc_nui_scd_inc.nss"
filter = "prc_nui_consts.nss"
filter = "nw_inc_nui.nss"
filter = "xchst_inc.nss"
filter = "prc_string_inc.nss"
filter = "prc_nui_sb_inc.nss"
filter = "prc_nui_sbd_inc.nss"
filter = "prc_nui_lv_inc.nss"
filter = "prc_nui_com_inc.nss"
filter = "prc_inc_json.nss"
filter = "nw_inc_nui.nss"
filter = "nw_inc_gff.nss"
filter = "inc_infusion.nss"
[target.rules]
"*" = "src/module/epilogue1/$ext"
[target]
name = "epilogue2"
group = "modules"
file = "Tortured Hearts I - Epilogue 2 [PRC8-CEP3].mod"
description = "PRC8 version of Tortured Hearts I - Epilogue 2."
[target.sources]
include = "src/module/epilogue2/**/*"
include = "src/include/**/*"
filter = "bnd_inc_bndfunc.nss"
filter = "bnd_vestig_const.nss"
filter = "inc_2dacache.nss"
filter = "inc_abil_damage.nss"
filter = "inc_acp.nss"
filter = "inc_addragebonus.nss"
filter = "inc_area.nss"
filter = "inc_array_sort.nss"
filter = "inc_cache_setup.nss"
filter = "inc_debug.nss"
filter = "inc_dispel.nss"
filter = "inc_draw.nss"
filter = "inc_draw_prc.nss"
filter = "inc_draw_text.nss"
filter = "inc_draw_tools.nss"
filter = "inc_dynconv.nss"
filter = "inc_ecl.nss"
filter = "inc_epicspellai.nss"
filter = "inc_epicspelldef.nss"
filter = "inc_epicspellfnc.nss"
filter = "inc_epicspells.nss"
filter = "inc_eventhook.nss"
filter = "inc_heap.nss"
filter = "inc_item_props.nss"
filter = "inc_logmessage.nss"
filter = "inc_lookups.nss"
filter = "inc_metalocation.nss"
filter = "inc_newspellbook.nss"
filter = "inc_npc.nss"
filter = "inc_nwnx_funcs.nss"
filter = "inc_persistsql.nss"
filter = "inc_persist_loca.nss"
filter = "inc_pers_array.nss"
filter = "inc_poison.nss"
filter = "inc_prc_npc.nss"
filter = "inc_prc_poly.nss"
filter = "inc_rand_equip.nss"
filter = "inc_ravage.nss"
filter = "inc_rend.nss"
filter = "inc_sbr_readme.nss"
filter = "inc_set.nss"
filter = "inc_spirit_weapn.nss"
filter = "inc_sp_gain_mem.nss"
filter = "inc_sql.nss"
filter = "inc_switch_setup.nss"
filter = "inc_target_list.nss"
filter = "inc_threads.nss"
filter = "inc_time.nss"
filter = "inc_timestop.nss"
filter = "inc_uniqueid.nss"
filter = "inc_utility.nss"
filter = "inc_vfx_const.nss"
filter = "inv_inc_blast.nss"
filter = "inv_inc_invfunc.nss"
filter = "inv_inc_invknown.nss"
filter = "inv_inc_invoke.nss"
filter = "inv_invoc_const.nss"
filter = "inv_invokehook.nss"
filter = "lookup_2da_spell.nss"
filter = "moi_inc_moifunc.nss"
filter = "moi_meld_const.nss"
filter = "nw_o2_coninclude.nss"
filter = "pnp_lich_inc.nss"
filter = "pnp_shft_main.nss"
filter = "pnp_shft_poly.nss"
filter = "prcsp_archmaginc.nss"
filter = "prcsp_engine.nss"
filter = "prcsp_reputation.nss"
filter = "prc_add_spell_dc.nss"
filter = "prc_add_spl_pen.nss"
filter = "prc_allow_const.nss"
filter = "prc_alterations.nss"
filter = "prc_ccc_const.nss"
filter = "prc_ccc_readme.nss"
filter = "prc_class_const.nss"
filter = "prc_compan_inc.nss"
filter = "prc_craft_inc.nss"
filter = "prc_effect_inc.nss"
filter = "prc_feat_const.nss"
filter = "prc_getbest_inc.nss"
filter = "prc_inc_actions.nss"
filter = "prc_inc_array.nss"
filter = "prc_inc_assoc.nss"
filter = "prc_inc_breath.nss"
filter = "prc_inc_burn.nss"
filter = "prc_inc_castlvl.nss"
filter = "prc_inc_chat.nss"
filter = "prc_inc_chat_dm.nss"
filter = "prc_inc_chat_pow.nss"
filter = "prc_inc_chat_shf.nss"
filter = "prc_inc_clsfunc.nss"
filter = "prc_inc_combat.nss"
filter = "prc_inc_combmove.nss"
filter = "prc_inc_core.nss"
filter = "prc_inc_damage.nss"
filter = "prc_inc_descrptr.nss"
filter = "prc_inc_domain.nss"
filter = "prc_inc_dragsham.nss"
filter = "prc_inc_drugfunc.nss"
filter = "prc_inc_effect.nss"
filter = "prc_inc_factotum.nss"
filter = "prc_inc_fork.nss"
filter = "prc_inc_function.nss"
filter = "prc_inc_hextor.nss"
filter = "prc_inc_itmrstr.nss"
filter = "prc_inc_leadersh.nss"
filter = "prc_inc_listener.nss"
filter = "prc_inc_material.nss"
filter = "prc_inc_natweap.nss"
filter = "prc_inc_nat_hb.nss"
filter = "prc_inc_newip.nss"
filter = "prc_inc_nwscript.nss"
filter = "prc_inc_onhit.nss"
filter = "prc_inc_racial.nss"
filter = "prc_inc_sbheir.nss"
filter = "prc_inc_sb_const.nss"
filter = "prc_inc_scry.nss"
filter = "prc_inc_shifting.nss"
filter = "prc_inc_skills.nss"
filter = "prc_inc_skin.nss"
filter = "prc_inc_smite.nss"
filter = "prc_inc_sneak.nss"
filter = "prc_inc_spells.nss"
filter = "prc_inc_sp_tch.nss"
filter = "prc_inc_stunfist.nss"
filter = "prc_inc_switch.nss"
filter = "prc_inc_s_det.nss"
filter = "prc_inc_teleport.nss"
filter = "prc_inc_template.nss"
filter = "prc_inc_turning.nss"
filter = "prc_inc_unarmed.nss"
filter = "prc_inc_util.nss"
filter = "prc_inc_wpnrest.nss"
filter = "prc_ipfeat_const.nss"
filter = "prc_ip_srcost.nss"
filter = "prc_misc_const.nss"
filter = "prc_racial_const.nss"
filter = "prc_shifter_info.nss"
filter = "prc_spellf_inc.nss"
filter = "prc_spellhook.nss"
filter = "prc_spell_const.nss"
filter = "prc_sp_func.nss"
filter = "prc_template_con.nss"
filter = "prc_weap_apt.nss"
filter = "prc_x2_craft.nss"
filter = "prc_x2_itemprop.nss"
filter = "prgt_inc.nss"
filter = "prgt_inc_trap.nss"
filter = "psi_inc_ac_const.nss"
filter = "psi_inc_ac_convo.nss"
filter = "psi_inc_ac_manif.nss"
filter = "psi_inc_ac_spawn.nss"
filter = "psi_inc_augment.nss"
filter = "psi_inc_const.nss"
filter = "psi_inc_core.nss"
filter = "psi_inc_enrgypow.nss"
filter = "psi_inc_metapsi.nss"
filter = "psi_inc_onhit.nss"
filter = "psi_inc_powknown.nss"
filter = "psi_inc_ppoints.nss"
filter = "psi_inc_psicraft.nss"
filter = "psi_inc_psifunc.nss"
filter = "psi_inc_pwresist.nss"
filter = "psi_inc_soulkn.nss"
filter = "psi_power_const.nss"
filter = "psi_spellhook.nss"
filter = "sbr_include.nss"
filter = "shd_inc_metashd.nss"
filter = "shd_inc_myst.nss"
filter = "shd_inc_mystknwn.nss"
filter = "shd_inc_shdfunc.nss"
filter = "shd_mysthook.nss"
filter = "shd_myst_const.nss"
filter = "spinc_bolt.nss"
filter = "spinc_burst.nss"
filter = "spinc_cone.nss"
filter = "spinc_dimdoor.nss"
filter = "spinc_engimm.nss"
filter = "spinc_fdisk.nss"
filter = "spinc_greenfire.nss"
filter = "spinc_lessorb.nss"
filter = "spinc_maze.nss"
filter = "spinc_necro_cyst.nss"
filter = "spinc_orb.nss"
filter = "spinc_remeffct.nss"
filter = "spinc_telecircle.nss"
filter = "spinc_teleport.nss"
filter = "spinc_trans.nss"
filter = "tob_inc_martlore.nss"
filter = "tob_inc_move.nss"
filter = "tob_inc_moveknwn.nss"
filter = "tob_inc_recovery.nss"
filter = "tob_inc_tobfunc.nss"
filter = "tob_movehook.nss"
filter = "tob_move_const.nss"
filter = "true_inc_metautr.nss"
filter = "true_inc_truespk.nss"
filter = "true_inc_trufunc.nss"
filter = "true_inc_truknwn.nss"
filter = "true_inc_utter.nss"
filter = "true_utterhook.nss"
filter = "true_utter_const.nss"
filter = "utl_i_sqluuid.nss"
filter = "x0_i0_transport.nss"
filter = "x2_inc_cutscenep.nss"
filter = "x2_inc_spellhook.nss"
filter = "x3_inc_horse.nss"
filter = "prc_nui_sc_inc.nss"
filter = "prc_nui_scd_inc.nss"
filter = "prc_nui_consts.nss"
filter = "nw_inc_nui.nss"
filter = "xchst_inc.nss"
filter = "prc_string_inc.nss"
filter = "prc_nui_sb_inc.nss"
filter = "prc_nui_sbd_inc.nss"
filter = "prc_nui_lv_inc.nss"
filter = "prc_nui_com_inc.nss"
filter = "prc_inc_json.nss"
filter = "nw_inc_nui.nss"
filter = "nw_inc_gff.nss"
filter = "inc_infusion.nss"
[target.rules]
"*" = "src/module/epilogue2/$ext"
[target.rules]
"*" = "src/tlk/$ext"
[target] [target]
name = "tophak" name = "tophak"
file = "HAKNAME.hak" file = "th1_prc8_top.hak"
description = "PRC8 merge hakpak for PRC8 version of ..." description = "PRC8 merge hakpak for PRC8 version of Tortured Hearts I."
[target.sources] [target.sources]
include = "src/hakpak/HAKNAME/**/*" include = "src/hakpak/th1_prc8_top/**/*"
include = "src/include/**/*" include = "src/include/**/*"
filter = "bnd_inc_bndfunc.nss" filter = "bnd_inc_bndfunc.nss"
filter = "bnd_vestig_const.nss" filter = "bnd_vestig_const.nss"
@@ -484,4 +940,4 @@ description = "PRC8 merge hakpak for PRC8 version of ..."
filter = "inc_infusion.nss" filter = "inc_infusion.nss"
[target.rules] [target.rules]
"*" = "src/hakpak/HAKNAME/$ext" "*" = "src/hakpak/th1_prc8_top/$ext"

View File

@@ -1 +1 @@
nasher pack default --verbose nasher pack modules --verbose

View File

@@ -0,0 +1,258 @@
2DA V2.0
Name label InvSlotWidth InvSlotHeight EquipableSlots CanRotateIcon ModelType ItemClass GenderSpecific Part1EnvMap Part2EnvMap Part3EnvMap DefaultModel DefaultIcon Container WeaponWield WeaponType WeaponSize RangedWeapon PrefAttackDist MinRange MaxRange NumDice DieToRoll CritThreat CritHitMult Category BaseCost Stacking ItemMultiplier Description InvSoundType MaxProps MinProps PropColumn StorePanel ReqFeat0 ReqFeat1 ReqFeat2 ReqFeat3 ReqFeat4 AC_Enchant BaseAC ArmorCheckPen BaseItemStatRef ChargesStarting RotateOnGround TenthLBS WeaponMatType AmmunitionType QBBehaviour ArcaneSpellFailure %AnimSlashL %AnimSlashR %AnimSlashS StorePanelSort ILRStackSize WeaponFocusFeat EpicWeaponFocusFeat WeaponSpecializationFeat EpicWeaponSpecializationFeat WeaponImprovedCriticalFeat EpicWeaponOverwhelmingCriticalFeat EpicWeaponDevastatingCriticalFeat WeaponOfChoiceFeat IsMonkWeapon WeaponFinesseMinimumCreatureSize
0 106 shortsword 1 2 0x1C030 1 2 WSwSs 0 1 1 1 it_bag iwswss 0 **** 1 2 **** 1.2 10 255 1 6 2 2 1 10 1 2 1684 8 8 0 0 1 **** **** **** **** **** 4 0 0 5410 0 1 30 1 **** **** **** 35 35 65 19 1 103 633 141 671 65 723 509 925 **** 2
1 166 longsword 1 4 0x1C030 1 2 WSwLs 0 1 1 1 it_bag iwswls 0 **** 3 3 **** 1.5 10 255 1 8 2 2 1 15 1 2 1687 9 8 0 0 1 **** **** **** **** **** 4 0 0 5417 0 1 40 1 **** **** **** 50 50 50 70 1 106 636 144 674 68 726 512 928 **** ****
2 169 battleaxe 2 3 0x1C030 1 2 WAxBt 0 1 1 1 it_bag iwaxbt 0 **** 3 3 **** 1.2 10 255 1 8 1 3 1 10 1 2 1685 9 8 0 0 1 **** **** **** **** **** 4 0 0 5415 0 1 70 16 **** **** **** 100 100 0 41 1 110 640 148 678 72 730 516 931 **** ****
3 168 bastardsword 2 4 0x1C030 1 2 WSwBs 0 1 1 1 it_bag iwswbs 0 **** 3 3 **** 1.6 10 255 1 10 2 2 1 35 1 2 2288 9 8 0 0 1 **** **** **** **** **** 4 0 0 5434 0 1 100 11 **** **** **** 65 65 35 71 1 123 652 161 690 85 742 528 940 **** ****
4 176 lightflail 1 3 0x1C030 1 2 WBlFl 0 1 1 1 it_bag iwblfl 0 **** 2 3 **** 1.4 10 255 1 8 1 2 1 8 1 2 1686 11 8 0 0 1 **** **** **** **** **** 4 0 0 5416 0 1 50 3 **** **** **** 100 100 0 42 1 114 644 152 682 76 734 520 935 **** ****
5 178 warhammer 2 3 0x1C030 1 2 WBlHw 0 1 1 1 it_bag iwblhw 0 **** 2 3 **** 1.2 10 255 1 8 1 3 1 12 1 2 1690 14 8 0 0 1 **** **** **** **** **** 4 0 0 5420 0 1 80 12 **** **** **** 100 100 0 43 1 115 645 153 683 77 735 521 936 **** ****
6 173 heavycrossbow 2 4 0x1C010 1 2 WBwXh 0 1 1 1 it_bag iwbwxh 0 6 1 3 25 30 10 255 1 10 2 2 2 50 1 2 1679 20 8 0 1 1 **** **** **** **** **** 4 0 0 5414 0 2 90 15 2 **** **** **** **** **** 99 1 92 622 130 660 54 712 498 **** **** ****
7 174 lightcrossbow 2 3 0x1C010 1 2 WBwXl 0 1 1 1 it_bag iwbwxl 0 6 1 2 25 30 10 255 1 8 2 2 2 35 1 2 1674 19 8 0 1 1 **** **** **** **** **** 4 0 0 5402 0 2 60 9 2 **** **** **** **** **** 29 1 93 623 131 661 55 713 499 **** **** ****
8 170 longbow 2 4 0x1C010 1 2 WBwLn 0 0 0 0 it_bag iwbwln 0 5 1 3 20 30 10 255 1 8 1 3 2 75 1 2 1697 19 8 0 1 1 **** **** **** **** **** 4 0 0 5429 0 1 30 14 1 **** **** **** **** **** 72 1 101 631 139 669 63 721 507 **** **** ****
9 177 lightmace 1 2 0x1C030 1 2 WBlMl 0 0 0 1 it_bag iwblml 0 **** 2 2 **** 1.2 10 255 1 6 1 2 1 5 1 2 1668 13 8 0 0 1 **** **** **** **** **** 4 0 0 5399 0 1 60 2 **** **** **** 100 100 0 44 1 94 624 132 662 56 714 500 921 **** 2
10 175 halberd 2 5 0x1C030 1 2 WPlHb 0 0 0 1 it_bag iwplhb 0 4 4 3 **** 1.7 10 255 1 10 1 3 1 10 1 2 1694 15 8 0 0 1 **** **** **** **** **** 4 0 0 5428 0 1 150 17 **** **** **** 35 35 65 99 1 112 642 150 680 74 732 518 933 **** ****
11 171 shortbow 2 3 0x1C010 1 2 WBwSh 0 0 0 0 it_bag iwbwsh 0 5 1 3 20 30 10 255 1 6 1 3 2 30 1 2 1695 19 8 0 1 1 **** **** **** **** **** 4 0 0 5421 0 1 20 5 1 **** **** **** **** **** 25 1 102 632 140 670 64 722 508 **** **** ****
12 172 twobladedsword 2 5 0x1C010 1 2 WDbSw 0 1 1 1 it_bag iwdbsw 0 8 3 4 **** 1.5 10 255 1 8 2 2 1 100 1 2 1702 10 8 0 0 1 **** **** **** **** **** 4 0 0 5431 0 1 150 11 **** **** **** 50 50 50 99 1 127 655 165 693 89 745 531 943 **** ****
13 167 greatsword 2 5 0x1C030 1 2 WSwGs 0 1 1 1 it_bag iwswgs 0 **** 3 3 **** 1.8 10 255 2 6 2 2 1 50 1 2 1693 9 8 0 0 1 **** **** **** **** **** 4 0 0 5427 0 1 150 11 **** **** **** 65 65 35 99 1 107 637 145 675 69 727 513 929 **** ****
14 179 smallshield 2 2 0x00020 0 0 AShSw 0 1 1 1 it_bag iashsw 0 7 0 **** **** **** 10 255 **** **** **** **** 3 9 1 1 2287 16 8 0 6 0 32 4565 **** **** **** 3 1 -1 5443 0 1 60 **** **** **** 5 **** **** **** 7 1 **** **** **** **** **** **** **** **** **** ****
15 180 torch 1 3 0x00020 1 0 it_torch 0 **** **** **** it_bag iit_torch_000 0 1 0 2 **** **** 0 255 **** **** **** **** 20 1 1 0.02 1725 17 8 0 20 4 **** **** **** **** **** **** 0 0 5444 0 1 1 **** **** **** **** **** **** **** 0 1 **** **** **** **** **** **** **** **** 1 ****
16 335 armor 2 3 0x00002 0 3 AArCl 1 1 **** **** gifp iit_chest 0 **** 0 **** **** **** 0 255 **** **** **** **** 4 **** 1 1 **** 30 8 0 6 0 **** **** **** **** **** 2 0 0 **** 0 0 100 **** **** **** **** **** **** **** 10 1 **** **** **** **** **** **** **** **** **** ****
17 182 helmet 2 2 0x00001 0 1 helm 0 1 **** **** it_bag ihelm 0 **** 0 **** **** **** 0 255 **** **** **** **** 5 3 1 1 1710 0 8 0 7 0 **** **** **** **** **** 4 0 0 5445 0 0 20 **** **** **** **** **** **** **** 5 1 **** **** **** **** **** **** **** **** **** ****
18 515 greataxe 2 4 0x1C030 1 2 WAxGr 0 1 1 1 it_bag iwaxgr 0 **** 3 3 **** 1.4 10 255 1 12 1 3 1 20 1 2 1692 9 8 0 0 1 **** **** **** **** **** 4 0 0 5426 0 1 200 17 **** **** **** 100 100 0 73 1 111 641 149 679 73 731 517 932 **** ****
19 1516 amulet 1 2 0x00200 0 0 it_neck 0 1 **** **** doa_amulet iit_neck 0 **** 0 **** **** **** 0 255 **** **** **** **** 12 1 1 1 1715 25 8 0 16 3 **** **** **** **** **** 1 0 0 5446 0 0 5 **** **** **** **** **** **** **** 5 1 **** **** **** **** **** **** **** **** **** ****
20 1517 arrow 1 2 0x00800 0 2 WAmAr 1 1 1 1 GI_WAmAr_001 iwamar 0 **** 0 **** **** **** 10 255 **** **** **** **** 6 1 99 0.01 1696 18 8 0 5 1 **** **** **** **** **** **** 0 0 5422 0 0 0 **** **** **** **** **** **** **** 0 99 **** **** **** **** **** **** **** **** **** ****
21 1518 belt 2 1 0x00400 0 0 it_belt 0 1 **** **** doa_belt iit_belt 0 **** 0 **** **** **** 0 255 **** **** **** **** 12 1 1 1 1714 2 8 0 16 0 **** **** **** **** **** 4 0 0 5447 0 0 10 **** **** **** **** **** **** **** 3 1 **** **** **** **** **** **** **** **** **** ****
22 191 dagger 1 1 0x1C030 0 2 WSwDg 0 1 1 1 it_bag iwswdg 0 **** 1 1 **** 1.1 10 255 1 4 2 2 1 2 1 2 1667 7 8 0 0 1 **** **** **** **** **** 4 0 0 5395 0 1 10 18 **** **** **** 65 65 35 9 1 90 620 128 658 52 710 496 920 **** 1
23 0 DELETED 2 1 0x00000 0 0 it_sbox 0 **** **** **** it_bag **** 1 **** 0 **** **** **** 0 255 **** **** **** **** 17 5 1 1 2285 30 8 0 15 **** **** **** **** **** **** **** 0 0 **** 0 1 100 **** **** **** **** **** **** **** 0 1 **** **** **** **** **** **** **** **** **** ****
24 192 miscsmall 1 1 0x00000 0 0 it_smlmisc 0 1 1 1 it_bag iinvalid_1x1 0 1 0 **** **** **** 0 255 **** **** **** **** 16 0 1 1 1726 28 8 0 15 4 **** **** **** **** **** **** 0 0 5448 0 0 3 **** **** 1 **** **** **** **** 0 1 **** **** **** **** **** **** **** **** **** ****
25 1519 bolt 1 2 0x02000 1 2 WAmBo 0 1 1 1 GI_WAmBo_001 iwambo 0 **** 0 **** **** **** 0 255 **** **** **** **** 6 1 99 0.01 1675 18 8 0 5 1 **** **** **** **** **** **** 0 0 5403 0 0 0 **** **** **** **** **** **** **** 0 99 **** **** **** **** **** **** **** **** **** ****
26 1520 boots 2 2 0x00004 0 2 it_boots 0 1 **** **** doa_boots iit_boots 0 **** 0 **** **** **** 0 255 **** **** **** **** 12 1 1 1 1713 2 8 0 16 0 **** **** **** **** **** 0 0 0 **** 0 0 5 **** **** **** **** **** **** **** 2 1 **** **** **** **** **** **** **** **** **** ****
27 1521 bullet 1 1 0x01000 0 0 WAmBu 0 1 1 1 GI_WAmBu_001 iwambu 0 **** 0 **** **** **** 0 255 **** **** **** **** 6 1 99 0.01 1678 28 8 0 5 1 **** **** **** **** **** **** 0 0 5406 0 0 0 **** **** **** **** **** **** **** 0 99 **** **** **** **** **** **** **** **** **** ****
28 1522 club 1 3 0x1C030 1 2 WBlCl 0 1 1 1 it_bag iwblcl 0 **** 2 3 **** 1.1 10 255 1 6 1 2 1 1 1 2 1670 17 8 0 0 1 **** **** **** **** **** 4 0 0 61890 0 1 30 4 **** **** **** 100 100 0 26 1 43 619 47 657 15 709 495 919 **** ****
29 1523 miscmedium 2 2 0x00000 0 0 it_midmisc 0 1 1 1 it_bag iinvalid_2x2 0 1 0 **** **** **** 0 255 **** **** **** **** 16 0 1 1 1726 29 8 0 15 4 **** **** **** **** **** **** 0 0 5449 0 0 5 **** **** 1 **** **** **** **** 0 1 **** **** **** **** **** **** **** **** **** ****
30 0 DELETED 2 3 0x00030 1 2 WBwXr 0 1 1 1 it_bag iinvalid_2x3 0 6 0 3 **** **** 10 255 1 8 2 2 2 250 1 2 1706 4 8 0 1 **** **** **** **** **** **** 4 0 0 **** 0 1 100 **** **** **** **** **** **** **** 0 1 **** **** **** **** **** **** **** **** **** ****
31 1525 dart 1 1 0x00010 0 0 WThDt 0 1 1 1 it_dart_000 iwthdt 0 11 1 2 31 30 0 255 1 4 1 2 7 0.1 50 0.01 1676 18 8 0 2 1 **** **** **** **** **** **** 0 0 5404 0 1 1 7 4 **** **** **** **** **** 12 50 91 621 129 659 53 711 497 **** **** ****
32 1526 diremace 2 4 0x1C010 1 2 WDbMa 0 1 1 1 it_bag iwdbma 0 8 2 4 **** 2 10 255 1 8 1 2 1 40 1 2 1703 14 8 0 0 1 **** **** **** **** **** 4 0 0 5433 0 1 200 2 **** **** **** 65 65 35 99 1 125 653 163 691 87 743 529 941 **** ****
33 1527 doubleaxe 2 4 0x1C010 1 2 WDbAx 0 1 1 1 it_bag iwdbax 0 8 3 4 **** 1.5 10 255 1 8 1 3 1 30 1 2 1701 10 8 0 0 1 **** **** **** **** **** 4 0 0 5430 0 1 250 **** **** **** **** 100 100 0 99 1 126 654 164 692 88 744 530 942 **** ****
34 1528 misclarge 2 3 0x00000 0 0 it_talmisc 0 1 1 1 it_bag iinvalid_2x3 0 1 0 **** **** **** 0 255 **** **** **** **** 16 0 1 1 1726 30 8 0 15 4 **** **** **** **** **** **** 0 0 5450 0 0 5 **** **** 1 **** **** **** **** 0 1 **** **** **** **** **** **** **** **** **** ****
35 1529 heavyflail 2 4 0x1C030 1 2 WBlFh 0 1 1 1 it_bag iwblfh 0 **** 2 3 **** 1.5 10 255 1 10 2 2 1 15 1 2 1691 12 8 0 0 1 **** **** **** **** **** 4 0 0 5424 0 1 200 13 **** **** **** 100 100 0 74 1 116 646 154 684 78 736 522 937 **** ****
36 1530 gloves 2 1 0x00008 0 0 it_glove 0 1 1 1 doa_glove iit_glove 0 **** 2 **** **** **** 0 255 **** **** **** **** 1 1 1 1 1712 3 8 0 21 0 **** **** **** **** **** 4 0 0 5451 0 0 10 **** **** **** **** **** **** **** 0 1 100 630 138 668 62 720 506 **** **** 1
37 1531 lighthammer 1 2 0x1C030 1 2 WBlHl 0 1 1 1 it_bag iwblhl 0 **** 2 2 **** 1.1 10 255 1 4 1 2 1 1 1 2 1681 13 8 0 0 1 **** **** **** **** **** 4 0 0 5408 0 1 20 2 **** **** **** 100 100 0 27 1 113 643 151 681 75 733 519 934 **** 2
38 1532 handaxe 1 2 0x1C030 1 2 WAxHn 0 1 1 1 it_bag iwaxhn 0 **** 3 2 **** 1.1 10 255 1 6 1 3 1 6 1 2 1682 8 8 0 0 1 **** **** **** **** **** 4 0 0 5409 0 1 50 17 **** **** **** 100 100 0 14 1 108 638 146 676 70 728 514 930 **** 2
39 1533 healerskit 2 1 0x00000 0 0 it_medkit 0 **** **** **** doa_healkit iit_medkit_001 0 **** 0 **** **** **** 0 255 **** **** **** **** 19 50 10 1 1720 29 8 0 19 4 **** **** **** **** **** **** 0 0 5452 0 0 5 **** **** **** **** **** **** **** 0 1 **** **** **** **** **** **** **** **** **** ****
40 1534 kama 2 2 0x1C030 0 2 WSpKa 0 1 1 1 it_bag iwspka 0 **** 3 2 **** 1.1 10 255 1 6 1 2 1 2 1 2 1699 8 8 0 0 1 **** **** **** **** **** 4 0 0 5396 0 1 10 18 **** **** **** 100 100 0 16 1 117 647 155 685 79 737 523 880 1 2
41 1535 katana 2 3 0x1C030 1 2 WSwKa 0 1 1 1 it_bag iwswka 0 **** 3 3 **** 1.3 10 255 1 10 2 2 1 40 1 2 1704 8 8 0 0 1 **** **** **** **** **** 4 0 0 5423 0 1 100 1 **** **** **** 50 50 50 75 1 122 651 160 689 84 741 527 939 **** ****
42 1536 kukri 1 2 0x1C030 1 2 WSpKu 0 1 1 1 it_bag iwspku 0 **** 3 1 **** 1.2 10 255 1 4 3 2 1 8 1 2 2284 8 8 0 0 1 **** **** **** **** **** 4 0 0 5442 0 1 30 18 **** **** **** 65 65 35 18 1 118 648 156 686 80 738 524 881 **** 1
43 **** DELETED **** **** 0x00000 **** **** **** **** **** **** **** it_bag **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
44 1538 magicrod 1 3 0x00000 1 2 WMgRd 0 1 1 1 it_bag iwmgrd 0 **** **** **** **** **** 10 255 **** **** **** **** 8 1 1 1 1708 16 8 0 4 3 **** **** **** **** **** **** 0 0 66197 50 1 20 **** **** 1 **** **** **** **** 10 1 **** **** **** **** **** **** **** **** **** ****
45 1539 magicstaff 1 5 0x1C010 1 2 WMgSt 0 1 1 1 it_bag iwmgst 0 4 2 3 **** 1.6 10 255 1 6 1 2 8 1 1 1 1709 15 8 3 3 3 **** **** **** **** **** 4 0 0 76436 50 1 40 4 **** **** **** 50 50 50 10 1 96 626 134 664 58 716 502 923 1 ****
46 1540 magicwand 1 2 0x1C030 1 2 WMgWn 0 1 1 1 it_bag iwmgwn 0 1 2 1 **** **** 0 255 1 1 1 1 8 1 1 1 1707 16 1 1 10 3 **** **** **** **** **** **** 0 0 66196 50 1 10 4 **** 1 **** **** **** **** 10 1 **** **** **** **** **** **** **** **** **** ****
47 1541 morningstar 1 3 0x1C030 1 2 WBlMs 0 1 1 1 it_bag iwblms 0 **** 5 3 **** 1.4 10 255 1 8 1 2 1 8 1 2 1671 11 8 0 0 1 **** **** **** **** **** 4 0 0 5412 0 1 80 3 **** **** **** 100 100 0 20 1 95 625 133 663 57 715 501 922 **** ****
48 0 DELETED 2 2 0x1C030 0 2 WSpNn 0 1 1 1 it_bag **** 0 **** 0 2 **** **** 10 255 1 6 1 2 **** 2 1 2 1700 30 8 0 0 **** **** **** **** **** **** 4 0 0 5397 0 1 20 **** **** **** **** **** **** **** 0 1 **** **** **** **** **** **** **** **** **** ****
49 1543 potions 1 2 0x00000 0 2 it_potion 0 **** **** **** it_potion_000 iit_potion 0 1 0 **** **** **** 10 255 **** **** **** **** 9 1 10 0.2 1719 24 1 0 8 2 **** **** **** **** **** **** 0 0 5455 0 2 1 **** **** 2 **** **** **** **** 0 1 **** **** **** **** **** **** **** **** **** ****
50 1544 quarterstaff 1 4 0x1C010 1 2 WDbQs 0 1 1 1 it_bag iwdbqs 0 4 2 3 **** 1.6 10 255 1 6 1 2 1 1 1 2 1673 15 8 0 0 1 **** **** **** **** **** 4 0 0 5413 0 1 40 4 **** **** **** 50 50 50 99 1 96 626 134 664 58 716 502 923 1 ****
51 1545 rapier 1 3 0x1C030 1 2 WSwRp 0 1 1 1 it_bag iwswrp 0 **** 1 3 **** 1.4 10 255 1 6 3 2 1 20 1 2 1688 7 8 0 0 1 **** **** **** **** **** 4 0 0 5418 0 1 30 18 **** **** **** 35 35 65 28 1 104 634 142 672 66 724 510 926 **** 3
52 1546 ring 1 1 0x00180 0 0 it_ring 0 **** **** **** doa_ring iit_ring 0 **** 0 **** **** **** 0 255 **** **** **** **** 12 1 1 1.25 1716 23 8 0 16 3 **** **** **** **** **** 4 0 0 5456 0 0 1 **** **** **** **** **** **** **** 0 1 **** **** **** **** **** **** **** **** **** ****
53 1547 scimitar 1 3 0x1C030 1 2 WSwSc 0 1 1 1 it_bag iwswsc 0 **** 3 3 **** 1.3 10 255 1 6 3 2 1 15 1 2 1689 8 8 0 0 1 **** **** **** **** **** 4 0 0 5419 0 1 40 1 **** **** **** 65 65 35 29 1 105 635 143 673 67 725 511 927 **** ****
54 0 DELETED 1 1 0x00000 0 0 it_spscroll 0 **** **** **** gi_scrl **** 0 1 0 **** **** **** 0 255 **** **** **** **** 10 1 10 0.25 5022 30 1 1 9 **** **** **** **** **** **** **** 0 0 5457 0 1 1 **** **** **** **** **** **** **** 0 1 **** **** **** **** **** **** **** **** **** ****
55 1549 scythe 2 4 0x1C030 1 2 WPlSc 0 1 1 1 it_bag iwplsc 0 4 4 3 **** 1.5 10 255 2 4 1 4 1 18 1 2 2290 9 8 0 0 1 **** **** **** **** **** 4 0 0 5425 0 1 120 17 **** **** **** 100 100 0 99 1 121 650 159 688 83 740 526 938 **** ****
56 1550 largeshield 2 3 0x00020 0 0 AShLw 0 1 1 1 it_bag iashlw 0 7 0 **** **** **** 10 255 **** **** **** **** 3 20 1 1 2286 30 8 0 6 0 32 **** **** **** **** 3 2 -2 5458 0 1 150 **** **** **** 15 **** **** **** 7 1 **** **** **** **** **** **** **** **** **** ****
57 1551 towershield 2 4 0x00020 0 0 AShTo 0 1 1 1 it_bag iashto 0 7 0 **** **** **** 10 255 **** **** **** **** 3 30 1 1 1717 6 8 0 6 0 32 **** **** **** **** 3 3 -10 5459 0 1 450 **** **** **** 50 **** **** **** 7 1 **** **** **** **** **** **** **** **** **** ****
58 16823549 shortspear 1 4 0x1C030 1 2 WPlSs 0 1 1 1 it_bag iwplss 0 **** 1 2 **** 1.4 10 255 1 6 1 2 1 1 1 2 16823550 15 8 0 0 1 **** **** **** **** **** 4 0 0 16823551 0 1 30 17 **** **** **** 35 35 65 76 1 97 627 135 665 59 717 503 924 **** ****
59 1553 shuriken 1 1 0x00010 0 0 WThSh 0 1 **** **** it_bag iwthsh 0 11 1 1 59 30 0 255 1 3 1 2 7 1 50 0.01 1705 7 8 0 2 1 **** **** **** **** **** **** 0 0 5398 0 1 0 7 5 **** **** **** **** **** 0 50 120 649 158 687 82 739 525 **** 1 ****
60 1554 sickle 2 2 0x1C030 0 2 WSpSc 0 1 1 1 it_bag iwspsc 0 **** 3 2 **** 1.1 10 255 1 6 1 2 1 6 1 2 1669 8 8 0 0 1 **** **** **** **** **** 4 0 0 5400 0 1 30 18 **** **** **** 100 100 0 22 1 98 628 136 666 60 718 504 879 **** 2
61 1555 sling 1 2 0x00030 0 0 WBwSl 0 **** **** **** it_bag iwbwsl 0 10 2 2 27 30 0 255 1 4 1 2 2 1 1 2 1677 3 8 0 1 1 **** **** **** **** **** 4 0 0 5405 0 1 1 6 3 **** **** **** **** **** 10 1 99 629 137 667 61 719 505 **** **** ****
62 1556 thievestools 1 2 0x00000 0 0 it_picks 0 **** **** **** doa_thtools iit_picks_001 0 1 0 **** **** **** 0 255 **** **** **** **** 11 1 10 0.25 1722 22 8 0 11 4 **** **** **** **** **** **** 0 0 5460 0 0 5 **** **** **** **** **** **** **** 0 1 **** **** **** **** **** **** **** **** **** ****
63 1557 throwingaxe 1 2 0x00010 1 2 WThAx 0 1 1 1 it_bag iwthax 0 11 3 2 63 30 10 255 1 6 1 2 7 1 50 0.01 1680 8 8 0 2 1 **** **** **** **** **** **** 0 0 5407 0 1 10 8 6 **** **** **** **** **** 24 50 109 639 147 677 71 729 515 **** **** ****
64 1558 trapkit 2 2 0x00000 0 0 it_trap 0 **** **** **** doa_trap iit_trap_009 0 1 0 **** **** **** 0 255 **** **** **** **** 15 1 1 1 1721 1 1 1 12 4 **** **** **** **** **** **** 0 0 5461 0 0 5 **** **** **** **** **** **** **** 0 1 **** **** **** **** **** **** **** **** **** ****
65 1560 key 1 2 0x00000 0 2 it_key 0 **** **** **** doa_key iit_key 0 **** 0 **** **** **** 10 255 **** **** **** **** 16 0 1 1 1723 22 8 0 15 4 **** **** **** **** **** **** 0 0 5462 0 0 1 **** **** **** **** **** **** **** 0 1 **** **** **** **** **** **** **** **** **** ****
66 1562 largebox 2 2 0x00000 0 0 it_bigbox 0 **** **** **** it_bag iit_bigbox_001 1 **** 0 **** **** **** 0 255 **** **** **** **** 17 15 1 1 2289 1 8 0 18 4 **** **** **** **** **** **** 0 0 5463 0 0 10 **** **** **** **** **** **** **** 5 1 **** **** **** **** **** **** **** **** **** ****
67 0 DELETED 1 1 0x00000 0 0 it_bag 0 **** **** **** it_bag **** 1 **** 0 **** **** **** 0 255 **** **** **** **** 17 5 1 1 1724 30 8 0 15 **** **** **** **** **** **** **** 0 0 **** 0 0 100 **** **** **** **** **** **** **** 0 1 **** **** **** **** **** **** **** **** **** ****
68 **** DELETED **** **** 0x00000 **** **** **** **** **** **** **** it_bag **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
69 534 cslashweapon 2 2 0x1C000 0 0 it_cr_sla 0 1 1 1 it_bag iit_cr_sla_001 0 9 3 **** **** **** 0 255 0 0 1 2 **** **** 1 2 5027 30 8 0 14 1 **** **** **** **** **** 3 0 0 5465 0 0 1 1 **** **** **** 50 50 50 0 1 291 656 290 694 292 746 532 **** **** 1
70 2188 cpiercweapon 2 2 0x1C000 0 0 it_cr_prc 0 1 1 1 it_bag iit_cr_prc_001 0 9 1 **** **** **** 0 255 0 0 1 2 **** **** 1 2 5028 30 8 0 14 1 **** **** **** **** **** 3 0 0 5466 0 0 1 1 **** **** **** 50 50 50 0 1 291 656 290 694 292 746 532 **** **** 1
71 2189 cbludgweapon 2 2 0x1C000 0 0 it_cr_blud 0 1 1 1 it_bag iit_cr_blud_001 0 9 2 **** **** **** 0 255 0 0 1 2 **** **** 1 2 5029 30 8 0 14 1 **** **** **** **** **** 3 0 0 5467 0 0 1 4 **** **** **** 50 50 50 0 1 291 656 290 694 292 746 532 **** **** 1
72 2190 cslshprcweap 2 2 0x1C000 0 0 it_cr_bite 0 1 1 1 it_bag iit_cr_bite_001 0 9 4 **** **** **** 0 255 0 0 1 2 **** **** 1 2 5030 30 8 0 14 1 **** **** **** **** **** 3 0 0 5468 0 0 1 1 **** **** **** 50 50 50 0 1 291 656 290 694 292 746 532 **** **** 1
73 530 creatureitem 2 2 0x3C000 0 0 it_cr_item 0 1 1 1 it_bag iinvalid_2x2 1 1 0 **** **** **** 0 255 **** **** **** **** **** **** 1 0 5031 30 8 0 13 0 **** **** **** **** **** 0 0 0 5469 0 0 1 **** **** 1 **** **** **** **** 0 1 **** **** **** **** **** **** **** **** **** ****
74 531 book 2 2 0x00000 0 0 IT_BOOK 0 **** **** **** doa_book iit_book_001 0 1 0 **** **** **** 0 255 **** **** **** **** 16 1 1 1 6726 1 8 0 15 4 **** **** **** **** **** **** 0 0 **** 0 0 10 **** **** **** **** **** **** **** 10 1 **** **** **** **** **** **** **** **** **** ****
75 532 spellscroll 1 1 0x00000 0 0 IT_SCROLL 0 **** **** **** doa_scroll iit_scroll_001 0 1 0 **** **** **** 0 255 **** **** **** **** 10 1 10 0.36 1718 27 1 1 9 2 **** **** **** **** **** **** 0 0 5470 0 0 1 **** **** 1 **** **** **** **** 1 1 **** **** **** **** **** **** **** **** **** ****
76 535 gold 2 2 0x00000 0 0 IT_GOLD 0 **** **** **** it_bag iit_gold_001 0 **** 0 **** **** **** 0 255 **** **** **** **** 17 **** 50000 **** 5025 26 8 0 17 4 **** **** **** **** **** **** 0 0 5471 0 0 0 **** **** **** **** **** **** **** 0 1 **** **** **** **** **** **** **** **** **** ****
77 965 gem 1 1 0x00000 0 0 IT_GEM 0 **** **** **** doa_gem iit_gem_001 0 1 0 **** **** **** 0 255 **** **** **** **** 17 0 10 1 5024 21 8 0 17 4 **** **** **** **** **** **** 0 0 5472 0 0 0 **** **** **** **** **** **** **** 0 1 **** **** **** **** **** **** **** **** **** ****
78 2194 bracer 2 1 0x00008 0 0 IT_BRACER 0 1 1 1 doa_bracer iit_bracer 0 **** 2 **** **** **** 0 255 **** **** **** **** 4 1 1 1 1711 0 8 0 16 0 **** **** **** **** **** 2 0 0 5473 0 0 10 **** **** **** **** **** **** **** 1 1 100 630 138 668 62 720 506 **** **** 1
79 2294 miscthin 1 2 0x00000 0 0 IT_THNMISC 0 1 1 1 it_bag iinvalid_1x2 0 1 0 **** **** **** 0 255 **** **** **** **** 16 1 1 1 1726 29 8 0 15 4 **** **** **** **** **** **** 0 0 5474 0 0 5 **** **** 1 **** **** **** **** 0 1 **** **** **** **** **** **** **** **** **** ****
80 2220 cloak 2 3 0x00040 0 1 cloak 1 1 **** **** doa_cloak icloak_m_001 0 **** 0 **** **** **** 0 255 **** **** **** **** 4 1 1 1 5023 3 8 0 16 0 **** **** **** **** **** 4 0 0 5475 0 0 30 **** **** **** **** **** **** **** 15 1 **** **** **** **** **** **** **** **** **** ****
81 2730 grenade 1 1 0x00000 0 0 it_x1_gren 0 1 1 1 it_bag iit_x1_gren_003 0 1 0 **** **** **** 0 255 **** **** **** **** 16 0 10 1 2731 28 8 0 15 4 **** **** **** **** **** **** 0 0 5448 0 0 3 **** **** 1 **** **** **** **** 0 1 **** **** **** **** **** **** **** **** **** ****
82 7666 Encampment 10 6 0x00000 0 0 it_encamp 0 1 1 1 it_bag **** 0 1 0 **** **** **** 0 255 **** **** **** **** 16 0 1 1 7666 29 8 0 15 4 **** **** **** **** **** **** 0 0 5449 0 0 500 **** **** 1 **** **** **** **** 0 1 **** **** **** **** **** **** **** **** **** ****
83 **** padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
84 **** padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
85 **** padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
86 **** padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
87 **** padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
88 **** padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
89 **** padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
90 **** padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
91 **** padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
92 111697 Lance 1 4 0x1C030 1 2 WPlLc 0 1 1 1 it_bag **** 0 4 1 3 **** 1.4 10 255 1 6 1 3 1 1 1 2 16834106 15 8 0 0 1 **** **** **** **** **** 4 0 0 16834107 0 1 30 17 **** **** **** 0 0 100 76 1 24601 24613 24625 24637 24649 24661 24673 24685 **** ****
93 111698 Trumpet 1 3 0x1C030 1 0 it_horn 0 1 1 1 it_bag iit_horn_001 0 **** 2 3 **** 1.1 0 255 1 2 1 1 20 1 1 1 111700 17 8 0 20 4 **** **** **** **** **** **** 0 0 111704 0 1 5 17 **** **** **** **** **** **** 0 1 **** **** **** **** **** **** **** **** **** ****
94 111701 MoonOnAStick 1 2 0x1C030 1 0 it_moon 0 **** **** **** it_moon iit_moon_001 0 **** 2 2 **** **** 0 255 **** **** **** **** 13 1 1 0.02 111702 2 8 0 16 4 **** **** **** **** **** **** 0 0 **** 0 1 1 **** **** **** **** **** **** **** 0 1 **** **** **** **** **** **** **** **** **** ****
95 67251 trident 1 4 0x1C030 1 2 WPlTr 0 1 1 1 it_bag iwpltr 0 4 1 3 **** 1.4 10 255 1 8 1 2 1 1 1 2 110846 15 8 0 0 1 **** **** **** **** **** 4 0 0 110899 0 1 50 17 **** **** **** 5 5 90 76 1 1072 1076 1073 1077 1074 1078 1075 1079 **** ****
96 **** XP2SpecReq **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
97 **** XP2SpecReq **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
98 **** XP2SpecReq **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
99 **** RESERVED_alchemy **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
100 **** RESERVED_poisons **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
101 76389 empty_potion 1 2 0x00000 0 2 it_potion 0 **** **** **** it_potion_000 iit_potion 0 1 0 **** **** **** 10 255 **** **** **** **** 9 1 1 0.2 86786 24 1 0 8 2 **** **** **** **** **** **** 0 0 5455 0 2 1 **** **** 2 **** **** **** **** 0 1 **** **** **** **** **** **** **** **** **** ****
102 76390 blank_scroll 1 1 0x00000 0 0 IT_SCROLL 0 **** **** **** gi_scrl iit_scroll_002 0 1 0 **** **** **** 0 255 **** **** **** **** 10 1 1 0.36 86787 27 1 0 9 2 **** **** **** **** **** **** 0 0 5470 0 0 1 **** **** 2 **** **** **** **** 1 1 **** **** **** **** **** **** **** **** **** ****
103 76391 blank_magicwand 1 2 0x1C030 1 2 WMGWn 0 1 1 1 it_bag iwmgwn 0 1 2 1 **** **** 10 255 1 1 1 1 8 1 1 1 86788 16 1 0 1 3 **** **** **** **** **** **** 0 0 66196 50 1 10 4 **** 1 **** **** **** **** 10 1 **** **** **** **** **** **** **** **** **** ****
104 83365 crafted_potion 1 2 0x00000 0 2 it_potion 0 **** **** **** it_potion_000 iit_potion 0 1 0 **** **** **** 10 255 **** **** **** **** 9 1 10 0.2 1719 24 1 0 8 2 **** **** **** **** **** **** 0 0 5455 0 2 1 **** **** 2 **** **** **** **** 0 1 **** **** **** **** **** **** **** **** **** ****
105 83364 crafted_scroll 1 1 0x00000 0 0 IT_SCROLL 0 **** **** **** gi_scrl iit_scroll_002 0 1 0 **** **** **** 0 255 **** **** **** **** 10 1 10 0.36 1718 27 1 0 9 2 **** **** **** **** **** **** 0 0 5470 0 0 1 **** **** 2 **** **** **** **** 1 1 **** **** **** **** **** **** **** **** **** ****
106 83363 crafted_magicwand 1 2 0x1C030 1 2 WMGWn 0 1 1 1 it_bag iwmgwn 0 1 2 1 **** **** 0 255 1 1 1 1 8 1 1 1 1707 16 1 1 10 3 **** **** **** **** **** **** 0 0 66196 50 1 10 4 **** 1 **** **** **** **** 10 1 **** **** **** **** **** **** **** **** **** ****
107 **** XP2SpecialRequest **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
108 83310 dwarvenwaraxe 2 3 0x1C030 1 2 WAxBt 0 1 1 1 it_bag iwaxbt 0 **** 3 3 **** 1.2 10 255 1 10 1 3 1 30 1 2 83311 9 8 0 0 1 **** **** **** **** **** 4 0 0 83312 0 1 150 16 **** **** **** 100 100 0 41 1 952 956 953 957 954 958 955 959 **** ****
109 83379 craftcompbase 2 2 0x00000 0 0 it_midmisc 0 1 1 1 it_bag iinvalid_2x2 0 1 0 **** **** **** 0 255 **** **** **** **** 16 0 1 1 83632 29 8 0 15 4 **** **** **** **** **** **** 0 0 5449 0 0 5 **** **** 1 **** **** **** **** 0 1 **** **** **** **** **** **** **** **** **** ****
110 83380 craftcompsmall 1 1 0x00000 0 0 it_smlmisc 0 1 1 1 it_bag iinvalid_1x1 0 1 0 **** **** **** 0 255 **** **** **** **** 16 0 1 1 83699 28 8 0 15 4 **** **** **** **** **** **** 0 0 5448 0 0 3 **** **** 1 **** **** **** **** 0 1 **** **** **** **** **** **** **** **** **** ****
111 83617 Whip 2 2 0x1C030 0 2 WWhip 0 1 1 1 it_bag iwwhip 0 **** 3 2 **** 1.7 10 255 1 2 1 2 1 1 1 2 85392 32 8 0 0 1 **** **** **** **** **** 4 0 0 85391 0 1 20 19 **** **** **** 100 100 0 74 1 993 997 994 998 995 999 996 1000 **** 2
112 83664 craftbase 2 2 0x00000 0 0 it_midmisc 0 1 1 1 it_bag iinvalid_2x2 0 1 0 **** **** **** 0 255 **** **** **** **** 16 0 1 1 83698 29 8 0 15 4 **** **** **** **** **** **** 0 0 5449 0 0 5 **** **** 1 **** **** **** **** 0 1 **** **** **** **** **** **** **** **** **** ****
113 **** padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
114 **** START_NWNEE_WPN_FEATS **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
115 67252 heavypick 2 4 0x1c030 1 2 wblph 0 1 1 1 it_bag iwblph 0 **** 1 3 **** 1.4 10 255 1 6 1 4 1 8 1 2 16807222 9 8 0 0 1 **** **** **** **** **** 4 0 0 16807223 0 1 60 17 **** **** **** 100 100 0 73 1 24602 24614 24626 24638 24650 24662 24674 24686 **** ****
116 67256 lightpick 1 2 0x1c030 1 2 wblpl 0 1 1 1 it_bag iwblpl 0 **** 1 2 **** 1.1 10 255 1 4 1 4 1 4 1 2 16807225 13 8 0 0 1 **** **** **** **** **** 4 0 0 16807226 0 1 40 2 **** **** **** 100 100 0 27 1 24603 24615 24627 24639 24651 24663 24675 24687 **** 2
117 16807227 sai 1 1 0x1C030 0 2 wswsi 0 1 1 1 it_bag iwswsi 0 **** 2 1 **** 1.1 10 255 1 4 2 2 1 3 1 2 16807228 7 8 0 0 1 **** **** **** **** **** 4 0 0 16807229 0 1 10 18 **** **** **** 100 100 0 9 1 24604 24616 24628 24640 24652 24664 24676 24688 1 2
118 16807230 nunchaku 1 3 0x1C030 1 2 wblnn 0 1 1 1 it_bag iwblnn 0 **** 2 2 **** 1.4 10 255 1 6 1 2 1 2 1 2 16807231 12 8 0 0 1 **** **** **** **** **** 4 0 0 16807232 0 1 20 3 **** **** **** 100 100 0 74 1 24605 24617 24629 24641 24653 24665 24677 24689 1 2
119 16807233 falchion 2 4 0x1C030 1 2 wswfa 0 1 1 1 it_bag iwswfa 0 **** 3 3 **** 1.6 10 255 2 4 3 2 1 75 1 2 16807234 9 8 0 0 1 **** **** **** **** **** 4 0 0 16807235 0 1 80 11 **** **** **** 100 100 0 99 1 24606 24618 24630 24642 24654 24666 24678 24690 **** ****
120 16807242 sap 1 1 0x1C030 1 2 wspsp 0 0 0 0 it_bag iwspsp 0 **** 2 2 **** 1.2 10 255 1 6 1 2 1 1 1 2 16807243 13 8 0 0 1 **** **** **** **** **** 4 0 0 16807244 0 1 20 2 **** **** **** 100 100 0 44 1 24607 24619 24631 24643 24655 24667 24679 24691 **** 1
121 16807248 katar 1 1 0x1C030 1 2 wswdp 0 1 1 1 it_bag iwswdp 0 **** 1 1 **** 1.1 10 255 1 4 1 3 1 2 1 2 16807249 7 8 0 0 1 **** **** **** **** **** 4 0 0 16807250 0 1 10 11 **** **** **** 50 50 50 77 1 24608 24620 24632 24644 24656 24668 24680 24692 **** 1
122 16807269 heavy_mace 1 3 0x1C030 1 2 wxblmh 0 1 1 1 it_bag iwxblmh 0 **** 2 3 **** 1.2 10 255 1 8 1 2 1 6 1 2 16807270 14 8 0 0 1 **** **** **** **** **** 4 0 0 16807271 0 1 80 2 **** **** **** 100 100 0 99 1 24609 24621 24633 24645 24657 24669 24681 24693 **** ****
123 16807272 maul 2 4 0x1C030 1 2 wxblma 0 1 1 1 it_bag iwxblma 0 **** 2 3 **** 1.2 10 255 1 10 1 3 1 8 1 2 16807273 14 8 0 0 1 **** **** **** **** **** 4 0 0 16807274 0 1 200 12 **** **** **** 100 100 0 99 1 24610 24622 24634 24646 24658 24670 24682 24694 **** ****
124 16807275 scimitar_double 2 5 0x1c010 1 2 wxdbsc 0 1 1 1 it_bag iwxdbsc 0 8 3 4 **** 1.5 10 255 1 6 3 2 1 63 1 2 16807276 10 8 0 0 1 **** **** **** **** **** 4 0 0 16807277 0 1 150 11 **** **** **** 50 50 50 99 1 24611 24623 24635 24647 24659 24671 24683 24695 **** ****
125 16807284 goad 2 2 0x1C030 0 2 wspgd 0 1 1 1 it_bag iwspgd 0 **** 1 2 **** 1.1 10 255 1 6 1 2 1 6 1 2 16807285 8 8 0 0 1 **** **** **** **** **** 4 0 0 16807286 0 1 30 18 **** **** **** 35 35 65 22 1 24612 24624 24636 24348 24660 24672 24684 24596 **** 2
126 16793718 eagleclaw 1 2 0x1C030 1 2 wswec 0 1 1 1 it_bag iwswec 0 **** 4 2 **** 1.2 10 255 1 6 3 2 1 20 1 2 16793719 8 8 0 0 1 **** **** **** **** **** 4 0 0 16793720 0 1 20 1 **** **** **** 35 35 65 19 1 24721 24722 24723 24724 24725 24726 24727 24728 **** 2
127 **** padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
128 **** padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
129 **** padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
130 **** padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
131 **** padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
132 **** padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
133 **** padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
134 **** padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
135 **** padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
136 **** padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
137 **** padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
138 **** padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
139 **** padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
140 **** padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
141 **** padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
142 **** padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
143 **** padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
144 **** padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
145 **** padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
146 **** padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
147 **** padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
148 **** padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
149 **** padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
150 **** padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
151 **** padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
152 **** padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
153 **** padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
154 **** padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
155 **** padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
156 **** padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
157 **** padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
158 **** padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
159 **** padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
160 **** padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
161 **** padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
162 **** padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
163 **** padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
164 **** padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
165 **** padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
166 **** padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
167 **** padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
168 **** padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
169 **** padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
170 **** padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
171 **** padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
172 **** padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
173 **** padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
174 **** padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
175 **** padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
176 **** padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
177 **** padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
178 **** padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
179 **** padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
180 **** padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
181 **** padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
182 **** padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
183 **** padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
184 **** padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
185 **** padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
186 **** padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
187 **** padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
188 **** padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
189 **** padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
190 **** padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
191 **** padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
192 **** padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
193 **** padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
194 **** padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
195 16793697 PRC_MATCOMP_01 1 1 0x00000 0 0 it_matcomps 0 1 1 1 it_bag iinvalid_1x1 0 1 0 **** **** **** 0 255 **** **** **** **** 16 0 99 0.1 1726 29 0 0 17 4 **** **** **** **** **** **** 0 0 5474 **** **** 0 **** **** **** **** **** **** **** 0 99 **** **** **** **** **** **** **** **** **** ****
196 16793697 PRC_MATCOMP_02 1 2 0x00000 0 0 it_matcompt 0 1 1 1 it_bag iinvalid_1x2 0 1 0 **** **** **** 0 255 **** **** **** **** 16 0 99 0.1 1726 29 0 0 17 4 **** **** **** **** **** **** 0 0 5474 **** **** 0 **** **** **** **** **** **** **** 0 99 **** **** **** **** **** **** **** **** **** ****
197 16793697 PRC_MATCOMP_03 2 2 0x00000 0 0 it_matcompm 0 1 1 1 it_bag iinvalid_2x2 0 1 0 **** **** **** 0 255 **** **** **** **** 16 0 99 0.1 1726 29 0 0 17 4 **** **** **** **** **** **** 0 0 5474 **** **** 0 **** **** **** **** **** **** **** 0 99 **** **** **** **** **** **** **** **** **** ****
198 16789979 cloak_old 2 3 0x00040 0 0 it_cloak 0 1 **** **** it_bag **** 0 **** 0 **** **** **** 0 255 **** **** **** **** 4 1 1 1 5023 3 8 0 16 0 **** **** **** **** **** 4 0 0 5475 0 0 30 **** **** **** **** **** **** **** 15 1 **** **** **** **** **** **** **** **** **** ****
199 16829096 craft_magicrod 1 3 0x00000 1 2 WMgRd 0 1 1 1 it_bag iwmgrd 0 **** **** **** **** **** 10 255 **** **** **** **** 8 1 1 1 1708 16 8 0 4 3 **** **** **** **** **** **** 0 0 66197 50 1 20 **** **** 1 **** **** **** **** 10 1 **** **** **** **** **** **** **** **** **** ****
200 **** padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
201 16829097 craft_magicstaff 1 5 0x1C010 1 2 WMgSt 0 1 1 1 it_bag iwmgst 0 4 2 3 **** 1.6 10 255 1 6 1 2 8 1 1 1 1709 15 8 0 3 3 **** **** **** **** **** 4 0 0 76436 50 1 40 4 **** **** **** 50 50 50 10 1 **** **** **** **** **** **** **** **** **** ****
202 16827706 elf_lightblade 1 2 0x1C030 1 2 WSwSs 0 1 1 1 it_bag iwswss 0 **** 1 2 **** 1.2 10 255 1 6 3 2 1 25 1 2 16827712 8 8 0 0 1 **** **** **** **** **** 4 0 0 16827709 0 1 10 1 **** **** **** 35 35 65 19 1 24697 24698 24699 24700 24701 24702 24703 24704 **** 2
203 16827707 elf_thinblade 1 4 0x1C030 1 2 WSwLs 0 1 1 1 it_bag iwswls 0 **** 1 3 **** 1.5 10 255 1 8 3 2 1 50 1 2 16827713 9 8 0 0 1 **** **** **** **** **** 4 0 0 16827710 0 1 30 1 **** **** **** 35 35 65 70 1 24705 24706 24707 24708 24709 24710 24711 24712 **** 3
204 16827708 elf_courtblade 2 5 0x1C030 1 2 WSwGs 0 1 1 1 it_bag iwswgs 0 **** 4 3 **** 1.8 10 255 1 10 3 2 1 75 1 2 16827714 9 8 0 0 1 **** **** **** **** **** 4 0 0 16827711 0 1 60 11 **** **** **** 50 50 50 99 1 24713 24714 24715 24716 24717 24718 24719 24720 **** 3
205 **** CEP_Padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
206 67333 tools 2 2 0x00020 1 2 WTool 0 0 0 0 it_bag **** 0 **** **** 1 **** **** 10 100 **** **** **** **** 8 3 1 1 **** 16 8 0 4 4 **** **** **** **** **** **** 0 0 59 0 1 30 **** **** 1 **** **** **** **** 10 1 24697 24698 24699 24700 24701 24702 24703 24704 **** 2
207 67333 2htools 2 4 0x1C010 1 2 W2HTool 0 0 0 0 it_bag **** 0 4 2 4 **** 1.6 10 100 1 3 1 2 1 4 1 1 **** 15 8 0 0 4 46 48 49 50 51 4 0 0 59 0 0 60 4 **** **** **** 50 50 0 10 1 24705 24706 24707 24708 24709 24710 24711 24712 **** 3
208 **** CEP_Padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
209 **** CEP_Padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
210 **** CEP_Padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
211 **** CEP_Padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
212 **** CEP_Padding **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
213 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
214 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
215 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
216 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
217 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
218 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
219 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
220 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
221 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
222 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
223 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
224 **** CEP_Dye **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
225 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
226 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
227 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
228 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
229 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
230 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
231 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
232 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
233 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
234 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
235 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
236 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
237 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
238 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
239 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
240 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
241 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
242 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
243 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
244 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
245 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
246 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
247 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
248 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
249 16989399 crafted_scepter 1 3 0x1C030 1 2 WMgRd 0 1 1 1 it_bag iwmgrd 0 **** 2 3 **** 1.2 10 255 1 6 1 2 8 10 1 1 16989400 16 8 0 4 3 **** **** **** **** **** **** 4 0 16989401 50 1 30 2 **** 1 **** 100 100 0 10 1 43 619 47 657 15 709 495 919 **** ****
250 16989402 crafted_vial 1 2 0x00000 0 0 it_thnmisc 0 1 1 1 it_potion_000 iit_thnmisc_019 0 1 0 **** **** **** 0 255 **** **** **** **** 16 0 1 1 16989403 24 8 0 15 3 **** **** **** **** **** **** 0 0 5470 0 0 3 **** **** 1 **** **** **** **** 0 1 **** **** **** **** **** **** **** **** **** ****
251 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
252 16989220 mundane_herb 1 1 0x00000 0 0 it_herb 0 **** **** **** it_bag iit_herb_000 0 1 0 **** **** **** 0 255 **** **** **** **** 16 1 1 0.36 16989221 2 1 0 9 2 **** **** **** **** **** **** 0 0 5470 0 0 0 **** **** 2 **** **** **** **** 1 1 **** **** **** **** **** **** **** **** **** ****
253 16989222 infused_herb 1 1 0x00000 0 0 it_herb 0 **** **** **** it_bag iit_herb_254 0 1 0 **** **** **** 0 255 **** **** **** **** 16 1 10 0.36 16989223 2 1 0 9 2 **** **** **** **** **** **** 0 0 5470 0 0 0 **** **** 2 **** **** **** **** 1 1 **** **** **** **** **** **** **** **** **** ****
254 **** ***WIKI_LAST_ROW*** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****

View File

@@ -0,0 +1,258 @@
2DA V2.0
LABEL SHAPE RADIUS WIDTH LENGTH ONENTER ONEXIT HEARTBEAT OrientWithGround DurationVFX MODEL01 MODEL02 MODEL03 NUMACT01 NUMACT02 NUMACT03 DURATION01 DURATION02 DURATION03 EDGEWGHT01 EDGEWGHT02 EDGEWGHT03 SoundImpact SoundDuration SoundCessation SoundOneShot SoundOneShotPercentage MODELMIN01 MODELMIN02 MODELMIN03
0 VFX_PER_FOGACID C 5 **** **** NW_S0_AcidFogA sp_gen_exit NW_S0_AcidFogC 0 **** vps_fogacid vps_fogacid vps_fogacid 5 10 5 3400 1100 1900 0 0.25 0.25 **** sps_fog_loop **** sps_fog 0.3 vps_fogacid_L vps_fogacid_L vps_fogacid_L
1 VFX_PER_FOGFIRE C 5 **** **** NW_S0_IncCloudA sp_gen_exit NW_S0_IncCloudC 0 **** vps_fogfire vps_fogfire vps_fogfire 5 5 5 3400 1100 1900 0 0 0.25 **** sps_fog_loop **** sps_fogfire 0.3 vps_fogfire_L vps_fogfire_L vps_fogfire_L
2 VFX_PER_FOGSTINK C 6.7 **** **** NW_S0_StinkCldA **** NW_S0_StinkCldC 0 **** vps_fogstink vps_fogstink vps_fogstink 5 5 5 3400 1100 1900 0 0 0.25 **** sps_fog_loop **** sps_fog 0.3 vps_fogstink_L vps_fogstink_L vps_fogstink_L
3 VFX_PER_FOGKILL C 5 **** **** NW_S0_CloudKillA sp_gen_exit NW_S0_CloudKillC 0 **** vps_fogkill vps_fogkill vps_fogkill 5 5 5 3400 1100 1900 0 0 0.25 **** sps_fog_loop **** sps_fog 0.3 vps_fogkill_L vps_fogkill_L vps_fogkill_L
4 VFX_PER_FOGMIND C 5 **** **** NW_S0_MindFogA NW_S0_MindFogB **** 0 **** vps_fogmind vps_fogmind vps_fogmind 5 5 5 3400 1100 1900 0 0 0.25 **** sps_fog_loop **** sps_fog 0.3 vps_fogmind_L vps_fogmind_L vps_fogmind_L
5 VFX_PER_WALLFIRE R **** 10 2 NW_S0_WallFireA **** NW_S0_WallFireC 0 **** vps_wallfire vps_wallfire vps_wallfire 3 3 3 300 450 530 0 0 0 **** sps_wallfire **** **** **** vps_wallfire_L vps_wallfire_L vps_wallfire_L
6 VFX_PER_WALLWIND R **** 10 1 **** **** **** 0 **** vpr_gas vpr_gas vpr_gas 1 1 1 2000 2000 2000 0.5 0.5 0.5 **** **** **** **** **** vpr_gas_L vpr_gas_L vpr_gas_L
7 VFX_PER_WALLBLADE R **** 10 1 NW_S0_BladeBarA **** NW_S0_BladeBarC 0 **** vps_sword_01 vps_sword_02 vps_sword_03 5 5 5 2000 1500 2900 0 0 0 **** sps_sword01 **** **** **** **** **** ****
8 VFX_PER_WEB C 6.7 **** **** NW_S0_WebA sp_gen_exit NW_S0_WebC 0 230 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
9 VFX_PER_ENTANGLE C 5 **** **** NW_S0_EntangleA sp_gen_exit NW_S0_EntangleC 0 **** vps_entangle vps_entangle vps_entangle 5 5 5 2000 1500 2900 0 0 0 **** sps_entangle **** **** **** vps_entangle_L vps_entangle_L vps_entangle_L
10 VFX_PER_CHAOS C 5 **** **** NW_S0_SphChaosA NW_S0_SphChaosB NW_S0_SphChaosC 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
11 VFX_PER_DARKNESS C 6.7 **** **** NW_S0_DarknessA NW_S0_DarknessB **** 0 1 **** **** **** **** **** **** **** **** **** **** **** **** sps_darkness **** **** **** **** **** **** ****
12 VFX_MOB_CIRCEVIL C 3.3 **** **** NW_S0_CircGoodA NW_S0_CircGoodB **** 0 271 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
13 VFX_MOB_CIRCGOOD C 3.3 **** **** NW_S0_CircEvilA NW_S0_CircEvilB **** 0 273 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
14 VFX_MOB_CIRCLAW C 3.3 **** **** NW_S0_CircLawA NW_S0_CircLawB **** 0 271 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
15 VFX_MOB_CIRCCHAOS C 3.3 **** **** NW_S0_CircChaosA NW_S0_CircChaosB **** 0 273 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
16 VFX_MOB_FEAR C 4 **** **** NW_S1_AuraFearA **** **** 0 275 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
17 VFX_MOB_BLINDING C 4 **** **** NW_S1_AuraBlndA **** **** 0 271 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
18 VFX_MOB_UNEARTHLY C 4 **** **** NW_S1_AuraUnEaA **** **** 0 274 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
19 VFX_MOB_MENACE C 4 **** **** NW_S1_AuraMencA **** **** 0 271 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
20 VFX_MOB_UNNATURAL C 4 **** **** NW_S1_AuraUnatA **** **** 0 275 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
21 VFX_MOB_STUN C 4 **** **** NW_S1_AuraStunA **** **** 0 272 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
22 VFX_MOB_PROTECTION C 4 **** **** NW_S1_AuraProtA NW_S1_AuraProtB **** 0 273 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
23 VFX_MOB_FIRE C 4 **** **** **** **** NW_S1_AuraFireC 0 268 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
24 VFX_MOB_FROST C 4 **** **** **** **** NW_S1_AuraColdC 0 267 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
25 VFX_MOB_ELECTRICAL C 4 **** **** **** **** NW_S1_AuraElecC 0 267 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
26 VFX_PER_FOGGHOUL C 1.65 **** **** NW_S0_GhoulTchA **** **** 0 **** vps_fogstink vps_fogstink vps_fogstink 3 3 3 3400 1100 1900 0 0.25 0.25 **** fs_floatexhale **** **** **** vps_fogstink_L vps_fogstink_L vps_fogstink_L
27 VFX_MOB_TYRANT_FOG C 3 **** **** NW_S1_TyrantFgA **** **** 0 **** vps_fogstink vps_fogstink vps_fogstink 1 1 1 3400 1100 1900 0 0.25 0.25 **** fs_floatmoan **** **** **** vps_fogstink_L vps_fogstink_L vps_fogstink_L
28 VFX_PER_STORM C 10 **** **** **** **** NW_S0_StormVenC 0 248 vps_storm vps_storm vps_storm 15 15 15 3400 1100 1900 0 0 0.25 **** sps_storm **** **** **** vps_storm_L vps_storm_L vps_storm_L
29 VFX_PER_INVIS_SPHERE C 5 **** **** NW_S0_InvSphA NW_S0_InvSphB **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
30 VFX_MOB_SILENCE C 4 **** **** NW_S0_SilenceA NW_S0_SilenceB NW_S0_SilenceC 0 272 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
31 VFX_PER_DELAY_BLAST_FIREBALL C 2 **** **** NW_S0_DelFireA **** **** 0 **** vps_delfireb vps_delfireb vps_delfireb 5 5 5 3400 1100 1900 0 0 0.25 **** sps_delfireb **** **** **** vps_delfireb_L vps_delfireb_L vps_delfireb_L
32 VFX_PER_GREASE C 6 **** **** NW_S0_GreaseA sp_gen_exit NW_S0_GreaseC 0 **** vps_grease vps_grease vps_grease 7 7 7 2000 1500 2900 0 0 0 sps_grease **** **** **** **** vps_grease_L vps_grease_L vps_grease_L
33 VFX_PER_CREEPING_DOOM C 6.7 **** **** NW_S0_CrpDoomA sp_gen_exit NW_S0_CrpDoomC 0 **** vps_bugs vps_bugs vps_bugs 10 10 10 7300 4500 2500 0 0 0 **** sps_bugs **** **** **** vps_bugs_L vps_bugs_L vps_bugs_L
34 VFX_PER_EVARDS_BLACK_TENTACLES C 5 **** **** NW_S0_EvardsA **** NW_S0_EvardsC 0 **** vps_tentacle vps_tentacle vps_tentacle 3 3 3 7300 4500 2500 0 0 0 **** sps_tentacles **** **** **** vps_tentacle_L vps_tentacle_L vps_tentacle_L
35 VFX_MOB_INVISIBILITY_PURGE C 10 **** **** NW_S0_InvPurgeA **** **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
36 VFX_MOB_DRAGON_FEAR C 10 **** **** NW_S1_DragFearA **** **** 0 291 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
37 VFX_PER_BEHOLD C 50 **** **** z217_beholda z217_beholdb z217_beholdc 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
38 VFX_PER_GLYPH C 2.5 **** **** X2_S2_GlphwardA **** **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
39 VFX_PER_FOGBEWILDERMENT C 5 **** **** X2_S0_CldBewldA **** X2_S0_CldBewldC 0 **** vim_mentcloud vim_mentcloud vim_mentcloud 7 5 6 2000 1500 2900 0 0 0 **** sps_fog_loop **** sps_fog 0.3 **** **** ****
40 VFX_PER_CAMOUFLAGE C 6 **** **** X2_S0_VineMCamA X2_S0_VineMCamB **** 0 **** vdr_antilght vdr_antilght vdr_antilght 2 2 2 4000 2000 3000 **** 1 1 **** **** **** **** **** **** **** ****
41 VFX_MOB_BATTLETIDE C 3.3 **** **** X2_s0_BatttideA X2_s0_BatttideB **** 0 274 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
42 VFX_PER_STONEHOLD C 10 **** **** X2_S0_StneholdA **** X2_S0_StneholdC 0 **** vim_mentcloud vim_mentcloud vim_mentcloud 3 3 3 3400 1100 1900 0 0.25 0.25 **** sps_fog_loop **** sps_fog 0.3 **** **** ****
43 VFX_PER_VFX_OVERMIND C 5 **** **** **** **** **** 0 **** vwp_m_chunk_grn vwp_m_blood_grn vwp_m_blood_yel 6 6 6 3400 1100 1900 0 0 0 **** **** **** **** 0.3 **** **** ****
44 VFX_MOB_HORRIFICAPPEARANCE C 10 **** **** nw_s1_horrappra **** **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
45 VFX_MOB_TROGLODYTE_STENCH C 10 **** **** NW_S1_trogstinkA **** **** 0 **** vps_fogstink vps_fogstink vps_fogstink 1 1 1 3400 1100 1900 0 0.25 0.25 **** fs_floatmoan **** **** **** vps_fogstink_L vps_fogstink_L vps_fogstink_L
46 VFX_MOB_NIGHTMARE_SMOKE C 6 **** **** **** **** DLA_S1_NMSMOKEC 0 **** vps_nmsmoke vps_nmsmoke vps_nmsmoke 6 5 4 2000 3000 4000 0 0 0 **** **** **** **** **** **** **** ****
47 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
48 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
49 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
50 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
51 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
52 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
53 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
54 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
55 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
56 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
57 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
58 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
59 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
60 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
61 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
62 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
63 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
64 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
65 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
66 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
67 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
68 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
69 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
70 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
71 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
72 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
73 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
74 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
75 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
76 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
77 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
78 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
79 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
80 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
81 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
82 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
83 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
84 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
85 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
86 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
87 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
88 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
89 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
90 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
91 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
92 CEP_RESERVED(47-92) **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
93 VFX_PER_VIOLET_RAIN C 1 **** **** **** **** sp_violet_rainC 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
94 VFX_PER_RAIN_OF_FROGS C 1 **** **** **** **** sp_rain_ffishC 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
95 VFX_PER_RAIN_OF_BLOOD C 1 **** **** **** **** sp_rain_bloodC 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
96 VFX_PER_GREEN_FOG C 1 **** **** **** **** sp_green_fogC 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
97 AOE_MOB_LUMINOUS_ARMOR C 6.096 **** **** **** **** sp_luminousA 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
98 AOE_PER_CRACKLEPOWDER C 1.65 **** **** sp_cracklepdrA sp_gen_exit **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
99 VFX_MOB_CLOUDY_CONJURATION C 3 **** **** prc_ft_cldconj **** **** 0 **** vps_fogstink vps_fogstink vps_fogstink 1 1 1 3400 1100 1900 0 0.25 0.25 **** fs_floatmoan **** **** **** vps_fogstink_L vps_fogstink_L vps_fogstink_L
100 VFX_PER_RAIN_OF_FIRE C 18 **** **** aoe_rainfire_ent **** aoe_rainfire_hb 0 **** vps_firerain vps_firerain vps_firerain 15 15 15 3400 1100 1900 0 0 0.25 **** sps_fogfire **** **** **** vps_firerain_L vps_firerain_L ****
101 USER **** **** **** **** **** **** **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
102 VFX_PER_PLAGUE_SHADOW C 5 **** **** shd_myst_plgshda **** shd_myst_plgshdc 0 **** vps_fogfreeze vps_fogfreeze vps_fogfreeze 5 10 5 3400 1100 1900 0 0.25 0.25 **** sps_fog_loop **** sps_fog 0.3 vps_fogfreeze_L vps_fogfreeze_L vps_fogfreeze_L
103 VFX_PER_FLOOD_SHADOW C 6.7 **** **** shd_myst_fldshda shd_myst_fldshdb **** 0 **** vps_fogpurp vps_fogpurp vps_fogpurp 5 10 5 3400 1100 1900 0 0.25 0.25 **** sps_fog_loop **** sps_fog 0.3 vps_fogpurp_L vps_fogpurp_L vps_fogpurp_L
104 VFX_PER_CURTAIN_SHADOWS R **** 10 2 shd_myst_crtshda **** shd_myst_crtshdc 0 **** vps_wallpurp vps_wallpurp vps_wallpurp 3 3 3 300 450 530 0 0 0 **** sps_wallfire **** **** **** vps_wallpurp_L vps_wallpurp_L vps_wallpurp_L
105 VFX_PER_CLINGING_DARNESS C 6.7 **** **** shd_myst_clngdka **** shd_myst_clngdkc 0 **** vps_fogpurp vps_fogpurp vps_fogpurp 5 10 5 3400 1100 1900 0 0.25 0.25 **** sps_fog_loop **** sps_fog 0.3 vps_fogpurp_L vps_fogpurp_L vps_fogpurp_L
106 VFX_PER_BLACKFIRE R **** 10 2 shd_myst_blckfra **** shd_myst_blckfrc 0 **** vps_wallpurp vps_wallpurp vps_wallpurp 3 3 3 300 450 530 0 0 0 **** sps_wallfire **** **** **** vps_wallpurp_L vps_wallpurp_L vps_wallpurp_L
107 VFX_PER_DUSK_AND_DAWN C 6 **** **** shd_myst_dskdwna shd_myst_dskdwnb shd_myst_dskdwnc 0 1 **** **** **** **** **** **** **** **** **** **** **** **** sps_darkness **** **** **** **** **** **** ****
108 VFX_PER_CARPET_SHADOW C 6 **** **** shd_myst_crpshda shd_myst_crpshdb **** 0 **** vps_grease vps_grease vps_grease 7 7 7 2000 1500 2900 0 0 0 sps_grease **** **** **** **** vps_grease_L vps_grease_L vps_grease_L
109 VFX_MOB_DAYLIGHT C 18 **** **** sp_daylightA sp_daylightB **** 0 920 smp_daylight smp_daylight smp_daylight **** **** **** **** **** **** **** **** **** **** **** **** **** **** smp_daylight smp_daylight ****
110 VFX_MOB_CIRCEVIL_NODIS C 3.3 **** **** fist_circevila fist_circevilb **** 0 271 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
111 VFX_AOE_DESECRATE_20 C 6.7 **** **** sp_desecratea sp_desecrateb **** 0 **** smp_desecrate20 smp_desecrate20 smp_desecrate20 **** **** **** **** **** **** **** **** **** **** **** **** **** **** smp_desecrate20 smp_desecrate20 ****
112 VFX_AOE_DESECRATE_100 C 30 **** **** prc_tn_des_a prc_tn_des_c **** 0 **** smp_desecrate100 smp_desecrate100 smp_desecrate100 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
113 VFX_MOB_COURHEAVN C 3.3 **** **** prc_s_courheavna prc_s_courheavnb **** 0 273 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
114 VFX_MOB_CONSCAURA C 3.3 **** **** prc_s_conscauraa prc_s_conscaurb **** 0 273 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
115 VFX_AOE_CONSECRATE_20 C 6.7 **** **** sp_consecratea sp_consecrateb sp_consecratec 0 803 smp_consecrate20 smp_consecrate20 smp_consecrate20 **** **** **** **** **** **** **** **** **** **** **** **** **** **** smp_consecrate20 smp_consecrate20 ****
116 VFX_PER_WALLDISPEL R **** 10 2 sp_WallDispelA **** sp_WallDispelC 0 **** vps_walldisp vps_walldisp vps_walldisp 3 3 3 300 450 530 0 0 0 **** sps_wallfire **** **** **** vps_wallfire_L vps_wallfire_L vps_wallfire_L
117 VFX_MOB_CARRION_STENCH C 3 **** **** prc_to_carrionA **** **** 0 **** vps_fogstink vps_fogstink vps_fogstink 1 1 1 3400 1100 1900 0 0.25 0.25 **** fs_floatmoan **** **** **** vps_fogstink_L vps_fogstink_L vps_fogstink_L
118 VFX_MOB_PALLOR C 4 **** **** prc_to_pallorA **** **** 0 275 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
119 VFX_AOE_DESECRATE C 6.7 **** **** sp_desecratea sp_desecrateb sp_desecratec 0 804 smp_desecrate smp_desecrate smp_desecrate **** **** **** **** **** **** **** **** **** **** **** **** **** **** smp_desecrate smp_desecrate ****
120 VFX_MOB_COURHEAVN C 3.3 **** **** prc_s_courheavna prc_s_courheavnb **** 0 273 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
121 VFX_MOB_CONSCAURA C 3.3 **** **** prc_s_conscauraa prc_s_conscaurb **** 0 273 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
122 VFX_CUSTOM3 C 5 **** **** **** **** **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
123 VFX_CUSTOM4 C 5 **** **** **** **** **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
124 VFX_CUSTOM5 C 5 **** **** **** **** **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
125 VFX_CUSTOM6 C 5 **** **** **** **** **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
126 VFX_PER_BEHOLD C 50 **** **** z217_beholda z217_beholdb z217_beholdc 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
127 VFX_MOB_BLACK_PLAGUE C 5 **** **** DF_T0_BlckPlagueA DF_T0_BlckPlagueB DF_T0_BlckPlagueC 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
128 VFX_MOB_PIT_TRAP C 1.28 **** **** DF_T0_CamoPitA DF_T0_CamoPitB DF_T0_CamoPitC 0 **** **** **** **** **** **** **** **** **** **** **** **** **** as_sw_clothop1 **** as_sw_clothcl1 **** **** **** **** ****
129 VFX_MOB_PIT_TRAP2 R **** 3.72 2.65 DF_T0_DeepPitA DF_T0_DeepPitB DF_T0_DeepPitC 0 **** **** **** **** **** **** **** **** **** **** **** **** **** as_dr_metlmedop2 **** as_dr_metmedcr2 **** **** **** **** ****
130 VFX_MOB_WHIRLING_BLADE C 5 **** **** DF_T0_WhirlBldA DF_T0_WhirlBldB DF_T0_WhirlBldC 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** sps_sword01 **** **** **** **** **** ****
131 VFX_PER_PSIGREASE C 6 **** **** psi_pow_GreaseA psi_pow_GreaseB psi_pow_GreaseC 0 **** vps_grease vps_grease vps_grease 7 7 7 2000 1500 2900 0 0 0 sps_grease **** **** **** **** vps_grease_L vps_grease_L vps_grease_L
132 VFX_PER_ESHAMBLER C 10 **** **** psi_pow_eshamA psi_pow_eshamB psi_pow_eshamC 0 **** vim_mentcloud vim_mentcloud vim_mentcloud 10 10 10 3400 1100 1900 0 0.25 0.25 **** sps_fog_loop **** sps_fog 0.3 **** **** ****
133 VFX_PER_ENERGYWALL R **** 10 2 psi_pow_enwall1 **** psi_pow_enwall2 0 **** vps_wallfire vps_wallfire vps_wallfire 3 3 3 300 450 530 0 0 0 **** sps_wallfire **** **** **** vps_wallfire_L vps_wallfire_L vps_wallfire_L
134 VFX_MOB_CATAPSI C 10 **** **** psi_pow_catapsia psi_pow_catapsib psi_pow_catapsic 0 291 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
135 VFX_PER_NULLPSIONICS C 3.3 **** **** psi_pow_npfent psi_pow_npfext **** 0 272 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
136 VFX_MOB_FORM_DOOM C 6.7 **** **** psi_pow_frmdment **** **** 0 291 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
137 VFX_PER_ENERGYWALL_WIDENED R **** 20 4 psi_pow_enwall1 **** psi_pow_enwall2 0 **** vps_wallfire vps_wallfire vps_wallfire 3 3 3 300 450 530 0 0 0 **** sps_wallfire **** **** **** vps_wallfire_L vps_wallfire_L vps_wallfire_L
138 VFX_PER_ESHAMBLER_WIDENED C 20 **** **** psi_pow_eshamA psi_pow_eshamB psi_pow_eshamC 0 **** vim_mentcloud vim_mentcloud vim_mentcloud 15 15 15 3400 1100 1900 0 0.25 0.25 **** sps_fog_loop **** sps_fog 0.3 **** **** ****
139 VFX_PER_NULLPSIONICS_WIDENED C 6.7 **** **** psi_pow_npfent psi_pow_npfext **** 0 272 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
140 VFX_PER_NEW_TIMESTOP C 50 **** **** pt_enter pt_exit **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
141 VFX_PER_OBSCURING_MIST C 5 **** **** sp_obscmist_ent sp_obscmist_exit **** 0 **** vim_mentcloud vim_mentcloud vim_mentcloud 7 5 6 2000 1500 2900 0 0 0 **** sps_fog_loop **** sps_fog 0.3 **** **** ****
142 AOE_PER_FOG_VOID_CLOUD C 6 **** **** true_utr_fogvoda true_utr_fogvodc **** 0 **** vim_mentcloud vim_mentcloud vim_mentcloud 7 5 6 2000 1500 2900 0 0 0 **** sps_fog_loop **** sps_fog 0.3 **** **** ****
143 AOE_PER_FOG_VOID_SOLID C 6 **** **** true_utr_fogvodb true_utr_fogvodc **** 0 **** vim_mentcloud vim_mentcloud vim_mentcloud 7 5 6 2000 1500 2900 0 0 0 **** sps_fog_loop **** sps_fog 0.3 **** **** ****
144 AOE_PER_SHIELD_LANDSCAPE C 6 **** **** true_utr_sldlnda true_utr_sldlndb **** 0 **** vps_entangle vps_entangle vps_entangle 5 5 5 2000 1500 2900 0 0 0 **** sps_entangle **** **** **** vps_entangle_L vps_entangle_L vps_entangle_L
145 AOE_PER_ENERGY_VORTEX C 6 **** **** true_utr_envrtxa **** true_utr_envrtxb 0 **** vim_mentcloud vim_mentcloud vim_mentcloud 10 10 10 2000 2000 2000 0.5 0.5 0.5 **** **** **** **** **** vpr_gas_L vpr_gas_L vpr_gas_L
146 AOE_PER_SPEAK_ROCK_MUD C 6 **** **** true_utr_rckmuda true_utr_rckmudb **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
147 AOE_PER_TRANSFORM_LANDSCAPE C 6 **** **** true_utr_trnlnda **** true_utr_trnlndb 0 **** vps_grease vps_grease vps_grease 7 7 7 2000 1500 2900 0 0 0 sps_grease **** **** **** **** vps_grease_L vps_grease_L vps_grease_L
148 AOE_PER_DENY_PASSAGE C 6 **** **** true_utr_dnypasa true_utr_dnypasb **** 0 20 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
149 AOE_PER_MOUNTAIN_FORTRESS C 3.3 **** **** tob_dpst_mntfrta **** **** 0 274 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
150 VFX_MOB_PESTILENCE C 1.65 **** **** sp_pest_aura_oe **** sp_pest_aura_hb 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
151 AOE_PER_TELEPORTATIONCIRCLE C 1.524 **** **** **** **** **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
152 VFX_PER_WALLBREATH R **** 10 2 prc_wallbreatha **** prc_wallbreathc 0 **** vps_wallfire vps_wallfire vps_wallfire 3 3 3 300 450 530 0 0 0 **** sps_wallfire **** **** **** vps_wallfire_L vps_wallfire_L vps_wallfire_L
153 VFX_DRACONIC_AURA_1 C 10 **** **** prc_dracaura_in prc_dracaura_out **** 0 763 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
154 USER **** **** **** **** **** **** **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
155 VFX_MARSH_MIN1 C 20 **** **** prc_marsh_min1a prc_marsh_min1b **** 0 273 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
156 VFX_MARSH_MAJ1 C 20 **** **** prc_marsh_maj1a prc_marsh_maj1b **** 0 273 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
157 AOE_PER_SALAMANDER_CHARGE R **** 2 10 tob_dw_salchrga **** tob_dw_salchrgb 0 **** vps_wallfire vps_wallfire vps_wallfire 3 3 3 300 450 530 0 0 0 **** sps_wallfire **** **** **** vps_wallfire_L vps_wallfire_L vps_wallfire_L
158 AOE_PER_IRON_GUARD_GLARE C 3.3 **** **** tob_dvsp_igglra tob_dvsp_igglrb **** 0 274 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
159 AOE_PER_STANCE_OF_CLARITY C 3.3 **** **** **** **** tob_dmnd_stnclra 0 274 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
160 AOE_PER_BOLSTERING_VOICE C 13.2 **** **** tob_wtrn_blsrvca tob_wtrn_blsrvcb **** 0 274 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
161 AOE_PER_LEADING_CHARGE C 13.2 **** **** tob_wtrn_ldchrga tob_wtrn_ldchrgb **** 0 274 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
162 AOE_MOB_BULWARK_DEFENSE C 3.3 **** **** prc_knght_blwrka prc_knght_blwrkb **** 0 274 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
163 AOE_MOB_VIGILANT_DEFENDER C 3.3 **** **** prc_knght_vigila prc_knght_vigilb **** 0 274 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
164 AOE_PER_ROOT_MOUNTAIN C 3.3 **** **** tob_stdr_rtmntna tob_stdr_rtmntnb **** 0 274 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
165 AOE_PER_TACTICS_WOLF C 3.3 **** **** **** **** tob_wtrn_tctwlfb 0 274 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
166 AOE_PER_DESERT_TEMPEST C 1.3 **** **** tob_dw_dsttmpta **** **** 0 274 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
167 AOE_MOB_MOUNTAIN_AVALANCHE C 1 **** **** tob_stdr_mtavlA **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
168 VFX_PER_SNARE C 3.048 **** **** sp_snareA **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
169 AOE_PER_PYROTECHNICS_SMOKE C 6.096 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
170 AOE_PER_FIRE_TRAP C 1.524 **** **** sp_fire_trapA **** **** 0 **** vps_delfireb vps_delfireb vps_delfireb 5 5 5 3400 1100 1900 0 0 0.25 **** sps_delfireb **** **** **** vps_delfireb_L vps_delfireb_L vps_delfireb_L
171 VFX_PER_PRISMATIC_WALL R **** 15 1 sp_prism_wallA **** **** **** 891 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
172 VFX_MOB_RING_OF_BLADES C 1.524 **** **** sp_ring_bldsa **** sp_ring_bldsc **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
173 VFX_PER_PRISMATIC_SPHERE C 3.048 **** **** sp_prismt_sphrA sp_prismt_sphrB **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
174 VFX_PER_OTILUKES_RESILIENT_SPHERE C 3.048 **** **** sp_otiluke_rsA sp_otiluke_rsB **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
175 VFX_PER_SLEET_STORM C 12.192 **** **** sp_sleet_stormA sp_sleet_stormB sp_sleet_stormC 0 248 vps_sstorm vps_sstorm vps_sstorm 15 15 15 3400 1100 1900 0 0 0.25 **** sps_storm **** **** **** vps_sstorm_L vps_sstorm_L vps_sstorm_L
176 VFX_PER_SICKEN_EVIL C 6.096 **** **** sp_sickn_evilA sp_sickn_evilB **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
177 AOE_PER_CALM_EMOTIONS C 6.096 **** **** sp_calm_emotionA **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
178 AOE_PER_REPULSION C 18.288 **** **** sp_repulsionA sp_repulsionB sp_repulsionC **** 291 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
179 AOE_PER_SOLID_FOG C 6 **** **** sp_solid_fogA sp_solid_fogB **** 0 **** vim_mentcloud vim_mentcloud vim_mentcloud 10 10 10 7300 4500 2500 0.5 0.5 0.5 **** **** **** **** **** **** **** ****
180 AOE_PER_REPEL_VERMIN C 6.096 **** **** sp_repel_verminA **** **** **** 274 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
181 VFX_AOE_RAIN_OF_ROSES C 24.38 **** **** sp_rain_roseA sp_rain_roseB sp_rain_roseC **** **** vff_explnature **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
182 VFX_AOE_RAIN_OF_BLACK_TULIPS C 24.38 **** **** sp_rain_btulA sp_rain_btulB **** **** **** vff_explnature **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
183 VFX_AOE_BLNDGLORY C 30.48 **** **** sp_blnd_gloryA sp_blnd_gloryB **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
184 VFX_PER_5_FT_INVIS C 1.524 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
185 VFX_PER_10_FT_INVIS C 3.048 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
186 VFX_PER_15_FT_INVIS C 4.572 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
187 VFX_PER_20_FT_INVIS C 6.096 **** **** **** **** **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
188 VFX_PER_25_FT_INVIS C 7.62 **** **** **** **** **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
189 VFX_PER_30_FT_INVIS C 9.144 **** **** **** **** **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
190 5mInvisAOE C 5 **** **** **** **** **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
191 10mInvisAOE C 10 **** **** **** **** **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
192 15mInvisAOE C 15 **** **** **** **** **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
193 20mInvisAOE C 20 **** **** **** **** **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
194 25mInvisAOE C 25 **** **** **** **** **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
195 30mInvisAOE C 30 **** **** **** **** **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
196 35mInvisAOE C 35 **** **** **** **** **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
197 40mInvisAOE C 40 **** **** **** **** **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
198 45mInvisAOE C 45 **** **** **** **** **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
199 50mInvisAOE C 50 **** **** **** **** **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
200 VFX_PER_FOGFREEZE C 5 **** **** **** **** **** 0 **** vps_fogfreeze vps_fogfreeze vps_fogfreeze 5 10 5 3400 1100 1900 0 0.25 0.25 **** sps_fog_loop **** sps_fog 0.3 vps_fogfreeze_L vps_fogfreeze_L vps_fogfreeze_L
201 VFX_PER_FOGYELLOW C 5 **** **** **** **** **** 0 **** vps_fogyell vps_fogyell vps_fogyell 5 10 5 3400 1100 1900 0 0.25 0.25 **** sps_fog_loop **** sps_fog 0.3 vps_fogyell_L vps_fogyell_L vps_fogyell_L
202 VFX_PER_FOGPURPLE C 5 **** **** **** **** **** 0 **** vps_fogpurp vps_fogpurp vps_fogpurp 5 10 5 3400 1100 1900 0 0.25 0.25 **** sps_fog_loop **** sps_fog 0.3 vps_fogpurp_L vps_fogpurp_L vps_fogpurp_L
203 AOE_PER_DAMNDARK C 6.7 **** **** sp_damn_darkA sp_damn_darkB **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
204 VFX_MOB_BRILLIANT_EMANATION C 30.48 **** **** sp_brill_emanA sp_brill_emanB **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
205 VFX_PER_UTTERDARK C 50 **** **** sp_utterdarkA sp_utterdarkB **** 0 844 **** **** **** **** **** **** **** **** **** **** **** **** sps_darkness **** **** **** **** **** **** ****
206 VFX_PER_ACHAIERAI C 3.048 **** **** sp_cloud_achai sp_cloud_achaiB **** 0 845 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
207 VFX_PER_WALLFROST R **** 10 2 sp_wallfrosta **** sp_wallfrostc 0 **** vps_wallfrost vps_wallfrost vps_wallfrost 3 3 3 300 450 530 0 0 0 **** sps_wallfire **** **** **** vps_wallfrost_L vps_wallfrost_L vps_wallfrost_L
208 VFX_PER_WALLGRN R **** 10 2 **** **** **** 0 **** vps_wallgrn vps_wallgrn vps_wallgrn 3 3 3 300 450 530 0 0 0 **** sps_wallfire **** **** **** vps_wallgrn_L vps_wallgrn_L vps_wallgrn_L
209 VFX_PER_WALLYELLOW R **** 10 2 **** **** **** 0 **** vps_wallyello vps_wallyello vps_wallyello 3 3 3 300 450 530 0 0 0 **** sps_wallfire **** **** **** vps_wallyello_L vps_wallyello_L vps_wallyello_L
210 VFX_PER_WALLPURPLE R **** 10 2 **** **** **** 0 **** vps_wallpurp vps_wallpurp vps_wallpurp 3 3 3 300 450 530 0 0 0 **** sps_wallfire **** **** **** vps_wallpurp_L vps_wallpurp_L vps_wallpurp_L
211 VFX_PER_WALLRED R **** 10 2 **** **** **** 0 **** vps_wallred vps_wallred vps_wallred 3 3 3 300 450 530 0 0 0 **** sps_wallfire **** **** **** vps_wallred_L vps_wallred_L vps_wallred_L
212 VFX_PER_WALLBLUE R **** 10 2 **** **** **** 0 **** vps_wallblue vps_wallblue vps_wallblue 3 3 3 300 450 530 0 0 0 **** sps_wallfire **** **** **** vps_wallblue_L vps_wallblue_L vps_wallblue_L
213 VFX_PER_DEEPERDARKNESS C 20 **** **** NW_S0_DarknessA NW_S0_DarknessB **** 0 843 **** **** **** **** **** **** **** **** **** **** **** **** sps_darkness **** **** **** **** **** **** ****
214 5mInvisAOE R **** 5 5 **** **** **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
215 10mInvisAOE R **** 10 10 **** **** **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
216 15mInvisAOE R **** 15 15 **** **** **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
217 20mInvisAOE R **** 20 20 **** **** **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
218 25mInvisAOE R **** 25 25 **** **** **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
219 30mInvisAOE R **** 30 30 **** **** **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
220 35mInvisAOE R **** 35 35 **** **** **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
221 40mInvisAOE R **** 40 40 **** **** **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
222 45mInvisAOE R **** 45 45 **** **** **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
223 50mInvisAOE R **** 50 50 **** **** **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
224 INVOKE_AOE_CHILLFOG C 6 **** **** inv_dra_chilfoga inv_dra_chilfogb inv_dra_chilfogc 0 **** vim_mentcloud vim_mentcloud vim_mentcloud 7 5 6 2000 1500 2900 0 0 0 **** sps_fog_loop **** sps_fog 0.3 **** **** ****
225 AOE_PER_NYMPH_BLINDING C 10 **** **** race_blindbeauta **** **** 0 271 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
226 INVOKE_AOE_COLD_COMFORT C 10 **** **** inv_coldcmfrta inv_coldcmfrtb **** 0 273 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
227 INVOKE_VFX_CHILLING_TENTACLES C 5 **** **** inv_chilltenta **** inv_chilltentc 0 **** vps_tentacle vps_tentacle vps_tentacle 3 3 3 7300 4500 2500 0 0 0 **** sps_tentacles **** **** **** vps_tentacle_L vps_tentacle_L vps_tentacle_L
228 INVOKE_VFX_PER_WALLPERILFIRE R **** 10 2 inv_wallperlflma **** inv_wallperlflmc 0 **** vps_wallfire vps_wallfire vps_wallfire 3 3 3 300 450 530 0 0 0 **** sps_wallfire **** **** **** vps_wallfire_L vps_wallfire_L vps_wallfire_L
229 INVOKE_AOE_MIASMIC_CLOUD C 3.33 **** **** inv_miasmicclda inv_miasmiccldc **** 0 **** vim_mentcloud vim_mentcloud vim_mentcloud 7 5 6 2000 1500 2900 0 0 0 **** sps_fog_loop **** sps_fog 0.3 **** **** ****
230 INVOKE_AOE_CAUSTIC_MIRE C 6.66 **** **** inv_causticmirea inv_causticmireb inv_causticmirec 0 **** vps_grease vps_grease vps_grease 7 7 7 2000 1500 2900 0 0 0 sps_grease **** **** **** **** vps_grease_L vps_grease_L vps_grease_L
231 INVOKE_AOE_ENERVATING_SHADOW C 3.3 **** **** inv_enervshdwa inv_enervshdwb inv_enervshdwc 0 273 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
232 INVOKE_VFX_NIGHTMARE_TERRAIN_1 R **** 6.66 10 inv_nightmarea inv_nightmareb inv_nightmarec 0 **** vps_tentacle vps_tentacle vps_tentacle 3 3 3 7300 4500 2500 0 0 0 **** sps_tentacles **** **** **** vps_tentacle_L vps_tentacle_L vps_tentacle_L
233 INVOKE_VFX_NIGHTMARE_TERRAIN_4 R **** 10 10 inv_nightmarea inv_nightmareb inv_nightmarec 0 **** vps_tentacle vps_tentacle vps_tentacle 3 3 3 7300 4500 2500 0 0 0 **** sps_tentacles **** **** **** vps_tentacle_L vps_tentacle_L vps_tentacle_L
234 INVOKE_VFX_NIGHTMARE_TERRAIN_7 R **** 10 13.3 inv_nightmarea inv_nightmareb inv_nightmarec 0 **** vps_tentacle vps_tentacle vps_tentacle 3 3 3 7300 4500 2500 0 0 0 **** sps_tentacles **** **** **** vps_tentacle_L vps_tentacle_L vps_tentacle_L
235 INVOKE_VFX_NIGHTMARE_TERRAIN_11 R **** 13.3 13.3 inv_nightmarea inv_nightmareb inv_nightmarec 0 **** vps_tentacle vps_tentacle vps_tentacle 3 3 3 7300 4500 2500 0 0 0 **** sps_tentacles **** **** **** vps_tentacle_L vps_tentacle_L vps_tentacle_L
236 INVOKE_VFX_NIGHTMARE_TERRAIN_15 R **** 13.3 16.6 inv_nightmarea inv_nightmareb inv_nightmarec 0 **** vps_tentacle vps_tentacle vps_tentacle 3 3 3 7300 4500 2500 0 0 0 **** sps_tentacles **** **** **** vps_tentacle_L vps_tentacle_L vps_tentacle_L
237 INVOKE_VFX_NIGHTMARE_TERRAIN_21 R **** 16.6 16.6 inv_nightmarea inv_nightmareb inv_nightmarec 0 **** vps_tentacle vps_tentacle vps_tentacle 3 3 3 7300 4500 2500 0 0 0 **** sps_tentacles **** **** **** vps_tentacle_L vps_tentacle_L vps_tentacle_L
238 INVOKE_VFX_NIGHTMARE_TERRAIN_25 R **** 16.6 20 inv_nightmarea inv_nightmareb inv_nightmarec 0 **** vps_tentacle vps_tentacle vps_tentacle 3 3 3 7300 4500 2500 0 0 0 **** sps_tentacles **** **** **** vps_tentacle_L vps_tentacle_L vps_tentacle_L
239 INVOKE_VFX_NIGHTMARE_TERRAIN_31 R **** 20 20 inv_nightmarea inv_nightmareb inv_nightmarec 0 **** vps_tentacle vps_tentacle vps_tentacle 3 3 3 7300 4500 2500 0 0 0 **** sps_tentacles **** **** **** vps_tentacle_L vps_tentacle_L vps_tentacle_L
240 INVOKE_VFX_NIGHTMARE_TERRAIN_37 R **** 20 23.3 inv_nightmarea inv_nightmareb inv_nightmarec 0 **** vps_tentacle vps_tentacle vps_tentacle 3 3 3 7300 4500 2500 0 0 0 **** sps_tentacles **** **** **** vps_tentacle_L vps_tentacle_L vps_tentacle_L
241 INVOKE_AOE_SWARMDMG C 2 **** **** **** **** inv_swarmdmgc 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
242 INVOKE_VFX_HUNGRY_DARKNESS C 6.7 **** **** NW_S0_DarknessA NW_S0_DarknessB inv_swarmdmgc 0 1 **** **** **** **** **** **** **** **** **** **** **** **** sps_darkness **** **** **** **** **** **** ****
243 INVOKE_AOE_SWARMDMG_2 C 3 **** **** **** **** inv_swarmdmgc 0 **** vps_bugs vps_bugs vps_bugs 10 10 10 7300 4500 2500 0 0 0 **** sps_bugs **** **** **** vps_bugs_L vps_bugs_L vps_bugs_L
244 INVOKE_AOE_SWARMDMG_3 C 4 **** **** **** **** inv_swarmdmgc 0 **** vps_bugs vps_bugs vps_bugs 10 10 10 7300 4500 2500 0 0 0 **** sps_bugs **** **** **** vps_bugs_L vps_bugs_L vps_bugs_L
245 INVOKE_AOE_SWARMDMG_4 C 5 **** **** **** **** inv_swarmdmgc 0 **** vps_bugs vps_bugs vps_bugs 10 10 10 7300 4500 2500 0 0 0 **** sps_bugs **** **** **** vps_bugs_L vps_bugs_L vps_bugs_L
246 INVOKE_AOE_SWARMDMG_5 C 6 **** **** **** **** inv_swarmdmgc 0 **** vps_bugs vps_bugs vps_bugs 10 10 10 7300 4500 2500 0 0 0 **** sps_bugs **** **** **** vps_bugs_L vps_bugs_L vps_bugs_L
247 INVOKE_AOE_SWARMDMG_6 C 7 **** **** **** **** inv_swarmdmgc 0 **** vps_bugs vps_bugs vps_bugs 10 10 10 7300 4500 2500 0 0 0 **** sps_bugs **** **** **** vps_bugs_L vps_bugs_L vps_bugs_L
248 INVOKE_VFX_DARK_DISCORPORATION C 3 **** **** **** **** inv_swarmdmgc 0 1 **** **** **** **** **** **** **** **** **** **** **** **** sps_darkness **** **** **** **** **** **** ****
249 INVOKE_VFX_PER_WALL_OF_GLOOM R **** 40 2 inv_wallglooma inv_wallgloomb **** 0 **** vdr_antilght vdr_antilght vdr_antilght 2 2 2 4000 2000 3000 **** 1 1 **** **** **** **** **** **** **** ****
250 INVOKE_AOE_EARTHEN_GRASP_GRAPPLE C 2 **** **** inv_earthgraspa **** inv_earthgraspc 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
251 AOE_PER_THICKET_BLADES C 1 **** **** tob_dvsp_thkblda **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
252 AOE_PER_AURA_TYRANNY C 3.3 **** **** **** **** tob_dvsp_tyrnnya 0 274 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
253 AOE_PER_SWARM_TACTICS C 24.38 **** **** tob_wtrn_swarmta tob_wtrn_swarmtb **** 0 274 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
254 AOE_MOB_DN_FEAR_AURA C 3.3 **** **** prc_dnc_frauraa **** **** 0 274 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****

View 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)));
}
}
}

View 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();
}
}

View 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();
}
}

View 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();
}
}

View 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));
}
}
}

View 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);
}
}

View 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);
}
}
}

View 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));
//}
}
}
}

View 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);
}
}
}

View 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);
}
}
}

View 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);
}
}

View 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);
}
}

View 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);
}
}
}

View 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);
}
}

View 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);
}
}

View 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));
}
}

View 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);
}
}
}

View 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);
}
}

View 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);
}
}

View 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);
}
}

View 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);
}
}
}

View 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);
}
}

View 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);
}
}

View 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);
}
}
}

View 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);
}
}

View 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));
}
}

View 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);
}
}

View 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);
}
}
}

View 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);
}
}

View 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);
}
}

View 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);
}
}

View 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));
}
}

View 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);
}
}

View 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 = GetSpellTargetLocation();
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);
}
}

View 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 = GetSpellTargetLocation();
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);
}
}

View 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 = GetSpellTargetLocation();
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);
}
}

View 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 = GetSpellTargetLocation();
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);
}
}

View 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 = GetSpellTargetLocation();
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);
}
}

View 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, GetSpellTargetLocation(), 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, GetSpellTargetLocation(), TRUE);
}
}

View 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);
}
}
}

View 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) ;
}
}

View 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 (GetHasEffect(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 = GetSpellTargetLocation();
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);
}
}

View 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 (GetHasEffect(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 = GetSpellTargetLocation();
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);
}
}

View 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 (GetHasEffect(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 = GetSpellTargetLocation();
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);
}
}

View 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 (GetHasEffect(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 = GetSpellTargetLocation();
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);
}
}

View 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 (GetHasEffect(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 = GetSpellTargetLocation();
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);
}
}

View File

@@ -0,0 +1,78 @@
//::///////////////////////////////////////////////
//:: Gaze: Dominate
//:: NW_S1_GazeDomn
//:: 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 (GetHasEffect(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 = GetSpellTargetLocation();
effect eGaze = EffectDominated();
effect eVis = EffectVisualEffect(VFX_IMP_DOMINATE_S);
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
effect eVisDur = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_DOMINATED);
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)
{
nDuration = GetScaledDuration(nDuration , oTarget);
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_GAZE_DOMINATE));
//Determine effect delay
float fDelay = GetDistanceBetween(oNPC, oTarget)/20;
if(GetIsEnemy(oTarget))
{
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);
}
}

View File

@@ -0,0 +1,74 @@
//::///////////////////////////////////////////////
//:: Gaze of Doom
//:: NW_S1_GazeDoom.nss
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
If the target fails a save they recieve a -2
penalty to all saves, attack rolls, damage and
skill checks for the duration of the spell.
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: Oct 22, 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 (GetHasEffect(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 = GetSpellTargetLocation();
effect eVis = EffectVisualEffect(VFX_IMP_DOOM);
effect eSaves = EffectSavingThrowDecrease(SAVING_THROW_ALL, 2);
effect eAttack = EffectAttackDecrease(2);
effect eDamage = EffectDamageDecrease(2);
effect eSkill = EffectSkillDecrease(SKILL_ALL_SKILLS, 2);
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
effect eLink = EffectLinkEffects(eAttack, eDamage);
eLink = EffectLinkEffects(eLink, eSaves);
eLink = EffectLinkEffects(eLink, eSkill);
eLink = EffectLinkEffects(eLink, eDur);
oTarget = GetFirstObjectInShape(SHAPE_SPELLCONE, 10.0, GetSpellTargetLocation());
while(GetIsObjectValid(oTarget))
{
if(!GetIsReactionTypeFriendly(oTarget) && oTarget != oNPC)
{
if(oTarget != oNPC)
{
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_GAZE_DOOM));
//Spell Resistance and Saving throw
if (!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC))
{
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink , oTarget, RoundsToSeconds(nDuration));
}
}
}
oTarget = GetNextObjectInShape(SHAPE_SPELLCONE, 10.0, GetSpellTargetLocation());
}
}

View File

@@ -0,0 +1,70 @@
//::///////////////////////////////////////////////
//:: Gaze: Deatroy Good
//:: NW_S1_GazeEvil
//:: 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 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 (GetHasEffect(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);
location lTargetLocation = GetSpellTargetLocation();
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(GetAlignmentGoodEvil(oTarget) == ALIGNMENT_GOOD)
{
//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);
}
}

View File

@@ -0,0 +1,74 @@
//::///////////////////////////////////////////////
//:: Gaze: Fear
//:: NW_S1_GazeFear
//:: 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 (GetHasEffect(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; }
nDuration = GetScaledDuration(nDuration , oTarget);
location lTargetLocation = GetSpellTargetLocation();
effect eGaze = EffectFrightened();
effect eVis = EffectVisualEffect(VFX_IMP_FEAR_S);
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
effect eVisDur = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_FEAR);
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))
{
nDuration = GetScaledDuration(nDuration , oTarget);
if(!GetIsReactionTypeFriendly(oTarget) && oTarget != oNPC)
{
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_GAZE_FEAR));
//Determine effect delay
float fDelay = GetDistanceBetween(oNPC, oTarget)/20;
if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_FEAR, 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);
}
}

View File

@@ -0,0 +1,70 @@
//::///////////////////////////////////////////////
//:: Gaze: Deatroy Evil
//:: NW_S1_GazeGood
//:: 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 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 (GetHasEffect(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);
location lTargetLocation = GetSpellTargetLocation();
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(GetAlignmentGoodEvil(oTarget) == ALIGNMENT_EVIL)
{
//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);
}
}

View File

@@ -0,0 +1,71 @@
//::///////////////////////////////////////////////
//:: Gaze: Deatroy Chaos
//:: NW_S1_GazeLaw
//:: 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 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 (GetHasEffect(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 = GetSpellTargetLocation();
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_CHAOTIC)
{
//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);
}
}

View File

@@ -0,0 +1,73 @@
//::///////////////////////////////////////////////
//:: Gaze: Stun
//:: NW_S1_GazeStun
//:: 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 (GetHasEffect(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);
location lTargetLocation = GetSpellTargetLocation();
effect eGaze = EffectStunned();
effect eVis = EffectVisualEffect(VFX_IMP_STUN);
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)
{
nDuration = GetScaledDuration(nDuration , oTarget);
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_GAZE_STUNNED));
//Determine effect delay
float fDelay = GetDistanceBetween(oNPC, oTarget)/20;
if(!/*WillSave*/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);
}
}

View File

@@ -0,0 +1,41 @@
//::///////////////////////////////////////////////
//:: Golem Breath
//:: NW_S1_GolemGas
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
Iron Golem spits out a cone of poison.
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: May 22, 2001
//:://////////////////////////////////////////////
//#include "wm_include"
void main()
{
//if (WildMagicOverride()) { return; }
//Declare major variables
location lTargetLocation = GetSpellTargetLocation();
object oTarget;
effect eCone = EffectPoison(POISON_IRON_GOLEM);
//Get first target in spell area
oTarget = GetFirstObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE);
while(GetIsObjectValid(oTarget))
{
if(!GetIsReactionTypeFriendly(oTarget) && oTarget != OBJECT_SELF)
{
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_GOLEM_BREATH_GAS));
//Determine effect delay
float fDelay = GetDistanceBetween(OBJECT_SELF, oTarget)/20;
//Apply poison effect
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eCone, oTarget));
}
//Get next target in spell area
oTarget = GetNextObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE);
}
}

View File

@@ -0,0 +1,66 @@
//::///////////////////////////////////////////////
//:: Hell Hound Fire Breath
//:: NW_S1_HndBreath
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
A cone of fire eminates from the hound.
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: May 14, 2001
//:://////////////////////////////////////////////
#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 nCONMod = GetAbilityModifier(ABILITY_CONSTITUTION, oNPC);
int nDC = 10 +nCONMod+ (nHD/2);
int nDamage = d6(2);
float fDelay;
location lTargetLocation = GetSpellTargetLocation();
effect eCone;
effect eVis = EffectVisualEffect(VFX_IMP_FLAME_S);
//Get first target in spell area
oTarget = GetFirstObjectInShape(SHAPE_SPELLCONE, 11.0, lTargetLocation, TRUE);
while(GetIsObjectValid(oTarget))
{
if(!GetIsReactionTypeFriendly(oTarget))
{
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_HELL_HOUND_FIREBREATH));
//Adjust the damage based on the Reflex Save, Evasion and Improved Evasion.
nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC, SAVING_THROW_TYPE_FIRE);
//Determine effect delay
fDelay = GetDistanceBetween(oNPC, oTarget)/20;
//Set damage effect
eCone = EffectDamage(nDamage, DAMAGE_TYPE_FIRE);
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);
}
}

View File

@@ -0,0 +1,67 @@
//::///////////////////////////////////////////////
//:: Howl: Confuse
//:: NW_S1_HowlConf
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
A howl emanates from the creature which affects
all within 20ft unless they make a save.
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: May 14, 2000
//:://////////////////////////////////////////////
#include "NW_I0_SPELLS"
//#include "wm_include"
#include "prc_inc_spells"
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/4);
int nDuration = 1 + (nHD/4);
if(nDuration == 0) { nDuration = 1; }
float fDelay;
effect eVis = EffectVisualEffect(VFX_IMP_CONFUSION_S);
effect eHowl = EffectConfused();
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
effect eDur2 = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_DISABLED);
effect eImpact = EffectVisualEffect(VFX_FNF_HOWL_MIND);
effect eLink = EffectLinkEffects(eHowl, eDur);
eLink = EffectLinkEffects(eLink, eDur2);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC);
//Get first target in spell area
oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(oNPC));
while(GetIsObjectValid(oTarget))
{
if(!GetIsReactionTypeFriendly(oTarget) && !GetIsFriend(oTarget) && oTarget != oNPC)
{
nDuration = GetScaledDuration(nDuration , oTarget);
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_HOWL_CONFUSE));
fDelay = GetDistanceToObject(oTarget)/10;
//Make a saving throw check
if(!/*Will Save*/ PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_MIND_SPELLS, oNPC, fDelay))
{
//Apply the VFX impact and effects
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nDuration)));
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
}
}
//Get next target in spell area
oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(oNPC));
}
}

View File

@@ -0,0 +1,65 @@
//::///////////////////////////////////////////////
//:: Howl: Daze
//:: NW_S1_HowlDaze
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
A howl emanates from the creature which affects
all within 10ft unless they make a save.
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: May 14, 2000
//:://////////////////////////////////////////////
#include "NW_I0_SPELLS"
//#include "wm_include"
#include "prc_inc_spells"
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/4);
int nDuration = 1 + (nHD/4);
if(nDuration == 0) { nDuration = 1; }
float fDelay;
effect eVis = EffectVisualEffect(VFX_IMP_DAZED_S);
effect eHowl = EffectDazed();
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
effect eDur2 = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_DISABLED);
effect eImpact = EffectVisualEffect(VFX_FNF_HOWL_MIND);
effect eLink = EffectLinkEffects(eHowl, eDur);
eLink = EffectLinkEffects(eLink, eDur2);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC);
//Get first target in spell area
oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(oNPC));
while(GetIsObjectValid(oTarget))
{
if(!GetIsReactionTypeFriendly(oTarget) && !GetIsFriend(oTarget) && oTarget != oNPC)
{
nDuration = GetScaledDuration(nDuration , oTarget);
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_HOWL_DAZE));
fDelay = GetDistanceToObject(oTarget)/10;
//Make a saving throw check
if(!/*Will Save*/ PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_MIND_SPELLS, oNPC, fDelay))
{
//Apply the VFX impact and effects
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nDuration)));
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
}
}
//Get next target in spell area
oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(oNPC));
}
}

View File

@@ -0,0 +1,59 @@
//::///////////////////////////////////////////////
//:: Howl: Death
//:: NW_S1_HowlDeath
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
A howl emanates from the creature which affects
all within 10ft unless they make a save.
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: May 14, 2000
//:://////////////////////////////////////////////
#include "NW_I0_SPELLS"
//#include "wm_include"
#include "prc_inc_spells"
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/4);
float fDelay;
effect eVis = EffectVisualEffect(VFX_IMP_DEATH);
effect eImpact = EffectVisualEffect(VFX_FNF_HOWL_ODD);
effect eHowl = EffectDeath();
ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC);
//Get first target in spell area
oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(oNPC));
while(GetIsObjectValid(oTarget))
{
if(!GetIsReactionTypeFriendly(oTarget) && !GetIsFriend(oTarget) && oTarget != oNPC)
{
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_HOWL_DEATH));
fDelay = GetDistanceToObject(oTarget)/10;
//Make a saving throw check
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, eHowl, oTarget));
//ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
}
}
//Get next target in spell area
oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(oNPC));
}
}

View File

@@ -0,0 +1,68 @@
//::///////////////////////////////////////////////
//:: Howl: Fear
//:: NW_S1_HowlFear
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
A howl emanates from the creature which affects
all within 10ft unless they make a save.
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: May 14, 2000
//:://////////////////////////////////////////////
#include "NW_I0_SPELLS"
//#include "wm_include"
#include "prc_inc_spells"
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/4);
int nDuration = 1 + (nHD/4);
if(nDuration == 0) { nDuration = 1; }
float fDelay;
effect eVis = EffectVisualEffect(VFX_IMP_FEAR_S);
effect eHowl = EffectFrightened();
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
effect eDur2 = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_FEAR);
effect eImpact = EffectVisualEffect(VFX_FNF_HOWL_MIND);
effect eLink = EffectLinkEffects(eHowl, eDur);
eLink = EffectLinkEffects(eLink, eDur2);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC);
//Get first target in spell area
oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(oNPC));
while(GetIsObjectValid(oTarget))
{
if(!GetIsReactionTypeFriendly(oTarget) && !GetIsFriend(oTarget) && oTarget != oNPC)
{
fDelay = GetDistanceToObject(oTarget)/10;
nDuration = GetScaledDuration(nDuration , oTarget);
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_HOWL_FEAR));
//Make a saving throw check
if(!/*Will Save*/ PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_FEAR))
{
//Apply the VFX impact and effects
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nDuration)));
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
}
}
//Get next target in spell area
oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(oNPC));
}
}

View File

@@ -0,0 +1,65 @@
//::///////////////////////////////////////////////
//:: Howl: Paralysis
//:: NW_S1_HowlParal
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
A howl emanates from the creature which affects
all within 10ft unless they make a save.
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: May 14, 2000
//:://////////////////////////////////////////////
#include "NW_I0_SPELLS"
//#include "wm_include"
#include "prc_inc_spells"
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/4);
int nDuration = 1 + (nHD/4);
if(nDuration == 0) { nDuration = 1; }
float fDelay;
effect eHowl = EffectParalyze();
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
effect eDur2 = EffectVisualEffect(VFX_DUR_PARALYZE_HOLD);
effect eImpact = EffectVisualEffect(VFX_FNF_HOWL_ODD);
effect eLink = EffectLinkEffects(eHowl, eDur);
eLink = EffectLinkEffects(eLink, eDur2);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC);
//Get first target in spell area
oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(oNPC));
while(GetIsObjectValid(oTarget))
{
if(!GetIsReactionTypeFriendly(oTarget) && !GetIsFriend(oTarget) && oTarget != oNPC)
{
fDelay = GetDistanceToObject(oTarget)/10;
nDuration = GetScaledDuration(nDuration , oTarget);
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_HOWL_PARALYSIS));
//Make a saving throw check
if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_NONE, oNPC, fDelay))
{
//Apply the VFX impact and effects
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nDuration)));
}
}
//Get next target in spell area
oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(oNPC));
}
}

View File

@@ -0,0 +1,65 @@
//::///////////////////////////////////////////////
//:: Howl: Sonic
//:: NW_S1_HowlSonic
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
A howl emanates from the creature which affects
all within 10ft unless they make a save.
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: May 14, 2000
//:://////////////////////////////////////////////
#include "NW_I0_SPELLS"
//#include "wm_include"
#include "prc_inc_spells"
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/4);
int nDamage;
int nSonic = nHD/4;
if(nSonic == 0) { nSonic = 1; }
effect eVis = EffectVisualEffect(VFX_IMP_SONIC);
effect eHowl;
effect eImpact = EffectVisualEffect(VFX_FNF_HOWL_WAR_CRY);
float fDelay;
ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC);
//Get first target in spell area
oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(oNPC));
while(GetIsObjectValid(oTarget))
{
if(!GetIsFriend(oTarget) && oTarget != oNPC)
{
fDelay = GetDistanceToObject(oTarget)/20;
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_HOWL_SONIC));
nDamage = d6(nSonic);
//Make a saving throw check
if(PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_SONIC, oNPC, fDelay))
{
nDamage = nDamage / 2;
}
//Set damage effect
eHowl = EffectDamage(nDamage, DAMAGE_TYPE_SONIC);
//Apply the VFX impact and effects
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eHowl, oTarget));
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
}
//Get next target in spell area
oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(oNPC));
}
}

View File

@@ -0,0 +1,66 @@
//::///////////////////////////////////////////////
//:: Howl: Stun
//:: NW_S1_HowlStun
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
A howl emanates from the creature which affects
all within 10ft unless they make a save.
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: May 14, 2000
//:://////////////////////////////////////////////
//#include "wm_include"
#include "NW_I0_SPELLS"
#include "prc_inc_spells"
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/4);
int nDuration = 1 + (nHD/4);
float fDelay;
effect eVis = EffectVisualEffect(VFX_IMP_STUN);
effect eHowl = EffectStunned();
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
effect eDur2 = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_DISABLED);
effect eImpact = EffectVisualEffect(VFX_FNF_HOWL_MIND);
effect eLink = EffectLinkEffects(eHowl, eDur);
eLink = EffectLinkEffects(eLink, eDur2);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC);
//Get first target in spell area
oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(oNPC));
while(GetIsObjectValid(oTarget))
{
if(!GetIsReactionTypeFriendly(oTarget) && !GetIsFriend(oTarget) && oTarget != oNPC)
{
fDelay = GetDistanceToObject(oTarget)/10;
nDuration = GetScaledDuration(nDuration , oTarget);
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_HOWL_STUN));
//Make a saving throw check
if(!/*Will Save*/ PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_MIND_SPELLS))
{
//Apply the VFX impact and effects
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nDuration)));
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
}
}
//Get next target in spell area
oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(oNPC));
}
}

View File

@@ -0,0 +1,61 @@
//::///////////////////////////////////////////////
//:: Krenshar Fear Stare
//:: NW_S1_KrenScare
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
Causes those in the gaze to be struck with fear
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: Jan 8, 2002
//:://////////////////////////////////////////////
//#include "wm_include"
#include "prc_inc_spells"
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 nMetaMagic = PRCGetMetaMagicFeat();
float fDelay;
effect eVis = EffectVisualEffect(VFX_IMP_FEAR_S);
effect eFear = EffectFrightened();
effect eMind = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_FEAR);
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
//Link the fear and mind effects
effect eLink = EffectLinkEffects(eFear, eMind);
eLink = EffectLinkEffects(eLink, eDur);
//Get first target in the spell cone
oTarget = GetFirstObjectInShape(SHAPE_CONE, 10.0, GetSpellTargetLocation(), TRUE);
while(GetIsObjectValid(oTarget))
{
//Make faction check
if(GetIsEnemy(oTarget))
{
fDelay = GetDistanceToObject(oTarget)/20;
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_KRENSHAR_SCARE));
//Make a will save
if(!/*Will Save*/ PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_FEAR))
{
//Apply the linked effects and the VFX impact
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(3)));
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
}
}
//Get next target in the spell cone
oTarget = GetNextObjectInShape(SHAPE_CONE, 10.0, GetSpellTargetLocation(), TRUE);
}
}

View File

@@ -0,0 +1,63 @@
//::///////////////////////////////////////////////
//:: Salt Mephit Breath
//:: NW_S1_MephSalt
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
Salt Mephit shoots out a bolt of corrosive material
that causes 1d4 damage and reduces AC and Attack by 2
This should be a cone - Jaysyn
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: May 11, 2001
//:://////////////////////////////////////////////
#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 nDamage = d4();
effect eVis = EffectVisualEffect(VFX_IMP_ACID_S);
effect eBolt, eAttack, eAC;
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
//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(nDamage == 0) {nTouch = 0;}
if(nTouch > 0)
{
if(nTouch == 2)
{
nDamage *= 2;
}
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_MEPHIT_SALT_BREATH));
//Set damage, AC mod and attack mod effects
eBolt = EffectDamage(nDamage, DAMAGE_TYPE_ACID);
eAC = EffectACDecrease(2);
eAttack = EffectAttackDecrease(2);
effect eLink = EffectLinkEffects(eAttack, eAC);
eLink = EffectLinkEffects(eLink, eDur);
//Apply the VFX impact and effects
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(3));
ApplyEffectToObject(DURATION_TYPE_INSTANT, eBolt, oTarget);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
}
}

View File

@@ -0,0 +1,67 @@
//::///////////////////////////////////////////////
//:: Steam Mephit Breath
//:: NW_S1_MephSteam
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
Steam Mephit shoots out a bolt of steam
that causes 1d4 damage and reduces AC by 4
and Attack by 2
This should be a cone - Jaysyn
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: May 11, 2001
//:://////////////////////////////////////////////
#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 nDamage = d4();
effect eVis = EffectVisualEffect(VFX_IMP_ACID_S);
effect eBolt, eAttack, eAC;
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
//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(nDamage == 0) {nTouch = 0;}
if(nTouch > 0)
{
if(nTouch == 2)
{
nDamage *= 2;
}
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_MEPHIT_STEAM_BREATH));
//Set damage, AC mod and attack mod effects
eBolt = EffectDamage(nDamage, DAMAGE_TYPE_FIRE);
eAC = EffectACDecrease(4);
eAttack = EffectAttackDecrease(2);
effect eLink = EffectLinkEffects(eAC, eAttack);
eLink = EffectLinkEffects(eLink, eDur);
//Apply the VFX impact and effects
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(3));
ApplyEffectToObject(DURATION_TYPE_INSTANT, eBolt, oTarget);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
}
}

View File

@@ -0,0 +1,53 @@
//::///////////////////////////////////////////////
//:: Bolster Undead
//:: NW_S1_MumUndead
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
This spell increases the Turn Resistance of
all undead around the caster by an amount
scaled with HD.
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: May 22, 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;
int nHD = GetHitDice(oNPC);
int nScaling = nHD / 4;
if(nScaling == 0) {nScaling = 1;}
float fDelay;
effect eTurn = EffectTurnResistanceIncrease(nScaling);
effect eVis = EffectVisualEffect(VFX_IMP_HEAD_EVIL);
effect eImpact = EffectVisualEffect(VFX_FNF_LOS_EVIL_30);
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eImpact, GetLocation(oNPC));
oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(oNPC));
while(GetIsObjectValid(oTarget))
{
if(GetIsFriend(oTarget))
{
fDelay = GetRandomDelay();
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_MUMMY_BOLSTER_UNDEAD, FALSE));
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eTurn, oTarget, RoundsToSeconds(10)));
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
}
oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(oNPC));
}
}

View File

@@ -0,0 +1,73 @@
//::///////////////////////////////////////////////
//:: Pulse: Charisma Drain
//:: NW_S1_PulsDeath
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
A wave of energy emanates from the creature which affects
all within 10ft. Damage can be reduced by half for all
damaging variants.
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: May 14, 2000
//:://////////////////////////////////////////////
#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 = nHD/5;
if (nDamage == 0) {nDamage = 1;}
float fDelay;
effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY);
effect eHowl;
effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_NEGATIVE);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC);
//Get first target in spell area
oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC));
while(GetIsObjectValid(oTarget))
{
if(oTarget != oNPC)
{
if(!GetIsReactionTypeFriendly(oTarget))
{
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_PULSE_ABILITY_DRAIN_CHARISMA));
//Determine effect delay
fDelay = GetDistanceBetween(oNPC, oTarget)/20;
//Make a saving throw check
if(!/*FortSave*/PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_NEGATIVE, oNPC, fDelay))
{
//Set the Ability mod and change to supernatural effect
eHowl = EffectAbilityDecrease(ABILITY_CHARISMA, nDamage);
eHowl = SupernaturalEffect(eHowl);
//Apply the VFX impact and effects
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_PERMANENT, eHowl, oTarget));
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
}
}
}
//Get first target in spell area
oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC));
}
}

View File

@@ -0,0 +1,68 @@
//::///////////////////////////////////////////////
//:: Pulse: Cold
//:: NW_S1_PulsCold
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
A wave of energy emanates from the creature which affects
all within 10ft. Damage can be reduced by half for all
damaging variants.
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: May 14, 2000
//:://////////////////////////////////////////////
//#include "wm_include"
#include "prc_inc_spells"
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 = d6(nHD);
float fDelay;
effect eVis = EffectVisualEffect(VFX_IMP_FROST_S);
effect eHowl;
effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_COLD);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC);
//Get first target in spell area
oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC));
while(GetIsObjectValid(oTarget))
{
if(oTarget != oNPC)
{
if(!GetIsReactionTypeFriendly(oTarget))
{
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_PULSE_COLD));
//Adjust the damage based on the Reflex Save, Evasion and Improved Evasion.
nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC, SAVING_THROW_TYPE_COLD);
//Determine effect delay
fDelay = GetDistanceBetween(oNPC, oTarget)/20;
eHowl = EffectDamage(nDamage, DAMAGE_TYPE_COLD);
if(nDamage > 0)
{
//Apply the VFX impact and effects
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eHowl, oTarget));
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
}
}
}
//Get next target in spell area
oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC));
}
}

View File

@@ -0,0 +1,71 @@
//::///////////////////////////////////////////////
//:: Pulse: Constitution Drain
//:: NW_S1_PulsDeath
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
A wave of energy emanates from the creature which affects
all within 10ft. Damage can be reduced by half for all
damaging variants.
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: May 14, 2000
//:://////////////////////////////////////////////
#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 = nHD/5;
if (nDamage == 0) {nDamage = 1;}
float fDelay;
effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY);
effect eHowl;
effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_NEGATIVE);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC);
//Get first target in spell area
oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC));
while(GetIsObjectValid(oTarget))
{
if(oTarget != oNPC)
{
if(!GetIsReactionTypeFriendly(oTarget))
{
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_PULSE_ABILITY_DRAIN_CONSTITUTION));
//Determine effect delay
fDelay = GetDistanceBetween(oNPC, oTarget)/20;
//Make a saving throw check
if(!/*FortSave*/PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_NEGATIVE, oNPC, fDelay))
{
//Set the Ability mod and change to supernatural effect
eHowl = EffectAbilityDecrease(ABILITY_CONSTITUTION, nDamage);
eHowl = SupernaturalEffect(eHowl);
//Apply the VFX impact and effects
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_PERMANENT, eHowl, oTarget));
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
}
}
}
//Get first target in spell area
oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC));
}
}

View File

@@ -0,0 +1,68 @@
//::///////////////////////////////////////////////
//:: Pulse: Death
//:: NW_S1_PulsDeath
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
A wave of energy emanates from the creature which affects
all within 10ft. Damage can be reduced by half for all
damaging variants.
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: May 14, 2000
//:://////////////////////////////////////////////
#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 = nHD/5;
if (nDamage == 0) {nDamage = 1;}
float fDelay;
effect eVis = EffectVisualEffect(VFX_IMP_DEATH);
effect eHowl = EffectDeath();
effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_NEGATIVE);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC);
//Get first target in spell area
oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC));
while(GetIsObjectValid(oTarget))
{
if(!GetIsReactionTypeFriendly(oTarget))
{
if(oTarget != OBJECT_SELF)
{
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_PULSE_DEATH));
//Determine effect delay
fDelay = GetDistanceBetween(oNPC, oTarget)/20;
if(!/*FortSave*/PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_DEATH, oNPC, fDelay))
{
//Apply the VFX impact and effects
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eHowl, oTarget));
//DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
}
}
}
//Get next target in spell area
oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC));
}
}

View File

@@ -0,0 +1,70 @@
//::///////////////////////////////////////////////
//:: Pulse: Dexterity Drain
//:: NW_S1_PulsDeath
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
A wave of energy emanates from the creature which affects
all within 10ft. Damage can be reduced by half for all
damaging variants.
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: May 14, 2000
//:://////////////////////////////////////////////
#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 = nHD/5;
if (nDamage == 0) {nDamage = 1;}
float fDelay;
effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY);
effect eHowl;
effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_NEGATIVE);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC);
//Get first target in spell area
oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC));
while(GetIsObjectValid(oTarget))
{
if(oTarget != oNPC)
{
if(!GetIsReactionTypeFriendly(oTarget))
{
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_PULSE_ABILITY_DRAIN_DEXTERITY));
//Determine effect delay
fDelay = GetDistanceBetween(oNPC, oTarget)/20;
//Make a saving throw check
if(!/*FortSave*/PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_NEGATIVE, oNPC, fDelay))
{
//Set the Ability mod and change to supernatural effect
eHowl = EffectAbilityDecrease(ABILITY_DEXTERITY, nDamage);
eHowl = SupernaturalEffect(eHowl);
//Apply the VFX impact and effects
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_PERMANENT, eHowl, oTarget));
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
}
}
}
//Get first target in spell area
oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC));
}
}

View File

@@ -0,0 +1,85 @@
//::///////////////////////////////////////////////
//:: Pulse: Disease
//:: NW_S1_PulsDis
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
A wave of disease spreads out from the creature
and infects all those within 10ft
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: Aug 14, 2000
//:://////////////////////////////////////////////
//#include "wm_include"
#include "prc_inc_spells"
void main()
{
//if (WildMagicOverride()) { return; }
//:: Declare major variables
object oNPC = OBJECT_SELF;
object oTarget;
int nRacial = MyPRCGetRacialType(oNPC);
int nHD = GetHitDice(oNPC);
int nDamage = d6(nHD);
int nDisease;
float fDelay;
effect eDisease;
effect ePulse = EffectVisualEffect(266);
effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_NATURE);
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, ePulse, GetLocation(oNPC));
//Determine the disease type based on the Racial Type
switch (nRacial)
{
case RACIAL_TYPE_VERMIN:
nDisease = DISEASE_VERMIN_MADNESS;
break;
case RACIAL_TYPE_UNDEAD:
nDisease = DISEASE_FILTH_FEVER;
break;
case RACIAL_TYPE_OUTSIDER:
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_MINDFIRE;
break;
}
ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC);
//Get first target in spell area
oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC));
while(GetIsObjectValid(oTarget))
{
if(oTarget != oNPC)
{
if(!GetIsReactionTypeFriendly(oTarget))
{
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_PULSE_DISEASE));
//Determine effect delay
fDelay = GetDistanceBetween(OBJECT_SELF, oTarget)/20;
eDisease = EffectDisease(nDisease);
//Apply the VFX impact and effects
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDisease, oTarget));
}
}
//Get next target in spell area
oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC));
}
}

View File

@@ -0,0 +1,68 @@
//::///////////////////////////////////////////////
//:: Pulse: Lightning
//:: NW_S0_CallLghtn.nss
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
All creatures within 10ft of the creature take
1d6 per HD up to 10d6
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: May 22, 2001
//:://////////////////////////////////////////////
//#include "wm_include"
#include "prc_inc_spells"
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;
effect eVis = EffectVisualEffect(VFX_IMP_LIGHTNING_S);
effect eLightning = EffectBeam(VFX_BEAM_LIGHTNING, oNPC, BODY_NODE_CHEST);
effect eHowl = EffectVisualEffect(VFX_IMP_PULSE_COLD);
DelayCommand(0.5, ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eHowl, GetLocation(oNPC)));
float fDelay;
//Get first target in spell area
oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC));
while(GetIsObjectValid(oTarget))
{
if(oTarget != oNPC)
{
if(!GetIsReactionTypeFriendly(oTarget))
{
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_PULSE_LIGHTNING));
//Roll the damage
nDamage = d6(nHD);
//Adjust the damage based on the Reflex Save, Evasion and Improved Evasion.
nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC, SAVING_THROW_TYPE_ELECTRICITY);
//Determine effect delay
fDelay = GetDistanceBetween(oNPC, oTarget)/20;
eHowl = EffectDamage(nDamage, DAMAGE_TYPE_ELECTRICAL);
if(nDamage > 0)
{
//Apply the VFX impact and effects
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eHowl, oTarget));
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eLightning,oTarget, 0.5));
}
}
}
//Get next target in spell area
oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC));
}
}

View File

@@ -0,0 +1,69 @@
//::///////////////////////////////////////////////
//:: Pulse: Fire
//:: NW_S1_PulsFire
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
A wave of energy emanates from the creature which affects
all within 10ft. Damage can be reduced by half for all
damaging variants.
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: May 14, 2000
//:://////////////////////////////////////////////
//#include "wm_include"
#include "prc_inc_spells"
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;
float fDelay;
effect eVis = EffectVisualEffect(VFX_IMP_FLAME_S);
effect eHowl;
effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_FIRE);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, OBJECT_SELF);
//Get first target in spell area
oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(OBJECT_SELF));
while(GetIsObjectValid(oTarget))
{
if(oTarget != OBJECT_SELF)
{
if(!GetIsReactionTypeFriendly(oTarget))
{
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_PULSE_FIRE));
//Roll the damage
nDamage = d6(nHD);
//Adjust the damage based on the Reflex Save, Evasion and Improved Evasion.
nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC, SAVING_THROW_TYPE_FIRE);
//Determine effect delay
fDelay = GetDistanceBetween(OBJECT_SELF, oTarget)/20;
eHowl = EffectDamage(nDamage, DAMAGE_TYPE_FIRE);
if(nDamage > 0)
{
//Apply the VFX impact and effects
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eHowl, oTarget));
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
}
}
}
//Get next target in spell area
oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(OBJECT_SELF));
}
}

View File

@@ -0,0 +1,89 @@
//::///////////////////////////////////////////////
//:: Pulse: Holy
//:: NW_S1_PulsHoly
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
A wave of energy emanates from the creature which affects
all within 10ft. Damage can be reduced by half for all
damaging variants. Undead are damaged, allies are healed.
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: May 14, 2000
//:://////////////////////////////////////////////
//#include "wm_include"
#include "prc_inc_spells"
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;
float fDelay;
effect eVis = EffectVisualEffect(VFX_IMP_HEALING_M);
effect eVis2 = EffectVisualEffect(VFX_IMP_SUNSTRIKE);
effect eHowl;
effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_HOLY);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC);
//Get first target in spell area
oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC));
while(GetIsObjectValid(oTarget))
{
//Determine effect delay
fDelay = GetDistanceBetween(oNPC, oTarget)/20;
//Roll the amount to heal or damage
nDamage = d4(nHD);
//If the target is not undead
if (MyPRCGetRacialType(oTarget) != RACIAL_TYPE_UNDEAD)
{
//Make a faction check
if(oTarget != oNPC)
{
if(GetIsFriend(oTarget))
{
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_PULSE_HOLY, FALSE));
//Set heal effect
eHowl = EffectHeal(nDamage);
//Apply the VFX impact and effects
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eHowl, oTarget));
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
}
}
}
else
{
if(!GetIsReactionTypeFriendly(oTarget))
{
//Adjust the damage based on the Reflex Save, Evasion and Improved Evasion.
nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC, SAVING_THROW_TYPE_DIVINE);
//Set damage effect
eHowl = EffectDamage(nDamage, DAMAGE_TYPE_DIVINE) ;
if(nDamage > 0)
{
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_PULSE_HOLY));
//Apply the VFX impact and effects
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eHowl, oTarget));
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis2, oTarget));
}
}
}
//Get next target in spell area
oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC));
}
}

View File

@@ -0,0 +1,72 @@
//::///////////////////////////////////////////////
//:: Pulse: Intelligence Drain
//:: NW_S1_PulsDeath
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
A wave of energy emanates from the creature which affects
all within 10ft. Damage can be reduced by half for all
damaging variants.
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: May 14, 2000
//:://////////////////////////////////////////////
#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 = nHD/5;
if (nDamage == 0) {nDamage = 1;}
float fDelay;
effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY);
effect eHowl;
effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_NEGATIVE);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC);
//Get first target in spell area
oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC));
while(GetIsObjectValid(oTarget))
{
if(oTarget != oNPC)
{
if(!GetIsReactionTypeFriendly(oTarget))
{
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_PULSE_ABILITY_DRAIN_INTELLIGENCE));
//Determine effect delay
fDelay = GetDistanceBetween(oNPC, oTarget)/20;
//Make a saving throw check
if(!/*FortSave*/PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_NEGATIVE, oNPC, fDelay))
{
//Set the Ability mod and change to supernatural effect
eHowl = EffectAbilityDecrease(ABILITY_INTELLIGENCE, nDamage);
eHowl = SupernaturalEffect(eHowl);
//Apply the VFX impact and effects
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_PERMANENT, eHowl, oTarget));
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
}
}
}
//Get first target in spell area
oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(OBJECT_SELF));
}
}

View File

@@ -0,0 +1,62 @@
//::///////////////////////////////////////////////
//:: Pulse: Level Drain
//:: NW_S1_PulsLvlDr
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
A wave of energy emanates from the creature which affects
all within 10ft. Damage can be reduced by half for all
damaging variants.
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: May 14, 2000
//:://////////////////////////////////////////////
#include "NW_I0_SPELLS"
#include "prc_inc_spells"
//#include "wm_include"
void main()
{
//if (WildMagicOverride()) { return; }
//:: 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);
float fDelay;
effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY);
effect eHowl;
effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_NEGATIVE);
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eImpact, GetLocation(oNPC));
//Get first target in spell area
oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC));
while(GetIsObjectValid(oTarget))
{
if(oTarget != oNPC)
{
if(!GetIsReactionTypeFriendly(oTarget))
{
fDelay = GetSpellEffectDelay(GetLocation(oNPC), oTarget)/20;
//Make a saving throw check
if(!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_NEGATIVE, oNPC, fDelay))
{
//Apply the VFX impact and effects
eHowl = EffectNegativeLevel(1);
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_PERMANENT, eHowl, oTarget));
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
}
}
}
//Get next target in spell area
oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC));
}
}

View File

@@ -0,0 +1,87 @@
//::///////////////////////////////////////////////
//:: Pulse: Negative
//:: NW_S1_PulsDeath
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
A wave of energy emanates from the creature which affects
all within 10ft. Damage can be reduced by half for all
damaging variants. Undead are healed.
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: May 14, 2000
//:://////////////////////////////////////////////
#include "prc_inc_spells"
//#include "wm_include"
void main()
{
//if (WildMagicOverride()) { return; }
//:: 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 nDamage;
float fDelay;
effect eVis = EffectVisualEffect(VFX_IMP_HEALING_M);
effect eVis2 = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY);
effect eHowl;
effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_NEGATIVE);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC);
//Get first target in spell area
oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC));
while(GetIsObjectValid(oTarget))
{
if(oTarget != oNPC)
{
//Determine effect delay
fDelay = GetDistanceBetween(oNPC, oTarget)/20;
//Roll the amount to heal or damage
nDamage = d4(nHD);
//If the target is undead
if (MyPRCGetRacialType(oTarget) == RACIAL_TYPE_UNDEAD)
{
//Make a faction check
if(GetIsFriend(oTarget))
{
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_PULSE_HOLY, FALSE));
//Set heal effect
eHowl = EffectHeal(nDamage);
//Apply the VFX impact and effects
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eHowl, oTarget));
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
}
}
else
{
if(!GetIsReactionTypeFriendly(oTarget) && MyPRCGetRacialType(oTarget) != RACIAL_TYPE_UNDEAD)
{
//Adjust the damage based on the Reflex Save, Evasion and Improved Evasion.
nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC, SAVING_THROW_TYPE_NEGATIVE);
//Set damage effect
eHowl = EffectDamage(nDamage, DAMAGE_TYPE_NEGATIVE);
if(nDamage > 0)
{
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_PULSE_HOLY));
//Apply the VFX impact and effects
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eHowl, oTarget));
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis2, oTarget));
}
}
}
}
//Get next target in spell area
oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC));
}
}

View File

@@ -0,0 +1,138 @@
//::///////////////////////////////////////////////
//:: Pulse: Poison
//:: NW_S1_PulsPois
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
A wave of energy emanates from the creature which affects
all within 10ft. All who make a reflex save are not
poisoned.
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: May 23, 2000
//:://////////////////////////////////////////////
#include "prc_inc_racial"
//#include "wm_include"
void main()
{
//:: Declare major variables
object oNPC = OBJECT_SELF;
object oTarget;
int nHD = GetHitDice(oNPC);
int nCONMod = GetAbilityModifier(ABILITY_CONSTITUTION, oNPC);
int nDC = 10 +nCONMod+ (nHD/2);
int nRacial = MyPRCGetRacialType(oNPC);
int nPoison;
float fDelay;
effect ePoison;
effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_NATURE);
//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;
}
ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC);
//Get first target in spell area
oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC));
while(GetIsObjectValid(oTarget))
{
if(oTarget != oNPC)
{
if(!GetIsReactionTypeFriendly(oTarget))
{
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_PULSE_POISON));
//Determine effect delay
fDelay = GetDistanceBetween(oNPC, oTarget)/20;
ePoison = EffectPoison(nPoison);
//Apply the VFX impact and effects
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_PERMANENT, ePoison, oTarget));
}
}
//Get next target in spell area
oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC));
}
}

View File

@@ -0,0 +1,50 @@
//::///////////////////////////////////////////////
//:: Vrock Spores
//:: NW_S1_PulsSpore
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
A wave of disease spreads out from the creature
and infects all those within 10ft
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: Jan 8, 2002
//:://////////////////////////////////////////////
//#include "wm_include"
void main()
{
//if (WildMagicOverride()) { return; }
//:: Declare major variables
object oNPC = OBJECT_SELF;
object oTarget;
float fDelay;
effect eDisease;
effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_NATURE);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC);
//Get first target in spell area
oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_MEDIUM, GetLocation(oNPC));
while(GetIsObjectValid(oTarget))
{
if(oTarget != oNPC)
{
if(!GetIsReactionTypeFriendly(oTarget))
{
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_PULSE_DISEASE));
//Determine effect delay
fDelay = GetDistanceBetween(oNPC, oTarget)/20;
eDisease = EffectDisease(DISEASE_SOLDIER_SHAKES);
//Apply the VFX impact and effects
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDisease, oTarget));
}
}
//Get next target in spell area
oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_MEDIUM, GetLocation(oNPC));
}
}

View File

@@ -0,0 +1,71 @@
//::///////////////////////////////////////////////
//:: Pulse: Strength Drain
//:: NW_S1_PulsDeath
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
A wave of energy emanates from the creature which affects
all within 10ft. Damage can be reduced by half for all
damaging variants.
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: May 14, 2000
//:://////////////////////////////////////////////
#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 = nHD/5;
if (nDamage == 0) {nDamage = 1;}
float fDelay;
effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_NEGATIVE);
effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY);
effect eHowl;
ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC);
//Get first target in spell area
oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC));
while(GetIsObjectValid(oTarget))
{
if(oTarget != oNPC)
{
if(!GetIsReactionTypeFriendly(oTarget))
{
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_PULSE_ABILITY_DRAIN_STRENGTH));
//Determine effect delay
fDelay = GetDistanceBetween(oNPC, oTarget)/20;
//Make a saving throw check
if(!/*FortSave*/PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_NEGATIVE, oNPC, fDelay))
{
//Set the Ability mod and change to supernatural effect
eHowl = EffectAbilityDecrease(ABILITY_STRENGTH, nDamage);
eHowl = SupernaturalEffect(eHowl);
//Apply the VFX impact and effects
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_PERMANENT, eHowl, oTarget));
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
}
}
}
//Get next target in spell area
oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC));
}
}

View File

@@ -0,0 +1,51 @@
//::///////////////////////////////////////////////
//:: Pulse Whirlwind
//:: NW_S1_PulsWind
//:: Copyright (c) 2001 Bioware Corp.
//::///////////////////////////////////////////////
/*
All those that fail a save are knocked
down by the elemental whirlwind.
*/
//::///////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: Jan 8, 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;
int nHD = GetHitDice(oNPC);
int nSTRMod = GetAbilityModifier(ABILITY_STRENGTH, oNPC);
int nDC = 10 +nSTRMod+ (nHD/2);
effect eDown = EffectKnockdown();
effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_WIND);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC);
//Get first target in spell area
oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC));
while(GetIsObjectValid(oTarget))
{
if(!GetIsReactionTypeFriendly(oTarget) && oTarget != oNPC)
{
//Make a saving throw check
if(!PRCMySavingThrow(SAVING_THROW_REFLEX, oTarget, nDC))
{
//Apply the VFX impact and effects
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eDown, oTarget, 5.0);
}
//Get next target in spell area
}
oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC));
}
}

View File

@@ -0,0 +1,68 @@
//::///////////////////////////////////////////////
//:: Pulse: Wisdom Drain
//:: NW_S1_PulsWisDr
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
A wave of energy emanates from the creature which affects
all within 10ft. Damage can be reduced by half for all
damaging variants.
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: May 14, 2000
//:://////////////////////////////////////////////
#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 = nHD/5;
if (nDamage == 0) {nDamage = 1;}
float fDelay;
effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY);
effect eHowl;
effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_NEGATIVE);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, OBJECT_SELF);
//Get first target in spell area
oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_MEDIUM, GetLocation(OBJECT_SELF));
while(GetIsObjectValid(oTarget))
{
if(!GetIsReactionTypeFriendly(oTarget) && oTarget != OBJECT_SELF)
{
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_PULSE_ABILITY_DRAIN_WISDOM));
//Determine effect delay
fDelay = GetDistanceBetween(oNPC, oTarget)/20;
//Make a saving throw check
if(!/*FortSave*/PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_NEGATIVE, oNPC, fDelay))
{
//Set the Ability mod and change to supernatural effect
eHowl = EffectAbilityDecrease(ABILITY_WISDOM, nDamage);
eHowl = SupernaturalEffect(eHowl);
//Apply the VFX impact and effects
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_PERMANENT, eHowl, oTarget));
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
}
}
//Get first target in spell area
oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_MEDIUM, GetLocation(OBJECT_SELF));
}
}

View File

@@ -0,0 +1,64 @@
//::///////////////////////////////////////////////
//:: Smoke Claws
//:: NW_S1_SmokeClaw
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
If a Belker succeeds at a touch attack the
target breaths in part of the Belker and suffers
3d4 damage per round until a Fortitude save is
made.
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: May 23 , 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 bSave = FALSE;
effect eVis = EffectVisualEffect(VFX_COM_BLOOD_REG_RED);
effect eSmoke;
float fDelay = 0.0;
//Make a touch attack
if(TouchAttackMelee(oTarget))
{
if(!GetIsReactionTypeFriendly(oTarget))
{
//Make a saving throw check
while (bSave == FALSE)
{
//Make a saving throw check
if(!/*FortSave*/PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_NONE, oNPC, fDelay))
{
bSave = TRUE;
}
else
{
//Set damage
eSmoke = EffectDamage(d4(3));
//Apply the VFX impact and effects
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eSmoke, oTarget));
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
//Increment the delay
fDelay = fDelay + 6.0;
}
}
}
}
}

View File

@@ -0,0 +1,57 @@
//::///////////////////////////////////////////////
//:: Stinking Cloud On Enter
//:: NW_S1_Stink_A.nss
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
Those within the area of effect must make a
fortitude save or be dazed.
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: May 17, 2001
//:://////////////////////////////////////////////
#include "NW_I0_SPELLS"
//#include "wm_include"
#include "prc_inc_spells"
void main()
{
//:: Declare major variables
object oNPC = GetAreaOfEffectCreator();
object oTarget = GetEnteringObject(); //Get the first object in the persistant area
int nHD = GetHitDice(oNPC);
int nCONMod = GetAbilityModifier(ABILITY_CONSTITUTION, oNPC);
int nDC = 10 +nCONMod+ (nHD/2);
effect eStink = EffectDazed();
effect eMind = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_DISABLED);
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
effect eLink = EffectLinkEffects(eMind, eStink);
eLink = EffectLinkEffects(eLink, eDur);
effect eVis = EffectVisualEffect(VFX_IMP_DAZED_S);
float fDelay;
//if (NullMagicOverride(GetArea(oTarget), oTarget, oTarget)) {return;}
if(MyPRCGetRacialType(oTarget) != RACIAL_TYPE_VERMIN)
{
if(GetIsEnemy(oTarget))
{
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_STINKING_CLOUD));
//Make a Fort Save
if(!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_POISON))
{
fDelay = GetRandomDelay(0.25, 1.0);
//Apply the VFX impact and linked effects
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(2)));
}
}
}
}

View File

@@ -0,0 +1,56 @@
//::///////////////////////////////////////////////
//:: Tyrant Fog Zombie Mist Heartbeat
//:: NW_S1_TyrantFgA.nss
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
Creatures entering the area around the zombie
must save or take 1 point of Constitution
damage.
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: May 25, 2001
//:://////////////////////////////////////////////
#include "NW_I0_SPELLS"
//#include "wm_include"
#include "prc_inc_spells"
void main()
{
//if (WildMagicOverride()) { return; }
//:: Declare major variables
object oNPC = GetAreaOfEffectCreator();
object oTarget = GetEnteringObject();
//if (NullMagicOverride(GetArea(oTarget), oTarget, oTarget)) {return;}
int bAbsent = TRUE;
int nHD = GetHitDice(oNPC);
int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
int nDC = 10 +nCHAMod+ (nHD/2);
effect eTest;
effect eCon = EffectAbilityDecrease(ABILITY_CONSTITUTION, 1);
eCon = ExtraordinaryEffect(eCon);
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
effect eLink = EffectLinkEffects(eCon, eDur);
if(!GetHasSpellEffect(SPELLABILITY_TYRANT_FOG_MIST, oTarget))
{
if(bAbsent == TRUE)
{
if(GetIsEnemy(oTarget, oNPC))
{
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_TYRANT_FOG_MIST));
//Make a saving throw check
if(!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_POISON))
{
//Apply the VFX impact and effects
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(5));
}
}
}
}
}

View File

@@ -0,0 +1,25 @@
//::///////////////////////////////////////////////
//:: Tyrant Fog Zombie Mist
//:: NW_S1_TyrantFog.nss
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
Creatures entering the area around the zombie
must save or take 1 point of Constitution
damage.
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: May 25, 2001
//:://////////////////////////////////////////////
//#include "wm_include"
#include "prc_inc_spells"
void main()
{
//if (WildMagicOverride()) { return; }
//Declare and apply the AOE
effect eAOE = EffectAreaOfEffect(AOE_MOB_TYRANT_FOG);
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eAOE, OBJECT_SELF, HoursToSeconds(100));
}

View File

@@ -0,0 +1,45 @@
//::///////////////////////////////////////////////
//:: Divine Protection
//:: NW_S2_DivProt.nss
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
Makes the target creature invisible to hostile
creatures unless they make a Will Save to ignore
the Sanctuary Effect
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: Jan 8, 2002
//:://////////////////////////////////////////////
#include "prc_inc_spells"
//#include "wm_include"
void main()
{
//if (WildMagicOverride()) { return; }
//:: Declare major variables
object oNPC = OBJECT_SELF;
object oTarget = PRCGetSpellTargetObject();
effect eVis = EffectVisualEffect(VFX_DUR_SANCTUARY);
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE);
int nDC = 10 + GetAbilityModifier(ABILITY_CHARISMA) + GetLevelByTypeDivine(oNPC);
effect eSanc = EffectSanctuary(nDC);
effect eLink = EffectLinkEffects(eVis, eSanc);
eLink = EffectLinkEffects(eLink, eDur);
//Fire cast spell at event for the specified target
SignalEvent(OBJECT_SELF, EventSpellCastAt(oNPC, SPELLABILITY_DIVINE_PROTECTION, FALSE));
int nDuration = GetLevelByTypeDivine(oNPC);
//Enter Metamagic conditions
int nMetaMagic = PRCGetMetaMagicFeat();
if (nMetaMagic == METAMAGIC_EXTEND)
{
nDuration = nDuration *2; //Duration is +100%
}
//Apply the VFX impact and effects
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nDuration));
}

View File

@@ -0,0 +1,968 @@
//::///////////////////////////////////////////////
//:: Binding/Vestiges main include: Miscellaneous
//:: bnd_inc_bndfunc
//::///////////////////////////////////////////////
/** @file
Defines various functions and other stuff that
do something related to Binding.
@author Stratovarius
@date Created - 2021.02.02
*/
//:://////////////////////////////////////////////
//:://////////////////////////////////////////////
//////////////////////////////////////////////////
/* Function prototypes */
//////////////////////////////////////////////////
/**
* Determines the given creature's Binder level.
* The vestige is used for Favored Vestige
*
* @param oBinder The creature whose Binder level to determine
* @param nVestige The rowid of the vestige in spells.2da
*
* @return The Binder level
*/
int GetBinderLevel(object oBinder, int nVestige = -1);
/**
* Determines whether a given class is a Binding-related class or not.
*
* @param nClass CLASS_TYPE_* of the class to test
* @return TRUE if the class is a Binding-related class, FALSE otherwise
*/
int GetIsBindingClass(int nClass);
/**
* Calculates how many Binder levels are gained by a given creature from
* it's levels in prestige classes.
*
* @param oBinder Creature to calculate added Binder levels for
* @return The number of Binder levels gained
*/
int GetBindingPRCLevels(object oBinder);
/**
* Returns the master 2da of all vestiges - "vestiges"
*/
string GetVestigeFile();
/**
* Returns the master 2da of binds and bind levels - "cls_bind_binder"
*/
string GetBindingClassFile(int nClass);
/**
* Casts a particular vestige on the binder
* Should only ever be called via Contact Vestige
*
* @param oBinder The binder
* @param nVestige The vestige to attempt binding
*/
void ApplyVestige(object oBinder, int nVestige);
/**
* Removes a particular vestige from the binder
* Should only ever be called via Contact Vestige
*
* @param oBinder The binder
* @param nVestige The vestige to expel
*/
void ExpelVestige(object oBinder, int nVestige);
/**
* Rolls the check to see whether it is a good or bad pact
* Sets a local int to mark pact quality
*
* @param oBinder The binder attempting the check
* @param nVestige The rowid of the vestige in vestiges.2da
*
* @return The rowid of the vestige in spells.2da
*/
int DoBindingCheck(object oBinder, int nVestige);
/**
* Does the animations and count down to bind a particular vestige
*
* @param oBinder The binder
* @param nTime Should always be 66 seconds
* @param nVestige The vestige to attempt binding
* @param nExpel Whether this is a usage of expel vestige or not
*/
void ContactVestige(object oBinder, int nTime, int nVestige, int nExpel = FALSE);
/**
* Does the animations and count down to bind a particular vestige
* Should only ever be called via Contact Vestige
*
* @param oBinder The binder
* @param nTime Should always be 60 seconds
* @param nVestige The vestige to attempt binding
* @param nExpel Whether this is a usage of expel vestige or not
*/
void BindVestige(object oBinder, int nTime, int nVestige, int nExpel = FALSE);
/**
* Checks to see whether an ability is off cooldown or not
* Sets the cooldown if the ability is usable
* Informs the player via floating text
*
* @param oBinder The binder
* @param nAbil The vestige ability (such as Amon's Fire Breath SpellId)
* @param nVestige The vestige the ability comes from (such as VESTIGE_AMON)
*
* @return TRUE/FALSE for off cooldown or not
*/
int BindAbilCooldown(object oBinder, int nAbil, int nVestige);
/**
* How many vestiges can the binder have bound
*
* @param oBinder The binder
*
* @return A number between 1 and 4
*/
int GetMaxVestigeCount(object oBinder);
/**
* What is the highest level vestige the binder can bind?
*
* @param oBinder The binder
*
* @return A number between 1 and 8
*/
int GetMaxVestigeLevel(object oBinder);
/**
* What is the vestige's level?
*
* @param nVestige The vestige rowid in vestiges.2da
*
* @return A number between 1 and 8
*/
int GetVestigeLevel(int nVestige);
/**
* How many total binds are active on the binder?
* Checks via the spellid of the vestiges
*
* @param oBinder The binder
*
* @return 0 or higher
*/
int GetBindCount(object oBinder);
/**
* How many uses of pact augmentation does the
* binder get when he binds a vestige?
*
* @param oBinder The binder
*
* @return 0 to 5
*/
int GetPactAugmentCount(object oBinder);
/**
* Returns the penalty to be applied if the
* binder made a bad pact with the vestige
* Should never be called directly
*
* @param oBinder The binder
*
* @return Linked effect
*/
effect EffectPact(object oBinder);
/**
* Checks whether the binder has the rapid recovery
* feat for the named vestige
*
* @param oBinder The binder
* @param nVestige The vestige rowid in spells.2da
*
* @return TRUE/FALSE
*/
int RapidRecovery(object oBinder, int nVestige);
/**
* Checks whether the binder has the favored vestige
* feat for the named vestige
*
* @param oBinder The binder
* @param nVestige The vestige rowid in spells.2da
*
* @return TRUE/FALSE
*/
int FavoredVestige(object oBinder, int nVestige);
/**
* Checks whether the binder has the favored vestige
* focus feat for the named vestige
*
* @param oBinder The binder
* @param nVestige The vestige rowid in spells.2da
*
* @return TRUE/FALSE
*/
int FavoredVestigeFocus(object oBinder, int nVestige);
/**
* Returns the DC for saving against a vestige's abilities
* 10 + 1/2 Binding level + Charisma Modifier + bonuses
*
* @param oBinder The binder
* @param nVestige The vestige rowid in spells.2da
*
* @return A number
*/
int GetBinderDC(object oBinder, int nVestige);
/**
* Checks for the special requirements of each vestige
* or for the presence of the Ignore Special Requirements
* feat. True means passing requirements, False is a fail
*
* @param oBinder The binder
* @param nVestige The vestige rowid in spells.2da
*
* @return TRUE/FALSE
*/
int DoSpecialRequirements(object oBinder, int nVestige);
/**
* Checks for the special requirements of each vestige
* or for the presence of the Ignore Special Requirements
* feat. True means passing requirements, False is a fail
*
* This is for requirements that apply during the summoning process
* due to having a cost that applies only after the user has selected
* which vestige they wish to bind
*
* @param oBinder The binder
* @param nVestige The vestige rowid in spells.2da
*
* @return TRUE/FALSE
*/
int DoSummonRequirements(object oBinder, int nVestige);
/**
* Checks for whether the vestige ability was exploited (meaning not
* granted) by the Anima Mage class feature.
*
* @param oBinder The binder
* @param nVestige The vestige ability rowid in vestigeabil.2da
*
* @return TRUE if exploited/FALSE otherwise
*/
int GetIsVestigeExploited(object oBinder, int nVestigeAbil);
/**
* Marks a vestige ability as exploited (meaning it will not be
* granted) by the Anima Mage class feature.
*
* @param oBinder The binder
* @param nVestige The vestige ability rowid in vestigeabil.2da
*/
void SetIsVestigeExploited(object oBinder, int nVestigeAbil);
/**
* Checks whether the patron vestige is bound to a Knight of the Sacred Seal
* If not, the class loses all class features
*
* @param oBinder The binder
*
* @return TRUE if bound, FALSE otherwise
*/
int GetIsPatronVestigeBound(object oBinder);
/**
* Checks who the patron vestige is for a Knight of the Sacred Seal
* Used to ensure they always have a good pact with their patron
*
* @param oBinder The binder
*
* @return The VESTIGE_* const if one exists, -1 otherwise
*/
int GetPatronVestige(object oBinder);
//////////////////////////////////////////////////
/* Includes */
//////////////////////////////////////////////////
#include "prc_inc_spells"
#include "inc_dynconv"
//////////////////////////////////////////////////
/* Constants */
//////////////////////////////////////////////////
const int VESTIGE_CONTACT_TIME = 66;
const int VESTIGE_BINDING_TIME = 60;
//////////////////////////////////////////////////
/* Function definitions */
//////////////////////////////////////////////////
int GetBinderLevel(object oBinder, int nVestige = -1)
{
int nLevel;
if(GetLevelByClass(CLASS_TYPE_BINDER, oBinder))
{
// Binder level is class level + prestige
nLevel = GetLevelByClass(CLASS_TYPE_BINDER, oBinder);
nLevel += GetBindingPRCLevels(oBinder);
}
// If you have no levels in binder, but you have Bind Vestige feat
else if (GetHasFeat(FEAT_BIND_VESTIGE, oBinder))
{
nLevel = 1;
if (GetHasFeat(FEAT_BIND_VESTIGE_IMPROVED, oBinder)) nLevel += 4;
}
if (FavoredVestige(oBinder, nVestige)) nLevel += 1;
if (GetHasSpellEffect(VESTIGE_IPOS, oBinder) && !GetIsVestigeExploited(oBinder, VESTIGE_IPOS_INFLUENCE) && nVestige >= VESTIGE_AMON) nLevel += 1;
if(DEBUG) DoDebug("Binder Level: " + IntToString(nLevel));
return nLevel;
}
int GetIsBindingClass(int nClass)
{
return nClass == CLASS_TYPE_BINDER;
}
int GetBindingPRCLevels(object oBinder)
{
int nLevel = GetLevelByClass(CLASS_TYPE_ANIMA_MAGE, oBinder);
nLevel += GetLevelByClass(CLASS_TYPE_KNIGHT_SACRED_SEAL, oBinder);
nLevel += GetLevelByClass(CLASS_TYPE_SCION_DANTALION, oBinder);
// These don't add at 1st level
if (GetLevelByClass(CLASS_TYPE_TENEBROUS_APOSTATE, oBinder))
nLevel += GetLevelByClass(CLASS_TYPE_TENEBROUS_APOSTATE, oBinder) - 1;
return nLevel;
}
string GetVestigeFile()
{
return "vestiges";
}
string GetBindingClassFile(int nClass)
{
string sFile;
if (nClass == CLASS_TYPE_BINDER) sFile = "cls_bind_binder";
return sFile;
}
void ApplyVestige(object oBinder, int nVestige)
{
PRCRemoveSpellEffects(nVestige, oBinder, oBinder);
GZPRCRemoveSpellEffects(nVestige, oBinder, FALSE);
ActionCastSpellOnSelf(nVestige, METAMAGIC_NONE, oBinder);
if (GetLevelByClass(CLASS_TYPE_BINDER, oBinder) >= 2)
{
PRCRemoveSpellEffects(VESTIGE_PACT_AUGMENTATION, oBinder, oBinder);
GZPRCRemoveSpellEffects(VESTIGE_PACT_AUGMENTATION, oBinder, FALSE);
ActionCastSpellOnSelf(VESTIGE_PACT_AUGMENTATION, METAMAGIC_NONE, oBinder);
}
if (DEBUG) DoDebug("Applying Vestige "+IntToString(nVestige)+" on "+GetName(oBinder));
// If you have hosted one of these spirits within the last 24 hours, Amon refuses to answer your call.
if (nVestige == VESTIGE_LERAJE ||
nVestige == VESTIGE_CHUPOCLOPS ||
nVestige == VESTIGE_KARSUS ||
nVestige == VESTIGE_EURYNOME)
{
SetLocalInt(oBinder, "AmonHater", TRUE);
DelayCommand(HoursToSeconds(48), DeleteLocalInt(oBinder, "AmonHater"));
}
// Only good quality pacts get the bonus spell
if (GetLocalInt(oBinder, "PactQuality"+IntToString(nVestige)) && GetLocalInt(oBinder, "ExploitVestigeConv"))
{
DelayCommand(0.5, StartDynamicConversation("bnd_exploitcnv", oBinder, DYNCONV_EXIT_ALLOWED_SHOW_CHOICE, FALSE, TRUE, oBinder));
DeleteLocalInt(oBinder, "ExploitVestigeConv");
}
}
void ExpelVestige(object oBinder, int nVestige)
{
SetPersistantLocalInt(oBinder, "ExpelledVestige", TRUE);
SetPersistantLocalInt(oBinder, "ExpelledVestige"+IntToString(nVestige), TRUE);
// Here, making a good pack means we can unbind it
if (GetLocalInt(oBinder, "PactQuality"+IntToString(nVestige)))
{
PRCRemoveSpellEffects(nVestige, oBinder, oBinder);
GZPRCRemoveSpellEffects(nVestige, oBinder, FALSE);
FloatingTextStringOnCreature("Expelled "+GetStringByStrRef(StringToInt(Get2DACache("spells", "Name", nVestige)))+" successfully!", oBinder, FALSE);
}
else
FloatingTextStringOnCreature("Failed to expel "+GetStringByStrRef(StringToInt(Get2DACache("spells", "Name", nVestige))), oBinder, FALSE);
}
int DoBindingCheck(object oBinder, int nVestige)
{
int nApply = StringToInt(Get2DACache("vestiges", "SpellID", nVestige));
// Knights of the Sacred Seal always have a good pact with their Patron
if (GetPatronVestige(oBinder) == nApply)
{
SetLocalInt(oBinder, "PactQuality"+IntToString(nApply), TRUE);
return nApply; //We don't need the rest of the function here.
}
// Scions of Dantalion always have a good pact with Dantalion
if (GetLevelByClass(CLASS_TYPE_SCION_DANTALION, oBinder) && VESTIGE_DANTALION == nApply)
{
SetLocalInt(oBinder, "PactQuality"+IntToString(nApply), TRUE);
return nApply; //We don't need the rest of the function here.
}
int nRoll = d20()+ GetBinderLevel(oBinder) + GetAbilityModifier(ABILITY_CHARISMA, oBinder);
if (GetHasFeat(FEAT_SKILLED_PACT_MAKING, oBinder)) nRoll += 4;
// -10 penalty on the check
if (GetLocalInt(oBinder, "RushedBinding"))
{
DeleteLocalInt(oBinder, "RushedBinding");
nRoll -= 10;
}
// After expelling a vestige, take a -10 penalty on the check
if (GetPersistantLocalInt(oBinder, "ExpelledVestige"))
{
DeletePersistantLocalInt(oBinder, "ExpelledVestige");
nRoll -= 10;
}
// Next time you rebind an expelled vestige, take a penalty on the check
if (GetPersistantLocalInt(oBinder, "ExpelledVestige"+IntToString(nApply)))
{
DeletePersistantLocalInt(oBinder, "ExpelledVestige"+IntToString(nApply));
nRoll -= 10;
}
// Exploiting a vestige grants a -5 on the check
if (GetLocalInt(oBinder, "ExploitVestigeTemp"))
{
nRoll -= 5;
FloatingTextStringOnCreature("Exploiting vestige", oBinder);
// This int is only for this Binding check
DeleteLocalInt(oBinder, "ExploitVestigeTemp");
}
int nDC = StringToInt(Get2DACache("vestiges", "BindDC", nVestige));
SendMessageToPC(oBinder, "Binding Check: "+IntToString(nRoll)+" vs a DC of "+IntToString(nDC));
DeleteLocalInt(oBinder, "PactQuality"+IntToString(nApply));
// Mark a good pact
if (nRoll >= nDC) SetLocalInt(oBinder, "PactQuality"+IntToString(nApply), TRUE);
return nApply;
}
void BindVestige(object oBinder, int nTime, int nVestige, int nExpel = FALSE)
{
if (0 >= nTime)
{
SetCutsceneMode(oBinder, FALSE);
// We're expelling a vestige, not binding one
if (nExpel)
ExpelVestige(oBinder, DoBindingCheck(oBinder, nVestige));
// Make a check and apply the vestige
else
ApplyVestige(oBinder, DoBindingCheck(oBinder, nVestige));
}
else if (!GetIsInCombat(oBinder)) // Being in combat causes this to fail
{
FloatingTextStringOnCreature("You must spend " + IntToString(nTime) +" more seconds to complete the binding", oBinder, FALSE);
DelayCommand(6.0, BindVestige(oBinder, nTime - 6, nVestige, nExpel));
SetCutsceneMode(oBinder, TRUE);
AssignCommand(oBinder, ActionPlayAnimation(ANIMATION_LOOPING_TALK_PLEADING, 1.0, 6.0));
ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, EffectVisualEffect(VFX_DUR_MAZE), GetLocation(oBinder), 6.0);
}
else
SetCutsceneMode(oBinder, FALSE);
}
void ContactVestige(object oBinder, int nTime, int nVestige, int nExpel = FALSE)
{
if (0 >= nTime)
{
SetCutsceneMode(oBinder, FALSE);
if (!DoSummonRequirements(oBinder, nVestige)) return;
int nBindTime = VESTIGE_BINDING_TIME;
if(GetPRCSwitch(PRC_BIND_VESTIGE_TIMER) >= 12) nBindTime = GetPRCSwitch(PRC_BIND_VESTIGE_TIMER);
if (GetLocalInt(oBinder, "RushedBinding") || GetLocalInt(oBinder, "RapidPactMaking")) nBindTime = 6;
BindVestige(oBinder, nBindTime, nVestige, nExpel);
}
else if (!GetIsInCombat(oBinder)) // Being in combat causes this to fail
{
FloatingTextStringOnCreature("You must draw the symbol for another " + IntToString(nTime) +" seconds", oBinder, FALSE);
DelayCommand(6.0, ContactVestige(oBinder, nTime - 6, nVestige, nExpel));
SetCutsceneMode(oBinder, TRUE);
AssignCommand(oBinder, ActionPlayAnimation(ANIMATION_LOOPING_MEDITATE, 1.0, 6.0));
ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, EffectVisualEffect(VFX_DUR_SYMB_INSAN), GetLocation(oBinder), 6.0);
}
else
SetCutsceneMode(oBinder, FALSE);
}
int BindAbilCooldown(object oBinder, int nAbil, int nVestige)
{
int nCheck = GetLocalInt(oBinder, "Bind"+IntToString(nAbil));
// On Cooldown
if (nCheck)
{
// Free use
if (GetLocalInt(oBinder, "KotSSSurge"))
{
DeleteLocalInt(oBinder, "KotSSSurge");
FloatingTextStringOnCreature("Using Vestige's Surge on "+GetStringByStrRef(StringToInt(Get2DACache("spells", "Name", nAbil))), oBinder, FALSE);
return TRUE;
}
FloatingTextStringOnCreature(GetStringByStrRef(StringToInt(Get2DACache("spells", "Name", nAbil)))+" is still on cooldown!", oBinder, FALSE);
return FALSE;
}
else
{
SetLocalInt(oBinder, "Bind"+IntToString(nAbil), TRUE);
// Default number of rounds
int nDelay = 5;
// Makes it one round faster
if (RapidRecovery(oBinder, nVestige)) nDelay -= 1;
DelayCommand(RoundsToSeconds(nDelay), DeleteLocalInt(oBinder, "Bind"+IntToString(nAbil)));
DelayCommand(RoundsToSeconds(nDelay), FloatingTextStringOnCreature(GetStringByStrRef(StringToInt(Get2DACache("spells", "Name", nAbil)))+" is off cooldown", oBinder, FALSE));
FloatingTextStringOnCreature("You must wait " + IntToString(nDelay) +" rounds before using "+GetStringByStrRef(StringToInt(Get2DACache("spells", "Name", nAbil)))+" again", oBinder, FALSE);
}
return TRUE;
}
int GetMaxVestigeCount(object oBinder)
{
int nMax = StringToInt(Get2DACache(GetBindingClassFile(CLASS_TYPE_BINDER), "Vestiges", GetBinderLevel(oBinder)));
if (DEBUG) DoDebug("GetMaxVestigeCount is "+IntToString(nMax));
return nMax;
}
int GetMaxVestigeLevel(object oBinder)
{
int nLevel = GetBinderLevel(oBinder);
if (GetHasFeat(FEAT_IMPROVED_BINDING, oBinder)) nLevel += 2;
// Due to the 2da starting at row 0
int nMax = StringToInt(Get2DACache(GetBindingClassFile(CLASS_TYPE_BINDER), "VestigeLvl", nLevel - 1));
if (DEBUG) DoDebug("GetMaxVestigeLevel is "+IntToString(nMax));
return nMax;
}
int GetVestigeLevel(int nVestige)
{
int nMax = StringToInt(Get2DACache("Vestiges", "Level", nVestige));
if (DEBUG) DoDebug("GetVestigeLevel is "+IntToString(nMax));
return nMax;
}
int GetBindCount(object oBinder)
{
int i, nCount;
for(i = VESTIGE_AMON; i <= VESTIGE_ABYSM; i++)
if(GetHasSpellEffect(i, oBinder)) nCount++;
if (DEBUG) DoDebug("GetBindCount is "+IntToString(nCount));
return nCount;
}
int GetPactAugmentCount(object oBinder)
{
int nClass = GetLevelByClass(CLASS_TYPE_BINDER, oBinder);
int nCount = 0;
if (nClass >= 20) nCount = 5;
else if (nClass >= 16) nCount = 4;
else if (nClass >= 10) nCount = 3;
else if (nClass >= 5) nCount = 2;
else if (nClass >= 2) nCount = 1;
if (DEBUG) DoDebug("GetPactAugmentCount is "+IntToString(nCount));
return nCount;
}
effect EffectPact(object oBinder)
{
effect eEffect;
if (!GetLocalInt(oBinder, "PactQuality"+IntToString(GetSpellId())))
{
// <20>1 penalty on attack rolls, saving throws, and skill checks
eEffect = EffectLinkEffects(EffectSkillDecrease(SKILL_ALL_SKILLS, 1), EffectSavingThrowDecrease(SAVING_THROW_ALL, 1));
eEffect = EffectLinkEffects(eEffect, EffectAttackDecrease(1));
}
else // NWN hates having a blank effect
eEffect = EffectLinkEffects(EffectSkillDecrease(SKILL_DISCIPLINE, 1), EffectSkillIncrease(SKILL_DISCIPLINE, 1));
return eEffect;
}
int RapidRecovery(object oBinder, int nVestige)
{
int nFavored;
if (GetHasFeat(FEAT_RAPID_RECOVERY_AMON, oBinder) && nVestige == VESTIGE_AMON) nFavored = TRUE;
else if (GetHasFeat(FEAT_RAPID_RECOVERY_AYM , oBinder) && nVestige == VESTIGE_AYM ) nFavored = TRUE;
else if (GetHasFeat(FEAT_RAPID_RECOVERY_LERAJE , oBinder) && nVestige == VESTIGE_LERAJE ) nFavored = TRUE;
else if (GetHasFeat(FEAT_RAPID_RECOVERY_NABERIUS , oBinder) && nVestige == VESTIGE_NABERIUS ) nFavored = TRUE;
else if (GetHasFeat(FEAT_RAPID_RECOVERY_RONOVE , oBinder) && nVestige == VESTIGE_RONOVE ) nFavored = TRUE;
else if (GetHasFeat(FEAT_RAPID_RECOVERY_DAHLVERNAR , oBinder) && nVestige == VESTIGE_DAHLVERNAR ) nFavored = TRUE;
else if (GetHasFeat(FEAT_RAPID_RECOVERY_HAAGENTI , oBinder) && nVestige == VESTIGE_HAAGENTI ) nFavored = TRUE;
else if (GetHasFeat(FEAT_RAPID_RECOVERY_MALPHAS , oBinder) && nVestige == VESTIGE_MALPHAS ) nFavored = TRUE;
else if (GetHasFeat(FEAT_RAPID_RECOVERY_SAVNOK , oBinder) && nVestige == VESTIGE_SAVNOK ) nFavored = TRUE;
else if (GetHasFeat(FEAT_RAPID_RECOVERY_ANDROMALIUS, oBinder) && nVestige == VESTIGE_ANDROMALIUS) nFavored = TRUE;
else if (GetHasFeat(FEAT_RAPID_RECOVERY_FOCALOR , oBinder) && nVestige == VESTIGE_FOCALOR ) nFavored = TRUE;
else if (GetHasFeat(FEAT_RAPID_RECOVERY_KARSUS , oBinder) && nVestige == VESTIGE_KARSUS ) nFavored = TRUE;
else if (GetHasFeat(FEAT_RAPID_RECOVERY_PAIMON , oBinder) && nVestige == VESTIGE_PAIMON ) nFavored = TRUE;
else if (GetHasFeat(FEAT_RAPID_RECOVERY_AGARES , oBinder) && nVestige == VESTIGE_AGARES ) nFavored = TRUE;
else if (GetHasFeat(FEAT_RAPID_RECOVERY_ANDRAS , oBinder) && nVestige == VESTIGE_ANDRAS ) nFavored = TRUE;
else if (GetHasFeat(FEAT_RAPID_RECOVERY_BUER , oBinder) && nVestige == VESTIGE_BUER ) nFavored = TRUE;
else if (GetHasFeat(FEAT_RAPID_RECOVERY_EURYNOME , oBinder) && nVestige == VESTIGE_EURYNOME ) nFavored = TRUE;
else if (GetHasFeat(FEAT_RAPID_RECOVERY_TENEBROUS , oBinder) && nVestige == VESTIGE_TENEBROUS ) nFavored = TRUE;
else if (GetHasFeat(FEAT_RAPID_RECOVERY_ARETE , oBinder) && nVestige == VESTIGE_ARETE ) nFavored = TRUE;
else if (GetHasFeat(FEAT_RAPID_RECOVERY_ASTAROTH , oBinder) && nVestige == VESTIGE_ASTAROTH ) nFavored = TRUE;
else if (GetHasFeat(FEAT_RAPID_RECOVERY_ACERERAK , oBinder) && nVestige == VESTIGE_ACERERAK ) nFavored = TRUE;
else if (GetHasFeat(FEAT_RAPID_RECOVERY_BALAM , oBinder) && nVestige == VESTIGE_BALAM ) nFavored = TRUE;
else if (GetHasFeat(FEAT_RAPID_RECOVERY_DANTALION , oBinder) && nVestige == VESTIGE_DANTALION ) nFavored = TRUE;
else if (GetHasFeat(FEAT_RAPID_RECOVERY_GERYON , oBinder) && nVestige == VESTIGE_GERYON ) nFavored = TRUE;
else if (GetHasFeat(FEAT_RAPID_RECOVERY_OTIAX , oBinder) && nVestige == VESTIGE_OTIAX ) nFavored = TRUE;
else if (GetHasFeat(FEAT_RAPID_RECOVERY_CHUPOCLOPS , oBinder) && nVestige == VESTIGE_CHUPOCLOPS ) nFavored = TRUE;
else if (GetHasFeat(FEAT_RAPID_RECOVERY_HAURES , oBinder) && nVestige == VESTIGE_HAURES ) nFavored = TRUE;
else if (GetHasFeat(FEAT_RAPID_RECOVERY_IPOS , oBinder) && nVestige == VESTIGE_IPOS ) nFavored = TRUE;
else if (GetHasFeat(FEAT_RAPID_RECOVERY_SHAX , oBinder) && nVestige == VESTIGE_SHAX ) nFavored = TRUE;
else if (GetHasFeat(FEAT_RAPID_RECOVERY_ZAGAN , oBinder) && nVestige == VESTIGE_ZAGAN ) nFavored = TRUE;
else if (GetHasFeat(FEAT_RAPID_RECOVERY_VANUS , oBinder) && nVestige == VESTIGE_VANUS ) nFavored = TRUE;
else if (GetHasFeat(FEAT_RAPID_RECOVERY_THETRIAD , oBinder) && nVestige == VESTIGE_THETRIAD ) nFavored = TRUE;
else if (GetHasFeat(FEAT_RAPID_RECOVERY_DESHARIS , oBinder) && nVestige == VESTIGE_DESHARIS ) nFavored = TRUE;
else if (GetHasFeat(FEAT_RAPID_RECOVERY_ZCERYLL , oBinder) && nVestige == VESTIGE_ZCERYLL ) nFavored = TRUE;
else if (GetHasFeat(FEAT_RAPID_RECOVERY_ELIGOR , oBinder) && nVestige == VESTIGE_ELIGOR ) nFavored = TRUE;
else if (GetHasFeat(FEAT_RAPID_RECOVERY_MARCHOSIAS , oBinder) && nVestige == VESTIGE_MARCHOSIAS ) nFavored = TRUE;
else if (GetHasFeat(FEAT_RAPID_RECOVERY_ASHARDALON , oBinder) && nVestige == VESTIGE_ASHARDALON ) nFavored = TRUE;
else if (GetHasFeat(FEAT_RAPID_RECOVERY_HALPHAX , oBinder) && nVestige == VESTIGE_HALPHAX ) nFavored = TRUE;
else if (GetHasFeat(FEAT_RAPID_RECOVERY_ORTHOS , oBinder) && nVestige == VESTIGE_ORTHOS ) nFavored = TRUE;
else if (GetHasFeat(FEAT_RAPID_RECOVERY_ABYSM , oBinder) && nVestige == VESTIGE_ABYSM ) nFavored = TRUE;
if (DEBUG) DoDebug("RapidRecovery return value "+IntToString(nFavored));
return nFavored;
}
int FavoredVestige(object oBinder, int nVestige)
{
int nFavored;
if (GetHasFeat(FEAT_FAVORED_VESTIGE_AMON, oBinder) && nVestige == VESTIGE_AMON) nFavored = TRUE;
else if (GetHasFeat(FEAT_FAVORED_VESTIGE_AYM , oBinder) && nVestige == VESTIGE_AYM ) nFavored = TRUE;
else if (GetHasFeat(FEAT_FAVORED_VESTIGE_LERAJE , oBinder) && nVestige == VESTIGE_LERAJE ) nFavored = TRUE;
else if (GetHasFeat(FEAT_FAVORED_VESTIGE_NABERIUS , oBinder) && nVestige == VESTIGE_NABERIUS ) nFavored = TRUE;
else if (GetHasFeat(FEAT_FAVORED_VESTIGE_RONOVE , oBinder) && nVestige == VESTIGE_RONOVE ) nFavored = TRUE;
else if (GetHasFeat(FEAT_FAVORED_VESTIGE_DAHLVERNAR , oBinder) && nVestige == VESTIGE_DAHLVERNAR ) nFavored = TRUE;
else if (GetHasFeat(FEAT_FAVORED_VESTIGE_HAAGENTI , oBinder) && nVestige == VESTIGE_HAAGENTI ) nFavored = TRUE;
else if (GetHasFeat(FEAT_FAVORED_VESTIGE_MALPHAS , oBinder) && nVestige == VESTIGE_MALPHAS ) nFavored = TRUE;
else if (GetHasFeat(FEAT_FAVORED_VESTIGE_SAVNOK , oBinder) && nVestige == VESTIGE_SAVNOK ) nFavored = TRUE;
else if (GetHasFeat(FEAT_FAVORED_VESTIGE_ANDROMALIUS, oBinder) && nVestige == VESTIGE_ANDROMALIUS) nFavored = TRUE;
else if (GetHasFeat(FEAT_FAVORED_VESTIGE_FOCALOR , oBinder) && nVestige == VESTIGE_FOCALOR ) nFavored = TRUE;
else if (GetHasFeat(FEAT_FAVORED_VESTIGE_KARSUS , oBinder) && nVestige == VESTIGE_KARSUS ) nFavored = TRUE;
else if (GetHasFeat(FEAT_FAVORED_VESTIGE_PAIMON , oBinder) && nVestige == VESTIGE_PAIMON ) nFavored = TRUE;
else if (GetHasFeat(FEAT_FAVORED_VESTIGE_AGARES , oBinder) && nVestige == VESTIGE_AGARES ) nFavored = TRUE;
else if (GetHasFeat(FEAT_FAVORED_VESTIGE_ANDRAS , oBinder) && nVestige == VESTIGE_ANDRAS ) nFavored = TRUE;
else if (GetHasFeat(FEAT_FAVORED_VESTIGE_BUER , oBinder) && nVestige == VESTIGE_BUER ) nFavored = TRUE;
else if (GetHasFeat(FEAT_FAVORED_VESTIGE_EURYNOME , oBinder) && nVestige == VESTIGE_EURYNOME ) nFavored = TRUE;
else if (GetHasFeat(FEAT_FAVORED_VESTIGE_TENEBROUS , oBinder) && nVestige == VESTIGE_TENEBROUS ) nFavored = TRUE;
else if (GetHasFeat(FEAT_FAVORED_VESTIGE_ARETE , oBinder) && nVestige == VESTIGE_ARETE ) nFavored = TRUE;
else if (GetHasFeat(FEAT_FAVORED_VESTIGE_ASTAROTH , oBinder) && nVestige == VESTIGE_ASTAROTH ) nFavored = TRUE;
else if (GetHasFeat(FEAT_FAVORED_VESTIGE_ACERERAK , oBinder) && nVestige == VESTIGE_ACERERAK ) nFavored = TRUE;
else if (GetHasFeat(FEAT_FAVORED_VESTIGE_BALAM , oBinder) && nVestige == VESTIGE_BALAM ) nFavored = TRUE;
else if (GetHasFeat(FEAT_FAVORED_VESTIGE_DANTALION , oBinder) && nVestige == VESTIGE_DANTALION ) nFavored = TRUE;
else if (GetHasFeat(FEAT_FAVORED_VESTIGE_GERYON , oBinder) && nVestige == VESTIGE_GERYON ) nFavored = TRUE;
else if (GetHasFeat(FEAT_FAVORED_VESTIGE_OTIAX , oBinder) && nVestige == VESTIGE_OTIAX ) nFavored = TRUE;
else if (GetHasFeat(FEAT_FAVORED_VESTIGE_CHUPOCLOPS , oBinder) && nVestige == VESTIGE_CHUPOCLOPS ) nFavored = TRUE;
else if (GetHasFeat(FEAT_FAVORED_VESTIGE_HAURES , oBinder) && nVestige == VESTIGE_HAURES ) nFavored = TRUE;
else if (GetHasFeat(FEAT_FAVORED_VESTIGE_IPOS , oBinder) && nVestige == VESTIGE_IPOS ) nFavored = TRUE;
else if (GetHasFeat(FEAT_FAVORED_VESTIGE_SHAX , oBinder) && nVestige == VESTIGE_SHAX ) nFavored = TRUE;
else if (GetHasFeat(FEAT_FAVORED_VESTIGE_ZAGAN , oBinder) && nVestige == VESTIGE_ZAGAN ) nFavored = TRUE;
else if (GetHasFeat(FEAT_FAVORED_VESTIGE_VANUS , oBinder) && nVestige == VESTIGE_VANUS ) nFavored = TRUE;
else if (GetHasFeat(FEAT_FAVORED_VESTIGE_THETRIAD , oBinder) && nVestige == VESTIGE_THETRIAD ) nFavored = TRUE;
else if (GetHasFeat(FEAT_FAVORED_VESTIGE_DESHARIS , oBinder) && nVestige == VESTIGE_DESHARIS ) nFavored = TRUE;
else if (GetHasFeat(FEAT_FAVORED_VESTIGE_ZCERYLL , oBinder) && nVestige == VESTIGE_ZCERYLL ) nFavored = TRUE;
else if (GetHasFeat(FEAT_FAVORED_VESTIGE_ELIGOR , oBinder) && nVestige == VESTIGE_ELIGOR ) nFavored = TRUE;
else if (GetHasFeat(FEAT_FAVORED_VESTIGE_MARCHOSIAS , oBinder) && nVestige == VESTIGE_MARCHOSIAS ) nFavored = TRUE;
else if (GetHasFeat(FEAT_FAVORED_VESTIGE_ASHARDALON , oBinder) && nVestige == VESTIGE_ASHARDALON ) nFavored = TRUE;
else if (GetHasFeat(FEAT_FAVORED_VESTIGE_HALPHAX , oBinder) && nVestige == VESTIGE_HALPHAX ) nFavored = TRUE;
else if (GetHasFeat(FEAT_FAVORED_VESTIGE_ORTHOS , oBinder) && nVestige == VESTIGE_ORTHOS ) nFavored = TRUE;
else if (GetHasFeat(FEAT_FAVORED_VESTIGE_ABYSM , oBinder) && nVestige == VESTIGE_ABYSM ) nFavored = TRUE;
if (DEBUG) DoDebug("FavoredVestige return value "+IntToString(nFavored));
return nFavored;
}
int FavoredVestigeFocus(object oBinder, int nVestige)
{
int nFavored;
if (GetHasFeat(FEAT_FAVORED_VESTIGE_FOCUS_AMON, oBinder) && nVestige == VESTIGE_AMON) nFavored = TRUE;
else if (GetHasFeat(FEAT_FAVORED_VESTIGE_FOCUS_AYM , oBinder) && nVestige == VESTIGE_AYM ) nFavored = TRUE;
else if (GetHasFeat(FEAT_FAVORED_VESTIGE_FOCUS_LERAJE , oBinder) && nVestige == VESTIGE_LERAJE ) nFavored = TRUE;
else if (GetHasFeat(FEAT_FAVORED_VESTIGE_FOCUS_NABERIUS , oBinder) && nVestige == VESTIGE_NABERIUS ) nFavored = TRUE;
else if (GetHasFeat(FEAT_FAVORED_VESTIGE_FOCUS_RONOVE , oBinder) && nVestige == VESTIGE_RONOVE ) nFavored = TRUE;
else if (GetHasFeat(FEAT_FAVORED_VESTIGE_FOCUS_DAHLVERNAR , oBinder) && nVestige == VESTIGE_DAHLVERNAR ) nFavored = TRUE;
else if (GetHasFeat(FEAT_FAVORED_VESTIGE_FOCUS_HAAGENTI , oBinder) && nVestige == VESTIGE_HAAGENTI ) nFavored = TRUE;
else if (GetHasFeat(FEAT_FAVORED_VESTIGE_FOCUS_MALPHAS , oBinder) && nVestige == VESTIGE_MALPHAS ) nFavored = TRUE;
else if (GetHasFeat(FEAT_FAVORED_VESTIGE_FOCUS_SAVNOK , oBinder) && nVestige == VESTIGE_SAVNOK ) nFavored = TRUE;
else if (GetHasFeat(FEAT_FAVORED_VESTIGE_FOCUS_ANDROMALIUS, oBinder) && nVestige == VESTIGE_ANDROMALIUS) nFavored = TRUE;
else if (GetHasFeat(FEAT_FAVORED_VESTIGE_FOCUS_FOCALOR , oBinder) && nVestige == VESTIGE_FOCALOR ) nFavored = TRUE;
else if (GetHasFeat(FEAT_FAVORED_VESTIGE_FOCUS_KARSUS , oBinder) && nVestige == VESTIGE_KARSUS ) nFavored = TRUE;
else if (GetHasFeat(FEAT_FAVORED_VESTIGE_FOCUS_PAIMON , oBinder) && nVestige == VESTIGE_PAIMON ) nFavored = TRUE;
else if (GetHasFeat(FEAT_FAVORED_VESTIGE_FOCUS_AGARES , oBinder) && nVestige == VESTIGE_AGARES ) nFavored = TRUE;
else if (GetHasFeat(FEAT_FAVORED_VESTIGE_FOCUS_ANDRAS , oBinder) && nVestige == VESTIGE_ANDRAS ) nFavored = TRUE;
else if (GetHasFeat(FEAT_FAVORED_VESTIGE_FOCUS_BUER , oBinder) && nVestige == VESTIGE_BUER ) nFavored = TRUE;
else if (GetHasFeat(FEAT_FAVORED_VESTIGE_FOCUS_EURYNOME , oBinder) && nVestige == VESTIGE_EURYNOME ) nFavored = TRUE;
else if (GetHasFeat(FEAT_FAVORED_VESTIGE_FOCUS_TENEBROUS , oBinder) && nVestige == VESTIGE_TENEBROUS ) nFavored = TRUE;
else if (GetHasFeat(FEAT_FAVORED_VESTIGE_FOCUS_ARETE , oBinder) && nVestige == VESTIGE_ARETE ) nFavored = TRUE;
else if (GetHasFeat(FEAT_FAVORED_VESTIGE_FOCUS_ASTAROTH , oBinder) && nVestige == VESTIGE_ASTAROTH ) nFavored = TRUE;
else if (GetHasFeat(FEAT_FAVORED_VESTIGE_FOCUS_ACERERAK , oBinder) && nVestige == VESTIGE_ACERERAK ) nFavored = TRUE;
else if (GetHasFeat(FEAT_FAVORED_VESTIGE_FOCUS_BALAM , oBinder) && nVestige == VESTIGE_BALAM ) nFavored = TRUE;
else if (GetHasFeat(FEAT_FAVORED_VESTIGE_FOCUS_DANTALION , oBinder) && nVestige == VESTIGE_DANTALION ) nFavored = TRUE;
else if (GetHasFeat(FEAT_FAVORED_VESTIGE_FOCUS_GERYON , oBinder) && nVestige == VESTIGE_GERYON ) nFavored = TRUE;
else if (GetHasFeat(FEAT_FAVORED_VESTIGE_FOCUS_OTIAX , oBinder) && nVestige == VESTIGE_OTIAX ) nFavored = TRUE;
else if (GetHasFeat(FEAT_FAVORED_VESTIGE_FOCUS_CHUPOCLOPS , oBinder) && nVestige == VESTIGE_CHUPOCLOPS ) nFavored = TRUE;
else if (GetHasFeat(FEAT_FAVORED_VESTIGE_FOCUS_HAURES , oBinder) && nVestige == VESTIGE_HAURES ) nFavored = TRUE;
else if (GetHasFeat(FEAT_FAVORED_VESTIGE_FOCUS_IPOS , oBinder) && nVestige == VESTIGE_IPOS ) nFavored = TRUE;
else if (GetHasFeat(FEAT_FAVORED_VESTIGE_FOCUS_SHAX , oBinder) && nVestige == VESTIGE_SHAX ) nFavored = TRUE;
else if (GetHasFeat(FEAT_FAVORED_VESTIGE_FOCUS_ZAGAN , oBinder) && nVestige == VESTIGE_ZAGAN ) nFavored = TRUE;
else if (GetHasFeat(FEAT_FAVORED_VESTIGE_FOCUS_VANUS , oBinder) && nVestige == VESTIGE_VANUS ) nFavored = TRUE;
else if (GetHasFeat(FEAT_FAVORED_VESTIGE_FOCUS_THETRIAD , oBinder) && nVestige == VESTIGE_THETRIAD ) nFavored = TRUE;
else if (GetHasFeat(FEAT_FAVORED_VESTIGE_FOCUS_DESHARIS , oBinder) && nVestige == VESTIGE_DESHARIS ) nFavored = TRUE;
else if (GetHasFeat(FEAT_FAVORED_VESTIGE_FOCUS_ZCERYLL , oBinder) && nVestige == VESTIGE_ZCERYLL ) nFavored = TRUE;
else if (GetHasFeat(FEAT_FAVORED_VESTIGE_FOCUS_ELIGOR , oBinder) && nVestige == VESTIGE_ELIGOR ) nFavored = TRUE;
else if (GetHasFeat(FEAT_FAVORED_VESTIGE_FOCUS_MARCHOSIAS , oBinder) && nVestige == VESTIGE_MARCHOSIAS ) nFavored = TRUE;
else if (GetHasFeat(FEAT_FAVORED_VESTIGE_FOCUS_ASHARDALON , oBinder) && nVestige == VESTIGE_ASHARDALON ) nFavored = TRUE;
else if (GetHasFeat(FEAT_FAVORED_VESTIGE_FOCUS_HALPHAX , oBinder) && nVestige == VESTIGE_HALPHAX ) nFavored = TRUE;
else if (GetHasFeat(FEAT_FAVORED_VESTIGE_FOCUS_ORTHOS , oBinder) && nVestige == VESTIGE_ORTHOS ) nFavored = TRUE;
else if (GetHasFeat(FEAT_FAVORED_VESTIGE_FOCUS_ABYSM , oBinder) && nVestige == VESTIGE_ABYSM ) nFavored = TRUE;
if (DEBUG) DoDebug("FavoredVestigeFocus return value "+IntToString(nFavored));
return nFavored;
}
int GetBinderDC(object oBinder, int nVestige)
{
int nDC = 10 + GetBinderLevel(oBinder, nVestige)/2 + GetAbilityModifier(ABILITY_CHARISMA, oBinder);
if (FavoredVestigeFocus(oBinder, nVestige)) nDC += 1;
if (GetHasSpellEffect(VESTIGE_IPOS, oBinder) && !GetIsVestigeExploited(oBinder, VESTIGE_IPOS_INFLUENCE)) nDC += 1;
return nDC;
}
int DoSpecialRequirements(object oBinder, int nVestige)
{
if (GetHasFeat(FEAT_IGNORE_SPECIAL_REQUIREMENTS, oBinder)) return TRUE;
if (nVestige == VESTIGE_AMON && (GetLocalInt(oBinder, "AmonHater") ||
GetHasSpellEffect(VESTIGE_LERAJE, oBinder) ||
GetHasSpellEffect(VESTIGE_EURYNOME, oBinder) ||
GetHasSpellEffect(VESTIGE_KARSUS, oBinder) ||
GetHasSpellEffect(VESTIGE_CHUPOCLOPS, oBinder)))
return FALSE;
if (nVestige == VESTIGE_LERAJE && GetHasSpellEffect(VESTIGE_AMON, oBinder))
return FALSE;
if (nVestige == VESTIGE_NABERIUS && 4 > GetSkillRank(SKILL_LORE, oBinder, TRUE) && 4 > GetSkillRank(SKILL_BLUFF, oBinder, TRUE))
return FALSE;
// Ronove<76>s seal must be drawn in the soil under the sky.
if (nVestige == VESTIGE_RONOVE && (GetIsAreaNatural(GetArea(oBinder)) != AREA_NATURAL || GetIsAreaAboveGround(GetArea(oBinder)) != AREA_ABOVEGROUND))
return FALSE;
if (nVestige == VESTIGE_HAAGENTI && (CREATURE_SIZE_LARGE > PRCGetCreatureSize(oBinder) || (GetHasFeat(FEAT_RACE_POWERFUL_BUILD, oBinder) && CREATURE_SIZE_MEDIUM > PRCGetCreatureSize(oBinder))))
return FALSE;
if (nVestige == VESTIGE_KARSUS && GetHasSpellEffect(VESTIGE_AMON, oBinder))
return FALSE;
if (nVestige == VESTIGE_KARSUS && 5 > GetSkillRank(SKILL_LORE, oBinder, TRUE) && 5 > GetSkillRank(SKILL_SPELLCRAFT, oBinder, TRUE))
return FALSE;
if (nVestige == VESTIGE_KARSUS)
{
effect eTest = GetFirstEffect(oBinder);
while(GetIsEffectValid(eTest))
{
if(GetEffectType(eTest) == EFFECT_TYPE_AREA_OF_EFFECT)
return FALSE;
eTest = GetNextEffect(oBinder);
}
}
// Agagres<65>s seal must be drawn in the soil
if (nVestige == VESTIGE_AGARES && GetIsAreaNatural(GetArea(oBinder)) != AREA_NATURAL)
return FALSE;
if (nVestige == VESTIGE_BUER && GetIsAreaInterior(GetArea(oBinder)))
return FALSE;
if (nVestige == VESTIGE_EURYNOME && GetHasSpellEffect(VESTIGE_AMON, oBinder))
return FALSE;
if (nVestige == VESTIGE_TENEBROUS && !GetIsNight())
return FALSE;
if (nVestige == VESTIGE_BALAM)
{
int nCur = GetCurrentHitPoints(oBinder);
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDamage(1, DAMAGE_TYPE_SLASHING), oBinder);
if (nCur > GetCurrentHitPoints(oBinder))
return FALSE;
}
if (nVestige == VESTIGE_GERYON && 5 > GetSkillRank(SKILL_LORE, oBinder, TRUE))
return FALSE;
if (nVestige == VESTIGE_ARETE && (GetHasSpellEffect(VESTIGE_EURYNOME, oBinder) || GetHasSpellEffect(VESTIGE_CHUPOCLOPS, oBinder)))
return FALSE;
if (nVestige == VESTIGE_CHUPOCLOPS && GetHasSpellEffect(VESTIGE_AMON, oBinder))
return FALSE;
if (nVestige == VESTIGE_IPOS && 5 > GetSkillRank(SKILL_LORE, oBinder, TRUE) && 5 > GetSkillRank(SKILL_SPELLCRAFT, oBinder, TRUE))
return FALSE;
if (nVestige == VESTIGE_VANUS && GetIsAreaNatural(GetArea(oBinder)) != AREA_NATURAL)
return FALSE;
if (nVestige == VESTIGE_DESHARIS && GetIsAreaNatural(GetArea(oBinder)) == AREA_NATURAL)
return FALSE;
if (nVestige == VESTIGE_HALPHAX && !GetIsAreaInterior(GetArea(oBinder)))
return FALSE;
if (nVestige == VESTIGE_HALPHAX && GetIsAreaInterior(GetArea(oBinder)) && GetIsAreaAboveGround(GetArea(oBinder)) == AREA_UNDERGROUND)
return FALSE;
if (nVestige == VESTIGE_ORTHOS && GetTileMainLight1Color(GetLocation(oBinder)) != TILE_MAIN_LIGHT_COLOR_WHITE && GetTileMainLight1Color(GetLocation(oBinder)) != TILE_MAIN_LIGHT_COLOR_YELLOW)
return FALSE;
return TRUE;
}
int DoSummonRequirements(object oBinder, int nVestige)
{
if (GetHasFeat(FEAT_IGNORE_SPECIAL_REQUIREMENTS, oBinder)) return TRUE;
int nSpellId = StringToInt(Get2DACache(GetVestigeFile(), "SpellID", nVestige));
if (nSpellId == VESTIGE_LERAJE)
{
object oArrow = GetItemInSlot(INVENTORY_SLOT_ARROWS, oBinder);
int nStack = GetItemStackSize(oArrow);
if (nStack)
SetItemStackSize(oArrow, nStack-1);
else
{
FloatingTextStringOnCreature("You have failed to break an arrow for Leraje, and she refuses your call!", oBinder, FALSE);
return FALSE;
}
}
return TRUE;
}
int GetIsVestigeExploited(object oBinder, int nVestigeAbil)
{
if (GetLocalInt(oBinder, "ExploitVestige") == nVestigeAbil) return TRUE;
return FALSE;
}
void SetIsVestigeExploited(object oBinder, int nVestigeAbil)
{
SetLocalInt(oBinder, "ExploitVestige", nVestigeAbil);
SetLocalInt(oBinder, "ExploitVestigeTemp", TRUE);
SetLocalInt(oBinder, "ExploitVestigeConv", TRUE);
}
int GetIsPatronVestigeBound(object oBinder)
{
int nPatron;
if (GetHasFeat(FEAT_PATRON_VESTIGE_AMON , oBinder)) nPatron = VESTIGE_AMON;
else if (GetHasFeat(FEAT_PATRON_VESTIGE_AYM , oBinder)) nPatron = VESTIGE_AYM;
else if (GetHasFeat(FEAT_PATRON_VESTIGE_LERAJE , oBinder)) nPatron = VESTIGE_LERAJE;
else if (GetHasFeat(FEAT_PATRON_VESTIGE_NABERIUS , oBinder)) nPatron = VESTIGE_NABERIUS;
else if (GetHasFeat(FEAT_PATRON_VESTIGE_RONOVE , oBinder)) nPatron = VESTIGE_RONOVE;
else if (GetHasFeat(FEAT_PATRON_VESTIGE_DAHLVERNAR , oBinder)) nPatron = VESTIGE_DAHLVERNAR;
else if (GetHasFeat(FEAT_PATRON_VESTIGE_HAAGENTI , oBinder)) nPatron = VESTIGE_HAAGENTI;
else if (GetHasFeat(FEAT_PATRON_VESTIGE_MALPHAS , oBinder)) nPatron = VESTIGE_MALPHAS;
else if (GetHasFeat(FEAT_PATRON_VESTIGE_SAVNOK , oBinder)) nPatron = VESTIGE_SAVNOK;
else if (GetHasFeat(FEAT_PATRON_VESTIGE_ANDROMALIUS, oBinder)) nPatron = VESTIGE_ANDROMALIUS;
else if (GetHasFeat(FEAT_PATRON_VESTIGE_FOCALOR , oBinder)) nPatron = VESTIGE_FOCALOR;
else if (GetHasFeat(FEAT_PATRON_VESTIGE_KARSUS , oBinder)) nPatron = VESTIGE_KARSUS;
else if (GetHasFeat(FEAT_PATRON_VESTIGE_PAIMON , oBinder)) nPatron = VESTIGE_PAIMON;
else if (GetHasFeat(FEAT_PATRON_VESTIGE_AGARES , oBinder)) nPatron = VESTIGE_AGARES;
else if (GetHasFeat(FEAT_PATRON_VESTIGE_ANDRAS , oBinder)) nPatron = VESTIGE_ANDRAS;
else if (GetHasFeat(FEAT_PATRON_VESTIGE_BUER , oBinder)) nPatron = VESTIGE_BUER;
else if (GetHasFeat(FEAT_PATRON_VESTIGE_EURYNOME , oBinder)) nPatron = VESTIGE_EURYNOME;
else if (GetHasFeat(FEAT_PATRON_VESTIGE_TENEBROUS , oBinder)) nPatron = VESTIGE_TENEBROUS;
else if (GetHasFeat(FEAT_PATRON_VESTIGE_ARETE , oBinder)) nPatron = VESTIGE_ARETE;
else if (GetHasFeat(FEAT_PATRON_VESTIGE_ASTAROTH , oBinder)) nPatron = VESTIGE_ASTAROTH;
else if (GetHasFeat(FEAT_PATRON_VESTIGE_ACERERAK , oBinder)) nPatron = VESTIGE_ACERERAK;
else if (GetHasFeat(FEAT_PATRON_VESTIGE_BALAM , oBinder)) nPatron = VESTIGE_BALAM;
else if (GetHasFeat(FEAT_PATRON_VESTIGE_DANTALION , oBinder)) nPatron = VESTIGE_DANTALION;
else if (GetHasFeat(FEAT_PATRON_VESTIGE_GERYON , oBinder)) nPatron = VESTIGE_GERYON;
else if (GetHasFeat(FEAT_PATRON_VESTIGE_OTIAX , oBinder)) nPatron = VESTIGE_OTIAX;
else if (GetHasFeat(FEAT_PATRON_VESTIGE_CHUPOCLOPS , oBinder)) nPatron = VESTIGE_CHUPOCLOPS;
else if (GetHasFeat(FEAT_PATRON_VESTIGE_HAURES , oBinder)) nPatron = VESTIGE_HAURES;
else if (GetHasFeat(FEAT_PATRON_VESTIGE_IPOS , oBinder)) nPatron = VESTIGE_IPOS;
else if (GetHasFeat(FEAT_PATRON_VESTIGE_SHAX , oBinder)) nPatron = VESTIGE_SHAX;
else if (GetHasFeat(FEAT_PATRON_VESTIGE_ZAGAN , oBinder)) nPatron = VESTIGE_ZAGAN;
else if (GetHasFeat(FEAT_PATRON_VESTIGE_VANUS , oBinder)) nPatron = VESTIGE_VANUS;
else if (GetHasFeat(FEAT_PATRON_VESTIGE_THETRIAD , oBinder)) nPatron = VESTIGE_THETRIAD;
else if (GetHasFeat(FEAT_PATRON_VESTIGE_DESHARIS , oBinder)) nPatron = VESTIGE_DESHARIS;
else if (GetHasFeat(FEAT_PATRON_VESTIGE_ZCERYLL , oBinder)) nPatron = VESTIGE_ZCERYLL;
else if (GetHasFeat(FEAT_PATRON_VESTIGE_ELIGOR , oBinder)) nPatron = VESTIGE_ELIGOR;
else if (GetHasFeat(FEAT_PATRON_VESTIGE_MARCHOSIAS , oBinder)) nPatron = VESTIGE_MARCHOSIAS;
else if (GetHasFeat(FEAT_PATRON_VESTIGE_ASHARDALON , oBinder)) nPatron = VESTIGE_ASHARDALON;
else if (GetHasFeat(FEAT_PATRON_VESTIGE_HALPHAX , oBinder)) nPatron = VESTIGE_HALPHAX;
else if (GetHasFeat(FEAT_PATRON_VESTIGE_ORTHOS , oBinder)) nPatron = VESTIGE_ORTHOS;
else if (GetHasFeat(FEAT_PATRON_VESTIGE_ABYSM , oBinder)) nPatron = VESTIGE_ABYSM;
if(GetHasSpellEffect(nPatron, oBinder)) return TRUE;
return FALSE;
}
int GetPatronVestige(object oBinder)
{
int nPatron = -1;
if (GetHasFeat(FEAT_PATRON_VESTIGE_AMON , oBinder)) nPatron = VESTIGE_AMON;
else if (GetHasFeat(FEAT_PATRON_VESTIGE_AYM , oBinder)) nPatron = VESTIGE_AYM;
else if (GetHasFeat(FEAT_PATRON_VESTIGE_LERAJE , oBinder)) nPatron = VESTIGE_LERAJE;
else if (GetHasFeat(FEAT_PATRON_VESTIGE_NABERIUS , oBinder)) nPatron = VESTIGE_NABERIUS;
else if (GetHasFeat(FEAT_PATRON_VESTIGE_RONOVE , oBinder)) nPatron = VESTIGE_RONOVE;
else if (GetHasFeat(FEAT_PATRON_VESTIGE_DAHLVERNAR , oBinder)) nPatron = VESTIGE_DAHLVERNAR;
else if (GetHasFeat(FEAT_PATRON_VESTIGE_HAAGENTI , oBinder)) nPatron = VESTIGE_HAAGENTI;
else if (GetHasFeat(FEAT_PATRON_VESTIGE_MALPHAS , oBinder)) nPatron = VESTIGE_MALPHAS;
else if (GetHasFeat(FEAT_PATRON_VESTIGE_SAVNOK , oBinder)) nPatron = VESTIGE_SAVNOK;
else if (GetHasFeat(FEAT_PATRON_VESTIGE_ANDROMALIUS, oBinder)) nPatron = VESTIGE_ANDROMALIUS;
else if (GetHasFeat(FEAT_PATRON_VESTIGE_FOCALOR , oBinder)) nPatron = VESTIGE_FOCALOR;
else if (GetHasFeat(FEAT_PATRON_VESTIGE_KARSUS , oBinder)) nPatron = VESTIGE_KARSUS;
else if (GetHasFeat(FEAT_PATRON_VESTIGE_PAIMON , oBinder)) nPatron = VESTIGE_PAIMON;
else if (GetHasFeat(FEAT_PATRON_VESTIGE_AGARES , oBinder)) nPatron = VESTIGE_AGARES;
else if (GetHasFeat(FEAT_PATRON_VESTIGE_ANDRAS , oBinder)) nPatron = VESTIGE_ANDRAS;
else if (GetHasFeat(FEAT_PATRON_VESTIGE_BUER , oBinder)) nPatron = VESTIGE_BUER;
else if (GetHasFeat(FEAT_PATRON_VESTIGE_EURYNOME , oBinder)) nPatron = VESTIGE_EURYNOME;
else if (GetHasFeat(FEAT_PATRON_VESTIGE_TENEBROUS , oBinder)) nPatron = VESTIGE_TENEBROUS;
else if (GetHasFeat(FEAT_PATRON_VESTIGE_ARETE , oBinder)) nPatron = VESTIGE_ARETE;
else if (GetHasFeat(FEAT_PATRON_VESTIGE_ASTAROTH , oBinder)) nPatron = VESTIGE_ASTAROTH;
else if (GetHasFeat(FEAT_PATRON_VESTIGE_ACERERAK , oBinder)) nPatron = VESTIGE_ACERERAK;
else if (GetHasFeat(FEAT_PATRON_VESTIGE_BALAM , oBinder)) nPatron = VESTIGE_BALAM;
else if (GetHasFeat(FEAT_PATRON_VESTIGE_DANTALION , oBinder)) nPatron = VESTIGE_DANTALION;
else if (GetHasFeat(FEAT_PATRON_VESTIGE_GERYON , oBinder)) nPatron = VESTIGE_GERYON;
else if (GetHasFeat(FEAT_PATRON_VESTIGE_OTIAX , oBinder)) nPatron = VESTIGE_OTIAX;
else if (GetHasFeat(FEAT_PATRON_VESTIGE_CHUPOCLOPS , oBinder)) nPatron = VESTIGE_CHUPOCLOPS;
else if (GetHasFeat(FEAT_PATRON_VESTIGE_HAURES , oBinder)) nPatron = VESTIGE_HAURES;
else if (GetHasFeat(FEAT_PATRON_VESTIGE_IPOS , oBinder)) nPatron = VESTIGE_IPOS;
else if (GetHasFeat(FEAT_PATRON_VESTIGE_SHAX , oBinder)) nPatron = VESTIGE_SHAX;
else if (GetHasFeat(FEAT_PATRON_VESTIGE_ZAGAN , oBinder)) nPatron = VESTIGE_ZAGAN;
else if (GetHasFeat(FEAT_PATRON_VESTIGE_VANUS , oBinder)) nPatron = VESTIGE_VANUS;
else if (GetHasFeat(FEAT_PATRON_VESTIGE_THETRIAD , oBinder)) nPatron = VESTIGE_THETRIAD;
else if (GetHasFeat(FEAT_PATRON_VESTIGE_DESHARIS , oBinder)) nPatron = VESTIGE_DESHARIS;
else if (GetHasFeat(FEAT_PATRON_VESTIGE_ZCERYLL , oBinder)) nPatron = VESTIGE_ZCERYLL;
else if (GetHasFeat(FEAT_PATRON_VESTIGE_ELIGOR , oBinder)) nPatron = VESTIGE_ELIGOR;
else if (GetHasFeat(FEAT_PATRON_VESTIGE_MARCHOSIAS , oBinder)) nPatron = VESTIGE_MARCHOSIAS;
else if (GetHasFeat(FEAT_PATRON_VESTIGE_ASHARDALON , oBinder)) nPatron = VESTIGE_ASHARDALON;
else if (GetHasFeat(FEAT_PATRON_VESTIGE_HALPHAX , oBinder)) nPatron = VESTIGE_HALPHAX;
else if (GetHasFeat(FEAT_PATRON_VESTIGE_ORTHOS , oBinder)) nPatron = VESTIGE_ORTHOS;
else if (GetHasFeat(FEAT_PATRON_VESTIGE_ABYSM , oBinder)) nPatron = VESTIGE_ABYSM;
return nPatron;
}

View File

@@ -0,0 +1,321 @@
// Vestige SpellId Constants
const int VESTIGE_AMON = 19020;
const int VESTIGE_AYM = 19021;
const int VESTIGE_LERAJE = 19022;
const int VESTIGE_NABERIUS = 19023;
const int VESTIGE_RONOVE = 19024;
const int VESTIGE_DAHLVERNAR = 19025;
const int VESTIGE_HAAGENTI = 19026;
const int VESTIGE_MALPHAS = 19027;
const int VESTIGE_SAVNOK = 19028;
const int VESTIGE_ANDROMALIUS = 19029;
const int VESTIGE_FOCALOR = 19030;
const int VESTIGE_KARSUS = 19031;
const int VESTIGE_PAIMON = 19032;
const int VESTIGE_AGARES = 19033;
const int VESTIGE_ANDRAS = 19034;
const int VESTIGE_BUER = 19035;
const int VESTIGE_EURYNOME = 19036;
const int VESTIGE_TENEBROUS = 19037;
const int VESTIGE_ARETE = 19038;
const int VESTIGE_ASTAROTH = 19039;
const int VESTIGE_ACERERAK = 19040;
const int VESTIGE_BALAM = 19041;
const int VESTIGE_DANTALION = 19042;
const int VESTIGE_GERYON = 19043;
const int VESTIGE_OTIAX = 19044;
const int VESTIGE_CHUPOCLOPS = 19045;
const int VESTIGE_HAURES = 19046;
const int VESTIGE_IPOS = 19047;
const int VESTIGE_SHAX = 19048;
const int VESTIGE_ZAGAN = 19049;
const int VESTIGE_VANUS = 19050;
const int VESTIGE_THETRIAD = 19051;
const int VESTIGE_DESHARIS = 19052;
const int VESTIGE_ZCERYLL = 19053;
const int VESTIGE_ELIGOR = 19054;
const int VESTIGE_MARCHOSIAS = 19055;
const int VESTIGE_ASHARDALON = 19056;
const int VESTIGE_HALPHAX = 19057;
const int VESTIGE_ORTHOS = 19058;
const int VESTIGE_ABYSM = 19059;
// Vestige IPFeat Constants
const int IP_CONST_VESTIGE_AMON_BREATH = 13730;
const int IP_CONST_VESTIGE_AYM_HALO = 13731;
const int IP_CONST_VESTIGE_LERAJE_RICOCHET = 13732;
const int IP_CONST_VESTIGE_NABERIUS_DISGUISE = 13733;
const int IP_CONST_VESTIGE_NABERIUS_COMMAND = 13734;
const int IP_CONST_VESTIGE_RONOVE_FARHAND = 13735;
const int IP_CONST_VESTIGE_RONOVE_BULLRUSH = 13736;
const int IP_CONST_VESTIGE_DAHLVER_MOAN = 13737;
const int IP_CONST_VESTIGE_DAHLVER_SHARE = 13738;
const int IP_CONST_VESTIGE_HAAGENTI_TOUCH = 13739;
const int IP_CONST_VESTIGE_MALPHAS_EYE = 13740;
const int IP_CONST_VESTIGE_MALPHAS_INVIS_ST = 13741;
const int IP_CONST_VESTIGE_MALPHAS_INVIS_SW = 13742;
const int IP_CONST_VESTIGE_SAVNOK_CALL = 13743;
const int IP_CONST_VESTIGE_SAVNOK_MOVE_ST = 13744;
const int IP_CONST_VESTIGE_SAVNOK_MOVE_SW = 13745;
const int IP_CONST_VESTIGE_ANDRO_MIRTH = 13746;
const int IP_CONST_VESTIGE_ANDRO_LOCATE = 13747;
const int IP_CONST_VESTIGE_ANDRO_SEE = 13748;
const int IP_CONST_VESTIGE_FOCALOR_AURA = 13749;
const int IP_CONST_VESTIGE_FOCALOR_BOLT = 13750;
const int IP_CONST_VESTIGE_FOCALOR_BREATH = 13751;
const int IP_CONST_VESTIGE_KARSUS_SENSES = 13752;
const int IP_CONST_VESTIGE_KARSUS_TOUCH = 13753;
const int IP_CONST_VESTIGE_PAIMON_DANCE = 13754;
const int IP_CONST_VESTIGE_AGARES_STEP = 13755;
const int IP_CONST_VESTIGE_AGARES_ELEMENTAL = 13756;
const int IP_CONST_VESTIGE_ANDRAS_SMITE = 13757;
const int IP_CONST_VESTIGE_ANDRAS_DISCORD = 13758;
const int IP_CONST_VESTIGE_ANDRAS_MOUNT = 13759;
const int IP_CONST_VESTIGE_BUER_HEAL = 13760;
const int IP_CONST_VESTIGE_TENEBROUS_DARKNESS = 13761;
const int IP_CONST_VESTIGE_TENEBROUS_TOUCH_VOID = 13762;
const int IP_CONST_VESTIGE_TENEBROUS_TURN = 13763;
const int IP_CONST_VESTIGE_TENEBROUS_VESSEL = 13764;
const int IP_CONST_VESTIGE_ACERERAK_DETECT = 13765;
const int IP_CONST_VESTIGE_ACERERAK_HIDE = 13766;
const int IP_CONST_VESTIGE_ACERERAK_TOUCH = 13767;
const int IP_CONST_VESTIGE_BALAM_CUNNING = 13768;
const int IP_CONST_VESTIGE_BALAM_GLARE = 13769;
const int IP_CONST_VESTIGE_DANTALION_AWE = 13770;
const int IP_CONST_VESTIGE_DANTALION_READ = 13771;
const int IP_CONST_VESTIGE_DANTALION_TRAVEL = 13772;
const int IP_CONST_VESTIGE_GERYON_GAZE = 13773;
const int IP_CONST_VESTIGE_GERYON_FLIGHT = 13774;
const int IP_CONST_VESTIGE_OTIAX_AIR_BLAST = 13775;
const int IP_CONST_VESTIGE_OTIAX_OPEN = 13776;
const int IP_CONST_VESTIGE_OTIAX_UNLOCK = 13777;
const int IP_CONST_VESTIGE_ARETE_RESISTANCE = 13778;
const int IP_CONST_VESTIGE_ASTAROTH_BREATH = 13779;
const int IP_CONST_VESTIGE_ASTAROTH_WORD = 13780;
const int IP_CONST_VESTIGE_CHUPOCLOPS_DESPAIR = 13781;
const int IP_CONST_VESTIGE_CHUPOCLOPS_ETHEREAL = 13782;
const int IP_CONST_VESTIGE_HAURES_IMAGE = 13783;
const int IP_CONST_VESTIGE_HAURES_KILLER = 13784;
const int IP_CONST_VESTIGE_IPOS_INSIGHT = 13785;
const int IP_CONST_VESTIGE_SHAX_FREEDOM = 13786;
const int IP_CONST_VESTIGE_SHAX_STRIKE = 13787;
const int IP_CONST_VESTIGE_ZAGAN_AVERSION = 13788;
const int IP_CONST_VESTIGE_VANUS_FREE_ALLY = 13789;
const int IP_CONST_VESTIGE_THE_TRIAD_SMITE = 13790;
const int IP_CONST_VESTIGE_DESHARIS_TELEPORT = 13791;
const int IP_CONST_VESTIGE_DESHARIS_SMITE = 13792;
const int IP_CONST_VESTIGE_DESHARIS_ANIMATE = 13793;
const int IP_CONST_VESTIGE_ZCERYLL_BOLTS = 13794;
const int IP_CONST_VESTIGE_ZCERYLL_SUMMON = 13795;
const int IP_CONST_VESTIGE_ZCERYLL_TRUE_STRIKE = 13796;
const int IP_CONST_VESTIGE_ELIGOR_STRIKE = 13797;
const int IP_CONST_VESTIGE_MARCHOSIAS_SMOKE = 13798;
const int IP_CONST_VESTIGE_ASHARDALON_PRESENCE = 13799;
const int IP_CONST_VESTIGE_ASHARDALON_LOCATE = 13800;
const int IP_CONST_VESTIGE_HALPHAX_IMPRISON = 13801;
const int IP_CONST_VESTIGE_HALPHAX_BARRIER = 13802;
const int IP_CONST_VESTIGE_HALPHAX_SHELTER = 13803;
const int IP_CONST_VESTIGE_ORTHOS_BREATH = 13804;
// Vestige Ability SpellId Constants
const int VESTIGE_NABERIUS_DISGUISE_SELF_LEARN = 19074;
const int VESTIGE_NABERIUS_DISGUISE_SELF_OPTIONS = 19075;
const int VESTIGE_NABERIUS_DISGUISE_SELF_QS1 = 19076;
const int VESTIGE_NABERIUS_DISGUISE_SELF_QS2 = 19077;
const int VESTIGE_NABERIUS_DISGUISE_SELF_QS3 = 19078;
const int VESTIGE_NABERIUS_COMMAND_APPROACH = 19080;
const int VESTIGE_NABERIUS_COMMAND_DROP = 19081;
const int VESTIGE_NABERIUS_COMMAND_FALL = 19082;
const int VESTIGE_NABERIUS_COMMAND_FLEE = 19083;
const int VESTIGE_NABERIUS_COMMAND_HALT = 19084;
const int VESTIGE_RONOVE_FARHAND = 19085;
const int VESTIGE_RONOVE_BULLRUSH = 19086;
const int VESTIGE_FOCALOR_AURA_SADNESS = 19097;
const int VESTIGE_KARSUS_SENSES = 19100;
const int VESTIGE_KARSUS_DISPEL = 19101;
const int VESTIGE_TENEBROUS_TURN = 19111;
const int VESTIGE_TENEBROUS_FLICKER = 19112;
const int VESTIGE_DANTALION_READ_THOUGHTS = 19119;
const int VESTIGE_DANTALION_TRAVEL_SPELL = 19120;
const int VESTIGE_ARETE_RESIST = 19126;
const int VESTIGE_CHUPOCLOPS_AURA_DESPAIR = 19129;
const int VESTIGE_CHUPOCLOPS_ETHEREAL_WATCHER = 19130;
const int VESTIGE_THE_TRIAD_SMITE = 19138;
// General Binding SpellId Constants
const int VESTIGE_PACT_AUGMENTATION = 19171;
// Vestige Ability Constants, matches line # in vestigeabil.2da
const int VESTIGE_AMON_DARKVISION = 1 ;
const int VESTIGE_AMON_FIREBREATH = 2 ;
const int VESTIGE_AMON_RAMATTACK = 3 ;
const int VESTIGE_AYM_DWARVEN_STEP = 4 ;
const int VESTIGE_AYM_HALO_FIRE = 5 ;
const int VESTIGE_AYM_IMP_DISARM = 6 ;
const int VESTIGE_AYM_MEDIUM_ARMOR = 7 ;
const int VESTIGE_AYM_RESIST_FIRE = 8 ;
const int VESTIGE_AYM_RUINOUS_ATTACK = 9 ;
const int VESTIGE_LERAJE_HIDE_BONUS = 10;
const int VESTIGE_LERAJE_LOW_LIGHT_VISION = 11;
const int VESTIGE_LERAJE_PBSHOT = 12;
const int VESTIGE_LERAJE_RICOCHET = 13;
const int VESTIGE_LERAJE_WEAPON_PROF = 14;
const int VESTIGE_NABERIUS_DISGUISE_SELF = 15;
const int VESTIGE_NABERIUS_ABILITY_HEALING = 16;
const int VESTIGE_NABERIUS_SKILLS = 17;
const int VESTIGE_NABERIUS_PERSUASIVE = 18;
const int VESTIGE_NABERIUS_SILVER_TONGUE = 19;
const int VESTIGE_RONOVE_COLD_IRON = 20;
const int VESTIGE_RONOVE_FAR_HAND = 21;
const int VESTIGE_RONOVE_FISTS = 22;
const int VESTIGE_RONOVE_SPRINT = 23;
const int VESTIGE_DAHLVERNAR_MAD_SOUL = 24;
const int VESTIGE_DAHLVERNAR_MADDENING_MOAN = 25;
const int VESTIGE_DAHLVERNAR_NATURAL_ARMOR = 26;
const int VESTIGE_DAHLVERNAR_SHIELD_SELF = 27;
const int VESTIGE_HAAGENTI_CONFUSE = 28;
const int VESTIGE_HAAGENTI_IMMUNE_TRANS = 29;
const int VESTIGE_HAAGENTI_SHIELD_PROF = 30;
const int VESTIGE_HAAGENTI_WEAPON_PROF = 31;
const int VESTIGE_MALPHAS_ARCANE_EYE = 32;
const int VESTIGE_MALPHAS_INVIS = 33;
const int VESTIGE_MALPHAS_POISON_USE = 34;
const int VESTIGE_MALPHAS_SNEAK_ATTACK = 35;
const int VESTIGE_SAVNOK_CALL_ARMOR = 36;
const int VESTIGE_SAVNOK_HEAVY_ARMOR_PROF = 37;
const int VESTIGE_SAVNOK_MOVE_ALLY = 38;
const int VESTIGE_SAVNOK_SAVNOKS_ARMOR = 39;
const int VESTIGE_ANDROMALIUS_JESTER = 40;
const int VESTIGE_ANDROMALIUS_LOCATE = 41;
const int VESTIGE_ANDROMALIUS_SEE = 42;
const int VESTIGE_ANDROMALIUS_SENSE = 43;
const int VESTIGE_ANDROMALIUS_SNEAK = 44;
const int VESTIGE_FOCALOR_AURA = 45;
const int VESTIGE_FOCALOR_BREATH = 46;
const int VESTIGE_FOCALOR_LIGHTNING = 47;
const int VESTIGE_FOCALOR_BREATHING = 48;
const int VESTIGE_KARSUS_HEAVY_MAGIC = 49;
const int VESTIGE_KARSUS_SENSES_ABIL = 50;
const int VESTIGE_KARSUS_TOUCH = 51;
const int VESTIGE_KARSUS_WILL = 52;
const int VESTIGE_PAIMON_BLADES = 53;
const int VESTIGE_PAIMON_DEX = 54;
const int VESTIGE_PAIMON_SKILLS = 55;
const int VESTIGE_PAIMON_DODGE = 56;
const int VESTIGE_PAIMON_WHIRLWIND = 57;
const int VESTIGE_PAIMON_DANCE = 58;
const int VESTIGE_AGARES_EARTH_MASTERY = 59;
const int VESTIGE_AGARES_EARTHSHAKING = 60;
const int VESTIGE_AGARES_COMPANION = 61;
const int VESTIGE_AGARES_FEAR = 62;
const int VESTIGE_ANDRAS_WEAPON_PROF = 63;
const int VESTIGE_ANDRAS_MOUNT = 64;
const int VESTIGE_ANDRAS_SADDLE_SURE = 65;
const int VESTIGE_ANDRAS_SMITE = 66;
const int VESTIGE_ANDRAS_DISCORD = 67;
const int VESTIGE_ANDRAS_SURE_BLOWS = 68;
const int VESTIGE_BUER_KNOWLEDGE = 69;
const int VESTIGE_BUER_PURITY = 70;
const int VESTIGE_BUER_DELAY_DISEASE = 71;
const int VESTIGE_BUER_FAST_HEALING = 72;
const int VESTIGE_BUER_HEALING_GIFT = 73;
const int VESTIGE_BUER_TRACK = 74;
const int VESTIGE_EURYNOME_ANIMAL_FRIEND = 75;
const int VESTIGE_EURYNOME_DR = 76;
const int VESTIGE_EURYNOME_MAUL = 77;
const int VESTIGE_EURYNOME_POISON = 78;
const int VESTIGE_TENEBROUS_DARKNESS = 79;
const int VESTIGE_TENEBROUS_SEE_DARKNESS = 80;
const int VESTIGE_TENEBROUS_TOUCH_VOID = 81;
const int VESTIGE_TENEBROUS_TURN_UNDEAD = 82;
const int VESTIGE_TENEBROUS_EMPTY_VESSEL = 83;
const int VESTIGE_ARETE_PSIONIC_BOON = 84;
const int VESTIGE_ARETE_RESISTANCE = 85;
const int VESTIGE_ARETE_DR = 86;
const int VESTIGE_ARETE_REPLETION = 87;
const int VESTIGE_ASTAROTH_LORE = 88;
const int VESTIGE_ASTAROTH_BREATH = 89;
const int VESTIGE_ASTAROTH_TONGUE = 90;
const int VESTIGE_ASTAROTH_CRAFT = 91;
const int VESTIGE_ASTAROTH_WORD = 92;
const int VESTIGE_ACERERAK_DETECT = 93;
const int VESTIGE_ACERERAK_HIDE = 94;
const int VESTIGE_ACERERAK_LICH = 95;
const int VESTIGE_ACERERAK_TOUCH = 96;
const int VESTIGE_ACERERAK_HEALING = 97;
const int VESTIGE_BALAM_CUNNING = 98;
const int VESTIGE_BALAM_GLARE = 99;
const int VESTIGE_BALAM_PRESCIENCE = 100;
const int VESTIGE_BALAM_FINESSE = 101;
const int VESTIGE_DANTALION_AWE = 102;
const int VESTIGE_DANTALION_KNOWS = 103;
const int VESTIGE_DANTALION_READ = 104;
const int VESTIGE_DANTALION_TRAVEL = 105;
const int VESTIGE_GERYON_GAZE = 106;
const int VESTIGE_GERYON_VISION = 107;
const int VESTIGE_GERYON_DARKNESS = 108;
const int VESTIGE_GERYON_FLIGHT = 109;
const int VESTIGE_OTIAX_AIR_BLAST = 110;
const int VESTIGE_OTIAX_MIST = 111;
const int VESTIGE_OTIAX_OPEN = 112;
const int VESTIGE_OTIAX_UNLOCK = 113;
const int VESTIGE_CHUPOCLOPS_DESPAIR = 114;
const int VESTIGE_CHUPOCLOPS_ETHEREAL = 115;
const int VESTIGE_CHUPOCLOPS_BITE = 116;
const int VESTIGE_CHUPOCLOPS_POUNCE = 117;
const int VESTIGE_CHUPOCLOPS_SOULSENSE = 118;
const int VESTIGE_HAURES_MIND = 119;
const int VESTIGE_HAURES_MOVE = 120;
const int VESTIGE_HAURES_IMAGE = 121;
const int VESTIGE_HAURES_KILLER = 122;
const int VESTIGE_IPOS_CLAWS = 123;
const int VESTIGE_IPOS_INSIGHT = 124;
const int VESTIGE_IPOS_INFLUENCE = 125;
const int VESTIGE_IPOS_REND = 126;
const int VESTIGE_SHAX_FREEDOM = 127;
const int VESTIGE_SHAX_IMMUNITY = 128;
const int VESTIGE_SHAX_STORM_STRIKE = 129;
const int VESTIGE_ZAGAN_AVERSION = 130;
const int VESTIGE_ZAGAN_GRAPPLE = 131;
const int VESTIGE_ZAGAN_SCENT = 132;
const int VESTIGE_ZAGAN_CONSTRICT = 133;
const int VESTIGE_ZAGAN_LIZARD_BANE = 134;
const int VESTIGE_VANUS_FEAR_AURA = 135;
const int VESTIGE_VANUS_FREE_ALLY = 136;
const int VESTIGE_VANUS_DISDAIN = 137;
const int VESTIGE_VANUS_EARS = 138;
const int VESTIGE_THE_TRIAD_PSIONIC_BOON = 139;
const int VESTIGE_THE_TRIAD_GORN = 140;
const int VESTIGE_THE_TRIAD_RUJSHA = 141;
const int VESTIGE_THE_TRIAD_MINTAR = 142;
const int VESTIGE_DESHARIS_CITY_DWELLER = 143;
const int VESTIGE_DESHARIS_TELEPORT = 144;
const int VESTIGE_DESHARIS_SMITE = 145;
const int VESTIGE_DESHARIS_ANIMATE = 146;
const int VESTIGE_ZCERYLL_ALIEN_FORM = 147;
const int VESTIGE_ZCERYLL_ALIEN_MIND = 148;
const int VESTIGE_ZCERYLL_BOLTS = 149;
const int VESTIGE_ZCERYLL_SUMMON = 150;
const int VESTIGE_ELIGOR_STRIKE = 151;
const int VESTIGE_ELIGOR_SADDLE = 152;
const int VESTIGE_ELIGOR_STRENGTH = 153;
const int VESTIGE_ELIGOR_RESILIENCE = 154;
const int VESTIGE_ELIGOR_ARMOR = 155;
const int VESTIGE_MARCHOSIAS_DEATH_ATTACK = 156;
const int VESTIGE_MARCHOSIAS_RETRIBUTION = 157;
const int VESTIGE_MARCHOSIAS_SMOKE = 158;
const int VESTIGE_MARCHOSIAS_SILENT = 159;
const int VESTIGE_ASHARDALON_CREED = 160;
const int VESTIGE_ASHARDALON_PRESENCE = 161;
const int VESTIGE_ASHARDALON_VIGOR = 162;
const int VESTIGE_ASHARDALON_HEART = 163;
const int VESTIGE_HALPHAX_DR = 164;
const int VESTIGE_HALPHAX_KNOWLEDGE = 165;
const int VESTIGE_HALPHAX_IMPRISON = 166;
const int VESTIGE_HALPHAX_BARRIER = 167;
const int VESTIGE_HALPHAX_SHELTER = 168;
const int VESTIGE_ORTHOS_SIGHT = 169;
const int VESTIGE_ORTHOS_DISPLACEMENT = 170;
const int VESTIGE_ORTHOS_BREATH = 171;
const int VESTIGE_ABYSM_PSIONIC_BOON = 172;
const int VESTIGE_ABYSM_OVERPOWER = 173;

View File

@@ -0,0 +1,190 @@
/** @file
* Caching 2da read function and related.
*
* SQL/NWNx functions now in inc_sql
* @author Primogenitor
*
* @todo Document the constants and functions
*/
const int DEBUG_GET2DACACHE = FALSE;
string Get2DACache(string s2DA, string sColumn, int nRow);
string GetBiowareDBName();
//////////////////////////////////////////////////
/* Include section */
//////////////////////////////////////////////////
#include "inc_debug"
//#include "prc_inc_switch"
//////////////////////////////////////////////////
/* Function defintions */
//////////////////////////////////////////////////
/*
This is fugly and long. Should maybe be refactored to multiple functions. But everything inline does give
a few less instructions used.
Caching behaviour: Tokens in creature inventory
*/
string Get2DACache(string s2DA, string sColumn, int nRow)
{
//lower case the 2da and column
s2DA = GetStringLowerCase(s2DA);
sColumn = GetStringLowerCase(sColumn);
/*//get the chest that contains the cache
object oCacheWP = GetObjectByTag("Bioware2DACache");
//if no chest, use HEARTOFCHAOS in limbo as a location to make a new one
if (!GetIsObjectValid(oCacheWP))
{
if(DEBUG_GET2DACACHE) DoDebug("Get2DACache: Cache container creature does not exist, creating new one");
//oCacheWP = CreateObject(OBJECT_TYPE_PLACEABLE, "plc_chest2",
// GetLocation(GetObjectByTag("HEARTOFCHAOS")), FALSE, "Bioware2DACache");
//has to be a creature, placeables cant go through the DB
oCacheWP = CreateObject(OBJECT_TYPE_CREATURE, "prc_2da_cache",
GetLocation(GetObjectByTag("HEARTOFCHAOS")), FALSE, "Bioware2DACache");
}
//get the token for this file
string sFileWPName = s2DA + "_" + sColumn + "_" + IntToString(nRow / 1000);
//if(DEBUG_GET2DACACHE) DoDebug("Get2DACache: Token tag is " + sFileWPName);
object oFileWP = GetObjectByTag(sFileWPName);
//token doesnt exist make it
if(!GetIsObjectValid(oFileWP))
{
if(DEBUG_GET2DACACHE) DoDebug("Get2DACache: Token does not exist, creating new one");
// Use containers to avoid running out of inventory space
int nContainer = 0;
string sContainerName = "Bio2DACacheTokenContainer_" + GetSubString(s2DA, 0, 1) + "_";
object oContainer = GetObjectByTag(sContainerName + IntToString(nContainer));
// Find last existing container
if(GetIsObjectValid(oContainer))
{
if(DEBUG_GET2DACACHE) DoDebug("Get2DACache: Seeking last container in series: " + sContainerName);
// find the last container
nContainer = GetLocalInt(oContainer, "ContainerCount");
oContainer = GetObjectByTag(sContainerName + IntToString(nContainer));
if(DEBUG_GET2DACACHE) DoDebug("Get2DACache: Found: " + DebugObject2Str(oContainer));
// Make sure it's not full
if(GetLocalInt(oContainer, "NumTokensInside") >= 34) // Container has 35 slots. Attempt to not use them all, just in case
{
if(DEBUG_GET2DACACHE) DoDebug("Get2DACache: Container full: " + DebugObject2Str(oContainer));
oContainer = OBJECT_INVALID;
++nContainer; // new container is 1 higher than last one
}
}
// We need to create a container
if(!GetIsObjectValid(oContainer))
{
if(DEBUG_GET2DACACHE) DoDebug("Get2DACache: Creating new container");
oContainer = CreateObject(OBJECT_TYPE_ITEM, "nw_it_contain001", GetLocation(oCacheWP), FALSE, sContainerName + IntToString(nContainer));
DestroyObject(oContainer);
oContainer = CopyObject(oContainer, GetLocation(oCacheWP), oCacheWP, sContainerName + IntToString(nContainer));
// store the new number of containers in this series
if (nContainer)
SetLocalInt( GetObjectByTag(sContainerName + "0"), "ContainerCount", nContainer);
// else this is the first container - do nothing as this is the same as storing 0 on it.
// Also here we still have 2 objects with the same tag so above code may get
// the object destroyed at the end of the function if this is the first container.
}
if(DEBUG_GET2DACACHE) DoDebug("Get2DACache: Using container: " + DebugObject2Str(oContainer));
// Create the new token
//oFileWP = CreateObject(OBJECT_TYPE_ITEM, "hidetoken", GetLocation(oCacheWP), FALSE, sFileWPName);
//DestroyObject(oFileWP);
//oFileWP = CopyObject(oFileWP, GetLocation(oCacheWP), oCacheWP, sFileWPName);
oFileWP = CreateItemOnObject("hidetoken", oContainer, 1, sFileWPName);
//SetName(oFileWP, "2da Cache - " + sFileWPName);
// Increment token count tracking variable
SetLocalInt(oContainer, "NumTokensInside", GetLocalInt(oContainer, "NumTokensInside") + 1);
}
// get the value from the cache
string s = GetLocalString(oFileWP, s2DA+"|"+sColumn+"|"+IntToString(nRow));
//entry didnt exist in the cache
if(s == "")
{
//fetch from the 2da file
s = Get2DAString(s2DA, sColumn, nRow);
// store it on the waypoint
SetLocalString(oFileWP, s2DA+"|"+sColumn+"|"+IntToString(nRow),
(s == "" ? "****" : s) ); // this sets the stored string to "****" if s is an empty string (else stores s)
if(DEBUG_GET2DACACHE) DoDebug("Get2DACache: Missing from cache: " + s2DA + "|" + sColumn + "|" + IntToString(nRow));
}
//if(DEBUG_GET2DACACHE) PrintString("Get2DACache: Returned value is '" + s + "'");*/
string s = Get2DAString(s2DA, sColumn, nRow);
return s == "****" ? "" : s;
}
string GetBiowareDBName()
{
string sReturn;
sReturn = "prc_data";
//if(GetPRCSwitch(MARKER_PRC_COMPANION))
// sReturn += "cp";
if(GetPRCSwitch(MARKER_CEP1))
sReturn += "c1";
if(GetPRCSwitch(MARKER_CEP2))
sReturn += "c2";
if(GetPRCSwitch(MARKER_Q))
sReturn += "q";
return sReturn;
}
/**
* Gets the file end for the given 2da.
*
* @param sTable The 2da to get the file end for
* @return The file end value of the 2da.
*/
int PRCGetFileEnd(string sTable)
{
sTable = GetStringLowerCase(sTable);
return GetPRCSwitch("PRC_FILE_END_" + sTable);
/* //check fileends.2da first
int nEnd = StringToInt(Get2DACache("fileends", sTable, 0));
//still nothing - check
if(!nEnd) nEnd = StringToInt(Get2DACache("fileends", GetStringLeft(sTable, 8)+"*", 0));
return nEnd;*/
}
/**
* Gets the file end for special PRC files - used in new spellbook system.
*
* cls_psipw_*
* cls_move_*
* cls_true_*
* cls_inv_*
* cls_spell_*
*
* @param sTable The 2da to get the file end for
* @return The file end value of the 2da.
*/
int PRCGetDynamicFileEnd(string sTable)
{
int nRet = StringToInt(Get2DACache(sTable, "label", 0));
if(!nRet)
{
if (DEBUG) DoDebug("FileEnd for "+sTable+" not found! Using default value.");
nRet = 2720;
}
return nRet;
}
//Cache setup functions moved to inc_cache_setup

View File

@@ -0,0 +1,215 @@
//::///////////////////////////////////////////////
//:: Ability Damage special effects include
//:: inc_abil_damage
//:://////////////////////////////////////////////
/** @file
Implements the special effects of an ability
score falling down to 0 as according to PnP.
Strength: Lies helpless on ground (knockdown)
Dexterity: Paralyzed
Constitution: Death
Intelligence: Coma (knockdown)
Wisdom: Coma (knockdown)
Charisma: Coma (knockdown)
This can be turned off with a switch in
prc_inc_switches : PRC_NO_PNP_ABILITY_DAMAGE
NOTE: Due to BioOptimization (tm), Dex reaching
0 from above 3 when any other stat is already
at 0 will result in Dex being considered
restored at the same time the other stat is.
This might be workable around, but not
efficiently.
*/
//:://////////////////////////////////////////////
//:: Created By: Ornedan
//:: Created On: 09.04.2005
//:: Modified On: 25.06.2005
//:://////////////////////////////////////////////
/*
[00:55] <Stratovarius> yup
[00:56] <Stratovarius> well, something to add
[00:56] <Stratovarius> if KTTS reduces target to 0 (or would, i know NWN goes to 3)
[00:56] <Stratovarius> drop a cutscene paralyze on em
[00:56] <Stratovarius> and a long duration knockdown
[01:00] <Ornedan> 'k. And spawn a pseudo-hb on them to do recovery if they ever regain the mental stat
[01:01] <Ornedan> Also, test result: You lose spellcasting if your casting stat drops below the required, even if the reduction is a magical penalty
[01:03] <Stratovarius> you do? cool
*/
//////////////////////////////////////////////////
/* Function prototypes */
//////////////////////////////////////////////////
// Internal function. Called by a threadscript. Handles checking if any ability that has reached 0 has been restored
void AbilityDamageMonitor();
// Dex needs special handling due to the way CutsceneParalyze works (sets Dex to 3)
void DoDexCheck(object oCreature, int bFirstPart = TRUE);
//////////////////////////////////////////////////
/* Includes */
//////////////////////////////////////////////////
//#include "prc_inc_spells"
#include "prc_inc_damage" //functions to apply damage
//////////////////////////////////////////////////
/* Function defintions */
//////////////////////////////////////////////////
void AbilityDamageMonitor()
{
object oCreature = OBJECT_SELF;
int nMonitoredAbilities = GetLocalInt(oCreature, ABILITY_DAMAGE_MONITOR);
int nEffects = GetLocalInt(oCreature, ABILITY_DAMAGE_SPECIALS);
if (DEBUG) DoDebug("AbilityDamageMonitor running");
// Check each of the monitored abilities
if(nMonitoredAbilities & (1 << ABILITY_STRENGTH))
{
if(GetAbilityScore(oCreature, ABILITY_STRENGTH) > 3)
{
DeleteLocalInt(oCreature, VIRTUAL_ABILITY_SCORE + IntToString(ABILITY_STRENGTH));
SetLocalInt(oCreature, ABILITY_DAMAGE_MONITOR, GetLocalInt(oCreature, ABILITY_DAMAGE_MONITOR) ^ (1 << ABILITY_STRENGTH));
if (DEBUG) DoDebug("AbilityDamageMonitor Strength healed");
}
}
/*if(nMonitoredAbilities & (1 << ABILITY_DEXTERITY))
{
if(GetAbilityScore(oCreature, ABILITY_DEXTERITY) > 3)
{
DeleteLocalInt(oCreature, VIRTUAL_ABILITY_SCORE + IntToString(ABILITY_DEXTERITY));
SetLocalInt(oCreature, ABILITY_DAMAGE_MONITOR, GetLocalInt(oCreature, ABILITY_DAMAGE_MONITOR) ^ (1 << ABILITY_DEXTERITY));
}
}*/
if(nMonitoredAbilities & (1 << ABILITY_INTELLIGENCE))
{
if(GetAbilityScore(oCreature, ABILITY_INTELLIGENCE) > 3)
{
DeleteLocalInt(oCreature, VIRTUAL_ABILITY_SCORE + IntToString(ABILITY_INTELLIGENCE));
SetLocalInt(oCreature, ABILITY_DAMAGE_MONITOR, GetLocalInt(oCreature, ABILITY_DAMAGE_MONITOR) ^ (1 << ABILITY_INTELLIGENCE));
if (DEBUG) DoDebug("AbilityDamageMonitor Int healed");
}
}
if(nMonitoredAbilities & (1 << ABILITY_WISDOM))
{
if(GetAbilityScore(oCreature, ABILITY_WISDOM) > 3)
{
DeleteLocalInt(oCreature, VIRTUAL_ABILITY_SCORE + IntToString(ABILITY_WISDOM));
SetLocalInt(oCreature, ABILITY_DAMAGE_MONITOR, GetLocalInt(oCreature, ABILITY_DAMAGE_MONITOR) ^ (1 << ABILITY_WISDOM));
if (DEBUG) DoDebug("AbilityDamageMonitor Wis healed");
}
}
if(nMonitoredAbilities & (1 << ABILITY_CHARISMA))
{
if(GetAbilityScore(oCreature, ABILITY_CHARISMA) > 3)
{
DeleteLocalInt(oCreature, VIRTUAL_ABILITY_SCORE + IntToString(ABILITY_CHARISMA));
SetLocalInt(oCreature, ABILITY_DAMAGE_MONITOR, GetLocalInt(oCreature, ABILITY_DAMAGE_MONITOR) ^ (1 << ABILITY_CHARISMA));
if (DEBUG) DoDebug("AbilityDamageMonitor Cha healed");
}
}
// Check which effects, if any, need to be removed
int bRemovePara, bRemoveKnock;
nMonitoredAbilities = GetLocalInt(oCreature, ABILITY_DAMAGE_MONITOR);
if(!(nMonitoredAbilities & (1 << ABILITY_STRENGTH) ||
nMonitoredAbilities & (1 << ABILITY_INTELLIGENCE) ||
nMonitoredAbilities & (1 << ABILITY_WISDOM) ||
nMonitoredAbilities & (1 << ABILITY_CHARISMA)
) )
{
// Only remove effects if they are present
if(nEffects & ABILITY_DAMAGE_EFFECT_KNOCKDOWN)
{
bRemoveKnock = TRUE;
nEffects ^= ABILITY_DAMAGE_EFFECT_KNOCKDOWN;
}
if(!(nMonitoredAbilities & (1 << ABILITY_DEXTERITY)))
{
if(nEffects & ABILITY_DAMAGE_EFFECT_PARALYZE)
{
bRemovePara = TRUE;
nEffects ^= ABILITY_DAMAGE_EFFECT_KNOCKDOWN;
}
}
// Dex is the only remaining stat keeping CutscenePara on, so run the dexcheck
else
DelayCommand(0.1f, DoDexCheck(oCreature, TRUE));
SetLocalInt(oCreature, ABILITY_DAMAGE_SPECIALS, nEffects);
}
if (DEBUG) DoDebug("AbilityDamageMonitor bRemovePara:" + IntToString(bRemovePara));
if (DEBUG) DoDebug("AbilityDamageMonitor bRemoveKnock:" + IntToString(bRemoveKnock));
// Do effect removal
if(bRemovePara || bRemoveKnock)
{
effect eCheck = GetFirstEffect(oCreature);
while(GetIsEffectValid(eCheck))
{
if(bRemovePara && GetEffectType(eCheck) == EFFECT_TYPE_CUTSCENE_PARALYZE){
if (DEBUG) DoDebug("AbilityDamageMonitor Removed para");
RemoveEffect(oCreature, eCheck);
}
else if(bRemoveKnock && GetEffectType(eCheck) == 0){
RemoveEffect(oCreature, eCheck);
if (DEBUG) DoDebug("AbilityDamageMonitor Removed knock");
}
eCheck = GetNextEffect(oCreature);
}
}
if (DEBUG) DoDebug("AbilityDamageMonitor Monitored abilities:" + IntToString(nMonitoredAbilities));
// Stop the thread if there is nothing to monitor anymore
if(!nMonitoredAbilities)
TerminateCurrentThread();
}
void DoDexCheck(object oCreature, int bFirstPart = TRUE)
{
// Remove CutscenePara
if(bFirstPart)
{
effect eCheck = GetFirstEffect(oCreature);
while(GetIsEffectValid(eCheck))
{
if(GetEffectType(eCheck) == EFFECT_TYPE_CUTSCENE_PARALYZE)
RemoveEffect(oCreature, eCheck);
eCheck = GetNextEffect(oCreature);
}
DelayCommand(0.1f, DoDexCheck(oCreature, FALSE));
if (DEBUG) DoDebug("First part ran");
}
// Check if Dex is over 3 when it's gone
else
{
// It is, so remove Dex from the monitored list
if(GetAbilityScore(oCreature, ABILITY_DEXTERITY) > 3)
{
DeleteLocalInt(oCreature, VIRTUAL_ABILITY_SCORE + IntToString(ABILITY_DEXTERITY));
SetLocalInt(oCreature, ABILITY_DAMAGE_MONITOR, GetLocalInt(oCreature, ABILITY_DAMAGE_MONITOR) ^ (1 << ABILITY_DEXTERITY));
if (DEBUG) DoDebug("Dex check +");
}
/*else
SendMessageToPC(GetFirstPC(), "Dex check -");*/
// Apply CutscenePara back in either case. Next monitor call will remove it if it's supposed to be gone
ApplyEffectToObject(DURATION_TYPE_PERMANENT, EffectCutsceneParalyze(), oCreature);
}
}
// Test main
//void main(){}

98
src/include/inc_acp.nss Normal file
View File

@@ -0,0 +1,98 @@
#include "prc_inc_switch"
const int PHENOTYPE_KENSAI = 49;
const int PHENOTYPE_ASSASSIN = 50;
const int PHENOTYPE_BARBARIAN = 51;
const int PHENOTYPE_FENCING = 52;
const int PHENOTYPE_ARCANE = 53;
const int PHENOTYPE_DEMONBLADE = 54;
const int PHENOTYPE_WARRIOR = 55;
const int PHENOTYPE_TIGERFANG = 56;
const int PHENOTYPE_SUNFIST = 57;
const int PHENOTYPE_DRAGONPALM = 58;
const int PHENOTYPE_BEARSCLAW = 59;
string sLock = "acp_fightingstyle_lock";
/* This creates a LocalInt - a "lock" - ..we check further down if it exists...
* if it does, we don't allow phenotype changing. To prevent lag spam. */
void LockThisFeat()
{
SetLocalInt(OBJECT_SELF, sLock, TRUE);
float fDelay = IntToFloat(GetPRCSwitch(PRC_ACP_DELAY))*60.0;
if(fDelay == 0.0)
fDelay = 90.0;
if(fDelay == -60.0)
fDelay = 0.0;
DelayCommand(fDelay, DeleteLocalInt(OBJECT_SELF, sLock)); //Lock persists 1 min times switchval
}
void ResetFightingStyle() //Resets the character phenotype to 0
{
int nCurrentPheno = GetPhenoType(OBJECT_SELF);
//If we are at phenotype 0 or 2, we do nothing. Tell the player that.
if(nCurrentPheno == PHENOTYPE_NORMAL
|| nCurrentPheno == PHENOTYPE_BIG)
SendMessageToPC(OBJECT_SELF, "You are already using the default combat style.");
//else if we are at an ACP phenotype we want to reset it to neutral.
else if(nCurrentPheno == PHENOTYPE_KENSAI
|| nCurrentPheno == PHENOTYPE_ASSASSIN
|| nCurrentPheno == PHENOTYPE_BARBARIAN
|| nCurrentPheno == PHENOTYPE_FENCING
|| nCurrentPheno == PHENOTYPE_ARCANE
|| nCurrentPheno == PHENOTYPE_DEMONBLADE
|| nCurrentPheno == PHENOTYPE_WARRIOR
|| nCurrentPheno == PHENOTYPE_TIGERFANG
|| nCurrentPheno == PHENOTYPE_SUNFIST
|| nCurrentPheno == PHENOTYPE_DRAGONPALM
|| nCurrentPheno == PHENOTYPE_BEARSCLAW)
{
SetPhenoType(PHENOTYPE_NORMAL);
LockThisFeat(); // Lock use!
}
//else, warn that the player doesn't have a phenotype which can be reset right now
else
SendMessageToPC(OBJECT_SELF, "Your phenotype is non-standard and cannot be reset this way.");
}
void SetCustomFightingStyle(int iStyle) //Sets character phenotype to 5,6,7 or 8
{
int nCurrentPheno = GetPhenoType(OBJECT_SELF);
//Maybe we're already using this fighting style? Just warn the player.
if(nCurrentPheno == iStyle)
SendMessageToPC(OBJECT_SELF, "You're already using this fighting style!");
//If we are at phenotype 0 or one of the styles themselves, we go ahead
//and set the creature's phenotype accordingly! (safe thanks to previous 'if')
else if(nCurrentPheno == PHENOTYPE_NORMAL
|| nCurrentPheno == PHENOTYPE_KENSAI
|| nCurrentPheno == PHENOTYPE_ASSASSIN
|| nCurrentPheno == PHENOTYPE_FENCING
|| nCurrentPheno == PHENOTYPE_ARCANE
|| nCurrentPheno == PHENOTYPE_BARBARIAN
|| nCurrentPheno == PHENOTYPE_DEMONBLADE
|| nCurrentPheno == PHENOTYPE_WARRIOR
|| nCurrentPheno == PHENOTYPE_TIGERFANG
|| nCurrentPheno == PHENOTYPE_SUNFIST
|| nCurrentPheno == PHENOTYPE_DRAGONPALM
|| nCurrentPheno == PHENOTYPE_BEARSCLAW)
{
SetPhenoType(iStyle);
LockThisFeat(); // Lock use!
}
//At phenotype 2? Tell the player they're too fat!
else if (nCurrentPheno == PHENOTYPE_BIG)
SendMessageToPC(OBJECT_SELF, "You're too fat to use a different fighting style!");
//...we didn't fulfil the above conditions? Warn the player.
else
SendMessageToPC(OBJECT_SELF, "Your phenotype is non-standard / Unable to change style");
}
// Test main
//void main(){}

View File

@@ -0,0 +1,202 @@
#include "inc_utility"
//:: Created by Mr. Bumpkin
//:: Include for all rages
//:: This function gets called right after the attribute bonuses are
//:: Applied.
// Applies all the bonus damage, to hit, and temporary hp to barbarians who would go over their
// +12 attribute caps by raging.
void GiveExtraRageBonuses(int nDuration, int nStrBeforeRaging, int nConBeforeRaging, int strBonus, int conBonus, int nSave, int nDamageBonusType, object oRager = OBJECT_SELF);
// Returns the damage type of the weapon held in nInventorySlot by oCreature. If they aren't
// holding a weapon, or the weapon they're holding is a x-bow, sling, shuriken, or dart, it returns
// either the damage type of slashing or bludgeoning, depending on whether they have a prc creature
// slashing weapon or not. It's bludgeoning if they don't have a prc creature slashing weapon.
int GetDamageTypeOfWeapon(int nInventorySlot, object oCreature = OBJECT_SELF);
// Applies all the bonus damage, to hit, and temporary hp to barbarians who would go over their
// +12 attribute caps by raging.
void GiveExtraRageBonuses(int nDuration, int nStrBeforeRaging, int nConBeforeRaging, int strBonus, int conBonus, int nSave, int nDamageBonusType, object oRager = OBJECT_SELF)
{
float nDelayed = 0.1;
int nStrSinceRaging = GetAbilityScore(oRager, ABILITY_STRENGTH);
int nConSinceRaging = GetAbilityScore(oRager, ABILITY_CONSTITUTION);
int nStrAdded = nStrSinceRaging - nStrBeforeRaging;
// The amount that was added to the str
int nStrWeWouldAdd = strBonus - nStrAdded;
// The amount we would have to theorhetically add if we wanted to give them the full bonus.
effect eDamage;
effect eToHit;
if(nStrAdded < strBonus)
{
//int nDamageBonusType = GetDamageTypeOfWeapon(INVENTORY_SLOT_RIGHTHAND, oRager);
if((nStrSinceRaging/2) * 2 != nStrSinceRaging)
// determine if their current Str right now is odd
{
if((nStrWeWouldAdd/2) * 2 != nStrWeWouldAdd)
// determine if the amount we would theorhetically have to add is odd.
// If so, then we're adding 2 odd numbers together to get an even. Add one to the bonuses
{
//::::: in this event we add nStrWeWouldAdd/2 + 1
//int nAmountToAdd = nStrWeWouldAdd/2 + 1;
eDamage = EffectDamageIncrease(nStrWeWouldAdd/2 + 1, nDamageBonusType);
eToHit = EffectAttackIncrease(nStrWeWouldAdd/2 +1);
}
else
{
//::::: in this event we add nStrWeWouldAdd/2
eDamage = EffectDamageIncrease(nStrWeWouldAdd/2, nDamageBonusType);
eToHit = EffectAttackIncrease(nStrWeWouldAdd/2);
}
}
else
{
//::::: in this event we add nStrWeWouldAdd/2
eDamage = EffectDamageIncrease(nStrWeWouldAdd/2, nDamageBonusType);
eToHit = EffectAttackIncrease(nStrWeWouldAdd/2);
}
effect eLink2 = ExtraordinaryEffect(EffectLinkEffects(eDamage, eToHit));
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink2, oRager, RoundsToSeconds(nDuration) - nDelayed);
// Applies the damage and toHit effects. I couldn't help myself, so I made the damage type be fire.
}
// If nStrAdded >= nStrBonus, then no need to add any special bonuses. :)
int nConAdded = nConSinceRaging - nConBeforeRaging;
// The amount that was added to the Con
int nConWeWouldAdd = conBonus - nConAdded;
// The amount we would have to theorhetically add if we wanted to give them the full bonus.
if(nConAdded < conBonus)
{
effect eHitPoints;
effect eHPRemoved;
int nCharacterLevel = GetHitDice(oRager);
if((nConSinceRaging/2) * 2 != nConSinceRaging)
// determine if their current Con right now is odd
{
if((nConWeWouldAdd/2) * 2 != nConWeWouldAdd)
// determine if the amount we would theorhetically have to add is odd.
// If so, then we're adding 2 odd numbers together to get an even. Add one to the bonuses
{
//::::: in this event we add nConWeWouldAdd/2 + 1
eHitPoints = EffectTemporaryHitpoints((nConWeWouldAdd/2 +1) * nCharacterLevel);
eHPRemoved = EffectDamage(((nConWeWouldAdd/2 +1) * nCharacterLevel), DAMAGE_TYPE_MAGICAL);
// We have to remove the temporary HP at the end of the rage via a damage effect, hehe.
// The damage type will be magical, something to keep in mind of magical resistances exist
// on your module. :) If that's a problem, change the damage type.
}
else
{
//::::: in this event we add nConWeWouldAdd/2
eHitPoints = EffectTemporaryHitpoints((nConWeWouldAdd/2) * nCharacterLevel);
eHPRemoved = EffectDamage(((nConWeWouldAdd/2) * nCharacterLevel), DAMAGE_TYPE_MAGICAL);
// We have to remove the temporary HP at the end of the rage via a damage effect, hehe.
// The damage type will be magical, something to keep in mind of magical resistances exist
// on your module. :) If that's a problem, change the damage type.
}
}
else
{
//::::: in this event we add nConWeWouldAdd/2
eHitPoints = EffectTemporaryHitpoints((nConWeWouldAdd/2) * nCharacterLevel);
eHPRemoved = EffectDamage(((nConWeWouldAdd/2) * nCharacterLevel), DAMAGE_TYPE_MAGICAL);
// We have to remove the temporary HP at the end of the rage via a damage effect, hehe.
// The damage type will be magical, something to keep in mind of magical resistances exist
// on your module. :) If that's a problem, change the damage type.
}
eHitPoints = ExtraordinaryEffect(eHitPoints);
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eHitPoints, oRager, RoundsToSeconds(nDuration)- nDelayed);
//::: Had to ditch applying the damage effect, cause it would apply it even if they rested during their
//::: rage, and the resting was what ended it. Pretty Ironic.
//::: If you reactivate it, make sure to have the temporary HP effect last longer than the delay on the damage effect. 8j
//DelayCommand(RoundsToSeconds(nDuration) - nDelayed, ApplyEffectToObject(DURATION_TYPE_INSTANT, eHPRemoved, oRager));
// This is really how the temporary hp are going to get removed. I just didn't want to take any chances,
// so I gave the temporary hp a temporary duration.
}
// If nConAdded >= nConBonus, then no need to add any special bonuses. :)
}// End of the whole function.
// Returns the damage type of the weapon held in nInventorySlot by oCreature. If they aren't
// holding a weapon, or the weapon they're holding is a x-bow, sling, shuriken, or dart, it returns
// either the damage type of slashing or bludgeoning, depending on whether they have a prc creature
// slashing weapon or not. It's bludgeoning if they don't have a prc creature slashing weapon.
int GetDamageTypeOfWeapon(int nInventorySlot, object oCreature = OBJECT_SELF)
{
// 2da lookup to see what kind of damage it deals, then find the equivalent constant
int iDamageType = StringToInt(Get2DACache("baseitems","WeaponType",GetBaseItemType(GetItemInSlot(nInventorySlot, oCreature))));
switch(iDamageType)
{
case 1: return DAMAGE_TYPE_PIERCING;
case 2: return DAMAGE_TYPE_BLUDGEONING;
case 3: return DAMAGE_TYPE_SLASHING;
case 4: return DAMAGE_TYPE_SLASHING; // slashing & piercing... slashing bonus.
case 5: return DAMAGE_TYPE_BLUDGEONING; // bludeoning & piercing... bludeoning bonus.
}
// If none of the above types got a hit, we must assume the character is unarmed.
if(GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_CWEAPON_R, oCreature)) == BASE_ITEM_CSLSHPRCWEAP
|| GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_CWEAPON_L, oCreature)) == BASE_ITEM_CSLSHPRCWEAP
|| GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_CWEAPON_B, oCreature)) == BASE_ITEM_CSLSHPRCWEAP)
{
return DAMAGE_TYPE_SLASHING;
}
// If they're unarmed and have no creature weapons from a prc, we must assume they are just using their fists.
return DAMAGE_TYPE_BLUDGEONING;
}
// function I typed out to add duration to the rage, only to realize happily that there is no need.
// the normal rage function calculates duration as being what it naturally should be, even if there
// were no +12 bonus cap. :)
/*
if(nBonusDuration)
{
effect eStr = EffectAbilityIncrease(ABILITY_CONSTITUTION, nBonus);
effect eCon = EffectAbilityIncrease(ABILITY_STRENGTH, nBonus);
effect eSave = EffectSavingThrowIncrease(SAVING_THROW_WILL, nSave);
effect eAC = EffectACDecrease(2, AC_DODGE_BONUS);
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE);
effect eLink = EffectLinkEffects(eCon, eStr);
eLink = EffectLinkEffects(eLink, eSave);
eLink = EffectLinkEffects(eLink, eAC);
eLink = EffectLinkEffects(eLink, eDur);
SignalEvent(OBJECT_SELF, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_BARBARIAN_RAGE, FALSE));
//Make effect extraordinary
eLink = ExtraordinaryEffect(eLink);
DelayCommand(RoundsToSeconds(nDuration, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oRager, RoundsToSeconds(nBonusDuration)));
}
*/

83
src/include/inc_area.nss Normal file
View File

@@ -0,0 +1,83 @@
// Moved to a seperate inc to prevent a circular dependency error
/*********************\
* Function Prototypes *
\*********************/
/**
* This function will get the width of the area passed in.
*
* Created By: Zaddix
* Created On: July 17, 2002
* Optimized: March , 2003 by Knat
*
* @param oArea The area to get the width of.
* @return The width of oArea, as number of tiles. One tile = 10 meters.
*/
int GetAreaWidth(object oArea);
/**
* This function will get the height of the area passed in.
*
* Created By: Zaddix
* Created On: July 17, 2002
* Optimized: March , 2003 by Knat
*
* @param oArea The area to get the height of.
* @return The height of oArea, as number of tiles. One tile = 10 meters.
*/
int GetAreaHeight(object oArea);
//////////////////////////////////////////////////
/* Include section */
//////////////////////////////////////////////////
/**********************\
* Function Definitions *
\**********************/
int GetAreaWidth(object oArea)
{
int nX = GetLocalInt(oArea,"#WIDTH");
if( nX == 0)
{
int nY = 0; int nColor;
for (nX = 0; nX < 32; ++nX)
{
nColor = GetTileMainLight1Color(Location(oArea, Vector(IntToFloat(nX), 0.0, 0.0), 0.0));
if (nColor < 0 || nColor > 255)
{
SetLocalInt(oArea,"#WIDTH", nX);
return(nX);
}
}
SetLocalInt(oArea,"#WIDTH", 32);
return 32;
}
else
return nX;
}
int GetAreaHeight(object oArea)
{
int nY = GetLocalInt(oArea,"#HEIGHT");
if( nY == 0)
{
int nX = 0; int nColor;
for (nY=0; nY<32; ++nY)
{
nColor = GetTileMainLight1Color(Location(oArea, Vector(0.0, IntToFloat(nY), 0.0),0.0));
if (nColor < 0 || nColor > 255)
{
SetLocalInt(oArea,"#HEIGHT",nY);
return(nY);
}
}
SetLocalInt(oArea,"#HEIGHT",32);
return 32;
}
else
return nY;
}

Some files were not shown because too many files have changed in this diff Show More