More quest persistence

More quest persistence & cleanup.
This commit is contained in:
Jaysyn904 2022-06-20 14:17:58 -04:00
parent 2105778d4c
commit e03053bd65
57 changed files with 14075 additions and 313 deletions

View File

@ -677,7 +677,7 @@
},
"Version": {
"type": "dword",
"value": 49
"value": 50
},
"Width": {
"type": "int",

View File

@ -11169,7 +11169,7 @@
},
"Version": {
"type": "dword",
"value": 22
"value": 24
},
"Width": {
"type": "int",

View File

@ -849,7 +849,7 @@
},
"Version": {
"type": "dword",
"value": 7
"value": 8
},
"Width": {
"type": "int",

View File

@ -11169,7 +11169,7 @@
},
"Version": {
"type": "dword",
"value": 18
"value": 19
},
"Width": {
"type": "int",

View File

@ -11169,7 +11169,7 @@
},
"Version": {
"type": "dword",
"value": 80
"value": 81
},
"Width": {
"type": "int",

View File

@ -4461,7 +4461,7 @@
},
"Version": {
"type": "dword",
"value": 32
"value": 33
},
"Width": {
"type": "int",

View File

@ -52,7 +52,7 @@
"__struct_id": 0,
"Active": {
"type": "resref",
"value": "journalcheckspi1"
"value": "qst_spiders_chk"
},
"ConditionParams": {
"type": "list",
@ -232,7 +232,7 @@
},
"Script": {
"type": "resref",
"value": "at_145"
"value": "qst_spiders_end"
},
"Sound": {
"type": "resref",
@ -424,7 +424,7 @@
},
"Script": {
"type": "resref",
"value": "endleah"
"value": ""
},
"Sound": {
"type": "resref",
@ -469,7 +469,7 @@
},
"Script": {
"type": "resref",
"value": "destroyselfnofx"
"value": "cv_destselfnofx"
},
"Sound": {
"type": "resref",

View File

@ -21,6 +21,10 @@
"value": [
{
"__struct_id": 0,
"ActionParams": {
"type": "list",
"value": []
},
"Animation": {
"type": "dword",
"value": 0
@ -50,6 +54,10 @@
"type": "resref",
"value": "sc_057"
},
"ConditionParams": {
"type": "list",
"value": []
},
"Index": {
"type": "dword",
"value": 1
@ -65,6 +73,10 @@
"type": "resref",
"value": ""
},
"ConditionParams": {
"type": "list",
"value": []
},
"Index": {
"type": "dword",
"value": 0
@ -97,6 +109,10 @@
},
{
"__struct_id": 1,
"ActionParams": {
"type": "list",
"value": []
},
"Animation": {
"type": "dword",
"value": 0
@ -130,6 +146,10 @@
"type": "resref",
"value": ""
},
"ConditionParams": {
"type": "list",
"value": []
},
"Index": {
"type": "dword",
"value": 2
@ -143,7 +163,7 @@
},
"Script": {
"type": "resref",
"value": "at_161"
"value": "qst_ghost_end"
},
"Sound": {
"type": "resref",
@ -156,12 +176,16 @@
"Text": {
"type": "cexolocstring",
"value": {
"0": "THEN PEACE I MAY FIND. TAKE THIS KEY AND TAKE WHAT YOU WILL FROM MY TOMB. I MAY NOW GO FREELY INTO THE PLANE OF NIVANA. FARE THEE WELL."
"0": "THEN PEACE I MAY FIND. TAKE THIS KEY AND TAKE WHAT YOU WILL FROM MY TOMB. I MAY NOW GO FREELY INTO THE PLANE OF NIRVANA. FARE THEE WELL."
}
}
},
{
"__struct_id": 2,
"ActionParams": {
"type": "list",
"value": []
},
"Animation": {
"type": "dword",
"value": 0
@ -191,6 +215,10 @@
"type": "resref",
"value": ""
},
"ConditionParams": {
"type": "list",
"value": []
},
"Index": {
"type": "dword",
"value": 9
@ -206,6 +234,10 @@
"type": "resref",
"value": ""
},
"ConditionParams": {
"type": "list",
"value": []
},
"Index": {
"type": "dword",
"value": 7
@ -221,6 +253,10 @@
"type": "resref",
"value": ""
},
"ConditionParams": {
"type": "list",
"value": []
},
"Index": {
"type": "dword",
"value": 5
@ -236,6 +272,10 @@
"type": "resref",
"value": ""
},
"ConditionParams": {
"type": "list",
"value": []
},
"Index": {
"type": "dword",
"value": 3
@ -249,7 +289,7 @@
},
"Script": {
"type": "resref",
"value": "nw_d1_talktime"
"value": "ra_npc_talktimes"
},
"Sound": {
"type": "resref",
@ -268,6 +308,10 @@
},
{
"__struct_id": 3,
"ActionParams": {
"type": "list",
"value": []
},
"Animation": {
"type": "dword",
"value": 0
@ -297,6 +341,10 @@
"type": "resref",
"value": ""
},
"ConditionParams": {
"type": "list",
"value": []
},
"Index": {
"type": "dword",
"value": 4
@ -310,7 +358,7 @@
},
"Script": {
"type": "resref",
"value": "deathconv"
"value": "cv_pc_death"
},
"Sound": {
"type": "resref",
@ -329,6 +377,10 @@
},
{
"__struct_id": 4,
"ActionParams": {
"type": "list",
"value": []
},
"Animation": {
"type": "dword",
"value": 0
@ -358,6 +410,10 @@
"type": "resref",
"value": ""
},
"ConditionParams": {
"type": "list",
"value": []
},
"Index": {
"type": "dword",
"value": 6
@ -371,7 +427,7 @@
},
"Script": {
"type": "resref",
"value": "deathconv"
"value": "cv_pc_death"
},
"Sound": {
"type": "resref",
@ -390,6 +446,10 @@
},
{
"__struct_id": 5,
"ActionParams": {
"type": "list",
"value": []
},
"Animation": {
"type": "dword",
"value": 0
@ -419,6 +479,10 @@
"type": "resref",
"value": ""
},
"ConditionParams": {
"type": "list",
"value": []
},
"Index": {
"type": "dword",
"value": 8
@ -432,7 +496,7 @@
},
"Script": {
"type": "resref",
"value": "deathconv"
"value": "cv_pc_death"
},
"Sound": {
"type": "resref",
@ -451,6 +515,10 @@
},
{
"__struct_id": 6,
"ActionParams": {
"type": "list",
"value": []
},
"Animation": {
"type": "dword",
"value": 0
@ -480,6 +548,10 @@
"type": "resref",
"value": ""
},
"ConditionParams": {
"type": "list",
"value": []
},
"Index": {
"type": "dword",
"value": 10
@ -512,6 +584,10 @@
},
{
"__struct_id": 7,
"ActionParams": {
"type": "list",
"value": []
},
"Animation": {
"type": "dword",
"value": 0
@ -541,6 +617,10 @@
"type": "resref",
"value": ""
},
"ConditionParams": {
"type": "list",
"value": []
},
"Index": {
"type": "dword",
"value": 11
@ -573,6 +653,10 @@
},
{
"__struct_id": 8,
"ActionParams": {
"type": "list",
"value": []
},
"Animation": {
"type": "dword",
"value": 0
@ -606,6 +690,10 @@
"type": "resref",
"value": ""
},
"ConditionParams": {
"type": "list",
"value": []
},
"Index": {
"type": "dword",
"value": 12
@ -619,7 +707,7 @@
},
"Script": {
"type": "resref",
"value": ""
"value": "qst_ghost_start"
},
"Sound": {
"type": "resref",
@ -651,6 +739,10 @@
"value": [
{
"__struct_id": 0,
"ActionParams": {
"type": "list",
"value": []
},
"Animation": {
"type": "dword",
"value": 0
@ -692,6 +784,10 @@
},
{
"__struct_id": 1,
"ActionParams": {
"type": "list",
"value": []
},
"Animation": {
"type": "dword",
"value": 0
@ -717,6 +813,10 @@
"type": "resref",
"value": ""
},
"ConditionParams": {
"type": "list",
"value": []
},
"Index": {
"type": "dword",
"value": 1
@ -749,6 +849,10 @@
},
{
"__struct_id": 2,
"ActionParams": {
"type": "list",
"value": []
},
"Animation": {
"type": "dword",
"value": 0
@ -775,7 +879,7 @@
},
"Script": {
"type": "resref",
"value": "destroyselfnofx"
"value": "cv_destselfnofx"
},
"Sound": {
"type": "resref",
@ -790,6 +894,10 @@
},
{
"__struct_id": 3,
"ActionParams": {
"type": "list",
"value": []
},
"Animation": {
"type": "dword",
"value": 0
@ -815,6 +923,10 @@
"type": "resref",
"value": ""
},
"ConditionParams": {
"type": "list",
"value": []
},
"Index": {
"type": "dword",
"value": 3
@ -847,6 +959,10 @@
},
{
"__struct_id": 4,
"ActionParams": {
"type": "list",
"value": []
},
"Animation": {
"type": "dword",
"value": 0
@ -888,6 +1004,10 @@
},
{
"__struct_id": 5,
"ActionParams": {
"type": "list",
"value": []
},
"Animation": {
"type": "dword",
"value": 0
@ -913,6 +1033,10 @@
"type": "resref",
"value": ""
},
"ConditionParams": {
"type": "list",
"value": []
},
"Index": {
"type": "dword",
"value": 4
@ -945,6 +1069,10 @@
},
{
"__struct_id": 6,
"ActionParams": {
"type": "list",
"value": []
},
"Animation": {
"type": "dword",
"value": 0
@ -986,6 +1114,10 @@
},
{
"__struct_id": 7,
"ActionParams": {
"type": "list",
"value": []
},
"Animation": {
"type": "dword",
"value": 0
@ -1011,6 +1143,10 @@
"type": "resref",
"value": ""
},
"ConditionParams": {
"type": "list",
"value": []
},
"Index": {
"type": "dword",
"value": 5
@ -1043,6 +1179,10 @@
},
{
"__struct_id": 8,
"ActionParams": {
"type": "list",
"value": []
},
"Animation": {
"type": "dword",
"value": 0
@ -1084,6 +1224,10 @@
},
{
"__struct_id": 9,
"ActionParams": {
"type": "list",
"value": []
},
"Animation": {
"type": "dword",
"value": 0
@ -1109,6 +1253,10 @@
"type": "resref",
"value": ""
},
"ConditionParams": {
"type": "list",
"value": []
},
"Index": {
"type": "dword",
"value": 6
@ -1141,6 +1289,10 @@
},
{
"__struct_id": 10,
"ActionParams": {
"type": "list",
"value": []
},
"Animation": {
"type": "dword",
"value": 0
@ -1166,6 +1318,10 @@
"type": "resref",
"value": ""
},
"ConditionParams": {
"type": "list",
"value": []
},
"Index": {
"type": "dword",
"value": 7
@ -1198,6 +1354,10 @@
},
{
"__struct_id": 11,
"ActionParams": {
"type": "list",
"value": []
},
"Animation": {
"type": "dword",
"value": 0
@ -1223,6 +1383,10 @@
"type": "resref",
"value": ""
},
"ConditionParams": {
"type": "list",
"value": []
},
"Index": {
"type": "dword",
"value": 8
@ -1255,6 +1419,10 @@
},
{
"__struct_id": 12,
"ActionParams": {
"type": "list",
"value": []
},
"Animation": {
"type": "dword",
"value": 0
@ -1303,7 +1471,11 @@
"__struct_id": 0,
"Active": {
"type": "resref",
"value": "npcrecognew"
"value": "ra_npc_talkcheck"
},
"ConditionParams": {
"type": "list",
"value": []
},
"Index": {
"type": "dword",
@ -1314,7 +1486,11 @@
"__struct_id": 1,
"Active": {
"type": "resref",
"value": "npcrecognknows"
"value": "ra_npc_knowspc"
},
"ConditionParams": {
"type": "list",
"value": []
},
"Index": {
"type": "dword",

View File

@ -52,7 +52,7 @@
"__struct_id": 0,
"Active": {
"type": "resref",
"value": "journalcheckspi1"
"value": "qst_spiders_chk"
},
"ConditionParams": {
"type": "list",
@ -232,7 +232,7 @@
},
"Script": {
"type": "resref",
"value": "at_145"
"value": "qst_spiders_end"
},
"Sound": {
"type": "resref",
@ -424,7 +424,7 @@
},
"Script": {
"type": "resref",
"value": "endleah"
"value": ""
},
"Sound": {
"type": "resref",
@ -469,7 +469,7 @@
},
"Script": {
"type": "resref",
"value": "destroyselfnofx"
"value": "cv_destselfnofx"
},
"Sound": {
"type": "resref",

File diff suppressed because it is too large Load Diff

View File

@ -280,7 +280,7 @@
},
"QuestEntry": {
"type": "dword",
"value": 4
"value": 5
},
"RepliesList": {
"type": "list",
@ -321,7 +321,7 @@
"Text": {
"type": "cexolocstring",
"value": {
"0": "Good work. We can toss that charm out now. Marthek's here already, and it seems like he'll be as good as ever. Here's a bit of cash for ya, and good day."
"0": "Good work. We can toss that charm out now. Marthek's here already, and told us what happened. It seems like he'll be as good as ever. Here's a bit of cash for ya, and good day."
}
}
},
@ -1306,7 +1306,7 @@
},
"NumWords": {
"type": "dword",
"value": 692
"value": 696
},
"PreventZoomIn": {
"type": "byte",

View File

@ -2037,11 +2037,11 @@
},
"QuestEntry": {
"type": "dword",
"value": 3
"value": 4
},
"Script": {
"type": "resref",
"value": "qst_marthek_3rd"
"value": "qst_marthek_4th"
},
"Sound": {
"type": "resref",

View File

@ -0,0 +1,835 @@
{
"__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": 6
},
"IsChild": {
"type": "byte",
"value": 0
}
},
{
"__struct_id": 1,
"Active": {
"type": "resref",
"value": "sc_107"
},
"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": "DIE! DIE! DIE LITTLE SQUISHY! DIE AND GO IN MY STOMACH!!!!!!"
}
}
},
{
"__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": 1
},
"IsChild": {
"type": "byte",
"value": 0
}
}
]
},
"Script": {
"type": "resref",
"value": ""
},
"Sound": {
"type": "resref",
"value": ""
},
"Speaker": {
"type": "cexostring",
"value": ""
},
"Text": {
"type": "cexolocstring",
"value": {
"0": "*Marthek grasps his head in pain. Blood pours from his ears, and suddenly he grasps his neck and rips off the item that hung there* He looks to you, weeping, his mad countenance having left his face."
}
}
},
{
"__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": 2
},
"IsChild": {
"type": "byte",
"value": 0
}
}
]
},
"Script": {
"type": "resref",
"value": ""
},
"Sound": {
"type": "resref",
"value": ""
},
"Speaker": {
"type": "cexostring",
"value": ""
},
"Text": {
"type": "cexolocstring",
"value": {
"0": "Wh...what happened to me? What have I done!"
}
}
},
{
"__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
},
"Quest": {
"type": "cexostring",
"value": ""
},
"RepliesList": {
"type": "list",
"value": [
{
"__struct_id": 0,
"Active": {
"type": "resref",
"value": ""
},
"ConditionParams": {
"type": "list",
"value": []
},
"Index": {
"type": "dword",
"value": 4
},
"IsChild": {
"type": "byte",
"value": 0
}
},
{
"__struct_id": 1,
"Active": {
"type": "resref",
"value": ""
},
"ConditionParams": {
"type": "list",
"value": []
},
"Index": {
"type": "dword",
"value": 3
},
"IsChild": {
"type": "byte",
"value": 0
}
}
]
},
"Script": {
"type": "resref",
"value": ""
},
"Sound": {
"type": "resref",
"value": ""
},
"Speaker": {
"type": "cexostring",
"value": ""
},
"Text": {
"type": "cexolocstring",
"value": {
"0": "You....you should have killed me. I have become a monster. I killed...kiled them all..."
}
}
},
{
"__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
},
"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
}
}
]
},
"Script": {
"type": "resref",
"value": "spmarthekhench"
},
"Sound": {
"type": "resref",
"value": ""
},
"Speaker": {
"type": "cexostring",
"value": ""
},
"Text": {
"type": "cexolocstring",
"value": {
"0": "Perhaps...perhaps you are right, though I cannot say if I will ever be able to forgive myself. Still. I shall meet you back in the Adventurer's Guild. Maybe there I can join your mission and aid this world again. Take this shattered charm--it is what the priests used to control me. It should prove that I am no longer theirs. Goodbye, and thank you."
}
}
}
]
},
"NumWords": {
"type": "dword",
"value": 186
},
"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": [
{
"__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": "at_261"
},
"Sound": {
"type": "resref",
"value": ""
},
"Text": {
"type": "cexolocstring",
"value": {
"0": "Quickly read the scroll out loud!"
}
}
},
{
"__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": 2
},
"IsChild": {
"type": "byte",
"value": 0
}
}
]
},
"Quest": {
"type": "cexostring",
"value": ""
},
"Script": {
"type": "resref",
"value": ""
},
"Sound": {
"type": "resref",
"value": ""
},
"Text": {
"type": "cexolocstring",
"value": {
"0": "Continue."
}
}
},
{
"__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": [
{
"__struct_id": 0,
"Active": {
"type": "resref",
"value": ""
},
"ConditionParams": {
"type": "list",
"value": []
},
"Index": {
"type": "dword",
"value": 3
},
"IsChild": {
"type": "byte",
"value": 0
}
}
]
},
"Quest": {
"type": "cexostring",
"value": ""
},
"Script": {
"type": "resref",
"value": ""
},
"Sound": {
"type": "resref",
"value": ""
},
"Text": {
"type": "cexolocstring",
"value": {
"0": "You were cursed by the clerics of Orcus and slew your own friends. I came here to help you."
}
}
},
{
"__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": []
},
"Quest": {
"type": "cexostring",
"value": ""
},
"Script": {
"type": "resref",
"value": "ra_npc_attack_pc"
},
"Sound": {
"type": "resref",
"value": ""
},
"Text": {
"type": "cexolocstring",
"value": {
"0": "Yes. You are correct. Die!"
}
}
},
{
"__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": [
{
"__struct_id": 0,
"Active": {
"type": "resref",
"value": ""
},
"ConditionParams": {
"type": "list",
"value": []
},
"Index": {
"type": "dword",
"value": 4
},
"IsChild": {
"type": "byte",
"value": 0
}
}
]
},
"Quest": {
"type": "cexostring",
"value": ""
},
"Script": {
"type": "resref",
"value": "at_262"
},
"Sound": {
"type": "resref",
"value": ""
},
"Text": {
"type": "cexolocstring",
"value": {
"0": "No. Everyone deserves a second chance. Fight with our side again perhaps you can be redeemed."
}
}
},
{
"__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": "cv_destselfnofx"
},
"Sound": {
"type": "resref",
"value": ""
},
"Text": {
"type": "cexolocstring",
"value": {
"0": "Farewell."
}
}
},
{
"__struct_id": 6,
"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": "ra_npc_attack_pc"
},
"Sound": {
"type": "resref",
"value": ""
},
"Text": {
"type": "cexolocstring",
"value": {
"0": "Prepare for a fight."
}
}
}
]
},
"StartingList": {
"type": "list",
"value": [
{
"__struct_id": 0,
"Active": {
"type": "resref",
"value": ""
},
"ConditionParams": {
"type": "list",
"value": []
},
"Index": {
"type": "dword",
"value": 0
}
}
]
}
}

