From 368fbb25aaf21bb21a21649df02bc3c911ea6712 Mon Sep 17 00:00:00 2001 From: Jaysyn904 <68194417+Jaysyn904@users.noreply.github.com> Date: Mon, 28 Apr 2025 12:25:49 -0400 Subject: [PATCH] Added PC Deleter NPC Added PC Deleter NPC. Full compile. --- _module/are/hallsoftheplanes.are.json | 2 +- _module/are/thevoid001.are.json | 2 +- _module/dlg/hs_del_pc.dlg.json | 631 +++++++ _module/gic/hallsoftheplanes.gic.json | 7 + _module/git/hallsoftheplanes.git.json | 654 +++++++ _module/git/thevoid001.git.json | 2 +- _module/itp/creaturepalcus.itp.json | 38 + _module/itp/itempalcus.itp.json | 231 +-- _module/ncs/at_caplvlup.ncs | Bin 0 -> 302 bytes _module/ncs/dante_letodel_at.ncs | Bin 0 -> 419 bytes _module/ncs/darktrigger.ncs | Bin 226 -> 162 bytes _module/ncs/hgll_lvl_portal.ncs | Bin 133 -> 213 bytes _module/ncs/openabyssstore.ncs | Bin 144 -> 160 bytes _module/ncs/openabyswpnstore.ncs | Bin 143 -> 159 bytes _module/ncs/openarcanestore.ncs | Bin 143 -> 159 bytes _module/ncs/openarenawpns.ncs | Bin 144 -> 160 bytes _module/ncs/opengwpnstore2.ncs | Bin 147 -> 163 bytes _module/ncs/openheavenwpns.ncs | Bin 146 -> 162 bytes _module/ncs/openpotstore.ncs | Bin 143 -> 159 bytes _module/ncs/openstore006.ncs | Bin 145 -> 161 bytes _module/ncs/openstore008.ncs | Bin 149 -> 165 bytes _module/ncs/sf_wingwand.ncs | Bin 235 -> 251 bytes _module/ncs/spawnb_cc_activ.ncs | Bin 180 -> 164 bytes _module/nss/at_caplvlup.nss | 19 + _module/nss/dante_letodel_at.nss | 20 + _module/nss/ms_name_inc.nss | 2470 +++++++++++++++++++++++++ _module/utc/npc_annihilus001.utc.json | 649 +++++++ 27 files changed, 4612 insertions(+), 113 deletions(-) create mode 100644 _module/dlg/hs_del_pc.dlg.json create mode 100644 _module/ncs/at_caplvlup.ncs create mode 100644 _module/ncs/dante_letodel_at.ncs create mode 100644 _module/nss/at_caplvlup.nss create mode 100644 _module/nss/dante_letodel_at.nss create mode 100644 _module/nss/ms_name_inc.nss create mode 100644 _module/utc/npc_annihilus001.utc.json diff --git a/_module/are/hallsoftheplanes.are.json b/_module/are/hallsoftheplanes.are.json index 48846e0..b853097 100644 --- a/_module/are/hallsoftheplanes.are.json +++ b/_module/are/hallsoftheplanes.are.json @@ -2917,7 +2917,7 @@ }, "Version": { "type": "dword", - "value": 195 + "value": 196 }, "Width": { "type": "int", diff --git a/_module/are/thevoid001.are.json b/_module/are/thevoid001.are.json index c1e660f..27028f6 100644 --- a/_module/are/thevoid001.are.json +++ b/_module/are/thevoid001.are.json @@ -2917,7 +2917,7 @@ }, "Version": { "type": "dword", - "value": 49 + "value": 50 }, "Width": { "type": "int", diff --git a/_module/dlg/hs_del_pc.dlg.json b/_module/dlg/hs_del_pc.dlg.json new file mode 100644 index 0000000..6ea7154 --- /dev/null +++ b/_module/dlg/hs_del_pc.dlg.json @@ -0,0 +1,631 @@ +{ + "__data_type": "DLG ", + "DelayEntry": { + "type": "dword", + "value": 0 + }, + "DelayReply": { + "type": "dword", + "value": 0 + }, + "EndConverAbort": { + "type": "resref", + "value": "nw_walk_wp" + }, + "EndConversation": { + "type": "resref", + "value": "nw_walk_wp" + }, + "EntryList": { + "type": "list", + "value": [ + { + "__struct_id": 0, + "ActionParams": { + "type": "list", + "value": [] + }, + "Animation": { + "type": "dword", + "value": 0 + }, + "AnimLoop": { + "type": "byte", + "value": 1 + }, + "Comment": { + "type": "cexostring", + "value": "" + }, + "Delay": { + "type": "dword", + "value": 4294967295 + }, + "Quest": { + "type": "cexostring", + "value": "" + }, + "RepliesList": { + "type": "list", + "value": [ + { + "__struct_id": 0, + "Active": { + "type": "resref", + "value": "" + }, + "ConditionParams": { + "type": "list", + "value": [] + }, + "Index": { + "type": "dword", + "value": 1 + }, + "IsChild": { + "type": "byte", + "value": 0 + } + }, + { + "__struct_id": 1, + "Active": { + "type": "resref", + "value": "" + }, + "ConditionParams": { + "type": "list", + "value": [] + }, + "Index": { + "type": "dword", + "value": 0 + }, + "IsChild": { + "type": "byte", + "value": 0 + } + } + ] + }, + "Script": { + "type": "resref", + "value": "" + }, + "Sound": { + "type": "resref", + "value": "" + }, + "Speaker": { + "type": "cexostring", + "value": "" + }, + "Text": { + "type": "cexolocstring", + "value": { + "0": "What do you need, mortal?" + } + } + }, + { + "__struct_id": 1, + "ActionParams": { + "type": "list", + "value": [] + }, + "Animation": { + "type": "dword", + "value": 0 + }, + "AnimLoop": { + "type": "byte", + "value": 1 + }, + "Comment": { + "type": "cexostring", + "value": "" + }, + "Delay": { + "type": "dword", + "value": 4294967295 + }, + "Quest": { + "type": "cexostring", + "value": "" + }, + "RepliesList": { + "type": "list", + "value": [ + { + "__struct_id": 0, + "Active": { + "type": "resref", + "value": "" + }, + "ConditionParams": { + "type": "list", + "value": [] + }, + "Index": { + "type": "dword", + "value": 3 + }, + "IsChild": { + "type": "byte", + "value": 0 + } + }, + { + "__struct_id": 1, + "Active": { + "type": "resref", + "value": "" + }, + "ConditionParams": { + "type": "list", + "value": [] + }, + "Index": { + "type": "dword", + "value": 2 + }, + "IsChild": { + "type": "byte", + "value": 0 + } + } + ] + }, + "Script": { + "type": "resref", + "value": "" + }, + "Sound": { + "type": "resref", + "value": "" + }, + "Speaker": { + "type": "cexostring", + "value": "" + }, + "Text": { + "type": "cexolocstring", + "value": { + "0": "You'd like to delete this character from the server vault?" + } + } + }, + { + "__struct_id": 2, + "ActionParams": { + "type": "list", + "value": [] + }, + "Animation": { + "type": "dword", + "value": 0 + }, + "AnimLoop": { + "type": "byte", + "value": 1 + }, + "Comment": { + "type": "cexostring", + "value": "" + }, + "Delay": { + "type": "dword", + "value": 4294967295 + }, + "Quest": { + "type": "cexostring", + "value": "" + }, + "RepliesList": { + "type": "list", + "value": [ + { + "__struct_id": 0, + "Active": { + "type": "resref", + "value": "" + }, + "ConditionParams": { + "type": "list", + "value": [] + }, + "Index": { + "type": "dword", + "value": 5 + }, + "IsChild": { + "type": "byte", + "value": 0 + } + }, + { + "__struct_id": 1, + "Active": { + "type": "resref", + "value": "" + }, + "ConditionParams": { + "type": "list", + "value": [] + }, + "Index": { + "type": "dword", + "value": 4 + }, + "IsChild": { + "type": "byte", + "value": 0 + } + } + ] + }, + "Script": { + "type": "resref", + "value": "" + }, + "Sound": { + "type": "resref", + "value": "" + }, + "Speaker": { + "type": "cexostring", + "value": "" + }, + "Text": { + "type": "cexolocstring", + "value": { + "0": " Are you certain? You will be booted from the server. When you come back your character will be deleted. This cannot be undone, and there is nothing the server admins or DMs can do to undelete this character." + } + } + } + ] + }, + "NumWords": { + "type": "dword", + "value": 67 + }, + "PreventZoomIn": { + "type": "byte", + "value": 0 + }, + "ReplyList": { + "type": "list", + "value": [ + { + "__struct_id": 0, + "ActionParams": { + "type": "list", + "value": [] + }, + "Animation": { + "type": "dword", + "value": 0 + }, + "AnimLoop": { + "type": "byte", + "value": 1 + }, + "Comment": { + "type": "cexostring", + "value": "" + }, + "Delay": { + "type": "dword", + "value": 4294967295 + }, + "EntriesList": { + "type": "list", + "value": [] + }, + "Quest": { + "type": "cexostring", + "value": "" + }, + "Script": { + "type": "resref", + "value": "" + }, + "Sound": { + "type": "resref", + "value": "" + }, + "Text": { + "type": "cexolocstring", + "value": { + "0": "Done" + } + } + }, + { + "__struct_id": 1, + "ActionParams": { + "type": "list", + "value": [] + }, + "Animation": { + "type": "dword", + "value": 0 + }, + "AnimLoop": { + "type": "byte", + "value": 1 + }, + "Comment": { + "type": "cexostring", + "value": "" + }, + "Delay": { + "type": "dword", + "value": 4294967295 + }, + "EntriesList": { + "type": "list", + "value": [ + { + "__struct_id": 0, + "Active": { + "type": "resref", + "value": "" + }, + "ConditionParams": { + "type": "list", + "value": [] + }, + "Index": { + "type": "dword", + "value": 1 + }, + "IsChild": { + "type": "byte", + "value": 0 + } + } + ] + }, + "Quest": { + "type": "cexostring", + "value": "" + }, + "Script": { + "type": "resref", + "value": "" + }, + "Sound": { + "type": "resref", + "value": "" + }, + "Text": { + "type": "cexolocstring", + "value": { + "0": "I'd like to delete this character." + } + } + }, + { + "__struct_id": 2, + "ActionParams": { + "type": "list", + "value": [] + }, + "Animation": { + "type": "dword", + "value": 0 + }, + "AnimLoop": { + "type": "byte", + "value": 1 + }, + "Comment": { + "type": "cexostring", + "value": "" + }, + "Delay": { + "type": "dword", + "value": 4294967295 + }, + "EntriesList": { + "type": "list", + "value": [] + }, + "Quest": { + "type": "cexostring", + "value": "" + }, + "Script": { + "type": "resref", + "value": "" + }, + "Sound": { + "type": "resref", + "value": "" + }, + "Text": { + "type": "cexolocstring", + "value": { + "0": "No." + } + } + }, + { + "__struct_id": 3, + "ActionParams": { + "type": "list", + "value": [] + }, + "Animation": { + "type": "dword", + "value": 0 + }, + "AnimLoop": { + "type": "byte", + "value": 1 + }, + "Comment": { + "type": "cexostring", + "value": "" + }, + "Delay": { + "type": "dword", + "value": 4294967295 + }, + "EntriesList": { + "type": "list", + "value": [ + { + "__struct_id": 0, + "Active": { + "type": "resref", + "value": "" + }, + "ConditionParams": { + "type": "list", + "value": [] + }, + "Index": { + "type": "dword", + "value": 2 + }, + "IsChild": { + "type": "byte", + "value": 0 + } + } + ] + }, + "Quest": { + "type": "cexostring", + "value": "" + }, + "Script": { + "type": "resref", + "value": "" + }, + "Sound": { + "type": "resref", + "value": "" + }, + "Text": { + "type": "cexolocstring", + "value": { + "0": "Yes." + } + } + }, + { + "__struct_id": 4, + "ActionParams": { + "type": "list", + "value": [] + }, + "Animation": { + "type": "dword", + "value": 0 + }, + "AnimLoop": { + "type": "byte", + "value": 1 + }, + "Comment": { + "type": "cexostring", + "value": "" + }, + "Delay": { + "type": "dword", + "value": 4294967295 + }, + "EntriesList": { + "type": "list", + "value": [] + }, + "Quest": { + "type": "cexostring", + "value": "" + }, + "Script": { + "type": "resref", + "value": "" + }, + "Sound": { + "type": "resref", + "value": "" + }, + "Text": { + "type": "cexolocstring", + "value": { + "0": "No, my mistake." + } + } + }, + { + "__struct_id": 5, + "ActionParams": { + "type": "list", + "value": [] + }, + "Animation": { + "type": "dword", + "value": 0 + }, + "AnimLoop": { + "type": "byte", + "value": 1 + }, + "Comment": { + "type": "cexostring", + "value": "" + }, + "Delay": { + "type": "dword", + "value": 4294967295 + }, + "EntriesList": { + "type": "list", + "value": [] + }, + "Quest": { + "type": "cexostring", + "value": "" + }, + "Script": { + "type": "resref", + "value": "dante_letodel_at" + }, + "Sound": { + "type": "resref", + "value": "" + }, + "Text": { + "type": "cexolocstring", + "value": { + "0": "Yes, proceed." + } + } + } + ] + }, + "StartingList": { + "type": "list", + "value": [ + { + "__struct_id": 0, + "Active": { + "type": "resref", + "value": "" + }, + "ConditionParams": { + "type": "list", + "value": [] + }, + "Index": { + "type": "dword", + "value": 0 + } + } + ] + } +} diff --git a/_module/gic/hallsoftheplanes.gic.json b/_module/gic/hallsoftheplanes.gic.json index 639c3d7..d20bb84 100644 --- a/_module/gic/hallsoftheplanes.gic.json +++ b/_module/gic/hallsoftheplanes.gic.json @@ -3,6 +3,13 @@ "Creature List": { "type": "list", "value": [ + { + "__struct_id": 4, + "Comment": { + "type": "cexostring", + "value": "" + } + }, { "__struct_id": 4, "Comment": { diff --git a/_module/git/hallsoftheplanes.git.json b/_module/git/hallsoftheplanes.git.json index 4eb92f8..eccb5b6 100644 --- a/_module/git/hallsoftheplanes.git.json +++ b/_module/git/hallsoftheplanes.git.json @@ -4757,6 +4757,660 @@ "type": "float", "value": -5.7220458984375e-006 } + }, + { + "__struct_id": 4, + "Appearance_Type": { + "type": "word", + "value": 1096 + }, + "BodyBag": { + "type": "byte", + "value": 0 + }, + "Cha": { + "type": "byte", + "value": 18 + }, + "ChallengeRating": { + "type": "float", + "value": 15.0 + }, + "ClassList": { + "type": "list", + "value": [ + { + "__struct_id": 2, + "Class": { + "type": "int", + "value": 5 + }, + "ClassLevel": { + "type": "short", + "value": 1 + } + }, + { + "__struct_id": 2, + "Class": { + "type": "int", + "value": 4 + }, + "ClassLevel": { + "type": "short", + "value": 1 + } + }, + { + "__struct_id": 2, + "Class": { + "type": "int", + "value": 19 + }, + "ClassLevel": { + "type": "short", + "value": 1 + } + } + ] + }, + "Con": { + "type": "byte", + "value": 12 + }, + "Conversation": { + "type": "resref", + "value": "hs_del_pc" + }, + "CRAdjust": { + "type": "int", + "value": 0 + }, + "CurrentHitPoints": { + "type": "short", + "value": 308 + }, + "DecayTime": { + "type": "dword", + "value": 5000 + }, + "Deity": { + "type": "cexostring", + "value": "" + }, + "Description": { + "type": "cexolocstring", + "value": { + "0": "Talk to this creature if you need to delete your character." + } + }, + "Dex": { + "type": "byte", + "value": 22 + }, + "Disarmable": { + "type": "byte", + "value": 0 + }, + "Equip_ItemList": { + "type": "list", + "value": [] + }, + "FactionID": { + "type": "word", + "value": 3 + }, + "FeatList": { + "type": "list", + "value": [ + { + "__struct_id": 1, + "Feat": { + "type": "word", + "value": 2918 + } + }, + { + "__struct_id": 1, + "Feat": { + "type": "word", + "value": 2 + } + }, + { + "__struct_id": 1, + "Feat": { + "type": "word", + "value": 3 + } + }, + { + "__struct_id": 1, + "Feat": { + "type": "word", + "value": 4 + } + }, + { + "__struct_id": 1, + "Feat": { + "type": "word", + "value": 32 + } + }, + { + "__struct_id": 1, + "Feat": { + "type": "word", + "value": 45 + } + }, + { + "__struct_id": 1, + "Feat": { + "type": "word", + "value": 49 + } + }, + { + "__struct_id": 1, + "Feat": { + "type": "word", + "value": 46 + } + } + ] + }, + "FirstName": { + "type": "cexolocstring", + "value": { + "0": "Annihilus" + } + }, + "fortbonus": { + "type": "short", + "value": 0 + }, + "Gender": { + "type": "byte", + "value": 4 + }, + "GoodEvil": { + "type": "byte", + "value": 50 + }, + "HitPoints": { + "type": "short", + "value": 308 + }, + "Int": { + "type": "byte", + "value": 12 + }, + "Interruptable": { + "type": "byte", + "value": 1 + }, + "IsImmortal": { + "type": "byte", + "value": 1 + }, + "IsPC": { + "type": "byte", + "value": 0 + }, + "LastName": { + "type": "cexolocstring", + "value": { + "0": "" + } + }, + "LawfulChaotic": { + "type": "byte", + "value": 50 + }, + "Lootable": { + "type": "byte", + "value": 0 + }, + "MaxHitPoints": { + "type": "short", + "value": 311 + }, + "NaturalAC": { + "type": "byte", + "value": 99 + }, + "NoPermDeath": { + "type": "byte", + "value": 1 + }, + "PerceptionRange": { + "type": "byte", + "value": 8 + }, + "Phenotype": { + "type": "int", + "value": 0 + }, + "Plot": { + "type": "byte", + "value": 1 + }, + "PortraitId": { + "type": "word", + "value": 2236 + }, + "Race": { + "type": "byte", + "value": 24 + }, + "refbonus": { + "type": "short", + "value": 0 + }, + "ScriptAttacked": { + "type": "resref", + "value": "x2_def_attacked" + }, + "ScriptDamaged": { + "type": "resref", + "value": "x2_def_ondamage" + }, + "ScriptDeath": { + "type": "resref", + "value": "x2_def_ondeath" + }, + "ScriptDialogue": { + "type": "resref", + "value": "x2_def_onconv" + }, + "ScriptDisturbed": { + "type": "resref", + "value": "x2_def_ondisturb" + }, + "ScriptEndRound": { + "type": "resref", + "value": "x2_def_endcombat" + }, + "ScriptHeartbeat": { + "type": "resref", + "value": "x2_def_heartbeat" + }, + "ScriptOnBlocked": { + "type": "resref", + "value": "x2_def_onblocked" + }, + "ScriptOnNotice": { + "type": "resref", + "value": "x2_def_percept" + }, + "ScriptRested": { + "type": "resref", + "value": "x2_def_rested" + }, + "ScriptSpawn": { + "type": "resref", + "value": "x2_def_spawn" + }, + "ScriptSpellAt": { + "type": "resref", + "value": "x2_def_spellcast" + }, + "ScriptUserDefine": { + "type": "resref", + "value": "x2_def_userdef" + }, + "SkillList": { + "type": "list", + "value": [ + { + "__struct_id": 0, + "Rank": { + "type": "byte", + "value": 0 + } + }, + { + "__struct_id": 0, + "Rank": { + "type": "byte", + "value": 19 + } + }, + { + "__struct_id": 0, + "Rank": { + "type": "byte", + "value": 0 + } + }, + { + "__struct_id": 0, + "Rank": { + "type": "byte", + "value": 43 + } + }, + { + "__struct_id": 0, + "Rank": { + "type": "byte", + "value": 0 + } + }, + { + "__struct_id": 0, + "Rank": { + "type": "byte", + "value": 5 + } + }, + { + "__struct_id": 0, + "Rank": { + "type": "byte", + "value": 43 + } + }, + { + "__struct_id": 0, + "Rank": { + "type": "byte", + "value": 0 + } + }, + { + "__struct_id": 0, + "Rank": { + "type": "byte", + "value": 0 + } + }, + { + "__struct_id": 0, + "Rank": { + "type": "byte", + "value": 0 + } + }, + { + "__struct_id": 0, + "Rank": { + "type": "byte", + "value": 0 + } + }, + { + "__struct_id": 0, + "Rank": { + "type": "byte", + "value": 43 + } + }, + { + "__struct_id": 0, + "Rank": { + "type": "byte", + "value": 0 + } + }, + { + "__struct_id": 0, + "Rank": { + "type": "byte", + "value": 0 + } + }, + { + "__struct_id": 0, + "Rank": { + "type": "byte", + "value": 0 + } + }, + { + "__struct_id": 0, + "Rank": { + "type": "byte", + "value": 0 + } + }, + { + "__struct_id": 0, + "Rank": { + "type": "byte", + "value": 30 + } + }, + { + "__struct_id": 0, + "Rank": { + "type": "byte", + "value": 0 + } + }, + { + "__struct_id": 0, + "Rank": { + "type": "byte", + "value": 1 + } + }, + { + "__struct_id": 0, + "Rank": { + "type": "byte", + "value": 26 + } + }, + { + "__struct_id": 0, + "Rank": { + "type": "byte", + "value": 0 + } + }, + { + "__struct_id": 0, + "Rank": { + "type": "byte", + "value": 40 + } + }, + { + "__struct_id": 0, + "Rank": { + "type": "byte", + "value": 0 + } + }, + { + "__struct_id": 0, + "Rank": { + "type": "byte", + "value": 0 + } + }, + { + "__struct_id": 0, + "Rank": { + "type": "byte", + "value": 0 + } + }, + { + "__struct_id": 0, + "Rank": { + "type": "byte", + "value": 0 + } + }, + { + "__struct_id": 0, + "Rank": { + "type": "byte", + "value": 0 + } + }, + { + "__struct_id": 0, + "Rank": { + "type": "byte", + "value": 0 + } + }, + { + "__struct_id": 0, + "Rank": { + "type": "byte", + "value": 0 + } + }, + { + "__struct_id": 0, + "Rank": { + "type": "byte", + "value": 0 + } + }, + { + "__struct_id": 0, + "Rank": { + "type": "byte", + "value": 0 + } + }, + { + "__struct_id": 0, + "Rank": { + "type": "byte", + "value": 0 + } + }, + { + "__struct_id": 0, + "Rank": { + "type": "byte", + "value": 0 + } + }, + { + "__struct_id": 0, + "Rank": { + "type": "byte", + "value": 0 + } + }, + { + "__struct_id": 0, + "Rank": { + "type": "byte", + "value": 0 + } + }, + { + "__struct_id": 0, + "Rank": { + "type": "byte", + "value": 0 + } + }, + { + "__struct_id": 0, + "Rank": { + "type": "byte", + "value": 0 + } + }, + { + "__struct_id": 0, + "Rank": { + "type": "byte", + "value": 0 + } + }, + { + "__struct_id": 0, + "Rank": { + "type": "byte", + "value": 0 + } + } + ] + }, + "SoundSetFile": { + "type": "word", + "value": 237 + }, + "SpecAbilityList": { + "type": "list", + "value": [] + }, + "StartingPackage": { + "type": "byte", + "value": 24 + }, + "Str": { + "type": "byte", + "value": 14 + }, + "Subrace": { + "type": "cexostring", + "value": "Undead" + }, + "Tag": { + "type": "cexostring", + "value": "NPC_ANNIHILUS001" + }, + "Tail_New": { + "type": "dword", + "value": 0 + }, + "TemplateList": { + "type": "list", + "value": [] + }, + "TemplateResRef": { + "type": "resref", + "value": "npc_annihilus001" + }, + "WalkRate": { + "type": "int", + "value": 1 + }, + "willbonus": { + "type": "short", + "value": 0 + }, + "Wings_New": { + "type": "dword", + "value": 0 + }, + "Wis": { + "type": "byte", + "value": 8 + }, + "XOrientation": { + "type": "float", + "value": 0.8700871467590332 + }, + "XPosition": { + "type": "float", + "value": 32.89826202392578 + }, + "YOrientation": { + "type": "float", + "value": -0.4928979575634003 + }, + "YPosition": { + "type": "float", + "value": 73.36067199707031 + }, + "ZPosition": { + "type": "float", + "value": -5.7220458984375e-006 + } } ] }, diff --git a/_module/git/thevoid001.git.json b/_module/git/thevoid001.git.json index a0f146b..529c6b0 100644 --- a/_module/git/thevoid001.git.json +++ b/_module/git/thevoid001.git.json @@ -99,7 +99,7 @@ "Description": { "type": "cexolocstring", "value": { - "0": "This information is to give newcomers an idea of what the Underworld has to offer players looking for a new module to play on.\n\nThe Underworld has:\n\nPersistent Banking, Persistent Chest & over 25 Stores!!\n\nCustom Item Creation System (Socketed Items by ScarFace)\n\nHigh Level Magical Items\n(+16 Enchanted High Quality Weapons / +8 AC High Quality Items)\n \nA Great Epic Spell System \n(Modified for more damage, while keeping the low level players in mind.)\n\nCustomized Classial Enhancement Modifications For:\n\nDruids\nShifters\nBarbarians\nBards \nPalemasters\n\nCustom Summons (The higher level spells summon powerful creatures.) \n\nHenchmen from low to epic levels.\n\nXP / Gold Reward System (Recieved everytime you Kill a Monsters.)\n(Min. 80 XP Max up to 700 XP)\n\nParty Leader Teleporting\n\nArena has been seperated to function like an Arena Module by itself.\n\nA Character Deleter and a way to Relevel your Character \n(Talk to the DM asssitant at the end of the Halls of the Underworld.)\n\nIn-Game Character / Item Customizers (items given to you)\n(This includes Wings / Tails / Heads etc.)\n\nBe sure to use the Information Assistant in your inventory to learn more.\n\nThe Server Level System is as follows:\nNormal Levels 1-20\nEpic Levels 21-40\nLegendary Levels 41-60 (3.5 million xp required for level 60)\nGod Levels 61-100! (Module Completion Required.)\n\nAutomatic Trash Clean Up (Just drop it and forget it!)\n\nAnd much much more!\n______________________________________________________\n\nThis is an Advanced D&D Rules Server. \n(w/ Highly Experienced & Friendly DM's (in pen and paper too)\n\nSubraces were not included into The Underworld for a few reasons:\n\n1) The God Level System already gives you a customized characters & races. (After you complete the module.)\n\n2) There would be Scripting issues arising from complex scripts already in the module and I didn't want to overwrite scripts I already made.\n\n3) There really is no need for the subraces because of character modifications permanently made to characters as you play the module.\n\n_______________________________________________________\n\nThe Underworld is NOT a low level campaign setting, it's a fast paced High Level module which gives more focus on the planes.\n\nThe monsters here are tough, but you will be able to overcome, as I make it a point to make sure players are having fun, so, you will not encounter annoying stuff. (Disarm / Dispel, End bosses excluded)\n\nHorses were not added to the module due to the module size & layout.\n\nThe module can be soloed, but not all areas, as the module was more set up for parties than soloing, so if you like soloing, then there will be only so far you can go, though I have seen better players solo a lot of places.\n\nAll Classes were balanced out respectfully by removing many immunities from monster to ensure all classes have thier talents and abilities protected. Hiding however isn't very effective, as this tends to lead to running areas and overspawning monsters, which leads to server lagg. \n\nThere are many artifacts of great power to be found, you won't be finding +1 weapon in treasures, though the stores still sales those weaker weapons, you can find many powerful items in the module as well as in some stores, should you advance far enough to be able to get to those stores.\n\nTraps, secrets, and light RP are in the module for added fun, and if you see an area marked for a specific class, It is highly reccommened you do not enter that area, unless you are of that class, as you may find your spells or weapons do little to no damage.\n\n(Partying is always highly reccommended if you want to advanced faster, live longer, get more gold, and have more fun.) : )\n\nThis module is a player approved, designed, and tested module, so if you want to make a suggestion or complain please do so on the Underworld Forums, thank you. Use DM Tells if you want to make comments in game about the module or give some suggestions.\n\nYou have been given a rule book and a book about the underworld, it is advised you read them, as ignorance will only degrade the value of your experience here and will not be a viable excuse to break any rules.\n\nWelcome to the Underworld\nCreation Started on 1/1/07\nCompleted 5/107\n\nThank you. :)\n\nGuile\nServer Administrator / Module Designer", + "0": "This information is to give newcomers an idea of what the Underworld has to offer players looking for a new module to play on.\n\nThe Underworld has:\n\nPersistent Banking, Persistent Chest & over 25 Stores!!\n\nCustom Item Creation System (Socketed Items by ScarFace)\n\nHigh Level Magical Items\n(+16 Enchanted High Quality Weapons / +8 AC High Quality Items)\n \nHenchmen from low to epic levels.\n\nXP / Gold Reward System (Recieved everytime you Kill a Monsters.)\n(Min. 80 XP Max up to 700 XP)\n\nParty Leader Teleporting\n\nArena has been seperated to function like an Arena Module by itself.\n\nA Character Deleter.\n(Talk to Annihilus at the end of the Halls of the Underworld.)\n\nIn-Game Character / Item Customizers (items given to you)\n(This includes Wings / Tails / Heads etc.)\n\nBe sure to use the Information Assistant in your inventory to learn more.\n\nThe Server Level System is as follows:\nNormal Levels 1-20\nEpic Levels 21-60\n\nAutomatic Trash Clean Up (Just drop it and forget it!)\n\nAnd much much more!\n_______________________________________________________\n\nThe Underworld is NOT a low level campaign setting, it's a fast paced High Level module which gives more focus on the planes.\n\nThe monsters here are tough, but you will be able to overcome, as I make it a point to make sure players are having fun, so, you will not encounter annoying stuff. (Disarm / Dispel, End bosses excluded)\n\nHorses were not added to the module due to the module size & layout.\n\nThe module can be soloed, but not all areas, as the module was more set up for parties than soloing, so if you like soloing, then there will be only so far you can go, though I have seen better players solo a lot of places.\n\nAll Classes were balanced out respectfully by removing many immunities from monster to ensure all classes have thier talents and abilities protected. Hiding however isn't very effective, as this tends to lead to running areas and overspawning monsters, which leads to server lagg. \n\nThere are many artifacts of great power to be found, you won't be finding +1 weapon in treasures, though the stores still sales those weaker weapons, you can find many powerful items in the module as well as in some stores, should you advance far enough to be able to get to those stores.\n\nTraps, secrets, and light RP are in the module for added fun, and if you see an area marked for a specific class, It is highly reccommened you do not enter that area, unless you are of that class, as you may find your spells or weapons do little to no damage.\n\n(Partying is always highly reccommended if you want to advanced faster, live longer, get more gold, and have more fun.) : )\n\nThis module is a player approved, designed, and tested module, so if you want to make a suggestion or complain please do so on the Underworld Forums, thank you. Use DM Tells if you want to make comments in game about the module or give some suggestions.\n\nYou have been given a rule book and a book about the underworld, it is advised you read them, as ignorance will only degrade the value of your experience here and will not be a viable excuse to break any rules.\n\nWelcome to the Underworld\nCreation Started on 1/1/07\nCompleted 5/107\n\nThank you. :)\n\nGuile\nServer Administrator / Module Designer", "id": 16810982 } }, diff --git a/_module/itp/creaturepalcus.itp.json b/_module/itp/creaturepalcus.itp.json index 06f3989..dec4c01 100644 --- a/_module/itp/creaturepalcus.itp.json +++ b/_module/itp/creaturepalcus.itp.json @@ -14190,6 +14190,25 @@ "value": 16808988 } }, + { + "__struct_id": 0, + "CR": { + "type": "float", + "value": 0.3333333432674408 + }, + "FACTION": { + "type": "cexostring", + "value": "Hostile" + }, + "NAME": { + "type": "cexostring", + "value": "Hobgoblin Thrall" + }, + "RESREF": { + "type": "resref", + "value": "prc_wrsl_war" + } + }, { "__struct_id": 0, "CR": { @@ -27392,6 +27411,25 @@ "LIST": { "type": "list", "value": [ + { + "__struct_id": 0, + "CR": { + "type": "float", + "value": 7.0 + }, + "FACTION": { + "type": "cexostring", + "value": "Merchant" + }, + "NAME": { + "type": "cexostring", + "value": "Annihilus" + }, + "RESREF": { + "type": "resref", + "value": "npc_annihilus001" + } + }, { "__struct_id": 0, "CR": { diff --git a/_module/itp/itempalcus.itp.json b/_module/itp/itempalcus.itp.json index b4990c8..adb7382 100644 --- a/_module/itp/itempalcus.itp.json +++ b/_module/itp/itempalcus.itp.json @@ -24172,17 +24172,6 @@ "value": "it_dweomerthief" } }, - { - "__struct_id": 0, - "RESREF": { - "type": "resref", - "value": "prc_scr_877" - }, - "STRREF": { - "type": "dword", - "value": 16790517 - } - }, { "__struct_id": 0, "NAME": { @@ -25349,17 +25338,6 @@ "value": 16823532 } }, - { - "__struct_id": 0, - "RESREF": { - "type": "resref", - "value": "prc_scr_884" - }, - "STRREF": { - "type": "dword", - "value": 16790530 - } - }, { "__struct_id": 0, "NAME": { @@ -25437,17 +25415,6 @@ "value": 16829488 } }, - { - "__struct_id": 0, - "RESREF": { - "type": "resref", - "value": "prc_scr_995" - }, - "STRREF": { - "type": "dword", - "value": 16790488 - } - }, { "__struct_id": 0, "NAME": { @@ -25800,6 +25767,17 @@ "value": 767 } }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_scr_997" + }, + "STRREF": { + "type": "dword", + "value": 16990493 + } + }, { "__struct_id": 0, "RESREF": { @@ -26713,17 +26691,6 @@ "value": 16789916 } }, - { - "__struct_id": 0, - "RESREF": { - "type": "resref", - "value": "prc_scr_881" - }, - "STRREF": { - "type": "dword", - "value": 16790525 - } - }, { "__struct_id": 0, "RESREF": { @@ -28726,6 +28693,17 @@ "value": 16827179 } }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_scr_995" + }, + "STRREF": { + "type": "dword", + "value": 16990488 + } + }, { "__struct_id": 0, "RESREF": { @@ -31564,17 +31542,6 @@ "value": 16789920 } }, - { - "__struct_id": 0, - "RESREF": { - "type": "resref", - "value": "prc_scr_997" - }, - "STRREF": { - "type": "dword", - "value": 16790493 - } - }, { "__struct_id": 0, "NAME": { @@ -32279,17 +32246,6 @@ "value": 878 } }, - { - "__struct_id": 0, - "RESREF": { - "type": "resref", - "value": "prc_scr_880" - }, - "STRREF": { - "type": "dword", - "value": 16790522 - } - }, { "__struct_id": 0, "RESREF": { @@ -32917,6 +32873,50 @@ "value": 6340 } }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_scr_874" + }, + "STRREF": { + "type": "dword", + "value": 16990512 + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_scr_865" + }, + "STRREF": { + "type": "dword", + "value": 16990497 + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_scr_868" + }, + "STRREF": { + "type": "dword", + "value": 16990502 + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_scr_871" + }, + "STRREF": { + "type": "dword", + "value": 16990507 + } + }, { "__struct_id": 0, "NAME": { @@ -33126,17 +33126,6 @@ "value": 16828323 } }, - { - "__struct_id": 0, - "RESREF": { - "type": "resref", - "value": "prc_scr_868" - }, - "STRREF": { - "type": "dword", - "value": 16790502 - } - }, { "__struct_id": 0, "RESREF": { @@ -33214,17 +33203,6 @@ "value": 16829580 } }, - { - "__struct_id": 0, - "RESREF": { - "type": "resref", - "value": "prc_scr_874" - }, - "STRREF": { - "type": "dword", - "value": 16790512 - } - }, { "__struct_id": 0, "NAME": { @@ -33247,17 +33225,6 @@ "value": 16826683 } }, - { - "__struct_id": 0, - "RESREF": { - "type": "resref", - "value": "prc_scr_871" - }, - "STRREF": { - "type": "dword", - "value": 16790507 - } - }, { "__struct_id": 0, "RESREF": { @@ -33984,17 +33951,6 @@ "value": 16826689 } }, - { - "__struct_id": 0, - "RESREF": { - "type": "resref", - "value": "prc_scr_865" - }, - "STRREF": { - "type": "dword", - "value": 16790497 - } - }, { "__struct_id": 0, "NAME": { @@ -34061,6 +34017,17 @@ "value": 917 } }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_scr_877" + }, + "STRREF": { + "type": "dword", + "value": 16990517 + } + }, { "__struct_id": 0, "RESREF": { @@ -34160,6 +34127,28 @@ "value": 2671 } }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_scr_880" + }, + "STRREF": { + "type": "dword", + "value": 16990522 + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_scr_881" + }, + "STRREF": { + "type": "dword", + "value": 16990525 + } + }, { "__struct_id": 0, "NAME": { @@ -34853,6 +34842,17 @@ "value": 16829598 } }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_scr_884" + }, + "STRREF": { + "type": "dword", + "value": 16990530 + } + }, { "__struct_id": 0, "NAME": { @@ -49119,6 +49119,17 @@ "value": "vileblade44" } }, + { + "__struct_id": 0, + "NAME": { + "type": "cexostring", + "value": "Enserric the Rapier" + }, + "RESREF": { + "type": "resref", + "value": "iw_rapier" + } + }, { "__struct_id": 0, "NAME": { diff --git a/_module/ncs/at_caplvlup.ncs b/_module/ncs/at_caplvlup.ncs new file mode 100644 index 0000000000000000000000000000000000000000..9b6ef389e48905256a7e358f546f178359f36242 GIT binary patch literal 302 zcmZ{fJqp4=5QX1t)*uGNUZPV+40?sw+X$XU4h7AY(O>-?~d;x@Cx%=g}# z{qDfWZM*3JY8Q|gjFsB-QaN+Ze0mrBzq{B>>IHPc=8%T?%0_z^sR3D$bd-E-BNzFvDeIn9(L Kr777;&-eh@JX+=e literal 0 HcmV?d00001 diff --git a/_module/ncs/dante_letodel_at.ncs b/_module/ncs/dante_letodel_at.ncs new file mode 100644 index 0000000000000000000000000000000000000000..0dfdcbb3f24ea1b77de436cbc6e9776aab8a6bd6 GIT binary patch literal 419 zcmeZs4ps;=)H85mU|?J<#{dKz3JgqatPBkA7#JD<|NsAkfkm1DNdIACWnl)%GlN9G zFt7lX{AEH{f{Q-EJ{o+0h;8Jnv+_RngVtjBiN`n3@l)OWPy2q7+8R2@+xE`7AvGc)G9y? z#59^H9jpvY#*E+~`J#Xn7%VLi>w$h^WngK9aDcW0In9hfQWWA+NC3dy50nu03-^nN ZcTCC6%*!k;DM~EK%+CXAYG8ud0RV1UjRgPz literal 0 HcmV?d00001 diff --git a/_module/ncs/darktrigger.ncs b/_module/ncs/darktrigger.ncs index a3f08a15bd7d593518889bff49f9ec6db5ee09bb..3678fcf3652eccf26ee7969c4c3a3a1f019bd793 100644 GIT binary patch delta 73 zcmaFFxQNlt&pB8j%uvt3iGhJ(ksOd<;80*-WnhqGU||OFSXdc2QWA@@^HPh8fx;)4 Wm>K{7|NjRh&Ty4+VuAII7 zq$Cz)=cN`G1C^a%LQ^Kh4Almdyvm3sDZs)4HiH0Z-vG1+VjGBL1RAx471bz+L14Q+ X0M&x*{KCKj*2Dx}4+;zb2pK!h diff --git a/_module/ncs/hgll_lvl_portal.ncs b/_module/ncs/hgll_lvl_portal.ncs index 2a582df1362449de7e12823946031959819fb503..9d1af8f5779ffd1e7d1a89d4f029d678514eaa5a 100644 GIT binary patch literal 213 zcmeZs4ps;=)H85mU|_f^2P7Cc6d0J;SQ!|-7#JD<|NsAkfkm1DNdIACV_^fyqlvPz zurja(zENNR0GRhlZ~y=R literal 133 zcmeZs4ps;=)H85mU|?vK0}>1z3Jk0aj9v^ZY#<&BD+60Veo;wCJ~QM0|Nno01Q<-2 uz??r|&QV4r&Q(So0gyHz5RnCuq6kSwOGX6-F!v2uBO8-61JKAf3Jd^tGa#-2 diff --git a/_module/ncs/openabyssstore.ncs b/_module/ncs/openabyssstore.ncs index 3f87f970d51626a32b2a8be97e65aec56d28e65a..22ec6681ef6bf30d581d89dc2e05c35d4332150d 100644 GIT binary patch delta 49 zcmbQhxPVdI&pB8j%uvt3iGhJ(fgF%v;80*-Vw)(c$j8X||Ns9V3@p+NK>E)_vnT)& CI1Xq4 delta 32 mcmZ3$IDt{r&pB8j%uvt3iGhJ(f*g=w;80+gD6TlsEeZf^Sq4J@ diff --git a/_module/ncs/openabyswpnstore.ncs b/_module/ncs/openabyswpnstore.ncs index 328d8c4053dcfa4c6d88d84aee2c7cd354826192..1ea4f82db2f2c497770ff6486f81d862f3109cff 100644 GIT binary patch delta 49 zcmeBYoX;rk=NzmMW~gW2#K6EXUk*qxa40Y^u}u_J;A3R`|Ns9F1{P@sApK{eX%qku CqYh&L delta 32 mcmbQw*v}~H=NzmMW~gW2#K6GNF9#$TI20HriYrWXjRF8{1_nL= diff --git a/_module/ncs/openarcanestore.ncs b/_module/ncs/openarcanestore.ncs index 754df4053d4fc74a9be6cdafb98249b7b4a72f80..381bf778ddaef78796a446b96e64ffaefc774190 100644 GIT binary patch delta 49 zcmeBYoX;rk=NzmMW~gW2#K6EXUk*qxa40Y^u}u_J;A3R`|Ns9F1{P@sApK{eX%qku CqYh&L delta 32 mcmbQw*v}~H=NzmMW~gW2#K6GNF9#$TI20HriYrWXjRF8{1_nL= diff --git a/_module/ncs/openarenawpns.ncs b/_module/ncs/openarenawpns.ncs index 1023fa8a294b20184b5f4293f4722d30f6540859..9c1f2f203f978c5714ec1ce8506be3d1dbd66dd7 100644 GIT binary patch delta 49 zcmbQhxPVdI&pB8j%uvt3iGhJ(fgF%v;80*-Vw)(c$j8X||Ns9V3@p+NK>E)_vnT)& CI1Xq4 delta 32 mcmZ3$IDt{r&pB8j%uvt3iGhJ(f*g=w;80+gD6TlsEeZf^Sq4J@ diff --git a/_module/ncs/opengwpnstore2.ncs b/_module/ncs/opengwpnstore2.ncs index 08f94d0c356a0d705570dc8eb1d05cf8751ed165..d2a3fb5d2b555d608baa034385c23910636c08d4 100644 GIT binary patch delta 49 zcmbQtxR_Dg&pB8j%uvt3iGhJ(u^fE)_%P0U6 C_YQXe delta 32 mcmZ3?IGIt@&pB8j%uvt3iGhJ(vK)|L;80+gD6TTmGYSB0QU+20 diff --git a/_module/ncs/openheavenwpns.ncs b/_module/ncs/openheavenwpns.ncs index 242bb97e21722b57cae8431713bf2dcdb1820ca2..04a79c4e02fd8f1eabd1d9951dc47b882545e2b8 100644 GIT binary patch delta 49 zcmbQlxQJ2Q&pB8j%uvt3iGhJ(ksOd<;80*-Vw)(c%*V+1|Ns9V3@p+NK>E)_izomR CVh(Zu delta 32 mcmZ3)IEhiz&pB8j%uvt3iGhJ(k{pm=;80+gD6TxwBMJa){{~F} diff --git a/_module/ncs/openpotstore.ncs b/_module/ncs/openpotstore.ncs index cf4324cefe7fb5d56f20b6b8fceeb6627496b1c2..ff30b3b8355c7701baf7aebe1c958b6e94156b3b 100644 GIT binary patch delta 49 zcmeBYoX;rk=NzmMW~gW2#K6EXUk*qxa40Y^u}u_J;A3R`|Ns9F1{P@sApK{eX%qku CqYh&L delta 32 mcmbQw*v}~H=NzmMW~gW2#K6GNF9#$TI20HriYrWXjRF8{1_nL= diff --git a/_module/ncs/openstore006.ncs b/_module/ncs/openstore006.ncs index a906894dc0402dac0fc334d6042f4f2432af4987..411d2c1b33c1e8ee02322a11d50339bf9bcdd0b6 100644 GIT binary patch delta 49 zcmbQpxR6oY&pB8j%uvt3iGhJ(p&XE4;80*-Vw)(c#K*|^|Ns9V3@p+NK>E)_^C$oj C%?@n< delta 32 mcmZ3;IFV7*&pB8j%uvt3iGhJ(q8yN5;80+gD6TZoJqiG9tOiH` diff --git a/_module/ncs/openstore008.ncs b/_module/ncs/openstore008.ncs index a08787c4a720edb63442ec3ec54fb34a44885c3a..7afee9d4ac5cc5324c2d562fb2354976d351a185 100644 GIT binary patch delta 49 zcmbQrxRg=c&pB8j%uvt3iGhJ(sT`1C;80*-Vw)(c#>dF`|Ns9V3@p+NK>E)_>nH#e CAr656 delta 32 mcmZ3=IF(V<&pB8j%uvt3iGhJ(svMAD;80+gD6TfqI|=}8_y$}6 diff --git a/_module/ncs/sf_wingwand.ncs b/_module/ncs/sf_wingwand.ncs index 43b1f98d88426584d7d87a0f67e723533b9ca6bb..edbcd395258abede7accd8af18a89bb2d897a5d2 100644 GIT binary patch delta 78 zcmaFO_?ywq&pB8j%uvt3iGhLPw;YgQ;80*-Vg|ETvoM1McogKplq`sx%EZRXz_^2f Uk@5fk|34U5q#1zppNVE$0V{S9$^ZZW delta 62 zcmey(_?pqo&pB8j%uvt3iGhLPwH%OO;80*-Vg|EjvoM1McogKplq`sBWo2O8!7$Nn FD*#iO34;It diff --git a/_module/ncs/spawnb_cc_activ.ncs b/_module/ncs/spawnb_cc_activ.ncs index de4d1662e57a621adef6cef756bd631c3c2f091a..b571555b63ff9f0dfa3ca66717b25f0a536d8e63 100644 GIT binary patch delta 57 zcmdnOxP;Nr&pB8j%uvt3iGhJ(2@|s%kYeCaU|?Zo;0{PEO3f$V1^_`r3b_CP delta 73 zcmZ3&xP{Tt&pB8j%uvt3iGhJ(3lp;(kYeCaU|?cnVP)VBNGwXtD+w-0EYD+M1Ie&5 YFqknhGXDSn{|5t$Gy{)4-~a#s diff --git a/_module/nss/at_caplvlup.nss b/_module/nss/at_caplvlup.nss new file mode 100644 index 0000000..ee138b1 --- /dev/null +++ b/_module/nss/at_caplvlup.nss @@ -0,0 +1,19 @@ +#include "nw_i0_tool" +/* Script generated by +Lilac Soul's NWN Script Generator, v. 1.6 + +For download info, please visit: +http://www.lilacsoul.revility.com */ + +//Put this on action taken in the conversation editor +void main() +{ + +object oPC = GetPCSpeaker(); + +if (GetHitDice(oPC) <= 2) + { + RewardPartyXP(3000, oPC, FALSE); + + } +} diff --git a/_module/nss/dante_letodel_at.nss b/_module/nss/dante_letodel_at.nss new file mode 100644 index 0000000..b614dca --- /dev/null +++ b/_module/nss/dante_letodel_at.nss @@ -0,0 +1,20 @@ +#include "nwnx_admin" + +void main() +{ + object oPlayer = GetPCSpeaker(); + + string sName = GetName(oPlayer); + + string sPlayer = GetPCPlayerName(oPlayer); + + SendMessageToPC(oPlayer,"sPlayer = "+sPlayer); + SendMessageToPC(oPlayer,"sName = "+sName); + + NWNX_Administration_DeletePlayerCharacter(oPlayer, 1, "Character Deleted"); + SendMessageToPC(oPlayer,sPlayer+" has deleted "+sName); + SendMessageToAllDMs(sPlayer+" has deleted "+sName); +} + + + diff --git a/_module/nss/ms_name_inc.nss b/_module/nss/ms_name_inc.nss new file mode 100644 index 0000000..e495321 --- /dev/null +++ b/_module/nss/ms_name_inc.nss @@ -0,0 +1,2470 @@ +//////////////////////////////////////////////////////////////////////////////// +// // +// Markshire's Nomenclature // +// ms_name_inc.nss // +// // +// By Thrym of Markshire 5/21/06 // +// Updated by: Jaysyn 2021/12/03 // +// // +//////////////////////////////////////////////////////////////////////////////// +/* +// FUNCTION: +// The Nomenclature is an include file placed in the spawn script +// nw_c2_default9 designed to assign a name to a generic NPC who may +// wander towns, roads, shops, etc. +// +// Utilizing both SetName and RandomName the system will name the NPC in +// one of two ways ... +// +// "SET_NAME": By setting the variable "SET_NAME" on the NPC and +// assigning it a string the creature will rename itself upon spawning. +// This is handy for DM's and builders to create more precisely named +// creatures for the palette and then generize them upon spawn. +// +// eg. Ancient White Dragon in the Creator becomes White Dragon on Spawn. +// +// "SET_NAME" = "RANDOM": By setting the same variable to the name "RANDOM" +// the NPC then is given a random name generated by RACE and GENDER using +// the RandomName function. +// +// eg. Male Dwarven Villager in the Aurora Toolset becomes Gloigan on spawn +// this time and perhaps Rufus on the next spawned Villager. +// +// "NAME_TYPE": Setting this int variable to "1" will cause a Full Name +// to be generated if the "SET_NAME" is set to "RANDOM". +// +// eg. Male Dwarven Villager becomes Gloigan Stonecutter or Rufus Mason. +// +// "TITLE": Prepends the defined string to the NPCs name. +// +// eg. "Lord" Brown +// +// "POSTFIX": Appends the defind string after the NPC's name. +// +// eg. Ralph "the Guard" +// + + + "RND_ROGUE" + "RND_BARBARIAN" + "RND_FIGHTER" + "RND_CLERIC" : Setting these to "1" will give the NPC a randomized class + "RND_MAGE" : appropriate postfix + "RND_DRUID" + "RND_RANGER" + + +// +// +//////////////////////////////////////////////////////////////////////////////*/ + +#include "prc_inc_racial" + + + +///// FUNCTION DECLARATIONS //////////////////////////////////////////////////// + +string GetClassLevelTitle(int nClassType); + +int GetHighestClassLevel(object oCreature = OBJECT_SELF); + +// Generates a Random First Name +// based on Race and Gender +// For all Standard PC Races and Animals +string ms_RandomFirstName(object oNPC = OBJECT_SELF); + +// Generates a Random Last Name +// based on Race For all +// Standard PC Races and Animals +string ms_RandomLastName(object oNPC = OBJECT_SELF); + +// Function designed to read the variable +// "SET_NAME" and assign a new name to the NPC +// If the variable is set to "RANDOM" a +// random name is assigned. +// A second variable can be assigned to +// have the random name be a random Full Name. +void ms_Nomenclature(object oNPC = OBJECT_SELF); + + +///// FUNCTIONS //////////////////////////////////////////////////////////////// + +void ms_Nomenclature(object oNPC = OBJECT_SELF) +{ + string sRandomName = GetLocalString(oNPC, "SET_NAME"); + string sTitle = GetLocalString(oNPC, "TITLE"); + string sPostfix = GetLocalString(oNPC, "POSTFIX"); + string sBaseRace = GetLocalString(oNPC, "BASE_RACE"); + + int nGender = GetGender(oNPC); + int bClassTitle = GetLocalInt(oNPC,"CLASS_TITLE"); + int nHighClass = GetHighestClassLevel(oNPC); + int nLevel = GetLevelByClass(nHighClass, oNPC); + +//:: Handles class level based NPC titles + if (bClassTitle) + { + string sTitle; + + switch (nHighClass) + { + case CLASS_TYPE_BARBARIAN: + switch(nLevel) + { + case 1: case 2: case 3: + sTitle = "Brute" ; + break; + + case 4: case 5: + sTitle = "Vandal"; break; + + case 6: + if (nGender == 1) + {sTitle = "Plunderess"; break;} + else + {sTitle = "Plunderer"; break;} + + case 7: + sTitle = "Pillager"; break; + + case 8: + sTitle = "Marauder"; break; + + case 9: + sTitle = "Reaver"; break; + + case 10: + sTitle = "Barbarian"; break; + + case 11: + sTitle = "Mauler"; break; + + case 12: + sTitle = "Ravager"; break; + + case 13: + sTitle = "Slaughterer"; break; + + case 14: + sTitle = "Destroyer"; break; + + case 15: + if (nGender == 1) + {sTitle = "Chieftainess"; break;} + else + {sTitle = "Chieftain"; break;} + + case 16: + sTitle = "Bloodletter"; break; + + case 17: + sTitle = "Rampager"; break; + + case 18: + sTitle = "Slayer"; break; + + case 19: + sTitle = "Warmonger"; break; + + case 20: + if (nGender == 1) + {sTitle = "High Chieftainess"; break;} + else + {sTitle = "High Chieftain"; break;} + + default: + if (nGender == 1) + {sTitle = "Conqueress"; break;} + else + {sTitle = "Conqueror"; break;} + + } + + case CLASS_TYPE_ROGUE: + switch(nLevel) + { + case 1: case 2: case 3: + sTitle = "Lookout" ; + break; + + case 4: case 5: + sTitle = "Outlaw"; break; + + case 6: + sTitle = "Scalawag"; break; + + case 7: + sTitle = "Creeper"; break; + + case 8: + sTitle = "Larker"; break; + + case 9: + sTitle = "Footpad"; break; + + case 10: + sTitle = "Rogue"; break; + + case 11: + sTitle = "Cutpurse"; break; + + case 12: + sTitle = "Thief"; break; + + case 13: + sTitle = "Pilferer"; break; + + case 14: + sTitle = "Robber"; break; + + case 15: + sTitle = "Sharper"; break; + + case 16: + sTitle = "Burglar"; break; + + case 17: + sTitle = "Filcher"; break; + + case 18: + sTitle = "Scoundrel"; break; + + case 19: + sTitle = "Knave"; break; + + case 20: + sTitle = "Prowler"; break; + + default: + sTitle = "Master Rogue"; break; + + } + + case CLASS_TYPE_BARD: + switch(nLevel) + { + case 1: case 2: case 3: + sTitle = "Crier" ; + break; + + case 4: case 5: + if (nGender == 1) + {sTitle = "Chantress"; break;} + else + {sTitle = "Chanter"; break;} + + case 6: + sTitle = "Skop"; break; + + case 7: + sTitle = "Accompanist"; break; + + case 8: + sTitle = "Rhymer"; break; + + case 9: + sTitle = "Singer"; break; + + case 10: + sTitle = "Balladeer"; break; + + case 11: + if (nGender == 1) + {sTitle = "Cantoress"; break;} + else + {sTitle = "Cantor"; break;} + + case 12: + sTitle = "Lutenist"; break; + + case 13: + sTitle = "Melodist"; break; + + case 14: + sTitle = "Lyrist"; break; + + case 15: + sTitle = "Jongleur"; break; + + case 16: + sTitle = "Loreweaver"; break; + + case 17: + sTitle = "Chronicler"; break; + + case 18: + sTitle = "Muse"; break; + + case 19: + if (nGender == 1) + {sTitle = "Rhapsode"; break;} + else + {sTitle = "Rhapsodist"; break;} + + case 20: + sTitle = "Bard"; break; + + case 21: + sTitle = "Raconteur"; break; + + case 22: + sTitle = "Siren"; break; + + case 23: + sTitle = "Songsmith"; break; + + case 24: + sTitle = "Versifer"; break; + + case 25: + sTitle = "Minstrel"; break; + + case 26: + sTitle = "Sonneteer"; break; + + case 27: + if (nGender == 1) + {sTitle = "Trobairitz"; break;} + else + {sTitle = "Troubadour"; break;} + + case 28: + sTitle = "Citharist"; break; + + case 29: + sTitle = "High Minstrel"; break; + + default: + sTitle = "Master Bard"; break; + + } + + case CLASS_TYPE_SORCERER: + case CLASS_TYPE_WIZARD: + switch(nLevel) + { + case 1: case 2: case 3: + sTitle = "Apprentice" ; + break; + + case 4: case 5: + sTitle = "Adept"; break; + + case 6: + sTitle = "Journeymage"; break; + + case 7: + sTitle = "Hedge Mage"; break; + + case 8: + sTitle = "Magician"; break; + + case 9: + sTitle = "Prestidigitator"; break; + + case 10: + sTitle = "Wizard"; break; + + case 11: + sTitle = "Sage"; break; + + case 12: + sTitle = "Visionary"; break; + + case 13: + sTitle = "Loremaster"; break; + + case 14: + sTitle = "Mage"; break; + + case 15: + sTitle = "Fatespinner"; break; + + case 16: + sTitle = "Cabalist"; break; + + case 17: + sTitle = "Thaumaturge"; break; + + case 18: + sTitle = "Theurgist"; break; + + case 19: + sTitle = "Augur"; break; + + case 20: + sTitle = "Spellbinder"; break; + + default: + sTitle = "Archmage"; break; + + } + + case CLASS_TYPE_CLERIC: + switch(nLevel) + { + case 1: case 2: case 3: + sTitle = "Candidate" ; + break; + + case 4: case 5: + sTitle = "Aspirant"; break; + + case 6: + sTitle = "Novice"; break; + + case 7: + sTitle = "Acolyte"; break; + + case 8: + sTitle = "Initiate"; break; + + case 9: + if (nGender == 1) + {sTitle = "Priestess"; break;} + else + {sTitle = "Priest"; break;} + + case 10: + sTitle = "Cleric"; break; + + case 11: + sTitle = "Curate"; break; + + case 12: + sTitle = "Apostle"; break; + + case 13: + sTitle = "Ovate"; break; + + case 14: + sTitle = "Missionary"; break; + + case 15: + if (nGender == 1) + {sTitle = "Canoness"; break;} + else + {sTitle = "Canon"; break;} + + case 16: + if (nGender == 1) + {sTitle = "Abbotess"; break;} + else + {sTitle = "Abbot"; break;} + + case 17: + sTitle = "Bishop"; break; + + case 18: + if (nGender == 1) + {sTitle = "Matriarch"; break;} + else + {sTitle = "Patriarch"; break;} + + case 19: + sTitle = "Preacher"; break; + + default: + if (nGender == 1) + {sTitle = "High Priestess"; break;} + else + {sTitle = "High Priest"; break;} + + } + + case CLASS_TYPE_DRUID: + switch(nLevel) + { + case 1: case 2: case 3: + sTitle = "Initiate" ; + break; + + case 4: case 5: + sTitle = "Devotee"; break; + + case 6: + sTitle = "Beastling"; break; + + case 7: + sTitle = "Grovelurker"; break; + + case 8: + sTitle = "Shaper"; break; + + case 9: + sTitle = "Springwalker"; break; + + case 10: + sTitle = "Druid"; break; + + case 11: + sTitle = "Naturekin"; break; + + case 12: + sTitle = "Treewarden"; break; + + case 13: + sTitle = "Auspex"; break; + + case 14: + sTitle = "Haruspex"; break; + + case 15: + sTitle = "Student of Stones"; break; + + case 16: + sTitle = "Student of Waters"; break; + + case 17: + sTitle = "Student of Forests"; break; + + case 18: + sTitle = "Student of Winds"; break; + + case 19: + sTitle = "Student of Changes"; break; + + case 20: + sTitle = "Pathwarden"; break; + + default: + sTitle = "Archdruid"; break; + + } + + case CLASS_TYPE_FIGHTER: + switch(nLevel) + { + case 1: case 2: case 3: + sTitle = "Guard"; + break; + + case 4: + sTitle = "Elite Guard"; break; + + case 5: case 6: + sTitle = "Warrior"; break; + + case 7: + sTitle = "Elite Warrior"; break; + + case 8: + sTitle = "Soldier"; break; + + case 9: + sTitle = "Enforcer"; break; + + case 10: + sTitle = "Fighter"; break; + + case 11: + sTitle = "Skirmisher"; break; + + case 12: + sTitle = "Veteran"; break; + + case 13: + sTitle = "Armiger"; break; + + case 14: + sTitle = "Myrmidon"; break; + + case 15: + sTitle = "Hero"; break; + + case 16: + sTitle = "Vanguard"; break; + + case 17: + sTitle = "Sentinel"; break; + + case 18: + sTitle = "Dominator"; break; + + case 19: + sTitle = "Warmonger"; break; + + case 20: + sTitle = "Champion"; break; + + default: + sTitle = "Grandmaster"; break; + + } + + case CLASS_TYPE_MONK: + switch(nLevel) + { + case 1: + sTitle = "Trainee"; break; + + case 2: + sTitle = "Initiate"; break; + + case 3: + sTitle = "Novice"; break; + + case 4: + sTitle = "Neophyte"; break; + + case 5: + sTitle = "Aspirant"; break; + + case 6: + sTitle = "Acolyte"; break; + + case 7: + sTitle = "Devotee"; break; + + case 8: + sTitle = "Disciple"; break; + + case 9: + sTitle = "Adept"; break; + + case 10: + sTitle = "Ascetic"; break; + + case 11: + sTitle = "Pilgrim"; break; + + case 12: + sTitle = "Master"; break; + + case 13: + sTitle = "Anchorite"; break; + + case 14: + sTitle = "Mystic"; break; + + case 15: + sTitle = "Meditator"; break; + + case 16: + sTitle = "Seeker"; break; + + case 17: + sTitle = "Guru"; break; + + case 18: + sTitle = "Sensei"; break; + + case 19: + sTitle = "Sannyasi"; break; + + case 20: + sTitle = "Exemplar"; break; + + case 21: + sTitle = "Transcendent"; break; + + default: + sTitle = "High Master"; break; + + } + + case CLASS_TYPE_PALADIN: + switch(nLevel) + { + case 1: + sTitle = "Advocate"; break; + + case 2: + sTitle = "Initiate"; break; + + case 3: + sTitle = "Squire"; break; + + case 4: + sTitle = "Gallant"; break; + + case 5: + sTitle = "Emissary"; break; + + case 6: + sTitle = "Guardian"; break; + + case 7: + sTitle = "Devotee"; break; + + case 8: + sTitle = "Disciple"; break; + + case 9: + sTitle = "Adept"; break; + + case 10: + sTitle = "Ascetic"; break; + + case 11: + sTitle = "Pilgrim"; break; + + case 12: + sTitle = "Master"; break; + + case 13: + sTitle = "Anchorite"; break; + + case 14: + sTitle = "Mystic"; break; + + case 15: + sTitle = "Meditator"; break; + + case 16: + sTitle = "Seeker"; break; + + case 17: + sTitle = "Guru"; break; + + case 18: + sTitle = "Sensei"; break; + + case 19: + sTitle = "Sannyasi"; break; + + case 20: + sTitle = "Exemplar"; break; + + case 21: + sTitle = "Transcendent"; break; + + default: + sTitle = "High Master"; break; + + } + + case CLASS_TYPE_RANGER: + switch(nLevel) + { + case 1: case 2: case 3: + sTitle = "Greenhorn" ; + break; + + case 4: case 5: + sTitle = "Tenderfoot"; break; + + case 6: + sTitle = "Vagrant"; break; + + case 7: + sTitle = "Tramp"; break; + + case 8: + sTitle = "Nomad"; break; + + case 9: + sTitle = "Wanderer"; break; + + case 10: + sTitle = "Ranger"; break; + + case 11: + sTitle = "Rambler"; break; + + case 12: + sTitle = "Traveler"; break; + + case 13: + sTitle = "Sojourner"; break; + + case 14: + sTitle = "Outrider"; break; + + case 15: + sTitle = "Wayfarer"; break; + + case 16: + sTitle = "Excursionist"; break; + + case 17: + sTitle = "Trekker"; break; + + case 18: + sTitle = "Trailblazer"; break; + + case 19: + sTitle = "Woodsman"; break; + + case 20: + sTitle = "High Ranger"; break; + + case 21: + sTitle = "Ranger"; break; + + case 22: + sTitle = "Rambler"; break; + + case 23: + sTitle = "Traveler"; break; + + case 24: + sTitle = "Sojourner"; break; + + case 25: + sTitle = "Outrider"; break; + + case 26: + sTitle = "Wayfarer"; break; + + case 27: + sTitle = "Excursionist"; break; + + case 28: + sTitle = "Trekker"; break; + + case 29: + sTitle = "Trailblazer"; break; + + default: + sTitle = "Ranger Lord"; break; + + } + + } + + //return sTitle; + } + +//:: Handles class based Henchman titles + int nRndRogue = GetLocalInt(OBJECT_SELF,"RND_ROGUE"); + if (nRndRogue == 1) + { + int nResult = Random(30) + 1; // Generate a random number between 1 and 30 + switch (nResult) + { + case 1: + sPostfix = "the Quick"; + break; + case 2: + sPostfix = "the Quiet"; + break; + case 3: + sPostfix = "the Sharp"; + break; + case 4: + sPostfix = "the Sneak"; + break; + case 5: + sPostfix = "the Rogue"; + break; + case 6: + sPostfix = "the Footpad"; + break; + case 7: + sPostfix = "the Shadow"; + break; + case 8: + sPostfix = "the Nimble"; + break; + case 9: + sPostfix = "the Swift"; + break; + case 10: + sPostfix = "the Silent"; + break; + case 11: + sPostfix = "the Sly"; + break; + case 12: + sPostfix = "the Crafty"; + break; + case 13: + sPostfix = "the Cunning"; + break; + case 14: + sPostfix = "the Elusive"; + break; + case 15: + sPostfix = "the Deft"; + break; + case 16: + sPostfix = "the Guileful"; + break; + case 17: + sPostfix = "the Lurker"; + break; + case 18: + sPostfix = "the Trickster"; + break; + case 19: + sPostfix = "the Prowler"; + break; + case 20: + sPostfix = "the Skulker"; + break; + case 21: + sPostfix = "the Phantom"; + break; + case 22: + sPostfix = "the Wily"; + break; + case 23: + sPostfix = "the Mysterious"; + break; + case 24: + sPostfix = "the Furtive"; + break; + case 25: + sPostfix = "the Discreet"; + break; + case 26: + sPostfix = "the Spy"; + break; + case 27: + sPostfix = "the Veiled"; + break; + case 28: + sPostfix = "the Artful"; + break; + case 29: + sPostfix = "the Sleuth"; + break; + case 30: + sPostfix = "the Masked"; + break; + } + } + + int nRndBarb = GetLocalInt(OBJECT_SELF,"RND_BARBARIAN"); + if (nRndBarb == 1) + { + int nResult = Random(30) + 1; // Generate a random number between 1 and 30 + switch (nResult) + { + case 1: + sPostfix = "the Barbarian"; + break; + case 2: + sPostfix = "the Destroyer"; + break; + case 3: + sPostfix = "of the Plains"; + break; + case 4: + sPostfix = "of Klar Clan"; + break; + case 5: + sPostfix = "the Rampager"; + break; + case 6: + sPostfix = "the Reaver"; + break; + case 7: + sPostfix = "the Savage"; + break; + case 8: + sPostfix = "the Berserker"; + break; + case 9: + sPostfix = "the Untamed"; + break; + case 10: + sPostfix = "the Fierce"; + break; + case 11: + sPostfix = "the Warbringer"; + break; + case 12: + sPostfix = "the Wild"; + break; + case 13: + sPostfix = "the Raider"; + break; + case 14: + sPostfix = "the Vicious"; + break; + case 15: + sPostfix = "the Ruthless"; + break; + case 16: + sPostfix = "the Savage"; + break; + case 17: + sPostfix = "the Bloodthirsty"; + break; + case 18: + sPostfix = "the Warlord"; + break; + case 19: + sPostfix = "the Brute"; + break; + case 20: + sPostfix = "the Fierce"; + break; + case 21: + sPostfix = "the Marauder"; + break; + case 22: + sPostfix = "the Howler"; + break; + case 23: + sPostfix = "the Ravager"; + break; + case 24: + sPostfix = "the Crusher"; + break; + case 25: + sPostfix = "the Frenzied"; + break; + case 26: + sPostfix = "the Beast"; + break; + case 27: + sPostfix = "the Juggernaut"; + break; + case 28: + sPostfix = "the Slayer"; + break; + case 29: + sPostfix = "the Rager"; + break; + case 30: + sPostfix = "the Conqueror"; + break; + } + } + + int nRndFight = GetLocalInt(OBJECT_SELF,"RND_FIGHTER"); + if (nRndFight == 1) + { + int nResult = Random(30) + 1; // Generate a random number between 1 and 30 + switch (nResult) + { + case 1: + sPostfix = "the Strong"; + break; + case 2: + sPostfix = "the Stout"; + break; + case 3: + sPostfix = "of the Blade"; + break; + case 4: + sPostfix = "of Tyr"; + break; + case 5: + sPostfix = "of Urik"; + break; + case 6: + sPostfix = "the Swordhand"; + break; + case 7: + sPostfix = "the Valiant"; + break; + case 8: + sPostfix = "the Brave"; + break; + case 9: + sPostfix = "the Defender"; + break; + case 10: + sPostfix = "the Just"; + break; + case 11: + sPostfix = "the Noble"; + break; + case 12: + sPostfix = "the Gallant"; + break; + case 13: + sPostfix = "the Protector"; + break; + case 14: + sPostfix = "the Shield"; + break; + case 15: + sPostfix = "the Champion"; + break; + case 16: + sPostfix = "the Guardian"; + break; + case 17: + sPostfix = "the Sentinel"; + break; + case 18: + sPostfix = "the Warrior"; + break; + case 19: + sPostfix = "the Stalwart"; + break; + case 20: + sPostfix = "the Ironclad"; + break; + case 21: + sPostfix = "the Blade"; + break; + case 22: + sPostfix = "the Swordsman"; + break; + case 23: + sPostfix = "the Vanguard"; + break; + case 24: + sPostfix = "the Lancer"; + break; + case 25: + sPostfix = "the Spearhead"; + break; + case 26: + sPostfix = "the Battlemaster"; + break; + case 27: + sPostfix = "the Blademaster"; + break; + case 28: + sPostfix = "the Warlord"; + break; + case 29: + sPostfix = "the Vanquisher"; + break; + case 30: + sPostfix = "the Swordmaster"; + break; + } + } + + int nRndCleric = GetLocalInt(OBJECT_SELF,"RND_CLERIC"); + if (nRndCleric == 1) + { + int nResult = Random(30) + 1; // Generate a random number between 1 and 30 + if (nResult == 1) + { + sPostfix = "the Pious"; + } + else if (nResult == 2) + { + sPostfix = "the Holy"; + } + else if (nResult == 3) + { + sPostfix = "the Priest"; + } + else if (nResult == 4) + { + sPostfix = "the Zealous"; + } + else if (nResult == 5) + { + sPostfix = "of Salt View"; + } + else if (nResult == 6) + { + sPostfix = "the Wise"; + } + else if (nResult == 7) + { + sPostfix = "the Devout"; + } + else if (nResult == 8) + { + sPostfix = "the Faithful"; + } + else if (nResult == 9) + { + sPostfix = "the Righteous"; + } + else if (nResult == 10) + { + sPostfix = "the Blessed"; + } + else if (nResult == 11) + { + sPostfix = "the Pure"; + } + else if (nResult == 12) + { + sPostfix = "the Sacred"; + } + else if (nResult == 13) + { + sPostfix = "the Benevolent"; + } + else if (nResult == 14) + { + sPostfix = "the Virtuous"; + } + else if (nResult == 15) + { + sPostfix = "the Saintly"; + } + else if (nResult == 16) + { + sPostfix = "the Healer"; + } + else if (nResult == 17) + { + sPostfix = "the Anointed"; + } + else if (nResult == 18) + { + sPostfix = "the Protector"; + } + else if (nResult == 19) + { + sPostfix = "the Merciful"; + } + else if (nResult == 20) + { + sPostfix = "the Revered"; + } + else if (nResult == 21) + { + sPostfix = "the Graceful"; + } + else if (nResult == 22) + { + sPostfix = "the Watchful"; + } + else if (nResult == 23) + { + sPostfix = "the Forgiving"; + } + else if (nResult == 24) + { + sPostfix = "the Humble"; + } + else if (nResult == 25) + { + sPostfix = "the Divine"; + } + else if (nResult == 26) + { + sPostfix = "the Preacher"; + } + else if (nResult == 27) + { + sPostfix = "the Illuminated"; + } + else if (nResult == 28) + { + sPostfix = "the Mystic"; + } + else if (nResult == 29) + { + sPostfix = "the Herald"; + } + else // nResult == 30 + { + sPostfix = "the Exalted"; + } + } + + int nRndMage = GetLocalInt(OBJECT_SELF,"RND_MAGE"); + if (nRndMage == 1) + { + int nResult = Random(30) + 1; // Generate a random number between 1 and 30 + switch (nResult) + { + case 1: + sPostfix = "the Mad"; + break; + case 2: + sPostfix = "the Arcane"; + break; + case 3: + sPostfix = "the Black"; + break; + case 4: + sPostfix = "the Wizard"; + break; + case 5: + sPostfix = "of Ur-Draxa"; + break; + case 6: + sPostfix = "the Mage"; + break; + case 7: + sPostfix = "the Enigmatic"; + break; + case 8: + sPostfix = "the Mystical"; + break; + case 9: + sPostfix = "the Eldritch"; + break; + case 10: + sPostfix = "the Runeweaver"; + break; + case 11: + sPostfix = "the Sorcerous"; + break; + case 12: + sPostfix = "the Seer"; + break; + case 13: + sPostfix = "the Arcanist"; + break; + case 14: + sPostfix = "the Illustrious"; + break; + case 15: + sPostfix = "the Sage"; + break; + case 16: + sPostfix = "the Sorcerous"; + break; + case 17: + sPostfix = "the Occult"; + break; + case 18: + sPostfix = "the Arcane Adept"; + break; + case 19: + sPostfix = "the Spellbinder"; + break; + case 20: + sPostfix = "the Occultist"; + break; + case 21: + sPostfix = "the Conjurer"; + break; + case 22: + sPostfix = "the Seer"; + break; + case 23: + sPostfix = "the Invoker"; + break; + case 24: + sPostfix = "the Mysterious"; + break; + case 25: + sPostfix = "the Shrouded"; + break; + case 26: + sPostfix = "the Visionary"; + break; + case 27: + sPostfix = "the Spellweaver"; + break; + case 28: + sPostfix = "the Willbreaker"; + break; + case 29: + sPostfix = "the Charmer"; + break; + case 30: + sPostfix = "the Elementalist"; + break; + } + } + + int nRndBard = GetLocalInt(OBJECT_SELF,"RND_BARD"); + if (nRndBard == 1) + { + int nResult = Random(25) + 1; // Generate a random number between 1 and 25 + switch (nResult) + { + case 1: + sPostfix = "the Subtle"; + break; + case 2: + sPostfix = "the Veiled"; + break; + case 3: + sPostfix = "the Shadowed"; + break; + case 4: + sPostfix = "the Intriguer"; + break; + case 5: + sPostfix = "of Altaruk"; + break; + case 6: + sPostfix = "the Elusive"; + break; + case 7: + sPostfix = "the Mysterious"; + break; + case 8: + sPostfix = "the Cryptic"; + break; + case 9: + sPostfix = "the Insidious"; + break; + case 10: + sPostfix = "the Quiet"; + break; + case 11: + sPostfix = "the Sly"; + break; + case 12: + sPostfix = "the Covert"; + break; + case 13: + sPostfix = "the Furtive"; + break; + case 14: + sPostfix = "the Discreet"; + break; + case 15: + sPostfix = "the Subversive"; + break; + case 16: + sPostfix = "the Shrouded"; + break; + case 17: + sPostfix = "the Obscured"; + break; + case 18: + sPostfix = "the Clever"; + break; + case 19: + sPostfix = "the Enigmatic"; + break; + case 20: + sPostfix = "of Balic"; + break; + case 21: + sPostfix = "of Tyr"; + break; + case 22: + sPostfix = "of Raam"; + break; + case 23: + sPostfix = "of Urik"; + break; + case 24: + sPostfix = "the Crafty"; + break; + case 25: + sPostfix = "of Draj"; + break; + } + } + + int nRndDruid = GetLocalInt(OBJECT_SELF,"RND_DRUID"); + if (nRndDruid == 1) + { + int nResult = Random(25) + 1; // Generate a random number between 1 and 25 + switch (nResult) + { + case 1: + sPostfix = "the Druid"; + break; + case 2: + sPostfix = "of the Forest"; + break; + case 3: + sPostfix = "of the Wild"; + break; + case 4: + sPostfix = "the Wolflord"; + break; + case 5: + sPostfix = "the Treelord"; + break; + case 6: + sPostfix = "the Verdant"; + break; + case 7: + sPostfix = "the Earthshaker"; + break; + case 8: + sPostfix = "the Feral"; + break; + case 9: + sPostfix = "of the Glade"; + break; + case 10: + sPostfix = "of the Crystal Forest"; + break; + case 11: + sPostfix = "the Thorned"; + break; + case 12: + sPostfix = "the Greenwarden"; + break; + case 13: + sPostfix = "the Naturebound"; + break; + case 14: + sPostfix = "the Forestborn"; + break; + case 15: + sPostfix = "the Spiritcaller"; + break; + case 16: + sPostfix = "the Leafblade"; + break; + case 17: + sPostfix = "the Mossy"; + break; + case 18: + sPostfix = "the Grovekeeper"; + break; + case 19: + sPostfix = "the Stormbringer"; + break; + case 20: + sPostfix = "the Earthshaper"; + break; + case 21: + sPostfix = "the Bramble"; + break; + case 22: + sPostfix = "of the Black Sands"; + break; + case 23: + sPostfix = "of the Silt Sea"; + break; + case 24: + sPostfix = "the Spiritbinder"; + break; + case 25: + sPostfix = "the Wildheart"; + break; + } + } + + int nRndRanger = GetLocalInt(OBJECT_SELF,"RND_RANGER"); + if (nRndRanger == 1) + { + int nResult = Random(25) + 1; // Generate a random number between 1 and 25 + switch (nResult) + { + case 1: + sPostfix = "the Ranger"; + break; + case 2: + sPostfix = "of the Forest"; + break; + case 3: + sPostfix = "of the Wild"; + break; + case 4: + sPostfix = "the Strider"; + break; + case 5: + sPostfix = "the Venger"; + break; + case 6: + sPostfix = "the Pathfinder"; + break; + case 7: + sPostfix = "the Woodsman"; + break; + case 8: + sPostfix = "the Trailblazer"; + break; + case 9: + sPostfix = "the Hunter"; + break; + case 10: + sPostfix = "the Scout"; + break; + case 11: + sPostfix = "the Wayfarer"; + break; + case 12: + sPostfix = "the Outrider"; + break; + case 13: + sPostfix = "the Seeker"; + break; + case 14: + sPostfix = "the Sentinel"; + break; + case 15: + sPostfix = "the Forestborn"; + break; + case 16: + sPostfix = "the Survivalist"; + break; + case 17: + sPostfix = "the Tracker"; + break; + case 18: + sPostfix = "the Forager"; + break; + case 19: + sPostfix = "the Warder"; + break; + case 20: + sPostfix = "the Greenblade"; + break; + case 21: + sPostfix = "the Beastmaster"; + break; + case 22: + sPostfix = "the Thornhunter"; + break; + case 23: + sPostfix = "of the Deepwood"; + break; + case 24: + sPostfix = "of the Roughlands"; + break; + case 25: + sPostfix = "the Wilderness Guide"; + break; + } + } + + + if (sRandomName != "") + { + if (sRandomName == "RANDOM") + { + switch (GetLocalInt(oNPC, "NAME_TYPE")) + { + case 1: sRandomName = sTitle + " " + ms_RandomFirstName(oNPC) + " " + ms_RandomLastName(oNPC)+ " " + sPostfix; break; + default: sRandomName = sTitle + " " + ms_RandomFirstName(oNPC) + " " + sPostfix; break; + } + } + + if (bClassTitle) + { + sRandomName = sBaseRace +" "+ sTitle; + } + + SetName(oNPC, (sRandomName)); + return; + } +} + +string ms_RandomFirstName(object oNPC = OBJECT_SELF) +{ + int Gender = GetGender(oNPC); + int Race = MyPRCGetRacialType(oNPC); + + string Name; + + switch (Race) + { + case RACIAL_TYPE_ANIMAL: Name = RandomName(0); break; + case RACIAL_TYPE_DWARF: + switch (Gender) + { default: Name = RandomName(2); break; + case GENDER_FEMALE: Name = RandomName(3); break; } break; + case RACIAL_TYPE_ELF: + switch (Gender) + { default: Name = RandomName(5); break; + case GENDER_FEMALE: Name = RandomName(6); break; } break; + case RACIAL_TYPE_GNOME: + switch (Gender) + { default: Name = RandomName(8); break; + case GENDER_FEMALE: Name = RandomName(9); break; } break; + case RACIAL_TYPE_HALFELF: + switch (Gender) + { default: Name = RandomName(11); break; + case GENDER_FEMALE: Name = RandomName(12); break; } break; + case RACIAL_TYPE_HALFLING: + switch (Gender) + { default: Name = RandomName(14); break; + case GENDER_FEMALE: Name = RandomName(15); break; } break; + case RACIAL_TYPE_HALFORC: + switch (Gender) + { default: Name = RandomName(17); break; + case GENDER_FEMALE: Name = RandomName(18); break; } break; + case RACIAL_TYPE_HUMAN: + switch (Gender) + { default: Name = RandomName(20); break; + case GENDER_FEMALE: Name = RandomName(21); break; } break; + default: + switch (Gender) + { default: Name = RandomName(-1); break; + case GENDER_FEMALE: Name = RandomName(0); break; } break; + } + + return Name; +} + +string ms_RandomLastName(object oNPC = OBJECT_SELF) +{ + int Race = MyPRCGetRacialType(oNPC); + + string Name; + + switch (Race) + { + case RACIAL_TYPE_DWARF: Name = RandomName(4); break; + case RACIAL_TYPE_ELF: Name = RandomName(7); break; + case RACIAL_TYPE_GNOME: Name = RandomName(10); break; + case RACIAL_TYPE_HALFELF: Name = RandomName(13); break; + case RACIAL_TYPE_HALFLING: Name = RandomName(16); break; + case RACIAL_TYPE_HALFORC: Name = RandomName(19); break; + case RACIAL_TYPE_HUMAN: Name = RandomName(22); break; + default: Name = RandomName(1); break; + } + + return Name; +} + +// Function to get the class-based level title based on the class type +string GetClassLevelTitle(int nClassType) +{ + object oCreature = OBJECT_SELF; // Assuming this function is called on a creature object + + int nLevel = GetLevelByClass(nClassType, oCreature); + int nGender = GetGender(oCreature); + + string sTitle; + + switch (nClassType) + { + case CLASS_TYPE_BARBARIAN: + switch(nLevel) + { + case 1: case 2: case 3: + sTitle = "Brute" ; + break; + + case 4: case 5: + sTitle = "Vandal"; break; + + case 6: + if (nGender == 1) + {sTitle = "Plunderess"; break;} + else + {sTitle = "Plunderer"; break;} + + case 7: + sTitle = "Pillager"; break; + + case 8: + sTitle = "Marauder"; break; + + case 9: + sTitle = "Reaver"; break; + + case 10: + sTitle = "Barbarian"; break; + + case 11: + sTitle = "Mauler"; break; + + case 12: + sTitle = "Ravager"; break; + + case 13: + sTitle = "Slaughterer"; break; + + case 14: + sTitle = "Destroyer"; break; + + case 15: + if (nGender == 1) + {sTitle = "Chieftainess"; break;} + else + {sTitle = "Chieftain"; break;} + + case 16: + sTitle = "Bloodletter"; break; + + case 17: + sTitle = "Rampager"; break; + + case 18: + sTitle = "Slayer"; break; + + case 19: + sTitle = "Warmonger"; break; + + case 20: + if (nGender == 1) + {sTitle = "High Chieftainess"; break;} + else + {sTitle = "High Chieftain"; break;} + + default: + if (nGender == 1) + {sTitle = "Conqueress"; break;} + else + {sTitle = "Conqueror"; break;} + + } + + case CLASS_TYPE_ROGUE: + switch(nLevel) + { + case 1: case 2: case 3: + sTitle = "Lookout" ; + break; + + case 4: case 5: + sTitle = "Outlaw"; break; + + case 6: + sTitle = "Scalawag"; break; + + case 7: + sTitle = "Creeper"; break; + + case 8: + sTitle = "Larker"; break; + + case 9: + sTitle = "Footpad"; break; + + case 10: + sTitle = "Rogue"; break; + + case 11: + sTitle = "Cutpurse"; break; + + case 12: + sTitle = "Thief"; break; + + case 13: + sTitle = "Pilferer"; break; + + case 14: + sTitle = "Robber"; break; + + case 15: + sTitle = "Sharper"; break; + + case 16: + sTitle = "Burglar"; break; + + case 17: + sTitle = "Filcher"; break; + + case 18: + sTitle = "Scoundrel"; break; + + case 19: + sTitle = "Knave"; break; + + case 20: + sTitle = "Prowler"; break; + + default: + sTitle = "Master Rogue"; break; + + } + + case CLASS_TYPE_BARD: + switch(nLevel) + { + case 1: case 2: case 3: + sTitle = "Crier" ; + break; + + case 4: case 5: + if (nGender == 1) + {sTitle = "Chantress"; break;} + else + {sTitle = "Chanter"; break;} + + case 6: + sTitle = "Skop"; break; + + case 7: + sTitle = "Accompanist"; break; + + case 8: + sTitle = "Rhymer"; break; + + case 9: + sTitle = "Singer"; break; + + case 10: + sTitle = "Balladeer"; break; + + case 11: + if (nGender == 1) + {sTitle = "Cantoress"; break;} + else + {sTitle = "Cantor"; break;} + + case 12: + sTitle = "Lutenist"; break; + + case 13: + sTitle = "Melodist"; break; + + case 14: + sTitle = "Lyrist"; break; + + case 15: + sTitle = "Jongleur"; break; + + case 16: + sTitle = "Loreweaver"; break; + + case 17: + sTitle = "Chronicler"; break; + + case 18: + sTitle = "Muse"; break; + + case 19: + if (nGender == 1) + {sTitle = "Rhapsode"; break;} + else + {sTitle = "Rhapsodist"; break;} + + case 20: + sTitle = "Bard"; break; + + case 21: + sTitle = "Raconteur"; break; + + case 22: + sTitle = "Siren"; break; + + case 23: + sTitle = "Songsmith"; break; + + case 24: + sTitle = "Versifer"; break; + + case 25: + sTitle = "Minstrel"; break; + + case 26: + sTitle = "Sonneteer"; break; + + case 27: + if (nGender == 1) + {sTitle = "Trobairitz"; break;} + else + {sTitle = "Troubadour"; break;} + + case 28: + sTitle = "Citharist"; break; + + case 29: + sTitle = "High Minstrel"; break; + + default: + sTitle = "Master Bard"; break; + + } + + case CLASS_TYPE_SORCERER: + case CLASS_TYPE_WIZARD: + switch(nLevel) + { + case 1: case 2: case 3: + sTitle = "Apprentice" ; + break; + + case 4: case 5: + sTitle = "Adept"; break; + + case 6: + sTitle = "Journeymage"; break; + + case 7: + sTitle = "Hedge Mage"; break; + + case 8: + sTitle = "Magician"; break; + + case 9: + sTitle = "Prestidigitator"; break; + + case 10: + sTitle = "Wizard"; break; + + case 11: + sTitle = "Sage"; break; + + case 12: + sTitle = "Visionary"; break; + + case 13: + sTitle = "Loremaster"; break; + + case 14: + sTitle = "Mage"; break; + + case 15: + sTitle = "Fatespinner"; break; + + case 16: + sTitle = "Cabalist"; break; + + case 17: + sTitle = "Thaumaturge"; break; + + case 18: + sTitle = "Theurgist"; break; + + case 19: + sTitle = "Augur"; break; + + case 20: + sTitle = "Spellbinder"; break; + + default: + sTitle = "Archmage"; break; + + } + + case CLASS_TYPE_CLERIC: + switch(nLevel) + { + case 1: case 2: case 3: + sTitle = "Candidate" ; + break; + + case 4: case 5: + sTitle = "Aspirant"; break; + + case 6: + sTitle = "Novice"; break; + + case 7: + sTitle = "Acolyte"; break; + + case 8: + sTitle = "Initiate"; break; + + case 9: + if (nGender == 1) + {sTitle = "Priestess"; break;} + else + {sTitle = "Priest"; break;} + + case 10: + sTitle = "Cleric"; break; + + case 11: + sTitle = "Curate"; break; + + case 12: + sTitle = "Apostle"; break; + + case 13: + sTitle = "Ovate"; break; + + case 14: + sTitle = "Missionary"; break; + + case 15: + if (nGender == 1) + {sTitle = "Canoness"; break;} + else + {sTitle = "Canon"; break;} + + case 16: + if (nGender == 1) + {sTitle = "Abbotess"; break;} + else + {sTitle = "Abbot"; break;} + + case 17: + sTitle = "Bishop"; break; + + case 18: + if (nGender == 1) + {sTitle = "Matriarch"; break;} + else + {sTitle = "Patriarch"; break;} + + case 19: + sTitle = "Preacher"; break; + + default: + if (nGender == 1) + {sTitle = "High Priestess"; break;} + else + {sTitle = "High Priest"; break;} + + } + + case CLASS_TYPE_DRUID: + switch(nLevel) + { + case 1: case 2: case 3: + sTitle = "Initiate" ; + break; + + case 4: case 5: + sTitle = "Devotee"; break; + + case 6: + sTitle = "Beastling"; break; + + case 7: + sTitle = "Grovelurker"; break; + + case 8: + sTitle = "Shaper"; break; + + case 9: + sTitle = "Springwalker"; break; + + case 10: + sTitle = "Druid"; break; + + case 11: + sTitle = "Naturekin"; break; + + case 12: + sTitle = "Treewarden"; break; + + case 13: + sTitle = "Auspex"; break; + + case 14: + sTitle = "Haruspex"; break; + + case 15: + sTitle = "Student of Stones"; break; + + case 16: + sTitle = "Student of Waters"; break; + + case 17: + sTitle = "Student of Forests"; break; + + case 18: + sTitle = "Student of Winds"; break; + + case 19: + sTitle = "Student of Changes"; break; + + case 20: + sTitle = "Pathwarden"; break; + + default: + sTitle = "Archdruid"; break; + + } + + case CLASS_TYPE_FIGHTER: + switch(nLevel) + { + case 1: case 2: case 3: + sTitle = "Guard"; + break; + + case 4: + sTitle = "Elite Guard"; break; + + case 5: case 6: + sTitle = "Warrior"; break; + + case 7: + sTitle = "Elite Warrior"; break; + + case 8: + sTitle = "Soldier"; break; + + case 9: + sTitle = "Enforcer"; break; + + case 10: + sTitle = "Fighter"; break; + + case 11: + sTitle = "Skirmisher"; break; + + case 12: + sTitle = "Veteran"; break; + + case 13: + sTitle = "Armiger"; break; + + case 14: + sTitle = "Myrmidon"; break; + + case 15: + sTitle = "Hero"; break; + + case 16: + sTitle = "Vanguard"; break; + + case 17: + sTitle = "Sentinel"; break; + + case 18: + sTitle = "Dominator"; break; + + case 19: + sTitle = "Warmonger"; break; + + case 20: + sTitle = "Champion"; break; + + default: + sTitle = "Grandmaster"; break; + + } + + case CLASS_TYPE_MONK: + switch(nLevel) + { + case 1: + sTitle = "Trainee"; break; + + case 2: + sTitle = "Initiate"; break; + + case 3: + sTitle = "Novice"; break; + + case 4: + sTitle = "Neophyte"; break; + + case 5: + sTitle = "Aspirant"; break; + + case 6: + sTitle = "Acolyte"; break; + + case 7: + sTitle = "Devotee"; break; + + case 8: + sTitle = "Disciple"; break; + + case 9: + sTitle = "Adept"; break; + + case 10: + sTitle = "Ascetic"; break; + + case 11: + sTitle = "Pilgrim"; break; + + case 12: + sTitle = "Master"; break; + + case 13: + sTitle = "Anchorite"; break; + + case 14: + sTitle = "Mystic"; break; + + case 15: + sTitle = "Meditator"; break; + + case 16: + sTitle = "Seeker"; break; + + case 17: + sTitle = "Guru"; break; + + case 18: + sTitle = "Sensei"; break; + + case 19: + sTitle = "Sannyasi"; break; + + case 20: + sTitle = "Exemplar"; break; + + case 21: + sTitle = "Transcendent"; break; + + default: + sTitle = "High Master"; break; + + } + + case CLASS_TYPE_PALADIN: + switch(nLevel) + { + case 1: + sTitle = "Advocate"; break; + + case 2: + sTitle = "Initiate"; break; + + case 3: + sTitle = "Squire"; break; + + case 4: + sTitle = "Gallant"; break; + + case 5: + sTitle = "Emissary"; break; + + case 6: + sTitle = "Guardian"; break; + + case 7: + sTitle = "Devotee"; break; + + case 8: + sTitle = "Disciple"; break; + + case 9: + sTitle = "Adept"; break; + + case 10: + sTitle = "Ascetic"; break; + + case 11: + sTitle = "Pilgrim"; break; + + case 12: + sTitle = "Master"; break; + + case 13: + sTitle = "Anchorite"; break; + + case 14: + sTitle = "Mystic"; break; + + case 15: + sTitle = "Meditator"; break; + + case 16: + sTitle = "Seeker"; break; + + case 17: + sTitle = "Guru"; break; + + case 18: + sTitle = "Sensei"; break; + + case 19: + sTitle = "Sannyasi"; break; + + case 20: + sTitle = "Exemplar"; break; + + case 21: + sTitle = "Transcendent"; break; + + default: + sTitle = "High Master"; break; + + } + + case CLASS_TYPE_RANGER: + switch(nLevel) + { + case 1: case 2: case 3: + sTitle = "Greenhorn" ; + break; + + case 4: case 5: + sTitle = "Tenderfoot"; break; + + case 6: + sTitle = "Vagrant"; break; + + case 7: + sTitle = "Tramp"; break; + + case 8: + sTitle = "Nomad"; break; + + case 9: + sTitle = "Wanderer"; break; + + case 10: + sTitle = "Ranger"; break; + + case 11: + sTitle = "Rambler"; break; + + case 12: + sTitle = "Traveler"; break; + + case 13: + sTitle = "Sojourner"; break; + + case 14: + sTitle = "Outrider"; break; + + case 15: + sTitle = "Wayfarer"; break; + + case 16: + sTitle = "Excursionist"; break; + + case 17: + sTitle = "Trekker"; break; + + case 18: + sTitle = "Trailblazer"; break; + + case 19: + sTitle = "Woodsman"; break; + + case 20: + sTitle = "High Ranger"; break; + + case 21: + sTitle = "Ranger"; break; + + case 22: + sTitle = "Rambler"; break; + + case 23: + sTitle = "Traveler"; break; + + case 24: + sTitle = "Sojourner"; break; + + case 25: + sTitle = "Outrider"; break; + + case 26: + sTitle = "Wayfarer"; break; + + case 27: + sTitle = "Excursionist"; break; + + case 28: + sTitle = "Trekker"; break; + + case 29: + sTitle = "Trailblazer"; break; + + default: + sTitle = "Ranger Lord"; break; + + } + + } + + return sTitle; +} + +//:: Function to get the highest class level of an object, excluding racialtype classes +int GetHighestClassLevel(object oCreature) +{ + int nHighestLevel = -1; + int nClassTypes = 254; // Maximum number of class types + int i; + + for (i = 0; i <= nClassTypes; i++) + { + // Check if the class type is excluded + if (i == CLASS_TYPE_ABERRATION || + i == CLASS_TYPE_ANIMAL || + i == CLASS_TYPE_BEAST || + i == CLASS_TYPE_CONSTRUCT || + i == CLASS_TYPE_DRAGON || + i == CLASS_TYPE_ELEMENTAL || + i == CLASS_TYPE_FEY || + i == CLASS_TYPE_GIANT || + i == CLASS_TYPE_HUMANOID || + i == CLASS_TYPE_MAGICAL_BEAST || + i == CLASS_TYPE_MONSTROUS || + i == CLASS_TYPE_OOZE || + i == CLASS_TYPE_OUTSIDER || + i == CLASS_TYPE_PLANT || + i == CLASS_TYPE_SHAPECHANGER || + i == CLASS_TYPE_UNDEAD || + i == CLASS_TYPE_VERMIN) + continue; + + int nLevel = GetLevelByClass(i, oCreature); + if (nLevel > 0) + { + if (nLevel > nHighestLevel) + { + nHighestLevel = nLevel; + } + } + else + { + break; // Reached an invalid class level, exit the loop + } + } + + return nHighestLevel; +} + +//::void main (){} diff --git a/_module/utc/npc_annihilus001.utc.json b/_module/utc/npc_annihilus001.utc.json new file mode 100644 index 0000000..140902e --- /dev/null +++ b/_module/utc/npc_annihilus001.utc.json @@ -0,0 +1,649 @@ +{ + "__data_type": "UTC ", + "Appearance_Type": { + "type": "word", + "value": 1096 + }, + "BodyBag": { + "type": "byte", + "value": 0 + }, + "Cha": { + "type": "byte", + "value": 18 + }, + "ChallengeRating": { + "type": "float", + "value": 7.0 + }, + "ClassList": { + "type": "list", + "value": [ + { + "__struct_id": 2, + "Class": { + "type": "int", + "value": 5 + }, + "ClassLevel": { + "type": "short", + "value": 1 + } + }, + { + "__struct_id": 2, + "Class": { + "type": "int", + "value": 4 + }, + "ClassLevel": { + "type": "short", + "value": 1 + } + }, + { + "__struct_id": 2, + "Class": { + "type": "int", + "value": 19 + }, + "ClassLevel": { + "type": "short", + "value": 1 + } + } + ] + }, + "Comment": { + "type": "cexostring", + "value": "" + }, + "Con": { + "type": "byte", + "value": 12 + }, + "Conversation": { + "type": "resref", + "value": "hs_del_pc" + }, + "CRAdjust": { + "type": "int", + "value": 0 + }, + "CurrentHitPoints": { + "type": "short", + "value": 308 + }, + "DecayTime": { + "type": "dword", + "value": 5000 + }, + "Deity": { + "type": "cexostring", + "value": "" + }, + "Description": { + "type": "cexolocstring", + "value": { + "0": "Talk to this creature if you need to delete your character." + } + }, + "Dex": { + "type": "byte", + "value": 22 + }, + "Disarmable": { + "type": "byte", + "value": 0 + }, + "Equip_ItemList": { + "type": "list", + "value": [] + }, + "FactionID": { + "type": "word", + "value": 3 + }, + "FeatList": { + "type": "list", + "value": [ + { + "__struct_id": 1, + "Feat": { + "type": "word", + "value": 2 + } + }, + { + "__struct_id": 1, + "Feat": { + "type": "word", + "value": 3 + } + }, + { + "__struct_id": 1, + "Feat": { + "type": "word", + "value": 4 + } + }, + { + "__struct_id": 1, + "Feat": { + "type": "word", + "value": 32 + } + }, + { + "__struct_id": 1, + "Feat": { + "type": "word", + "value": 45 + } + }, + { + "__struct_id": 1, + "Feat": { + "type": "word", + "value": 49 + } + }, + { + "__struct_id": 1, + "Feat": { + "type": "word", + "value": 46 + } + } + ] + }, + "FirstName": { + "type": "cexolocstring", + "value": { + "0": "Annihilus" + } + }, + "fortbonus": { + "type": "short", + "value": 0 + }, + "Gender": { + "type": "byte", + "value": 4 + }, + "GoodEvil": { + "type": "byte", + "value": 50 + }, + "HitPoints": { + "type": "short", + "value": 308 + }, + "Int": { + "type": "byte", + "value": 12 + }, + "Interruptable": { + "type": "byte", + "value": 1 + }, + "IsImmortal": { + "type": "byte", + "value": 1 + }, + "IsPC": { + "type": "byte", + "value": 0 + }, + "LastName": { + "type": "cexolocstring", + "value": { + "0": "" + } + }, + "LawfulChaotic": { + "type": "byte", + "value": 50 + }, + "Lootable": { + "type": "byte", + "value": 0 + }, + "MaxHitPoints": { + "type": "short", + "value": 311 + }, + "NaturalAC": { + "type": "byte", + "value": 40 + }, + "NoPermDeath": { + "type": "byte", + "value": 1 + }, + "PaletteID": { + "type": "byte", + "value": 45 + }, + "PerceptionRange": { + "type": "byte", + "value": 8 + }, + "Phenotype": { + "type": "int", + "value": 0 + }, + "Plot": { + "type": "byte", + "value": 1 + }, + "PortraitId": { + "type": "word", + "value": 2236 + }, + "Race": { + "type": "byte", + "value": 24 + }, + "refbonus": { + "type": "short", + "value": 0 + }, + "ScriptAttacked": { + "type": "resref", + "value": "x2_def_attacked" + }, + "ScriptDamaged": { + "type": "resref", + "value": "x2_def_ondamage" + }, + "ScriptDeath": { + "type": "resref", + "value": "x2_def_ondeath" + }, + "ScriptDialogue": { + "type": "resref", + "value": "x2_def_onconv" + }, + "ScriptDisturbed": { + "type": "resref", + "value": "x2_def_ondisturb" + }, + "ScriptEndRound": { + "type": "resref", + "value": "x2_def_endcombat" + }, + "ScriptHeartbeat": { + "type": "resref", + "value": "x2_def_heartbeat" + }, + "ScriptOnBlocked": { + "type": "resref", + "value": "x2_def_onblocked" + }, + "ScriptOnNotice": { + "type": "resref", + "value": "x2_def_percept" + }, + "ScriptRested": { + "type": "resref", + "value": "x2_def_rested" + }, + "ScriptSpawn": { + "type": "resref", + "value": "x2_def_spawn" + }, + "ScriptSpellAt": { + "type": "resref", + "value": "x2_def_spellcast" + }, + "ScriptUserDefine": { + "type": "resref", + "value": "x2_def_userdef" + }, + "SkillList": { + "type": "list", + "value": [ + { + "__struct_id": 0, + "Rank": { + "type": "byte", + "value": 0 + } + }, + { + "__struct_id": 0, + "Rank": { + "type": "byte", + "value": 19 + } + }, + { + "__struct_id": 0, + "Rank": { + "type": "byte", + "value": 0 + } + }, + { + "__struct_id": 0, + "Rank": { + "type": "byte", + "value": 43 + } + }, + { + "__struct_id": 0, + "Rank": { + "type": "byte", + "value": 0 + } + }, + { + "__struct_id": 0, + "Rank": { + "type": "byte", + "value": 5 + } + }, + { + "__struct_id": 0, + "Rank": { + "type": "byte", + "value": 43 + } + }, + { + "__struct_id": 0, + "Rank": { + "type": "byte", + "value": 0 + } + }, + { + "__struct_id": 0, + "Rank": { + "type": "byte", + "value": 0 + } + }, + { + "__struct_id": 0, + "Rank": { + "type": "byte", + "value": 0 + } + }, + { + "__struct_id": 0, + "Rank": { + "type": "byte", + "value": 0 + } + }, + { + "__struct_id": 0, + "Rank": { + "type": "byte", + "value": 43 + } + }, + { + "__struct_id": 0, + "Rank": { + "type": "byte", + "value": 0 + } + }, + { + "__struct_id": 0, + "Rank": { + "type": "byte", + "value": 0 + } + }, + { + "__struct_id": 0, + "Rank": { + "type": "byte", + "value": 0 + } + }, + { + "__struct_id": 0, + "Rank": { + "type": "byte", + "value": 0 + } + }, + { + "__struct_id": 0, + "Rank": { + "type": "byte", + "value": 30 + } + }, + { + "__struct_id": 0, + "Rank": { + "type": "byte", + "value": 0 + } + }, + { + "__struct_id": 0, + "Rank": { + "type": "byte", + "value": 1 + } + }, + { + "__struct_id": 0, + "Rank": { + "type": "byte", + "value": 26 + } + }, + { + "__struct_id": 0, + "Rank": { + "type": "byte", + "value": 0 + } + }, + { + "__struct_id": 0, + "Rank": { + "type": "byte", + "value": 40 + } + }, + { + "__struct_id": 0, + "Rank": { + "type": "byte", + "value": 0 + } + }, + { + "__struct_id": 0, + "Rank": { + "type": "byte", + "value": 0 + } + }, + { + "__struct_id": 0, + "Rank": { + "type": "byte", + "value": 0 + } + }, + { + "__struct_id": 0, + "Rank": { + "type": "byte", + "value": 0 + } + }, + { + "__struct_id": 0, + "Rank": { + "type": "byte", + "value": 0 + } + }, + { + "__struct_id": 0, + "Rank": { + "type": "byte", + "value": 0 + } + }, + { + "__struct_id": 0, + "Rank": { + "type": "byte", + "value": 0 + } + }, + { + "__struct_id": 0, + "Rank": { + "type": "byte", + "value": 0 + } + }, + { + "__struct_id": 0, + "Rank": { + "type": "byte", + "value": 0 + } + }, + { + "__struct_id": 0, + "Rank": { + "type": "byte", + "value": 0 + } + }, + { + "__struct_id": 0, + "Rank": { + "type": "byte", + "value": 0 + } + }, + { + "__struct_id": 0, + "Rank": { + "type": "byte", + "value": 0 + } + }, + { + "__struct_id": 0, + "Rank": { + "type": "byte", + "value": 0 + } + }, + { + "__struct_id": 0, + "Rank": { + "type": "byte", + "value": 0 + } + }, + { + "__struct_id": 0, + "Rank": { + "type": "byte", + "value": 0 + } + }, + { + "__struct_id": 0, + "Rank": { + "type": "byte", + "value": 0 + } + }, + { + "__struct_id": 0, + "Rank": { + "type": "byte", + "value": 0 + } + }, + { + "__struct_id": 0, + "Rank": { + "type": "byte", + "value": 0 + } + }, + { + "__struct_id": 0, + "Rank": { + "type": "byte", + "value": 0 + } + } + ] + }, + "SoundSetFile": { + "type": "word", + "value": 237 + }, + "SpecAbilityList": { + "type": "list", + "value": [] + }, + "StartingPackage": { + "type": "byte", + "value": 24 + }, + "Str": { + "type": "byte", + "value": 14 + }, + "Subrace": { + "type": "cexostring", + "value": "Undead" + }, + "Tag": { + "type": "cexostring", + "value": "NPC_ANNIHILUS001" + }, + "Tail_New": { + "type": "dword", + "value": 0 + }, + "TemplateList": { + "type": "list", + "value": [] + }, + "TemplateResRef": { + "type": "resref", + "value": "npc_annihilus001" + }, + "WalkRate": { + "type": "int", + "value": 1 + }, + "willbonus": { + "type": "short", + "value": 0 + }, + "Wings_New": { + "type": "dword", + "value": 0 + }, + "Wis": { + "type": "byte", + "value": 8 + } +}