File diff suppressed because it is too large Load Diff

View File

@ -642,7 +642,7 @@
},
"Script": {
"type": "resref",
"value": "attpcnofact"
"value": "ra_npc_attack_pc"
},
"Sound": {
"type": "resref",
@ -797,7 +797,7 @@
},
"Script": {
"type": "resref",
"value": "attpcnofact"
"value": "ra_npc_attack_pc"
},
"Sound": {
"type": "resref",

View File

@ -5338,7 +5338,7 @@
},
"Conversation": {
"type": "resref",
"value": "marthek"
"value": "cv_marthek"
},
"CRAdjust": {
"type": "int",
@ -5485,10 +5485,6 @@
"type": "cexolocstring",
"value": {}
},
"Dropable": {
"type": "byte",
"value": 1
},
"Identified": {
"type": "byte",
"value": 1
@ -5696,7 +5692,7 @@
},
"FactionID": {
"type": "word",
"value": 7
"value": 1
},
"FeatList": {
"type": "list",
@ -6252,111 +6248,6 @@
"type": "float",
"value": -1.0
}
},
{
"__struct_id": 3,
"AddCost": {
"type": "dword",
"value": 0
},
"BaseItem": {
"type": "int",
"value": 29
},
"Charges": {
"type": "byte",
"value": 0
},
"Cost": {
"type": "dword",
"value": 0
},
"Cursed": {
"type": "byte",
"value": 0
},
"DescIdentified": {
"type": "cexolocstring",
"value": {
"0": "The head of Marthek the madman."
}
},
"Description": {
"type": "cexolocstring",
"value": {
"0": ""
}
},
"Dropable": {
"type": "byte",
"value": 1
},
"Identified": {
"type": "byte",
"value": 1
},
"LocalizedName": {
"type": "cexolocstring",
"value": {
"0": "Marthek's Head"
}
},
"ModelPart1": {
"type": "byte",
"value": 40
},
"Plot": {
"type": "byte",
"value": 0
},
"PropertiesList": {
"type": "list",
"value": []
},
"Repos_PosX": {
"type": "word",
"value": 3
},
"Repos_Posy": {
"type": "word",
"value": 0
},
"StackSize": {
"type": "word",
"value": 1
},
"Stolen": {
"type": "byte",
"value": 0
},
"Tag": {
"type": "cexostring",
"value": "MartheksHead"
},
"TemplateResRef": {
"type": "resref",
"value": "item065"
},
"XOrientation": {
"type": "float",
"value": 0.0
},
"XPosition": {
"type": "float",
"value": -1.0
},
"YOrientation": {
"type": "float",
"value": 1.0
},
"YPosition": {
"type": "float",
"value": -1.0
},
"ZPosition": {
"type": "float",
"value": -1.0
}
}
]
},
@ -6420,7 +6311,7 @@
},
"ScriptDeath": {
"type": "resref",
"value": "x2_def_ondeath"
"value": "marthek_ondeath"
},
"ScriptDialogue": {
"type": "resref",
@ -6444,7 +6335,7 @@
},
"ScriptOnNotice": {
"type": "resref",
"value": "talktopc"
"value": "talk2pc_onpercp"
},
"ScriptRested": {
"type": "resref",
@ -6742,7 +6633,7 @@
},
"SoundSetFile": {
"type": "word",
"value": 25
"value": 219
},
"SpecAbilityList": {
"type": "list",
@ -6758,7 +6649,7 @@
},
"Subrace": {
"type": "cexostring",
"value": ""
"value": "Human"
},
"Tag": {
"type": "cexostring",

View File

@ -62,7 +62,7 @@
},
"ChallengeRating": {
"type": "float",
"value": 23.0
"value": 24.0
},
"ClassList": {
"type": "list",
@ -792,7 +792,7 @@
},
"Conversation": {
"type": "resref",
"value": "archmageghost"
"value": "cv_archmageghost"
},
"CRAdjust": {
"type": "int",
@ -1685,7 +1685,7 @@
},
"Int": {
"type": "byte",
"value": 16
"value": 22
},
"Interruptable": {
"type": "byte",

View File

@ -25721,21 +25721,6 @@
"value": 0
}
},
{
"__struct_id": 3,
"Spell": {
"type": "word",
"value": 16
},
"SpellFlags": {
"type": "byte",
"value": 1
},
"SpellMetaMagic": {
"type": "byte",
"value": 0
}
},
{
"__struct_id": 3,
"Spell": {
@ -25816,36 +25801,6 @@
"value": 0
}
},
{
"__struct_id": 3,
"Spell": {
"type": "word",
"value": 569
},
"SpellFlags": {
"type": "byte",
"value": 1
},
"SpellMetaMagic": {
"type": "byte",
"value": 0
}
},
{
"__struct_id": 3,
"Spell": {
"type": "word",
"value": 49
},
"SpellFlags": {
"type": "byte",
"value": 1
},
"SpellMetaMagic": {
"type": "byte",
"value": 0
}
},
{
"__struct_id": 3,
"Spell": {
@ -25896,21 +25851,6 @@
"value": 0
}
},
{
"__struct_id": 3,
"Spell": {
"type": "word",
"value": 58
},
"SpellFlags": {
"type": "byte",
"value": 1
},
"SpellMetaMagic": {
"type": "byte",
"value": 0
}
},
{
"__struct_id": 3,
"Spell": {
@ -25964,7 +25904,7 @@
},
"Conversation": {
"type": "resref",
"value": "scramge"
"value": "cv_scramge"
},
"CRAdjust": {
"type": "int",
@ -25984,7 +25924,9 @@
},
"Description": {
"type": "cexolocstring",
"value": {}
"value": {
"0": "This strange speaking fellow seems at home here."
}
},
"Dex": {
"type": "byte",
@ -26282,55 +26224,55 @@
},
"ScriptAttacked": {
"type": "resref",
"value": "nw_c2_default5"
"value": "x2_def_attacked"
},
"ScriptDamaged": {
"type": "resref",
"value": "nw_c2_default6"
"value": "x2_def_ondamage"
},
"ScriptDeath": {
"type": "resref",
"value": "nw_c2_default7"
"value": "x2_def_ondeath"
},
"ScriptDialogue": {
"type": "resref",
"value": "nw_c2_default4"
"value": "x2_def_onconv"
},
"ScriptDisturbed": {
"type": "resref",
"value": "nw_c2_default8"
"value": "x2_def_ondisturb"
},
"ScriptEndRound": {
"type": "resref",
"value": "nw_c2_default3"
"value": "x2_def_endcombat"
},
"ScriptHeartbeat": {
"type": "resref",
"value": "nw_c2_default1"
"value": "x2_def_heartbeat"
},
"ScriptOnBlocked": {
"type": "resref",
"value": "nw_c2_defaulte"
"value": "x2_def_onblocked"
},
"ScriptOnNotice": {
"type": "resref",
"value": "nw_c2_default2"
"value": "x2_def_percept"
},
"ScriptRested": {
"type": "resref",
"value": "nw_c2_defaulta"
"value": "x2_def_rested"
},
"ScriptSpawn": {
"type": "resref",
"value": ""
"value": "x2_def_spawn"
},
"ScriptSpellAt": {
"type": "resref",
"value": "nw_c2_defaultb"
"value": "x2_def_spellcast"
},
"ScriptUserDefine": {
"type": "resref",
"value": ""
"value": "x2_def_userdef"
},
"SkillList": {
"type": "list",

View File

@ -20476,7 +20476,7 @@
"__struct_id": 0,
"CR": {
"type": "float",
"value": 23.0
"value": 24.0
},
"FACTION": {
"type": "cexostring",

View File

@ -1227,12 +1227,12 @@
},
"ID": {
"type": "dword",
"value": 2
"value": 3
},
"Text": {
"type": "cexolocstring",
"value": {
"0": "Marthek is dead. You have recieved a reward for your efforts. Also, Blackheart mentioned that the Temple is looking for some help with a special mission."
"0": "You've collected Marthek's bounty & recieved a reward for your efforts. Also, Blackheart mentioned that the Temple is looking for some help with a special mission."
}
}
},
@ -1244,7 +1244,7 @@
},
"ID": {
"type": "dword",
"value": 3
"value": 4
},
"Text": {
"type": "cexolocstring",
@ -1261,7 +1261,7 @@
},
"ID": {
"type": "dword",
"value": 4
"value": 5
},
"Text": {
"type": "cexolocstring",
@ -1269,6 +1269,23 @@
"0": "You have brought back Marthek alive. He told you the story of how the priests of Orcus found him and corrupted him using foul magics. In repentance, he has offered to join your quest."
}
}
},
{
"__struct_id": 4,
"End": {
"type": "word",
"value": 0
},
"ID": {
"type": "dword",
"value": 2
},
"Text": {
"type": "cexolocstring",
"value": {
"0": "Marthek is dead. Now to return the proof to Blackheart."
}
}
}
]
},

BIN
_module/ncs/cv_pc_death.ncs Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -7,7 +7,7 @@
//:://////////////////////////////////////////////
void main()
{
// Give the speaker the items
CreateItemOnObject("item062", GetPCSpeaker(), 1);
// Give the speaker the items
CreateItemOnObject("item062", GetPCSpeaker(), 1);
}

View File

@ -7,10 +7,10 @@
//:://////////////////////////////////////////////
void main()
{
// Give the speaker some XP
GiveXPToCreature(GetPCSpeaker(), 500);
// Give the speaker some XP
GiveXPToCreature(GetPCSpeaker(), 500);
// Give the speaker the items
CreateItemOnObject("item073", GetPCSpeaker(), 1);
// Give the PC Marthek's Charm
CreateItemOnObject("item073", GetPCSpeaker(), 1);
}

View File

@ -0,0 +1,28 @@
//::///////////////////////////////////////////////
//:
//:: cv_pc_death.nss
//:: Copyright (c) 2022 Project RATDOG
//:
//:://////////////////////////////////////////////
/*
Kills the PC outright in a conversation
*/
//:://////////////////////////////////////////////
//::
//:: Created By: Jaysyn
//:: Created On: 20220620
//::
//:://////////////////////////////////////////////
void main()
{
//:: Declare major variables.
object oPC = GetPCSpeaker();
effect eDeath = EffectDeath();
effect eDam = EffectDamage(9999);
effect eLink = EffectLinkEffects(eDeath, eDam);
//:: Kills the PC.
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eLink, oPC);
}

View File

@ -0,0 +1,25 @@
//::///////////////////////////////////////////////
//::
//:: qcv_scramge_shift.nss
//:: Copyright (c) 2022 Project RATDOG
//::
//:://////////////////////////////////////////////
/*
Shifts Scramge into Rakshasa form.
*/
//:://////////////////////////////////////////////
//::
//:: Created By: Jaysyn
//:: Created On: 20220620
//::
//:://////////////////////////////////////////////
void main()
{
//:: Declare major variables
object oPC = GetPCSpeaker();
object oTarget = OBJECT_SELF;
SetCreatureAppearanceType(oTarget, APPEARANCE_TYPE_RAKSHASA_TIGER_MALE);
}

View File

@ -0,0 +1,243 @@
//::///////////////////////////////////////////////
//::
//:: marthek_ondeath.nss
//::
//:: Copyright (c) 2022 Project RATDOG
//::
//:://////////////////////////////////////////////
/*
Marthek's special NPC onDeath for the "Marthek
the Madman" quest
*/
//:://////////////////////////////////////////////
//::
//:: Created By: Jaysyn
//:: Created On: 20220620
//::
//:://////////////////////////////////////////////
#include "pqj_inc"
void main()
{
object oNPC = OBJECT_SELF;
object oKiller = GetLastKiller();
// Makes sure armor's droppable flag is set to 0
SetDroppableFlag(GetItemInSlot(INVENTORY_SLOT_CHEST, OBJECT_SELF), 0);
if ((GetResRef(oNPC) == "ra_bandit001") ||
(GetResRef(oNPC) == "ra_brigand001") ||
(GetResRef(oNPC) == "ra_brigand002"))
{
object oArmor = GetItemInSlot(INVENTORY_SLOT_CHEST, oNPC);
object oWeapon = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oNPC);
object oShield = GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oNPC);
// Give a 3% chance to drop armor &/or equipped weapon
int bDroppableA = d100() > 97;
int bDroppableW = d100() > 97;
int bDroppableS = d100() > 97;
SetDroppableFlag(oArmor, bDroppableA);
SetDroppableFlag(oWeapon, bDroppableW);
SetDroppableFlag(oWeapon, bDroppableS);
}
int nVFX = GetLocalInt(OBJECT_SELF,"SpawnVFX");
if(nVFX)
{
ApplyEffectToObject(DURATION_TYPE_PERMANENT,SupernaturalEffect(EffectVisualEffect(nVFX)),OBJECT_SELF);
}
int nFirey = GetLocalInt(OBJECT_SELF,"FIREY");
if (nFirey)
{
effect eVis = EffectVisualEffect(VFX_DUR_INFERNO_NO_SOUND);
eVis = SupernaturalEffect(eVis);
eVis = ExtraordinaryEffect(eVis);
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eVis,OBJECT_SELF));
}
int nShadowy = GetLocalInt(OBJECT_SELF,"SHADOWY");
if (nShadowy)
{
effect eVis = EffectVisualEffect(VFX_DUR_PROT_SHADOW_ARMOR);
eVis = SupernaturalEffect(eVis);
eVis = ExtraordinaryEffect(eVis);
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eVis,OBJECT_SELF));
}
int nStony = GetLocalInt(OBJECT_SELF,"STONY");
if (nStony)
{
effect eVis = EffectVisualEffect(VFX_DUR_PROT_STONESKIN);
eVis = SupernaturalEffect(eVis);
eVis = ExtraordinaryEffect(eVis);
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eVis,OBJECT_SELF));
}
int nWoody = GetLocalInt(OBJECT_SELF,"WOODY");
if (nWoody)
{
effect eVis = EffectVisualEffect(VFX_DUR_PROT_BARKSKIN);
eVis = SupernaturalEffect(eVis);
eVis = ExtraordinaryEffect(eVis);
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eVis,OBJECT_SELF));
}
int nIcy = GetLocalInt(OBJECT_SELF,"ICY");
if (nIcy)
{
effect eVis = EffectVisualEffect(VFX_DUR_ICESKIN);
eVis = SupernaturalEffect(eVis);
eVis = ExtraordinaryEffect(eVis);
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eVis,OBJECT_SELF));
}
int nConcealed20 = GetLocalInt(OBJECT_SELF,"CONCEALED20");
if (nConcealed20)
{
effect eVis = EffectVisualEffect(VFX_DUR_BLUR );
effect eConceal = EffectConcealment(20, 0);
eVis = SupernaturalEffect(eVis);
eVis = ExtraordinaryEffect(eVis);
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eVis,OBJECT_SELF));
}
int nConcealed50 = GetLocalInt(OBJECT_SELF,"CONCEALED50");
if (nConcealed50)
{
effect eVis = EffectVisualEffect(VFX_DUR_BLUR );
effect eConceal = EffectConcealment(50, 0);
eVis = SupernaturalEffect(eVis);
eVis = ExtraordinaryEffect(eVis);
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eVis,OBJECT_SELF));
}
int nGlow = GetLocalInt (OBJECT_SELF,"GLOW_COLOR");
if (nGlow == 1)
{
effect eVis = EffectVisualEffect(VFX_DUR_GLOW_BLUE);
eVis = SupernaturalEffect(eVis);
eVis = ExtraordinaryEffect(eVis);
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eVis,OBJECT_SELF));
}
else if (nGlow == 2)
{
effect eVis = EffectVisualEffect(VFX_DUR_GLOW_BROWN);
eVis = SupernaturalEffect(eVis);
eVis = ExtraordinaryEffect(eVis);
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eVis,OBJECT_SELF));
}
else if (nGlow == 3)
{
effect eVis = EffectVisualEffect(VFX_DUR_GLOW_GREEN);
eVis = SupernaturalEffect(eVis);
eVis = ExtraordinaryEffect(eVis);
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eVis,OBJECT_SELF));
}
else if (nGlow == 4)
{
effect eVis = EffectVisualEffect(VFX_DUR_GLOW_GREY);
eVis = SupernaturalEffect(eVis);
eVis = ExtraordinaryEffect(eVis);
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eVis,OBJECT_SELF));
}
else if (nGlow == 5)
{
effect eVis = EffectVisualEffect(VFX_DUR_GLOW_LIGHT_BLUE);
eVis = SupernaturalEffect(eVis);
eVis = ExtraordinaryEffect(eVis);
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eVis,OBJECT_SELF));
}
else if (nGlow == 6)
{
effect eVis = EffectVisualEffect(VFX_DUR_GLOW_LIGHT_BROWN);
eVis = SupernaturalEffect(eVis);
eVis = ExtraordinaryEffect(eVis);
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eVis,OBJECT_SELF));
}
else if (nGlow == 7)
{
effect eVis = EffectVisualEffect(VFX_DUR_GLOW_LIGHT_GREEN);
eVis = SupernaturalEffect(eVis);
eVis = ExtraordinaryEffect(eVis);
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eVis,OBJECT_SELF));
}
else if (nGlow == 8)
{
effect eVis = EffectVisualEffect(VFX_DUR_GLOW_LIGHT_ORANGE);
eVis = SupernaturalEffect(eVis);
eVis = ExtraordinaryEffect(eVis);
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eVis,OBJECT_SELF));
}
else if (nGlow == 9)
{
effect eVis = EffectVisualEffect(VFX_DUR_GLOW_LIGHT_PURPLE);
eVis = SupernaturalEffect(eVis);
eVis = ExtraordinaryEffect(eVis);
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eVis,OBJECT_SELF));
}
else if (nGlow == 10)
{
effect eVis = EffectVisualEffect(VFX_DUR_GLOW_LIGHT_RED);
eVis = SupernaturalEffect(eVis);
eVis = ExtraordinaryEffect(eVis);
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eVis,OBJECT_SELF));
}
else if (nGlow == 11)
{
effect eVis = EffectVisualEffect(VFX_DUR_GLOW_LIGHT_YELLOW);
eVis = SupernaturalEffect(eVis);
eVis = ExtraordinaryEffect(eVis);
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eVis,OBJECT_SELF));
}
else if (nGlow == 12)
{
effect eVis = EffectVisualEffect(VFX_DUR_GLOW_ORANGE);
eVis = SupernaturalEffect(eVis);
eVis = ExtraordinaryEffect(eVis);
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eVis,OBJECT_SELF));
}
else if (nGlow == 13)
{
effect eVis = EffectVisualEffect(VFX_DUR_GLOW_PURPLE);
eVis = SupernaturalEffect(eVis);
eVis = ExtraordinaryEffect(eVis);
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eVis,OBJECT_SELF));
}
else if (nGlow == 14)
{
effect eVis = EffectVisualEffect(VFX_DUR_GLOW_RED);
eVis = SupernaturalEffect(eVis);
eVis = ExtraordinaryEffect(eVis);
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eVis,OBJECT_SELF));
}
else if (nGlow == 15)
{
effect eVis = EffectVisualEffect(VFX_DUR_GLOW_WHITE);
eVis = SupernaturalEffect(eVis);
eVis = ExtraordinaryEffect(eVis);
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eVis,OBJECT_SELF));
}
else if (nGlow == 16)
{
effect eVis = EffectVisualEffect(VFX_DUR_GLOW_YELLOW);
eVis = SupernaturalEffect(eVis);
eVis = ExtraordinaryEffect(eVis);
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eVis,OBJECT_SELF));
}
//:: Set quest stage & update DB.
AddPersistentJournalQuestEntry("marthek", 2, oKiller);
//:: Execute Default NPC OnDeath script
ExecuteScript("nw_c2_default7", OBJECT_SELF);
//:: Execute PRC NPC OnDeath script
ExecuteScript("prc_npc_death", OBJECT_SELF);
}

View File

@ -0,0 +1,26 @@
//::///////////////////////////////////////////////
//:: qst_ghost_end.nss
//:: Copyright (c) 2022 Project RATDOG
//:://////////////////////////////////////////////
/*
Ends & tracks the "Ghostly Geas" quest.
*/
//:://////////////////////////////////////////////
//:: Created By: Jaysyn
//:: Created On: 20220620
//:://////////////////////////////////////////////
#include "pqj_inc"
void main()
{
//:: Declare major variables
object oPC = GetPCSpeaker();
//:: Set quest stage & update DB.
AddPersistentJournalQuestEntry("ghost", 2, oPC);
//:: Give the PC the Archwizard's Key
CreateItemOnObject("item062", oPC, 1);
}

View File

@ -0,0 +1,25 @@
//::///////////////////////////////////////////////
//:: qst_ghost_start.nss
//:: Copyright (c) 2022 Project RATDOG
//:://////////////////////////////////////////////
/*
Start & tracks the "Ghostly Geas" quest
*/
//:://////////////////////////////////////////////
//:: Created By: Jaysyn
//:: Created On: 20220620
//:://////////////////////////////////////////////
#include "pqj_inc"
void main()
{
//:: Declare major variables
object oPC = GetPCSpeaker();
//:: Set quest stage & update DB.
AddPersistentJournalQuestEntry("ghost", 1, oPC);
}

View File

@ -0,0 +1,25 @@
//::///////////////////////////////////////////////
//:: qst_marthek_4th.nss
//:: Copyright (c) 2022 Project RATDOG
//:://////////////////////////////////////////////
/*
Sets stage 4 for the "Marthek the Madman" quest
*/
//:://////////////////////////////////////////////
//:: Created By: Jaysyn
//:: Created On: 20220620
//:://////////////////////////////////////////////
#include "pqj_inc"
void main()
{
//:: Declare major variables
object oPC = GetPCSpeaker();
//:: Set quest stage & update DB.
AddPersistentJournalQuestEntry("marthek", 4, oPC);
}

View File

@ -20,7 +20,7 @@ void main()
object oPC = GetPCSpeaker();
//:: Set quest stage & update DB.
AddPersistentJournalQuestEntry("marthek", 2, oPC);
AddPersistentJournalQuestEntry("marthek", 3, oPC);
//:: Give the PC some gold
GiveGoldToCreature(oPC, 1000);

View File

@ -6,8 +6,8 @@
//::
//:://////////////////////////////////////////////
/*
Makes sure the "Marthek the Madman" quest
has been started.
Makes sure the "Marthek the Madman" is on
stage one.
*/
//:://////////////////////////////////////////////
//::
@ -27,7 +27,7 @@ int StartingConditional()
nInt = RetrieveQuestState("marthek", oPC);
// nInt = GetLocalInt(oPC, "NW_JOURNAL_ENTRYmarthek");
if (nInt >= 1) return TRUE;
if (nInt > 0 && nInt < 2) return TRUE;
return FALSE;
}

View File

@ -20,7 +20,7 @@ void main()
object oPC = GetPCSpeaker();
//:: Set quest stage & update DB.
AddPersistentJournalQuestEntry("marthek", 4, oPC);
AddPersistentJournalQuestEntry("marthek", 5, oPC);
//:: Give the PC some gold
GiveGoldToCreature(oPC, 1500);

View File

@ -0,0 +1,25 @@
//::///////////////////////////////////////////////
//::
//:: qst_scramge_end.nss
//:: Copyright (c) 2022 Project RATDOG
//::
//:://////////////////////////////////////////////
/*
Shifts Scramge into Rakshasa form.
*/
//:://////////////////////////////////////////////
//::
//:: Created By: Jaysyn
//:: Created On: 20220620
//::
//:://////////////////////////////////////////////
void main()
{
//:: Declare major variables
object oPC = GetPCSpeaker();
object oTarget = OBJECT_SELF;
SetCreatureAppearanceType(oTarget, APPEARANCE_TYPE_RAKSHASA_TIGER_MALE);
}

View File

@ -0,0 +1,29 @@
//::///////////////////////////////////////////////
//::
//:: qst_scramge_end2.nss
//:: Copyright (c) 2022 Project RATDOG
//::
//:://////////////////////////////////////////////
/*
Updates quest stage & shifts Scramge into
Rakshasa form after he betrays you.
*/
//:://////////////////////////////////////////////
//::
//:: Created By: Jaysyn
//:: Created On: 20220620
//::
//:://////////////////////////////////////////////
void main()
{
//:: Declare major variables
object oPC = GetPCSpeaker();
object oTarget = OBJECT_SELF;
SetCreatureAppearanceType(oTarget, APPEARANCE_TYPE_RAKSHASA_TIGER_MALE);
//:: Set quest stage & update DB.
AddPersistentJournalQuestEntry("scramge", 2, oPC);
}

View File

@ -0,0 +1,29 @@
//::///////////////////////////////////////////////
//::
//:: qst_scramge_end3.nss
//:: Copyright (c) 2022 Project RATDOG
//::
//:://////////////////////////////////////////////
/*
Updates quest stage & shifts Scramge into
Rakshasa form after you refuse to help him.
*/
//:://////////////////////////////////////////////
//::
//:: Created By: Jaysyn
//:: Created On: 20220620
//::
//:://////////////////////////////////////////////
void main()
{
//:: Declare major variables
object oPC = GetPCSpeaker();
object oTarget = OBJECT_SELF;
SetCreatureAppearanceType(oTarget, APPEARANCE_TYPE_RAKSHASA_TIGER_MALE);
//:: Set quest stage & update DB.
AddPersistentJournalQuestEntry("scramge", 3, oPC);
}

View File

@ -0,0 +1,28 @@
//::///////////////////////////////////////////////
//:
//:: qst_scramge_strt.nss
//:: Copyright (c) 2022 Project RATDOG
//:
//:://////////////////////////////////////////////
/*
Start & tracks the "Scramge the Orace" quest
*/
//:://////////////////////////////////////////////
//::
//:: Created By: Jaysyn
//:: Created On: 20220620
//::
//:://////////////////////////////////////////////
#include "pqj_inc"
void main()
{
//:: Declare major variables
object oPC = GetPCSpeaker();
//:: Set quest stage & update DB.
AddPersistentJournalQuestEntry("scramge", 1, oPC);
}

View File

@ -25,7 +25,7 @@ int StartingConditional()
nInt = RetrieveQuestState("spiders", oPC);
// nInt=GetLocalInt(oPC, "NW_JOURNAL_ENTRYspiders");
if (nInt == 1) return TRUE;
if (nInt < 2 && nInt > 0) return TRUE;
return FALSE;
}

View File

@ -0,0 +1,28 @@
//::///////////////////////////////////////////////
//:: qst_spiders_end.nss
//:: Copyright (c) 2022 Project RATDOG
//:://////////////////////////////////////////////
/*
Finished & rewards the PC for completing the
"Mushroom of Youth" quest.
*/
//:://////////////////////////////////////////////
//:: Created By: Jaysyn
//:: Created On: 20220620
//:://////////////////////////////////////////////
#include "pqj_inc"
#include "nw_i0_tool"
void main()
{
//:: Declare major variables
object oPC = GetPCSpeaker();
//:: Give the speaker some gold
GiveGoldToCreature(GetPCSpeaker(), 500);
//:: Set quest stage & update DB.
AddPersistentJournalQuestEntry("spiders", 3, oPC);
}

View File

@ -0,0 +1,128 @@
//::///////////////////////////////////////////////
//:: Name: x2_onrest
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
The generic wandering monster system
*/
//:://////////////////////////////////////////////
//:: Created By: Georg Zoeller
//:: Created On: June 9/03
//:://////////////////////////////////////////////
//:: Modified By: Deva Winblood
//:: Modified Date: January 28th, 2008
//:://////////////////////////////////////////////
#include "x2_inc_restsys"
#include "x2_inc_switches"
#include "x3_inc_horse"
void main()
{
object oPC = GetLastPCRested();
object oMount;
if (!GetLocalInt(GetModule(),"X3_MOUNT_NO_REST_DISMOUNT"))
{ // make sure not mounted
/* Deva, Jan 17, 2008
Do not allow a mounted PC to rest
*/
if (HorseGetIsMounted(oPC))
{ // cannot mount
if (GetLocalInt(oPC,"X3_REST_CANCEL_MESSAGE_SENT"))
{ // cancel message already played
DeleteLocalInt(oPC,"X3_REST_CANCEL_MESSAGE_SENT");
} // cancel message already played
else
{ // play cancel message
FloatingTextStrRefOnCreature(112006,oPC,FALSE);
SetLocalInt(oPC,"X3_REST_CANCEL_MESSAGE_SENT",TRUE); // sentinel
// value to prevent message played a 2nd time on canceled rest
} // play cancel message
AssignCommand(oPC,ClearAllActions(TRUE));
return;
} // cannot mount
} // make sure not mounted
if (!GetLocalInt(GetModule(),"X3_MOUNT_NO_REST_DESPAWN"))
{ // if there is a paladin mount despawn it
oMount=HorseGetPaladinMount(oPC);
if (!GetIsObjectValid(oMount)) oMount=GetLocalObject(oPC,"oX3PaladinMount");
if (GetIsObjectValid(oMount))
{ // paladin mount exists
if (oMount==oPC||!GetIsObjectValid(GetMaster(oMount))) AssignCommand(oPC,HorseUnsummonPaladinMount());
else { AssignCommand(GetMaster(oMount),HorseUnsummonPaladinMount()); }
} // paladin mount exists
} // if there is a paladin mount despawn it
if (GetModuleSwitchValue(MODULE_SWITCH_USE_XP2_RESTSYSTEM) == TRUE)
{
/* Georg, August 11, 2003
Added this code to allow the designer to specify a variable on the module
Instead of using a OnAreaEnter script. Nice new toolset feature!
Basically, the first time a player rests, the area is scanned for the
encounter table string and will set it up.
*/
object oArea = GetArea (oPC);
string sTable = GetLocalString(oArea,"X2_WM_ENCOUNTERTABLE") ;
if (sTable != "" )
{
int nDoors = GetLocalInt(oArea,"X2_WM_AREA_USEDOORS");
int nDC = GetLocalInt(oArea,"X2_WM_AREA_LISTENCHECK");
WMSetAreaTable(oArea,sTable,nDoors,nDC);
//remove string to indicate we are set up
DeleteLocalString(oArea,"X2_WM_ENCOUNTERTABLE");
}
/* Brent, July 2 2003
- If you rest and are a low level character at the beginning of the module.
You will trigger the first dream cutscene
*/
if (GetLocalInt(GetModule(), "X2_G_LOWLEVELSTART") == 10)
{
AssignCommand(oPC, ClearAllActions());
if (GetHitDice(oPC) >= 12)
{
ExecuteScript("bk_sleep", oPC);
return;
}
else
{
FloatingTextStrRefOnCreature(84141 , oPC);
return;
}
}
if (GetLastRestEventType()==REST_EVENTTYPE_REST_STARTED)
{
if (!WMStartPlayerRest(oPC))
{
// The resting system has objections against resting here and now
// Probably because there is an ambush already in progress
FloatingTextStrRefOnCreature(84142 ,oPC);
AssignCommand(oPC,ClearAllActions());
}
if (WMCheckForWanderingMonster(oPC))
{
//This script MUST be run or the player won't be able to rest again ...
ExecuteScript("x2_restsys_ambus",oPC);
}
}
else if (GetLastRestEventType()==REST_EVENTTYPE_REST_CANCELLED)
{
// No longer used but left in for the community
// WMFinishPlayerRest(oPC,TRUE); // removes sleep effect, etc
}
else if (GetLastRestEventType()==REST_EVENTTYPE_REST_FINISHED)
{
// No longer used but left in for the community
// WMFinishPlayerRest(oPC); // removes sleep effect, etc
}
}
ExportSingleCharacter(oPC);
}

Binary file not shown.

View File

@ -62,7 +62,9 @@
},
"Description": {
"type": "cexolocstring",
"value": {}
"value": {
"0": "This well dress human looks very out of place here."
}
},
"Dex": {
"type": "byte",

View File

@ -14,7 +14,7 @@
},
"ChallengeRating": {
"type": "float",
"value": 23.0
"value": 24.0
},
"ClassList": {
"type": "list",
@ -748,7 +748,7 @@
},
"Conversation": {
"type": "resref",
"value": "archmageghost"
"value": "cv_archmageghost"
},
"CRAdjust": {
"type": "int",
@ -956,7 +956,7 @@
},
"Int": {
"type": "byte",
"value": 16
"value": 22
},
"Interruptable": {
"type": "byte",

View File

@ -134,7 +134,7 @@
},
"Conversation": {
"type": "resref",
"value": "cv_charmed"
"value": "cv_marthek"
},
"CRAdjust": {
"type": "int",
@ -171,7 +171,7 @@
"__struct_id": 2,
"EquippedRes": {
"type": "resref",
"value": "nw_aarcl004"
"value": "aarcl009"
}
},
{
@ -322,7 +322,7 @@
},
"Interruptable": {
"type": "byte",
"value": 1
"value": 0
},
"IsImmortal": {
"type": "byte",
@ -446,7 +446,7 @@
},
"ScriptDeath": {
"type": "resref",
"value": "x2_def_ondeath"
"value": "marthek_ondeath"
},
"ScriptDialogue": {
"type": "resref",
@ -470,7 +470,7 @@
},
"ScriptOnNotice": {
"type": "resref",
"value": "x2_def_percept"
"value": "talk2pc_onpercp"
},
"ScriptRested": {
"type": "resref",
@ -516,7 +516,7 @@
"__struct_id": 0,
"Rank": {
"type": "byte",
"value": 8
"value": 0
}
},
{

View File

@ -134,21 +134,6 @@
"value": 0
}
},
{
"__struct_id": 3,
"Spell": {
"type": "word",
"value": 16
},
"SpellFlags": {
"type": "byte",
"value": 1
},
"SpellMetaMagic": {
"type": "byte",
"value": 0
}
},
{
"__struct_id": 3,
"Spell": {
@ -229,36 +214,6 @@
"value": 0
}
},
{
"__struct_id": 3,
"Spell": {
"type": "word",
"value": 569
},
"SpellFlags": {
"type": "byte",
"value": 1
},
"SpellMetaMagic": {
"type": "byte",
"value": 0
}
},
{
"__struct_id": 3,
"Spell": {
"type": "word",
"value": 49
},
"SpellFlags": {
"type": "byte",
"value": 1
},
"SpellMetaMagic": {
"type": "byte",
"value": 0
}
},
{
"__struct_id": 3,
"Spell": {
@ -309,21 +264,6 @@
"value": 0
}
},
{
"__struct_id": 3,
"Spell": {
"type": "word",
"value": 58
},
"SpellFlags": {
"type": "byte",
"value": 1
},
"SpellMetaMagic": {
"type": "byte",
"value": 0
}
},
{
"__struct_id": 3,
"Spell": {
@ -381,7 +321,7 @@
},
"Conversation": {
"type": "resref",
"value": "scramge"
"value": "cv_scramge"
},
"CRAdjust": {
"type": "int",
@ -401,7 +341,9 @@
},
"Description": {
"type": "cexolocstring",
"value": {}
"value": {
"0": "This strange speaking fellow seems at home here."
}
},
"Dex": {
"type": "byte",