Added Skullkeep Mystic Forge / Combine system

Added Skullkeep Mystic Forge / Combine system., modified to use a single forge and combine for all item types.  Added new Magesmith shop & NPC in Town of Ascension.  Full compile.  Updated release archive.
This commit is contained in:
Jaysyn904 2024-11-10 20:06:52 -05:00
parent 1daebc10ef
commit 80d4b7c4d6
79 changed files with 31519 additions and 159 deletions
_module
are
dlg
gic
git
ifo
itp
ncs
nss
uti
utp
_release

@ -0,0 +1,350 @@
{
"__data_type": "ARE ",
"ChanceLightning": {
"type": "int",
"value": 0
},
"ChanceRain": {
"type": "int",
"value": 0
},
"ChanceSnow": {
"type": "int",
"value": 0
},
"Comments": {
"type": "cexostring",
"value": "Murdoc's Magesmith"
},
"Creator_ID": {
"type": "int",
"value": -1
},
"DayNightCycle": {
"type": "byte",
"value": 0
},
"Expansion_List": {
"type": "list",
"value": []
},
"Flags": {
"type": "dword",
"value": 1
},
"FogClipDist": {
"type": "float",
"value": 45.0
},
"Height": {
"type": "int",
"value": 2
},
"ID": {
"type": "int",
"value": -1
},
"IsNight": {
"type": "byte",
"value": 1
},
"LightingScheme": {
"type": "byte",
"value": 12
},
"LoadScreenID": {
"type": "word",
"value": 57
},
"ModListenCheck": {
"type": "int",
"value": 0
},
"ModSpotCheck": {
"type": "int",
"value": 0
},
"MoonAmbientColor": {
"type": "dword",
"value": 3947580
},
"MoonDiffuseColor": {
"type": "dword",
"value": 11184810
},
"MoonFogAmount": {
"type": "byte",
"value": 5
},
"MoonFogColor": {
"type": "dword",
"value": 0
},
"MoonShadows": {
"type": "byte",
"value": 0
},
"Name": {
"type": "cexolocstring",
"value": {
"0": "Murdoc's Magesmith"
}
},
"NoRest": {
"type": "byte",
"value": 0
},
"OnEnter": {
"type": "resref",
"value": ""
},
"OnExit": {
"type": "resref",
"value": ""
},
"OnHeartbeat": {
"type": "resref",
"value": ""
},
"OnUserDefined": {
"type": "resref",
"value": ""
},
"PlayerVsPlayer": {
"type": "byte",
"value": 3
},
"ResRef": {
"type": "resref",
"value": "magesmith"
},
"ShadowOpacity": {
"type": "byte",
"value": 60
},
"SkyBox": {
"type": "byte",
"value": 0
},
"SunAmbientColor": {
"type": "dword",
"value": 0
},
"SunDiffuseColor": {
"type": "dword",
"value": 0
},
"SunFogAmount": {
"type": "byte",
"value": 0
},
"SunFogColor": {
"type": "dword",
"value": 0
},
"SunShadows": {
"type": "byte",
"value": 0
},
"Tag": {
"type": "cexostring",
"value": "MAGESMITH"
},
"Tile_List": {
"type": "list",
"value": [
{
"__struct_id": 1,
"Tile_AnimLoop1": {
"type": "byte",
"value": 1
},
"Tile_AnimLoop2": {
"type": "byte",
"value": 1
},
"Tile_AnimLoop3": {
"type": "byte",
"value": 1
},
"Tile_Height": {
"type": "int",
"value": 0
},
"Tile_ID": {
"type": "int",
"value": 159
},
"Tile_MainLight1": {
"type": "byte",
"value": 30
},
"Tile_MainLight2": {
"type": "byte",
"value": 13
},
"Tile_Orientation": {
"type": "int",
"value": 2
},
"Tile_SrcLight1": {
"type": "byte",
"value": 3
},
"Tile_SrcLight2": {
"type": "byte",
"value": 3
}
},
{
"__struct_id": 1,
"Tile_AnimLoop1": {
"type": "byte",
"value": 1
},
"Tile_AnimLoop2": {
"type": "byte",
"value": 1
},
"Tile_AnimLoop3": {
"type": "byte",
"value": 1
},
"Tile_Height": {
"type": "int",
"value": 0
},
"Tile_ID": {
"type": "int",
"value": 75
},
"Tile_MainLight1": {
"type": "byte",
"value": 0
},
"Tile_MainLight2": {
"type": "byte",
"value": 13
},
"Tile_Orientation": {
"type": "int",
"value": 3
},
"Tile_SrcLight1": {
"type": "byte",
"value": 3
},
"Tile_SrcLight2": {
"type": "byte",
"value": 3
}
},
{
"__struct_id": 1,
"Tile_AnimLoop1": {
"type": "byte",
"value": 1
},
"Tile_AnimLoop2": {
"type": "byte",
"value": 1
},
"Tile_AnimLoop3": {
"type": "byte",
"value": 1
},
"Tile_Height": {
"type": "int",
"value": 0
},
"Tile_ID": {
"type": "int",
"value": 158
},
"Tile_MainLight1": {
"type": "byte",
"value": 0
},
"Tile_MainLight2": {
"type": "byte",
"value": 0
},
"Tile_Orientation": {
"type": "int",
"value": 1
},
"Tile_SrcLight1": {
"type": "byte",
"value": 3
},
"Tile_SrcLight2": {
"type": "byte",
"value": 3
}
},
{
"__struct_id": 1,
"Tile_AnimLoop1": {
"type": "byte",
"value": 1
},
"Tile_AnimLoop2": {
"type": "byte",
"value": 1
},
"Tile_AnimLoop3": {
"type": "byte",
"value": 1
},
"Tile_Height": {
"type": "int",
"value": 0
},
"Tile_ID": {
"type": "int",
"value": 158
},
"Tile_MainLight1": {
"type": "byte",
"value": 0
},
"Tile_MainLight2": {
"type": "byte",
"value": 0
},
"Tile_Orientation": {
"type": "int",
"value": 0
},
"Tile_SrcLight1": {
"type": "byte",
"value": 0
},
"Tile_SrcLight2": {
"type": "byte",
"value": 0
}
}
]
},
"TileBrdrDisabled": {
"type": "byte",
"value": 0
},
"Tileset": {
"type": "resref",
"value": "tin01"
},
"Version": {
"type": "dword",
"value": 14
},
"Width": {
"type": "int",
"value": 2
},
"WindPower": {
"type": "int",
"value": 0
}
}

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

@ -4860,7 +4860,7 @@
},
"Tile_ID": {
"type": "int",
"value": 129
"value": 126
},
"Tile_MainLight1": {
"type": "byte",
@ -4872,7 +4872,7 @@
},
"Tile_Orientation": {
"type": "int",
"value": 0
"value": 1
},
"Tile_SrcLight1": {
"type": "byte",
@ -4903,7 +4903,7 @@
},
"Tile_ID": {
"type": "int",
"value": 123
"value": 233
},
"Tile_MainLight1": {
"type": "byte",
@ -4915,7 +4915,7 @@
},
"Tile_Orientation": {
"type": "int",
"value": 0
"value": 1
},
"Tile_SrcLight1": {
"type": "byte",
@ -6357,7 +6357,7 @@
},
"Version": {
"type": "dword",
"value": 513
"value": 516
},
"Width": {
"type": "int",

@ -1230,13 +1230,17 @@
}
]
},
"TileBrdrDisabled": {
"type": "byte",
"value": 0
},
"Tileset": {
"type": "resref",
"value": "tin01"
},
"Version": {
"type": "dword",
"value": 209
"value": 210
},
"Width": {
"type": "int",

File diff suppressed because it is too large Load Diff

@ -0,0 +1,372 @@
{
"__data_type": "GIC ",
"Creature List": {
"type": "list",
"value": [
{
"__struct_id": 4,
"Comment": {
"type": "cexostring",
"value": ""
}
}
]
},
"Door List": {
"type": "list",
"value": [
{
"__struct_id": 8,
"Comment": {
"type": "cexostring",
"value": ""
}
}
]
},
"Encounter List": {
"type": "list",
"value": []
},
"List": {
"type": "list",
"value": []
},
"Placeable List": {
"type": "list",
"value": [
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": "Anvil required for custom item crafting. "
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": "Gnomish Contraption / Engine"
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": ""
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": ""
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": "Chair"
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": "Chair"
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": "Chair"
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": ""
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": ""
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": ""
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": ""
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": ""
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": ""
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": ""
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": ""
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": "Shield Rack"
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": "Throw Rug"
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": "Keg"
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": "Throw Rug"
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": ""
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": "Couch"
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": ""
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": "\r\n"
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": "Footstool"
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": ""
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": ""
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": "Wood Burning Oven"
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": "Potted Plant"
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": ""
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": "Tome"
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": "Stool"
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": ""
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": ""
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": "Urn"
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": "Sphinx Statue"
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": ""
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": ""
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": ""
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": "Bear Skin Rug 1"
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": "Bed - Cot"
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": ""
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": "Anvil"
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": "Alchemist's Apparatus"
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": "Arcane Disposal System"
}
}
]
},
"SoundList": {
"type": "list",
"value": []
},
"StoreList": {
"type": "list",
"value": []
},
"TriggerList": {
"type": "list",
"value": []
},
"WaypointList": {
"type": "list",
"value": [
{
"__struct_id": 5,
"Comment": {
"type": "cexostring",
"value": "This is a waypoint that can be placed in an interior area to mark it as a shop. This will affect the animations and behavior of NPCs using the PlayAmbientAnimations functions (see the OnSpawn script nw_c2_default9 and the library x0_i0_anims for details). \r\n\r\nNote that this feature will only work in modules that use the XP1 modified AI. "
}
}
]
}
}

@ -300,6 +300,13 @@
"type": "cexostring",
"value": "This is for sending out messages to the PCs!"
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": ""
}
}
]
},

@ -146,6 +146,13 @@
"type": "cexostring",
"value": "This door is special, you must open the script in the OnFailToOpen an edit it to place the tagname for the key required to open this door. If you do it right, this door will auotmatically open if the PC has the key, otherwise it will tell them a specific key is needed to open the door.\r\n\r\nThis door automatically shuts and locks itself after a few seconds."
}
},
{
"__struct_id": 8,
"Comment": {
"type": "cexostring",
"value": "Fancy Door"
}
}
]
},
@ -502,6 +509,342 @@
"type": "cexostring",
"value": "Shaft of Light - Blue"
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": ""
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": "Anvil"
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": "Hay Bundle"
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": "Hay Bundle"
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": "Hay Bundle"
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": "Pump"
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": "Wheelbarrow"
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": ""
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": ""
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": ""
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": ""
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": ""
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": "Throw Rug"
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": "Boulder"
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": ""
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": ""
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": "Dead Tree"
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": "Dirt Patch"
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": "Fern"
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": "Fern"
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": ""
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": ""
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": ""
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": ""
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": "Dirt Patch"
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": "Moss"
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": ""
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": ""
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": ""
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": ""
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": ""
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": ""
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": "Stone patch"
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": "Tree - Normal"
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": ""
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": ""
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": ""
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": ""
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": "Magic Sparks - Red"
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": ""
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": ""
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": "Magical Smoke"
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": "Magical Smoke"
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": "Magical Smoke"
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": "Mist on the ground."
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": "Magical Smoke"
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": "Woodpile"
}
},
{
"__struct_id": 9,
"Comment": {
"type": "cexostring",
"value": "Woodpile"
}
}
]
},
@ -1200,6 +1543,13 @@
"type": "cexostring",
"value": "This is the default waypoint you may place to set a patrol path for a creature or NPC.\r\n1. Create the creature and either use its current Tag or fill in a new one.\r\n2. Place or make sure the WalkWayPoints() is within the body of the On Spawn script for the creature.\r\n3. Place a series of waypoints along the route you wish the creature to walk.\r\n4. Select all of the newly created waypoints and right click. Choose the Create Set option.\r\n5. The waypoint set will have a set name of \"WP_\" + NPC Tag. Thus if an NPC with the Tag \"Guard\" will have a waypoint set called \"WP_Guard\". Note that Tags are case sensitive."
}
},
{
"__struct_id": 5,
"Comment": {
"type": "cexostring",
"value": "On the Advanced tab, replace <Place text here> with whatever information you wish to appear on the Map of an area."
}
}
]
}

11635
_module/git/magesmith.git.json Normal file

File diff suppressed because it is too large Load Diff

@ -14946,6 +14946,435 @@
"type": "float",
"value": -5.222045729169622e-006
}
},
{
"__struct_id": 9,
"AnimationState": {
"type": "byte",
"value": 0
},
"Appearance": {
"type": "dword",
"value": 0
},
"AutoRemoveKey": {
"type": "byte",
"value": 0
},
"Bearing": {
"type": "float",
"value": -3.141592264175415
},
"BodyBag": {
"type": "byte",
"value": 0
},
"CloseLockDC": {
"type": "byte",
"value": 0
},
"Conversation": {
"type": "resref",
"value": ""
},
"CurrentHP": {
"type": "short",
"value": 10
},
"Description": {
"type": "cexolocstring",
"value": {
"0": ""
}
},
"DisarmDC": {
"type": "byte",
"value": 0
},
"Faction": {
"type": "dword",
"value": 1
},
"Fort": {
"type": "byte",
"value": 5
},
"Hardness": {
"type": "byte",
"value": 5
},
"HasInventory": {
"type": "byte",
"value": 1
},
"HP": {
"type": "short",
"value": 10
},
"Interruptable": {
"type": "byte",
"value": 1
},
"KeyName": {
"type": "cexostring",
"value": ""
},
"KeyRequired": {
"type": "byte",
"value": 0
},
"Lockable": {
"type": "byte",
"value": 0
},
"Locked": {
"type": "byte",
"value": 0
},
"LocName": {
"type": "cexolocstring",
"value": {
"0": "LOOT_GENERATOR"
}
},
"OnClick": {
"type": "resref",
"value": ""
},
"OnClosed": {
"type": "resref",
"value": ""
},
"OnDamaged": {
"type": "resref",
"value": ""
},
"OnDeath": {
"type": "resref",
"value": ""
},
"OnDisarm": {
"type": "resref",
"value": ""
},
"OnHeartbeat": {
"type": "resref",
"value": ""
},
"OnInvDisturbed": {
"type": "resref",
"value": ""
},
"OnLock": {
"type": "resref",
"value": ""
},
"OnMeleeAttacked": {
"type": "resref",
"value": ""
},
"OnOpen": {
"type": "resref",
"value": ""
},
"OnSpellCastAt": {
"type": "resref",
"value": ""
},
"OnTrapTriggered": {
"type": "resref",
"value": ""
},
"OnUnlock": {
"type": "resref",
"value": ""
},
"OnUsed": {
"type": "resref",
"value": ""
},
"OnUserDefined": {
"type": "resref",
"value": ""
},
"OpenLockDC": {
"type": "byte",
"value": 0
},
"Plot": {
"type": "byte",
"value": 1
},
"PortraitId": {
"type": "word",
"value": 358
},
"Ref": {
"type": "byte",
"value": 0
},
"Static": {
"type": "byte",
"value": 0
},
"Tag": {
"type": "cexostring",
"value": "LOOT_GENERATOR"
},
"TemplateResRef": {
"type": "resref",
"value": "loot_generator"
},
"TrapDetectable": {
"type": "byte",
"value": 1
},
"TrapDetectDC": {
"type": "byte",
"value": 0
},
"TrapDisarmable": {
"type": "byte",
"value": 1
},
"TrapFlag": {
"type": "byte",
"value": 0
},
"TrapOneShot": {
"type": "byte",
"value": 1
},
"TrapType": {
"type": "byte",
"value": 0
},
"Type": {
"type": "byte",
"value": 0
},
"Useable": {
"type": "byte",
"value": 1
},
"VisTransformList": {
"type": "list",
"value": [
{
"__struct_id": 6,
"AnimationSpeed": {
"__struct_id": 0,
"type": "struct",
"value": {
"__struct_id": 0,
"LerpType": {
"type": "int",
"value": 0
},
"TimerType": {
"type": "int",
"value": 0
},
"ValueTo": {
"type": "float",
"value": 1.0
}
}
},
"RotateX": {
"__struct_id": 0,
"type": "struct",
"value": {
"__struct_id": 0,
"LerpType": {
"type": "int",
"value": 0
},
"TimerType": {
"type": "int",
"value": 0
},
"ValueTo": {
"type": "float",
"value": 0.0
}
}
},
"RotateY": {
"__struct_id": 0,
"type": "struct",
"value": {
"__struct_id": 0,
"LerpType": {
"type": "int",
"value": 0
},
"TimerType": {
"type": "int",
"value": 0
},
"ValueTo": {
"type": "float",
"value": 0.0
}
}
},
"RotateZ": {
"__struct_id": 0,
"type": "struct",
"value": {
"__struct_id": 0,
"LerpType": {
"type": "int",
"value": 0
},
"TimerType": {
"type": "int",
"value": 0
},
"ValueTo": {
"type": "float",
"value": 0.0
}
}
},
"ScaleX": {
"__struct_id": 0,
"type": "struct",
"value": {
"__struct_id": 0,
"LerpType": {
"type": "int",
"value": 0
},
"TimerType": {
"type": "int",
"value": 0
},
"ValueTo": {
"type": "float",
"value": 1.049999952316284
}
}
},
"ScaleY": {
"__struct_id": 0,
"type": "struct",
"value": {
"__struct_id": 0,
"LerpType": {
"type": "int",
"value": 0
},
"TimerType": {
"type": "int",
"value": 0
},
"ValueTo": {
"type": "float",
"value": 1.049999952316284
}
}
},
"ScaleZ": {
"__struct_id": 0,
"type": "struct",
"value": {
"__struct_id": 0,
"LerpType": {
"type": "int",
"value": 0
},
"TimerType": {
"type": "int",
"value": 0
},
"ValueTo": {
"type": "float",
"value": 1.049999952316284
}
}
},
"Scope": {
"type": "int",
"value": 0
},
"TranslateX": {
"__struct_id": 0,
"type": "struct",
"value": {
"__struct_id": 0,
"LerpType": {
"type": "int",
"value": 0
},
"TimerType": {
"type": "int",
"value": 0
},
"ValueTo": {
"type": "float",
"value": 0.0
}
}
},
"TranslateY": {
"__struct_id": 0,
"type": "struct",
"value": {
"__struct_id": 0,
"LerpType": {
"type": "int",
"value": 0
},
"TimerType": {
"type": "int",
"value": 0
},
"ValueTo": {
"type": "float",
"value": 0.0
}
}
},
"TranslateZ": {
"__struct_id": 0,
"type": "struct",
"value": {
"__struct_id": 0,
"LerpType": {
"type": "int",
"value": 0
},
"TimerType": {
"type": "int",
"value": 0
},
"ValueTo": {
"type": "float",
"value": 0.0
}
}
}
}
]
},
"Will": {
"type": "byte",
"value": 0
},
"X": {
"type": "float",
"value": 50.22990036010742
},
"Y": {
"type": "float",
"value": 1.781137943267822
},
"Z": {
"type": "float",
"value": -5.7220458984375e-006
}
}
]
},

File diff suppressed because it is too large Load Diff

@ -1154,6 +1154,13 @@
"type": "resref",
"value": "upper_catacombs"
}
},
{
"__struct_id": 6,
"Area_Name": {
"type": "resref",
"value": "magesmith"
}
}
]
},

@ -10,6 +10,10 @@
"value": [
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 48
},
"LIST": {
"type": "list",
"value": [
@ -198,6 +202,10 @@
"value": [
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 5
},
"LIST": {
"type": "list",
"value": [
@ -324,6 +332,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 6
},
"LIST": {
"type": "list",
"value": [
@ -431,6 +443,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 7
},
"LIST": {
"type": "list",
"value": [
@ -481,6 +497,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 8
},
"LIST": {
"type": "list",
"value": [
@ -550,6 +570,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 9
},
"LIST": {
"type": "list",
"value": [
@ -835,6 +859,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 20
},
"LIST": {
"type": "list",
"value": [
@ -1322,6 +1350,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 21
},
"LIST": {
"type": "list",
"value": [
@ -1600,6 +1632,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 22
},
"LIST": {
"type": "list",
"value": [
@ -2871,6 +2907,10 @@
"value": [
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 34
},
"LIST": {
"type": "list",
"value": [
@ -2921,6 +2961,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 35
},
"LIST": {
"type": "list",
"value": [
@ -2990,6 +3034,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 36
},
"LIST": {
"type": "list",
"value": [
@ -3021,6 +3069,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 37
},
"LIST": {
"type": "list",
"value": [
@ -3140,6 +3192,10 @@
"value": [
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 14
},
"LIST": {
"type": "list",
"value": [
@ -3171,6 +3227,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 15
},
"LIST": {
"type": "list",
"value": [
@ -3259,6 +3319,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 16
},
"LIST": {
"type": "list",
"value": [
@ -3404,6 +3468,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 17
},
"LIST": {
"type": "list",
"value": [
@ -3511,6 +3579,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 18
},
"LIST": {
"type": "list",
"value": [
@ -3561,6 +3633,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 19
},
"LIST": {
"type": "list",
"value": [
@ -3592,6 +3668,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 50
},
"LIST": {
"type": "list",
"value": [
@ -3692,6 +3772,10 @@
"value": [
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 10
},
"LIST": {
"type": "list",
"value": [
@ -3742,6 +3826,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 11
},
"LIST": {
"type": "list",
"value": [
@ -3799,6 +3887,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 49
},
"LIST": {
"type": "list",
"value": [
@ -3830,6 +3922,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 13
},
"LIST": {
"type": "list",
"value": [
@ -4246,6 +4342,10 @@
"value": [
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 23
},
"LIST": {
"type": "list",
"value": [
@ -4448,6 +4548,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 24
},
"LIST": {
"type": "list",
"value": [
@ -5448,6 +5552,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 25
},
"STRREF": {
"type": "dword",
"value": 6718
@ -5455,6 +5563,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 47
},
"LIST": {
"type": "list",
"value": [
@ -5524,6 +5636,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 26
},
"LIST": {
"type": "list",
"value": [
@ -5562,6 +5678,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 12
},
"STRREF": {
"type": "dword",
"value": 6703
@ -5574,6 +5694,10 @@
"value": [
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 27
},
"LIST": {
"type": "list",
"value": [
@ -5719,6 +5843,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 28
},
"LIST": {
"type": "list",
"value": [
@ -5845,6 +5973,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 29
},
"LIST": {
"type": "list",
"value": [
@ -6712,6 +6844,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 30
},
"LIST": {
"type": "list",
"value": [
@ -6876,6 +7012,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 31
},
"LIST": {
"type": "list",
"value": [
@ -7211,6 +7351,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 32
},
"LIST": {
"type": "list",
"value": [
@ -7831,6 +7975,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 33
},
"LIST": {
"type": "list",
"value": [
@ -8356,6 +8504,10 @@
"value": [
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 38
},
"LIST": {
"type": "list",
"value": [
@ -8444,6 +8596,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 39
},
"LIST": {
"type": "list",
"value": [
@ -8988,6 +9144,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 40
},
"STRREF": {
"type": "dword",
"value": 27
@ -8995,6 +9155,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 42
},
"STRREF": {
"type": "dword",
"value": 31
@ -9002,6 +9166,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 41
},
"LIST": {
"type": "list",
"value": [
@ -9071,6 +9239,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 43
},
"LIST": {
"type": "list",
"value": [
@ -9197,6 +9369,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 44
},
"LIST": {
"type": "list",
"value": [
@ -10045,6 +10221,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 45
},
"LIST": {
"type": "list",
"value": [
@ -10411,6 +10591,10 @@
"value": [
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 0
},
"LIST": {
"type": "list",
"value": [
@ -13387,6 +13571,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 1
},
"LIST": {
"type": "list",
"value": [
@ -14292,6 +14480,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 2
},
"LIST": {
"type": "list",
"value": [
@ -14969,6 +15161,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 3
},
"LIST": {
"type": "list",
"value": [
@ -17337,6 +17533,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 4
},
"LIST": {
"type": "list",
"value": [
@ -35330,6 +35530,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 46
},
"LIST": {
"type": "list",
"value": [

@ -10,6 +10,10 @@
"value": [
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 0
},
"LIST": {
"type": "list",
"value": [
@ -99,6 +103,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 1
},
"LIST": {
"type": "list",
"value": [
@ -155,6 +163,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 2
},
"LIST": {
"type": "list",
"value": [
@ -178,6 +190,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 3
},
"STRREF": {
"type": "dword",
"value": 6691
@ -185,6 +201,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 4
},
"STRREF": {
"type": "dword",
"value": 6692
@ -199,6 +219,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 5
},
"LIST": {
"type": "list",
"value": [
@ -227,6 +251,10 @@
"value": [
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 6
},
"STRREF": {
"type": "dword",
"value": 6736
@ -234,6 +262,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 9
},
"STRREF": {
"type": "dword",
"value": 201
@ -241,6 +273,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 7
},
"STRREF": {
"type": "dword",
"value": 6737
@ -248,6 +284,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 8
},
"LIST": {
"type": "list",
"value": [

@ -5,6 +5,10 @@
"value": [
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 8
},
"LIST": {
"type": "list",
"value": [
@ -149,6 +153,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 9
},
"LIST": {
"type": "list",
"value": [
@ -216,6 +224,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 6
},
"LIST": {
"type": "list",
"value": [
@ -1757,6 +1769,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 7
},
"LIST": {
"type": "list",
"value": [
@ -2445,6 +2461,10 @@
"value": [
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 0
},
"STRREF": {
"type": "dword",
"value": 6688
@ -2452,6 +2472,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 1
},
"LIST": {
"type": "list",
"value": [
@ -2475,6 +2499,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 2
},
"STRREF": {
"type": "dword",
"value": 6690
@ -2482,6 +2510,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 3
},
"STRREF": {
"type": "dword",
"value": 6691
@ -2489,6 +2521,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 4
},
"LIST": {
"type": "list",
"value": [
@ -2519,6 +2555,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 5
},
"LIST": {
"type": "list",
"value": [

@ -10,6 +10,10 @@
"value": [
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 5
},
"LIST": {
"type": "list",
"value": [
@ -352,6 +356,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 8
},
"LIST": {
"type": "list",
"value": [
@ -551,6 +559,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 9
},
"LIST": {
"type": "list",
"value": [
@ -926,6 +938,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 6
},
"LIST": {
"type": "list",
"value": [
@ -1026,6 +1042,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 7
},
"LIST": {
"type": "list",
"value": [
@ -1148,6 +1168,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 58
},
"LIST": {
"type": "list",
"value": [
@ -1187,6 +1211,10 @@
"value": [
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 11
},
"LIST": {
"type": "list",
"value": [
@ -1298,6 +1326,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 10
},
"LIST": {
"type": "list",
"value": [
@ -1354,6 +1386,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 12
},
"LIST": {
"type": "list",
"value": [
@ -1484,6 +1520,10 @@
"value": [
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 55
},
"LIST": {
"type": "list",
"value": [
@ -3916,6 +3956,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 13
},
"LIST": {
"type": "list",
"value": [
@ -6051,6 +6095,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 63
},
"LIST": {
"type": "list",
"value": [
@ -6338,6 +6386,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 59
},
"LIST": {
"type": "list",
"value": [
@ -6449,6 +6501,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 14
},
"LIST": {
"type": "list",
"value": [
@ -8903,6 +8959,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 56
},
"LIST": {
"type": "list",
"value": [
@ -10346,6 +10406,10 @@
"value": [
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 60
},
"LIST": {
"type": "list",
"value": [
@ -11705,6 +11769,10 @@
"value": [
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 16
},
"LIST": {
"type": "list",
"value": [
@ -11959,6 +12027,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 15
},
"LIST": {
"type": "list",
"value": [
@ -12224,6 +12296,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 17
},
"LIST": {
"type": "list",
"value": [
@ -12412,6 +12488,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 18
},
"LIST": {
"type": "list",
"value": [
@ -12655,6 +12735,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 19
},
"LIST": {
"type": "list",
"value": [
@ -12828,6 +12912,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 64
},
"LIST": {
"type": "list",
"value": [
@ -12862,6 +12950,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 57
},
"LIST": {
"type": "list",
"value": [
@ -12967,6 +13059,10 @@
"value": [
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 21
},
"LIST": {
"type": "list",
"value": [
@ -13309,6 +13405,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 22
},
"LIST": {
"type": "list",
"value": [
@ -13856,6 +13956,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 20
},
"LIST": {
"type": "list",
"value": [
@ -13923,6 +14027,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 23
},
"LIST": {
"type": "list",
"value": [
@ -15508,6 +15616,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 24
},
"LIST": {
"type": "list",
"value": [
@ -16070,6 +16182,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 26
},
"LIST": {
"type": "list",
"value": [
@ -27661,6 +27777,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 54
},
"LIST": {
"type": "list",
"value": [
@ -27942,6 +28062,10 @@
"value": [
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 0
},
"LIST": {
"type": "list",
"value": [
@ -30869,9 +30993,24 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 1
},
"LIST": {
"type": "list",
"value": [
{
"__struct_id": 0,
"NAME": {
"type": "cexostring",
"value": "Bullet"
},
"RESREF": {
"type": "resref",
"value": "sdbullet"
}
},
{
"__struct_id": 0,
"NAME": {
@ -31037,6 +31176,17 @@
"value": "prc_ipbase"
}
},
{
"__struct_id": 0,
"NAME": {
"type": "cexostring",
"value": "Sling"
},
"RESREF": {
"type": "resref",
"value": "sdsling"
}
},
{
"__struct_id": 0,
"NAME": {
@ -31123,6 +31273,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 2
},
"LIST": {
"type": "list",
"value": [
@ -31674,6 +31828,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 3
},
"LIST": {
"type": "list",
"value": [
@ -32841,6 +32999,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 4
},
"LIST": {
"type": "list",
"value": [
@ -34169,6 +34331,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 53
},
"LIST": {
"type": "list",
"value": [
@ -34183,6 +34349,105 @@
"value": 68948
}
},
{
"__struct_id": 0,
"NAME": {
"type": "cexostring",
"value": "Crafting Belt"
},
"RESREF": {
"type": "resref",
"value": "craftingbelt"
}
},
{
"__struct_id": 0,
"NAME": {
"type": "cexostring",
"value": "Crafting Cloak"
},
"RESREF": {
"type": "resref",
"value": "craftingcloak"
}
},
{
"__struct_id": 0,
"NAME": {
"type": "cexostring",
"value": "Crafting Dagger"
},
"RESREF": {
"type": "resref",
"value": "craftingdagger"
}
},
{
"__struct_id": 0,
"NAME": {
"type": "cexostring",
"value": "Crafting Dart"
},
"RESREF": {
"type": "resref",
"value": "craftingdart"
}
},
{
"__struct_id": 0,
"NAME": {
"type": "cexostring",
"value": "Crafting Dirk"
},
"RESREF": {
"type": "resref",
"value": "craftingdirk"
}
},
{
"__struct_id": 0,
"NAME": {
"type": "cexostring",
"value": "Crafting Ring"
},
"RESREF": {
"type": "resref",
"value": "craftingring"
}
},
{
"__struct_id": 0,
"NAME": {
"type": "cexostring",
"value": "Crafting Shield"
},
"RESREF": {
"type": "resref",
"value": "craftingshield"
}
},
{
"__struct_id": 0,
"NAME": {
"type": "cexostring",
"value": "Crafting Sling"
},
"RESREF": {
"type": "resref",
"value": "craftingsling"
}
},
{
"__struct_id": 0,
"NAME": {
"type": "cexostring",
"value": "Crafting Stone"
},
"RESREF": {
"type": "resref",
"value": "craftingtoken"
}
},
{
"__struct_id": 0,
"NAME": {
@ -34279,6 +34544,10 @@
"value": [
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 27
},
"LIST": {
"type": "list",
"value": [
@ -34500,6 +34769,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 28
},
"LIST": {
"type": "list",
"value": [
@ -34622,6 +34895,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 29
},
"LIST": {
"type": "list",
"value": [
@ -34734,6 +35011,10 @@
"value": [
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 32
},
"LIST": {
"type": "list",
"value": [
@ -34867,6 +35148,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 30
},
"LIST": {
"type": "list",
"value": [
@ -34989,6 +35274,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 31
},
"LIST": {
"type": "list",
"value": [
@ -35079,6 +35368,10 @@
"value": [
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 33
},
"LIST": {
"type": "list",
"value": [
@ -35223,6 +35516,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 34
},
"LIST": {
"type": "list",
"value": [
@ -35345,6 +35642,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 35
},
"LIST": {
"type": "list",
"value": [
@ -35544,6 +35845,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 36
},
"LIST": {
"type": "list",
"value": [
@ -35875,6 +36180,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 37
},
"LIST": {
"type": "list",
"value": [
@ -36349,6 +36658,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 38
},
"LIST": {
"type": "list",
"value": [
@ -36571,6 +36884,10 @@
"value": [
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 39
},
"LIST": {
"type": "list",
"value": [
@ -36638,6 +36955,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 40
},
"LIST": {
"type": "list",
"value": [
@ -36760,6 +37081,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 41
},
"LIST": {
"type": "list",
"value": [
@ -36904,6 +37229,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 42
},
"LIST": {
"type": "list",
"value": [
@ -37026,6 +37355,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 61
},
"LIST": {
"type": "list",
"value": [
@ -37100,6 +37433,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 46
},
"LIST": {
"type": "list",
"value": [
@ -37365,6 +37702,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 47
},
"LIST": {
"type": "list",
"value": [
@ -37745,6 +38086,10 @@
"value": [
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 48
},
"LIST": {
"type": "list",
"value": [
@ -37812,6 +38157,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 49
},
"LIST": {
"type": "list",
"value": [
@ -38110,6 +38459,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 50
},
"LIST": {
"type": "list",
"value": [
@ -38184,6 +38537,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 51
},
"LIST": {
"type": "list",
"value": [
@ -38432,6 +38789,10 @@
"value": [
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 43
},
"LIST": {
"type": "list",
"value": [
@ -38543,6 +38904,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 44
},
"LIST": {
"type": "list",
"value": [
@ -38676,6 +39041,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 45
},
"LIST": {
"type": "list",
"value": [
@ -38754,6 +39123,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 62
},
"LIST": {
"type": "list",
"value": [
@ -38817,6 +39190,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 52
},
"LIST": {
"type": "list",
"value": [

@ -5,6 +5,10 @@
"value": [
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 7
},
"LIST": {
"type": "list",
"value": [
@ -237,6 +241,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 22
},
"STRREF": {
"type": "dword",
"value": 111663
@ -244,6 +252,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 6
},
"LIST": {
"type": "list",
"value": [
@ -2038,6 +2050,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 8
},
"LIST": {
"type": "list",
"value": [
@ -2105,6 +2121,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 9
},
"LIST": {
"type": "list",
"value": [
@ -2436,6 +2456,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 10
},
"LIST": {
"type": "list",
"value": [
@ -2888,6 +2912,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 11
},
"LIST": {
"type": "list",
"value": [
@ -3307,6 +3335,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 12
},
"LIST": {
"type": "list",
"value": [
@ -3407,6 +3439,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 14
},
"STRREF": {
"type": "dword",
"value": 9122
@ -3414,6 +3450,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 15
},
"LIST": {
"type": "list",
"value": [
@ -3464,6 +3504,10 @@
"value": [
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 0
},
"LIST": {
"type": "list",
"value": [
@ -3577,6 +3621,17 @@
"value": 5800
}
},
{
"__struct_id": 0,
"NAME": {
"type": "cexostring",
"value": "LOOT_GENERATOR"
},
"RESREF": {
"type": "resref",
"value": "loot_generator"
}
},
{
"__struct_id": 0,
"NAME": {
@ -3685,6 +3740,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 1
},
"LIST": {
"type": "list",
"value": [
@ -3763,6 +3822,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 2
},
"LIST": {
"type": "list",
"value": [
@ -3907,6 +3970,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 3
},
"STRREF": {
"type": "dword",
"value": 6691
@ -3914,6 +3981,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 4
},
"LIST": {
"type": "list",
"value": [
@ -3977,6 +4048,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 13
},
"LIST": {
"type": "list",
"value": [
@ -4022,11 +4097,19 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 16
},
"LIST": {
"type": "list",
"value": [
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 17
},
"LIST": {
"type": "list",
"value": [
@ -4050,6 +4133,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 19
},
"STRREF": {
"type": "dword",
"value": 5836
@ -4057,6 +4144,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 21
},
"STRREF": {
"type": "dword",
"value": 67585
@ -4064,6 +4155,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 20
},
"STRREF": {
"type": "dword",
"value": 53151
@ -4071,6 +4166,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 18
},
"LIST": {
"type": "list",
"value": [
@ -4101,6 +4200,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 5
},
"LIST": {
"type": "list",
"value": [
@ -4115,6 +4218,28 @@
"value": "darkmote001"
}
},
{
"__struct_id": 0,
"NAME": {
"type": "cexostring",
"value": "Fire"
},
"RESREF": {
"type": "resref",
"value": "fire"
}
},
{
"__struct_id": 0,
"NAME": {
"type": "cexostring",
"value": "Fire"
},
"RESREF": {
"type": "resref",
"value": "vfx_plc_fire"
}
},
{
"__struct_id": 0,
"NAME": {

@ -5,6 +5,10 @@
"value": [
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 6
},
"STRREF": {
"type": "dword",
"value": 6694
@ -12,6 +16,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 13
},
"STRREF": {
"type": "dword",
"value": 63289
@ -19,6 +27,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 12
},
"STRREF": {
"type": "dword",
"value": 62487
@ -26,6 +38,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 7
},
"STRREF": {
"type": "dword",
"value": 62483
@ -33,6 +49,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 5
},
"STRREF": {
"type": "dword",
"value": 62482
@ -45,6 +65,10 @@
"value": [
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 0
},
"STRREF": {
"type": "dword",
"value": 6688
@ -52,6 +76,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 1
},
"STRREF": {
"type": "dword",
"value": 6689
@ -59,6 +87,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 2
},
"STRREF": {
"type": "dword",
"value": 6690
@ -66,6 +98,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 3
},
"STRREF": {
"type": "dword",
"value": 6691
@ -73,6 +109,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 4
},
"STRREF": {
"type": "dword",
"value": 6692
@ -87,6 +127,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 8
},
"STRREF": {
"type": "dword",
"value": 62484

@ -5,6 +5,10 @@
"value": [
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 5
},
"LIST": {
"type": "list",
"value": [
@ -88,6 +92,10 @@
"value": [
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 0
},
"LIST": {
"type": "list",
"value": [
@ -144,6 +152,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 1
},
"LIST": {
"type": "list",
"value": [
@ -189,6 +201,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 2
},
"STRREF": {
"type": "dword",
"value": 6690
@ -196,6 +212,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 3
},
"LIST": {
"type": "list",
"value": [
@ -219,6 +239,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 4
},
"STRREF": {
"type": "dword",
"value": 6692

@ -5,6 +5,10 @@
"value": [
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 5
},
"STRREF": {
"type": "dword",
"value": 1082
@ -12,6 +16,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 6
},
"LIST": {
"type": "list",
"value": [
@ -299,6 +307,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 16
},
"STRREF": {
"type": "dword",
"value": 9129
@ -311,6 +323,10 @@
"value": [
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 0
},
"LIST": {
"type": "list",
"value": [
@ -345,6 +361,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 1
},
"STRREF": {
"type": "dword",
"value": 6689
@ -352,6 +372,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 2
},
"STRREF": {
"type": "dword",
"value": 6690
@ -359,6 +383,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 3
},
"STRREF": {
"type": "dword",
"value": 6691
@ -366,6 +394,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 4
},
"STRREF": {
"type": "dword",
"value": 6692
@ -385,6 +417,10 @@
"value": [
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 11
},
"STRREF": {
"type": "dword",
"value": 53181
@ -392,6 +428,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 12
},
"STRREF": {
"type": "dword",
"value": 2255
@ -399,6 +439,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 13
},
"STRREF": {
"type": "dword",
"value": 2256
@ -406,6 +450,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 14
},
"STRREF": {
"type": "dword",
"value": 2257
@ -413,6 +461,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 15
},
"STRREF": {
"type": "dword",
"value": 53182

@ -10,6 +10,10 @@
"value": [
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 0
},
"LIST": {
"type": "list",
"value": [
@ -55,6 +59,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 1
},
"STRREF": {
"type": "dword",
"value": 6689
@ -62,6 +70,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 2
},
"STRREF": {
"type": "dword",
"value": 6690
@ -69,6 +81,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 3
},
"STRREF": {
"type": "dword",
"value": 6691
@ -76,6 +92,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 4
},
"STRREF": {
"type": "dword",
"value": 6692
@ -90,6 +110,10 @@
},
{
"__struct_id": 0,
"ID": {
"type": "byte",
"value": 5
},
"LIST": {
"type": "list",
"value": [

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.

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.

@ -0,0 +1,40 @@
// Trash can script that only destroys items placed in the inventory
// for more than HOURS_TO_DESTROY in-game hours.
const string VAR_ITEM_TIMESTAMP = "TRASH_VINTAGE"; // Variable to store the time an item was placed
const int HOURS_TO_DESTROY = 12; // Hours an item must remain in the container
int GetCurrentGameTimeInSeconds()
{
// Get the current game time in hours, minutes, and seconds
int nHours = GetTimeHour();
int nMinutes = GetTimeMinute();
int nSeconds = GetTimeSecond();
// Convert to total seconds for easy comparison
return (nHours * 3600) + (nMinutes * 60) + nSeconds;
}
void main()
{
object oItem = GetFirstItemInInventory(OBJECT_SELF);
int nCurrentTime = GetCurrentGameTimeInSeconds(); // Current in-game time in seconds
int nTimeThreshold = FloatToInt(HoursToSeconds(HOURS_TO_DESTROY)); // Convert hours to seconds for comparison
while (GetIsObjectValid(oItem))
{
int nItemTime = GetLocalInt(oItem, VAR_ITEM_TIMESTAMP);
// If the item has no timestamp, assign the current time
if (nItemTime == 0)
{
SetLocalInt(oItem, VAR_ITEM_TIMESTAMP, nCurrentTime);
}
else if (nCurrentTime - nItemTime >= nTimeThreshold) // Check if item has been in container for required hours
{
DestroyObject(oItem);
}
oItem = GetNextItemInInventory(OBJECT_SELF);
}
}

@ -0,0 +1,19 @@
#include "prc_x2_itemprop"
int StartingConditional()
{
object oForge = GetNearestObjectByTag("forge_custom",OBJECT_SELF,1);
object oItem = GetFirstItemInInventory(oForge);
int nCount = IPGetNumberOfItemProperties(oItem);
int nProps;
if (nCount > 7)
{
return TRUE;
}
return FALSE;
}

@ -0,0 +1,14 @@
//::///////////////////////////////////////////////
//:: FileName forge_chkpockets
//:://////////////////////////////////////////////
//:://////////////////////////////////////////////
//:: Created By: Script Wizard
//:: Created On: 2/19/2006 1:12:53 AM
//:://////////////////////////////////////////////
int StartingConditional()
{
if((GetLocalInt(OBJECT_SELF, "ItemCost")) <= GetGold(GetPCSpeaker()))
return FALSE;
return TRUE;
}

@ -0,0 +1,15 @@
/////::///////////////////////////////////////////////
/////:: forge_combinecheck script - check to make sure items in combine are correct
/////:: Written by Winterknight on 2/17/06
/////:://////////////////////////////////////////////
#include "nw_i0_tool"
int StartingConditional()
{
object oForge = GetNearestObjectByTag("forge_combine",OBJECT_SELF,1);
object oItem = GetFirstItemInInventory(oForge);
if (!GetIsObjectValid(oItem))
return TRUE;
return FALSE;
}

@ -0,0 +1,177 @@
/////::///////////////////////////////////////////////
/////:: forge_custtokens script - set custom tokens for forge conversation
/////:: Written by Winterknight on 2/17/06
/////:: This script also is used to set up the basics for the forge.
/////:: this script as necessary to change the basic type of forge.
/////::
/////:: Updated for Path of Ascension / PRC8 by Jaysyn
/////:://////////////////////////////////////////////
#include "prc_misc_const"
void main()
{
object oForge = GetNearestObjectByTag("forge_custom", OBJECT_SELF, 1);
object oItem = GetFirstItemInInventory(oForge);
// Store the forge name for display
SetCustomToken(101, GetName(oForge)); // Name of Forge
SetLocalString(OBJECT_SELF, "ForgeName", GetName(oForge));
string sTypes = "Unsupported Item Type"; // Default message
int nType = 0;
// Check the base item type of oItem and assign corresponding sTypes and nType
if (oItem != OBJECT_INVALID)
{
int nBaseItemType = GetBaseItemType(oItem);
switch (nBaseItemType)
{
case BASE_ITEM_BOOTS:
case BASE_ITEM_BELT:
sTypes = "Belts and Boots";
nType = 1;
break;
case BASE_ITEM_ARMOR:
case BASE_ITEM_BRACER:
case BASE_ITEM_HELMET:
case BASE_ITEM_LARGESHIELD:
case BASE_ITEM_SMALLSHIELD:
case BASE_ITEM_TOWERSHIELD:
sTypes = "Armor, Helms and Shields";
nType = 2;
break;
case BASE_ITEM_BASTARDSWORD:
case BASE_ITEM_BATTLEAXE:
case BASE_ITEM_CLUB:
case BASE_ITEM_DAGGER:
case BASE_ITEM_DIREMACE:
case BASE_ITEM_DOUBLEAXE:
case BASE_ITEM_DOUBLE_SCIMITAR:
case BASE_ITEM_DWARVENWARAXE:
case BASE_ITEM_EAGLE_CLAW:
case BASE_ITEM_ELVEN_COURTBLADE:
case BASE_ITEM_ELVEN_LIGHTBLADE:
case BASE_ITEM_ELVEN_THINBLADE:
case BASE_ITEM_FALCHION:
case BASE_ITEM_GLOVES:
case BASE_ITEM_GOAD:
case BASE_ITEM_GREATAXE:
case BASE_ITEM_GREATSWORD:
case BASE_ITEM_HALBERD:
case BASE_ITEM_HANDAXE:
case BASE_ITEM_HEAVYFLAIL:
case BASE_ITEM_HEAVY_MACE:
case BASE_ITEM_HEAVY_PICK:
case BASE_ITEM_KAMA:
case BASE_ITEM_KATANA:
case BASE_ITEM_KATAR:
case BASE_ITEM_KUKRI:
case BASE_ITEM_LIGHTFLAIL:
case BASE_ITEM_LIGHTHAMMER:
case BASE_ITEM_LIGHTMACE:
case BASE_ITEM_LIGHT_PICK:
case BASE_ITEM_LONGSWORD:
case BASE_ITEM_MAUL:
case BASE_ITEM_MORNINGSTAR:
case BASE_ITEM_NUNCHAKU:
case BASE_ITEM_QUARTERSTAFF:
case BASE_ITEM_RAPIER:
case BASE_ITEM_SAI:
case BASE_ITEM_SAP:
case BASE_ITEM_SCIMITAR:
case BASE_ITEM_SCYTHE:
case BASE_ITEM_SHORTSPEAR:
case BASE_ITEM_SHORTSWORD:
case BASE_ITEM_SICKLE:
case BASE_ITEM_SLING:
case BASE_ITEM_TRIDENT:
case BASE_ITEM_TWOBLADEDSWORD:
case BASE_ITEM_WARHAMMER:
case BASE_ITEM_WHIP:
sTypes = "Melee Weapons and Gloves";
nType = 3;
break;
case BASE_ITEM_CLOAK:
sTypes = "Cloaks";
nType = 4;
break;
case BASE_ITEM_AMULET:
case BASE_ITEM_RING:
sTypes = "Rings and Amulets";
nType = 5;
break;
case BASE_ITEM_SHORTBOW:
case BASE_ITEM_HEAVYCROSSBOW:
case BASE_ITEM_LIGHTCROSSBOW:
case BASE_ITEM_LONGBOW:
sTypes = "Bows and Crossbows";
nType = 6;
break;
case BASE_ITEM_ARROW:
case BASE_ITEM_BOLT:
case BASE_ITEM_BULLET:
case BASE_ITEM_GRENADE:
case BASE_ITEM_DART:
case BASE_ITEM_SHURIKEN:
case BASE_ITEM_THROWINGAXE:
sTypes = "Thrown Weapons and Ammunition";
nType = 7;
break;
case BASE_ITEM_MISCLARGE:
case BASE_ITEM_MISCMEDIUM:
case BASE_ITEM_MISCSMALL:
case BASE_ITEM_MISCTALL:
case BASE_ITEM_MISCTHIN:
case BASE_ITEM_MISCWIDE:
case BASE_ITEM_MAGICWAND:
case BASE_ITEM_MAGICSTAFF:
case BASE_ITEM_MAGICROD:
case BASE_ITEM_BOOK:
case BASE_ITEM_LARGEBOX:
sTypes = "Miscellaneous Items";
nType = 8;
break;
}
}
// Update tokens and local variables based on selected item type
SetCustomToken(102, sTypes); // Type of item that will work here.
SetLocalInt(OBJECT_SELF, "ItemType", nType);
SetLocalInt(OBJECT_SELF, "ItemCost", 0);
}
/* void main()
{
object oForge = GetNearestObjectByTag("forge_custom",OBJECT_SELF,1);
object oItem = GetFirstItemInInventory(oForge);
SetCustomToken(101,GetName(oForge)); // Name of Forge
SetLocalString(OBJECT_SELF, "ForgeName", GetName(oForge));
string sTypes;
int nType;
string sForgeLeft = GetStringLeft(GetName(oForge),6);
if (sForgeLeft == "Cobble") {sTypes = "Belts and Boots"; nType = 1;}
if (sForgeLeft == "Armour") {sTypes = "Armor, Helms and Shields"; nType = 2;}
if (sForgeLeft == "Weapon") {sTypes = "Melee Weapons and Gloves"; nType = 3;}
if (sForgeLeft == "Tailor") {sTypes = "Cloaks"; nType = 4;}
if (sForgeLeft == "Jewele") {sTypes = "Rings and Amulets"; nType = 5;}
if (sForgeLeft == "Bowyer") {sTypes = "Bows and Crossbows"; nType = 6;}
if (sForgeLeft == "Fletch") {sTypes = "Thrown Weapons and Ammunition"; nType = 7;}
if (sForgeLeft == "Common") {sTypes = "Common Items (not equipped)"; nType = 8;}
if (sForgeLeft == "Mystic") {sTypes = "any Magical Items"; nType = 9;}
SetCustomToken(102,sTypes); // Type of item that will work here.
SetLocalInt(OBJECT_SELF, "ItemType", nType);
SetLocalInt(OBJECT_SELF, "ItemCost", 0);
} */

@ -0,0 +1,23 @@
/////::///////////////////////////////////////////////
/////:: forge_guildcheck script - check to make sure not splitting a guild item
/////:: Written by Winterknight on 2/17/06
/////:://////////////////////////////////////////////
#include "nw_i0_tool"
int StartingConditional()
{
object oForge = GetNearestObjectByTag("forge_custom",OBJECT_SELF,1);
object oItem = GetFirstItemInInventory(oForge);
string sCheck = GetTag(oItem);
if (sCheck == "fulminate" ||
sCheck == "magestaff" ||
sCheck == "innerpath" ||
sCheck == "harmonics" ||
sCheck == "whitegold" ||
sCheck == "vesperbel")
{
return TRUE;
}
return FALSE;
}

@ -0,0 +1,23 @@
/////::///////////////////////////////////////////////
/////:: forge_guildcheck script - check to make sure not splitting a guild item
/////:: Written by Winterknight on 2/17/06
/////:://////////////////////////////////////////////
#include "nw_i0_tool"
int StartingConditional()
{
object oForge = GetNearestObjectByTag("forge_combine",OBJECT_SELF,1);
object oItem = GetFirstItemInInventory(oForge);
string sCheck = GetTag(oItem);
if (sCheck == "fulminate" ||
sCheck == "magestaff" ||
sCheck == "innerpath" ||
sCheck == "harmonics" ||
sCheck == "whitegold" ||
sCheck == "vesperbel")
{
return TRUE;
}
return FALSE;
}

@ -0,0 +1,26 @@
/////::///////////////////////////////////////////////
/////:: forge_guildcheck script - check to make sure not splitting a guild item
/////:: Written by Winterknight on 2/17/06
/////:://////////////////////////////////////////////
#include "nw_i0_tool"
int StartingConditional()
{
object oForge = GetNearestObjectByTag("forge_custom",OBJECT_SELF,1);
object oItem = GetFirstItemInInventory(oForge);
string sCheck = GetStringLeft(GetTag(oItem), 5);
if (sCheck == "HELM_" ||
sCheck == "ARMR_" ||
sCheck == "SHLD_" ||
sCheck == "ammy_" ||
sCheck == "ring_" ||
sCheck == "WEAP_" ||
sCheck == "BOOT_" ||
sCheck == "BELT_")
{
return TRUE;
}
return FALSE;
}

@ -0,0 +1,168 @@
/////::///////////////////////////////////////////////
/////:: forge_costcheck - determine cost of perfect transferance to new item.
/////:: Modified by Winterknight on 2/18/06
/////:: Original scripts by Asbury
/////:://////////////////////////////////////////////
#include "prc_x2_itemprop"
void SafeAddItemProperty(int nDurationType, itemproperty ipProperty, object oItem, float fDuration=0.0f)
{
int nPropType = GetItemPropertyType(ipProperty);
if (!GetItemHasItemProperty(oItem,nPropType)) //already exist
{
AddItemProperty(nDurationType, ipProperty, oItem, fDuration);
return;
}
else if (nPropType==ITEM_PROPERTY_BONUS_SPELL_SLOT_OF_LEVEL_N ||
nPropType==ITEM_PROPERTY_CAST_SPELL)
{
AddItemProperty(nDurationType, ipProperty, oItem, fDuration);
return;
}
else if (nPropType==ITEM_PROPERTY_DAMAGE_BONUS ||
nPropType==ITEM_PROPERTY_DAMAGE_RESISTANCE ||
nPropType==ITEM_PROPERTY_ABILITY_BONUS ||
nPropType==ITEM_PROPERTY_IMMUNITY_DAMAGE_TYPE ||
nPropType==ITEM_PROPERTY_IMMUNITY_MISCELLANEOUS ||
nPropType==ITEM_PROPERTY_DAMAGE_VULNERABILITY ||
nPropType==ITEM_PROPERTY_AC_BONUS_VS_DAMAGE_TYPE ||
nPropType==ITEM_PROPERTY_DECREASED_ABILITY_SCORE ||
nPropType==ITEM_PROPERTY_EXTRA_MELEE_DAMAGE_TYPE ||
nPropType==ITEM_PROPERTY_EXTRA_RANGED_DAMAGE_TYPE)
{
IPSafeAddItemProperty(oItem, ipProperty, 0.0f, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING, FALSE, FALSE);
}
else if (nPropType==ITEM_PROPERTY_AC_BONUS_VS_ALIGNMENT_GROUP ||
nPropType==ITEM_PROPERTY_AC_BONUS_VS_DAMAGE_TYPE ||
nPropType==ITEM_PROPERTY_AC_BONUS_VS_RACIAL_GROUP ||
nPropType==ITEM_PROPERTY_AC_BONUS_VS_RACIAL_GROUP ||
nPropType==ITEM_PROPERTY_AC_BONUS_VS_SPECIFIC_ALIGNMENT ||
nPropType==ITEM_PROPERTY_ATTACK_BONUS_VS_ALIGNMENT_GROUP ||
nPropType==ITEM_PROPERTY_ATTACK_BONUS_VS_RACIAL_GROUP ||
nPropType==ITEM_PROPERTY_ATTACK_BONUS_VS_SPECIFIC_ALIGNMENT ||
nPropType==ITEM_PROPERTY_BONUS_FEAT ||
nPropType==ITEM_PROPERTY_DAMAGE_BONUS_VS_ALIGNMENT_GROUP ||
nPropType==ITEM_PROPERTY_DAMAGE_BONUS_VS_RACIAL_GROUP ||
nPropType==ITEM_PROPERTY_DAMAGE_BONUS_VS_SPECIFIC_ALIGNMENT ||
nPropType==ITEM_PROPERTY_AC_BONUS_VS_RACIAL_GROUP ||
nPropType==ITEM_PROPERTY_AC_BONUS_VS_RACIAL_GROUP ||
nPropType==ITEM_PROPERTY_AC_BONUS_VS_SPECIFIC_ALIGNMENT ||
nPropType==ITEM_PROPERTY_ENHANCEMENT_BONUS_VS_ALIGNMENT_GROUP ||
nPropType==ITEM_PROPERTY_ENHANCEMENT_BONUS_VS_RACIAL_GROUP ||
nPropType==ITEM_PROPERTY_ENHANCEMENT_BONUS_VS_SPECIFIC_ALIGNEMENT ||
nPropType==ITEM_PROPERTY_IMMUNITY_SPELLS_BY_LEVEL ||
nPropType==ITEM_PROPERTY_IMMUNITY_SPELL_SCHOOL ||
nPropType==ITEM_PROPERTY_ON_HIT_PROPERTIES ||
nPropType==ITEM_PROPERTY_ONHITCASTSPELL ||
nPropType==ITEM_PROPERTY_SAVING_THROW_BONUS_SPECIFIC ||
nPropType==ITEM_PROPERTY_SKILL_BONUS )
{
int nSub1 = GetItemPropertySubType(ipProperty);
if (nSub1 > -1)
{
itemproperty ipCheck = GetFirstItemProperty(oItem);
while (GetIsItemPropertyValid(ipCheck))
{
int nSub2 = GetItemPropertySubType(ipCheck);
if (nSub2 != nSub1)
{
AddItemProperty(nDurationType, ipProperty, oItem, fDuration);
return;
}
ipCheck = GetNextItemProperty(oItem);
}
}
}
}
//******************************************************************************
void main()
{
itemproperty ipFItem;
object oPC = GetPCSpeaker();
object oForge = GetNearestObjectByTag("forge_custom",OBJECT_SELF,1);
object oCombine = GetNearestObjectByTag("forge_combine",OBJECT_SELF,1);
string sCraft;
int nType = GetLocalInt(OBJECT_SELF, "ItemType"); //check for type for crafting
if (nType == 1) sCraft = "craftingbelt"; // belts and boots
if (nType == 2) sCraft = "craftingshield"; // armor, helm, shield
if (nType == 3) sCraft = "craftingdagger"; // melee weapons
if (nType == 4) sCraft = "craftingcloak"; // cloaks
if (nType == 5) sCraft = "craftingring"; // rings and ammys
if (nType == 6) sCraft = "craftingsling"; // bows, x-bows, slings
if (nType == 7) sCraft = "craftingdart"; // thrown and ammo
if (nType == 8) sCraft = "craftingtoken"; // miscellaneous, common
if (!GetIsObjectValid(oForge)) return; //must have Forge
if (!GetIsObjectValid(oCombine)) return; //must have Combining chamber
object oItem = GetFirstItemInInventory(oForge); //get the item on Forge
if (GetIdentified(oItem)==FALSE) SetIdentified (oItem, TRUE);
if (GetPlotFlag(oItem)==TRUE)
{
SetPlotFlag (oItem, FALSE);
SetLocalInt(OBJECT_SELF,"PlotItem",TRUE);
}
object oCraft = GetFirstItemInInventory(oCombine); //get the first item in the combining chamber
object oCopy = CopyItem(oItem, OBJECT_SELF, FALSE);
int nCount = IPGetNumberOfItemProperties(oCopy);
int nProps;
int nTally = nCount;
// First - we add the goodies from the combine to the base item
while (GetIsObjectValid(oCraft))
{
ipFItem = GetFirstItemProperty(oCraft);//Loop for as long as the ipLoop variable is valid
while (GetIsItemPropertyValid(ipFItem))
{
nProps++;
if (nCount < 8)
{
SafeAddItemProperty(DURATION_TYPE_PERMANENT,ipFItem,oCopy); //put property on copy
nCount++;
}
ipFItem=GetNextItemProperty(oCraft);
}
oCraft = GetNextItemInInventory(oCombine);
}
nTally = nTally + nProps;
if (nTally > nCount) SendMessageToPC(oPC,"You are attempting to add more than 8 properties to the item. Any additional past the limit will be lost.");
// Then we find the actual cost of the new item. Then we screw them on price.
int nValue2 = GetGoldPieceValue(oItem);
int nValue1 = GetGoldPieceValue(oCopy);
int nDiff = nValue1 - nValue2;
int nIncrease;
string sValue = "";
if (nDiff > 0)
{
nIncrease = nDiff * 2;
sValue = IntToString(nIncrease);
}
else
{
nIncrease = 0;
sValue = "nothing in ";
}
SetCustomToken(103,sValue);
SetLocalInt (OBJECT_SELF,"ItemCost",nIncrease);
// Then we remove destroy the copy
DestroyObject(oCopy,0.5f);
if (GetLocalInt(OBJECT_SELF,"PlotItem")==TRUE) // Reset variables and plot
{
SetPlotFlag (oItem, TRUE);
SetLocalInt(OBJECT_SELF,"PlotItem",FALSE);
}
}

@ -0,0 +1,199 @@
/////::///////////////////////////////////////////////
/////:: forge_itemmerge - Forge properties onto item from components.
/////:: Modified by Winterknight on 2/18/06
/////:: Original script written by Asbury
/////:://////////////////////////////////////////////
#include "sd_lootsystem"
#include "prc_x2_itemprop"
void SafeAddItemProperty(int nDurationType, itemproperty ipProperty, object oItem, float fDuration=0.0f)
{
int nPropType = GetItemPropertyType(ipProperty);
if (!GetItemHasItemProperty(oItem,nPropType)) //already exist
{
AddItemProperty(nDurationType, ipProperty, oItem, fDuration);
return;
}
else if (nPropType==ITEM_PROPERTY_BONUS_SPELL_SLOT_OF_LEVEL_N ||
nPropType==ITEM_PROPERTY_CAST_SPELL)
{
AddItemProperty(nDurationType, ipProperty, oItem, fDuration);
return;
}
else if (nPropType==ITEM_PROPERTY_DAMAGE_BONUS ||
nPropType==ITEM_PROPERTY_DAMAGE_RESISTANCE ||
nPropType==ITEM_PROPERTY_ABILITY_BONUS ||
nPropType==ITEM_PROPERTY_IMMUNITY_DAMAGE_TYPE ||
nPropType==ITEM_PROPERTY_IMMUNITY_MISCELLANEOUS ||
nPropType==ITEM_PROPERTY_DAMAGE_VULNERABILITY ||
nPropType==ITEM_PROPERTY_AC_BONUS_VS_DAMAGE_TYPE ||
nPropType==ITEM_PROPERTY_DECREASED_ABILITY_SCORE ||
nPropType==ITEM_PROPERTY_EXTRA_MELEE_DAMAGE_TYPE ||
nPropType==ITEM_PROPERTY_EXTRA_RANGED_DAMAGE_TYPE)
{
IPSafeAddItemProperty(oItem, ipProperty, 0.0f, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING, FALSE, FALSE);
}
else if (nPropType==ITEM_PROPERTY_AC_BONUS_VS_ALIGNMENT_GROUP ||
nPropType==ITEM_PROPERTY_AC_BONUS_VS_DAMAGE_TYPE ||
nPropType==ITEM_PROPERTY_AC_BONUS_VS_RACIAL_GROUP ||
nPropType==ITEM_PROPERTY_AC_BONUS_VS_RACIAL_GROUP ||
nPropType==ITEM_PROPERTY_AC_BONUS_VS_SPECIFIC_ALIGNMENT ||
nPropType==ITEM_PROPERTY_ATTACK_BONUS_VS_ALIGNMENT_GROUP ||
nPropType==ITEM_PROPERTY_ATTACK_BONUS_VS_RACIAL_GROUP ||
nPropType==ITEM_PROPERTY_ATTACK_BONUS_VS_SPECIFIC_ALIGNMENT ||
nPropType==ITEM_PROPERTY_BONUS_FEAT ||
nPropType==ITEM_PROPERTY_DAMAGE_BONUS_VS_ALIGNMENT_GROUP ||
nPropType==ITEM_PROPERTY_DAMAGE_BONUS_VS_RACIAL_GROUP ||
nPropType==ITEM_PROPERTY_DAMAGE_BONUS_VS_SPECIFIC_ALIGNMENT ||
nPropType==ITEM_PROPERTY_AC_BONUS_VS_RACIAL_GROUP ||
nPropType==ITEM_PROPERTY_AC_BONUS_VS_RACIAL_GROUP ||
nPropType==ITEM_PROPERTY_AC_BONUS_VS_SPECIFIC_ALIGNMENT ||
nPropType==ITEM_PROPERTY_ENHANCEMENT_BONUS_VS_ALIGNMENT_GROUP ||
nPropType==ITEM_PROPERTY_ENHANCEMENT_BONUS_VS_RACIAL_GROUP ||
nPropType==ITEM_PROPERTY_ENHANCEMENT_BONUS_VS_SPECIFIC_ALIGNEMENT ||
nPropType==ITEM_PROPERTY_IMMUNITY_SPELLS_BY_LEVEL ||
nPropType==ITEM_PROPERTY_IMMUNITY_SPELL_SCHOOL ||
nPropType==ITEM_PROPERTY_ON_HIT_PROPERTIES ||
nPropType==ITEM_PROPERTY_ONHITCASTSPELL ||
nPropType==ITEM_PROPERTY_SAVING_THROW_BONUS_SPECIFIC ||
nPropType==ITEM_PROPERTY_SKILL_BONUS )
{
int nSub1 = GetItemPropertySubType(ipProperty);
if (nSub1 > -1)
{
itemproperty ipCheck = GetFirstItemProperty(oItem);
while (GetIsItemPropertyValid(ipCheck))
{
int nSub2 = GetItemPropertySubType(ipCheck);
if (nSub2 != nSub1)
{
AddItemProperty(nDurationType, ipProperty, oItem, fDuration);
return;
}
ipCheck = GetNextItemProperty(oItem);
}
}
}
}
//******************************************************************************
void main()
{
itemproperty ipFItem;
effect eTel1 = EffectVisualEffect(VFX_IMP_KNOCK,FALSE);
effect eTel2 = EffectVisualEffect(VFX_IMP_PDK_INSPIRE_COURAGE,FALSE);
effect eUtter = EffectVisualEffect(VFX_FNF_MYSTICAL_EXPLOSION,FALSE);
object oPC = GetPCSpeaker();
object oForge = GetNearestObjectByTag("forge_custom",OBJECT_SELF,1);
object oCombine = GetNearestObjectByTag("forge_combine",OBJECT_SELF,1);
location lTrig1 = GetLocation(oForge);
location lTrig2 = GetLocation(oCombine);
if (!GetIsObjectValid(oForge)) return; //must have Forge
if (!GetIsObjectValid(oCombine)) return; //must have Combining chamber
object oArea = GetArea(oForge);
object oItem = GetFirstItemInInventory(oForge); //get the first item on Forge
if (!GetIsObjectValid(oItem))
{
SendMessageToPC(oPC,"You must have a valid item in the Forge.");
return; //must have something there
}
int nLoop = IPGetNumberOfItemProperties(oItem);
object oCraft = GetFirstItemInInventory(oCombine); //get the first item in the combining chamber
int nTally = nLoop;
while (GetIsObjectValid(oCraft))
{
ipFItem = GetFirstItemProperty(oCraft); //Loop for as long as the ipLoop variable is valid
while (GetIsItemPropertyValid(ipFItem))
{
nTally++;
if (nLoop < 8)
{
SafeAddItemProperty(DURATION_TYPE_PERMANENT,ipFItem,oItem); //put property on
nLoop++;
}
if (nTally > 8)
{
SendMessageToPC(oPC,"You have attempted to add more than 8 properties to the item. This can cause errors in transfer. Some item properties have been lost.");
}
RemoveItemProperty(oCraft, ipFItem); //take the magic away from object
ipFItem=GetNextItemProperty(oCraft);
}
DestroyObject(oCraft); //remove the object
oCraft = GetNextItemInInventory(oCombine);
}
int iQual = nTally;
string sName;
string cName;
string sCheck = GetStringLeft(GetTag(oItem), 5);
string oName = GetName(oItem);
switch(iQual)
{
case 1: cName = ColorString("[Enchanted] ", 255, 255, 255); break;
case 2: cName = ColorString("[Enchanted] ", 30, 180, 30); break;
case 3: cName = ColorString("[Enchanted] ", 30, 180, 30); break;
case 4: cName = ColorString("[Bewitched] ", 5, 90, 255); break;
case 5: cName = ColorString("[Bewitched] ", 5, 90, 255); break;
case 6: cName = ColorString("[Spellbound] ", 185, 1, 200); break;
case 7: cName = ColorString("[Archforged] ", 255, 245, 210); break;
case 8: cName = ColorString("[Ancient] ", 180, 180, 80); break;
}
switch(iQual)
{
case 1: sName = ColorString("Reforged Magical "+ RandomName(200),255, 255, 255); break;
case 2: sName = ColorString("Reforged Enchanted "+ RandomName(200), 30, 180, 30); break;
case 3: sName = ColorString("Reforged Enchanted "+ RandomName(200), 30, 180, 30); break;
case 4: sName = ColorString("Reforged Imbued "+ RandomName(200), 5, 90, 255); break;
case 5: sName = ColorString("Reforged Imbued "+ RandomName(200), 5, 90, 255); break;
case 6: sName = ColorString("Reforged Planar "+ RandomName(200), 185, 1, 200); break;
case 7: sName = ColorString("Reforged Divine "+ RandomName(200), 255, 245, 210); break;
case 8: sName = ColorString("Reforged Ancient's "+ RandomName(200), 180, 180, 80); break;
}
switch(iQual)
{
case 1: FloatingTextStringOnCreature("You have reforged a Magical Quality item!", oPC); break;
case 2: FloatingTextStringOnCreature("You have reforged a Enchanted Quality item!", oPC); break;
case 3: FloatingTextStringOnCreature("You have reforged a Enchanted Quality item!", oPC); break;
case 4: FloatingTextStringOnCreature("You have reforged a Imbued Quality item!", oPC); break;
case 5: FloatingTextStringOnCreature("You have reforged a Imbued Quality item!", oPC); break;
case 6: FloatingTextStringOnCreature("You have reforged a Planar Quality item!", oPC); break;
case 7: FloatingTextStringOnCreature("You have reforged a Divine Quality item!", oPC); break;
case 8: FloatingTextStringOnCreature("You have reforged a Ancient Quality item!", oPC); break;
}
if (sCheck == "HELM_" ||
sCheck == "ARMR_" ||
sCheck == "SHLD_" ||
sCheck == "ammy_" ||
sCheck == "ring_" ||
sCheck == "WEAP_" ||
sCheck == "BOOT_" ||
sCheck == "BELT_")
{
SetName (oItem, cName + oName);
}
else
{
SetName(oItem, sName);
}
ApplyEffectAtLocation(DURATION_TYPE_INSTANT,eTel2,lTrig2,0.0);
DelayCommand(0.3,ApplyEffectAtLocation(DURATION_TYPE_INSTANT,eTel1,lTrig1,0.0));
RecomputeStaticLighting(oArea);
int nGold = GetLocalInt (OBJECT_SELF,"ItemCost");
TakeGoldFromCreature(nGold,oPC,TRUE);
}

@ -0,0 +1,109 @@
/////::///////////////////////////////////////////////
/////:: forge_itemsplit - Separate into component properties
/////:: Modified by Winterknight on 2/18/06
/////:: Original script written by Asbury
/////:://////////////////////////////////////////////
#include "sd_lootsystem"
void main()
{
//:: Declare major variables.
effect eTel1 = EffectVisualEffect(VFX_IMP_FROST_L,FALSE);
effect eTel2 = EffectVisualEffect(VFX_IMP_ELEMENTAL_PROTECTION,FALSE);
object oForge = GetNearestObjectByTag("forge_custom",OBJECT_SELF,1);
object oCombine = GetNearestObjectByTag("forge_combine",OBJECT_SELF,1);
object oArea = GetArea(oForge);
location lTrig1 = GetLocation(oForge);
location lTrig2 = GetLocation(oCombine);
//:: Get only the first item on forge.
object oItem = GetFirstItemInInventory(oForge);
//:: Must have something in the forge.
if (!GetIsObjectValid(oItem)) return;
//:: Identify item
if (GetIdentified(oItem)==FALSE) SetIdentified (oItem, TRUE);
//:: Check for type for crafting
string sCraft;
int nType = GetLocalInt(OBJECT_SELF, "ItemType");
if (nType == 1) sCraft = "craftingbelt"; // belts and boots
else if (nType == 2) sCraft = "craftingshield"; // armor, helm, shield
else if (nType == 3) sCraft = "craftingdagger"; // melee weapons
else if (nType == 4) sCraft = "craftingcloak"; // cloaks
else if (nType == 5) sCraft = "craftingring"; // rings and ammys
else if (nType == 6) sCraft = "craftingsling"; // bows, x-bows, slings
else if (nType == 7) sCraft = "craftingdirk"; // thrown and ammo
//else if (nType == 8) sCraft = "craftingtoken"; // miscellaneous, common
else sCraft = "craftingtoken"; // anything else
itemproperty ipForgeItemIP;
int nIPDuration, nCheck, nParam1, nIPType;
ipForgeItemIP = GetFirstItemProperty(oItem);
//:: Loop for as long as the ipLoop variable is valid
while (GetIsItemPropertyValid(ipForgeItemIP))
{
nCheck = 0;
//:: Check for temporary itemprops
nIPDuration = GetItemPropertyDurationType(ipForgeItemIP);
//:: Check to see if we can prevent the unique mithril powers from being removed.
nParam1 = GetItemPropertySubType(ipForgeItemIP);
nIPType = GetItemPropertyType(ipForgeItemIP);
if (nIPType == ITEM_PROPERTY_ONHITCASTSPELL)
{
if (nParam1 == 125)
nCheck = 1;
}
if (nIPType == ITEM_PROPERTY_CAST_SPELL)
{
if (nParam1 == 329 ||
nParam1 == 335 ||
nParam1 == 359 ||
nParam1 == 537 ||
nParam1 == 513)
nCheck = 1;
}
if (Random(100) != 1 & nIPDuration == DURATION_TYPE_PERMANENT & nCheck != 1)
{
//:: Create receptacle item on Combine
object oCraft = CreateItemOnObject(sCraft, oCombine);
if (GetIsObjectValid(oCraft))
{
//:: Remove itemprop from item
RemoveItemProperty(oItem, ipForgeItemIP);
//:: Add property to crafting item
AddItemProperty(DURATION_TYPE_PERMANENT, ipForgeItemIP, oCraft);
}
}
else
{
if (nCheck == 1)
{
SendMessageToPC(GetPCSpeaker(),"Unique powers not removed.");
}
else
{
SendMessageToPC(GetPCSpeaker(),"An item property was lost during the separation.");
RemoveItemProperty(oItem, ipForgeItemIP);
}
}
//:: Next itemproperty on the item
ipForgeItemIP = GetNextItemProperty(oItem);
}
string sName;
sName = ColorString("Disenchanted Item" ,80, 80, 80);
SetName(oItem, sName);
ApplyEffectAtLocation(DURATION_TYPE_INSTANT,eTel1,lTrig1,0.0);
DelayCommand(0.3,ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eTel2, lTrig2, 0.0));
RecomputeStaticLighting(oArea);
}

@ -0,0 +1,74 @@
/////::///////////////////////////////////////////////
/////:: forge_guildcheck script - check to make sure not splitting a guild item
/////:: Written by Winterknight on 2/17/06
/////:://////////////////////////////////////////////
#include "nw_i0_tool"
int StartingConditional()
{
object oCombine = GetNearestObjectByTag("forge_combine",OBJECT_SELF,1);
object oItem = GetFirstItemInInventory(oCombine);
string sMerge = GetTag(oItem);
int nType = GetLocalInt(OBJECT_SELF, "ItemType");
/*while (GetIsObjectValid(oItem))
{
if (nType == 1) // Belts and Boots
{
if (sMerge == "craftingbelt" ||
sMerge == "craftingtoken" )
return FALSE;
}
if (nType == 2) // Armor, Helms, Shields
{
if (sMerge == "craftingshield" ||
sMerge == "craftingtoken" )
return FALSE;
}
if (nType == 3) // Melee Weapons
{
if (sMerge == "craftingdagger" ||
sMerge == "craftingtoken" )
return FALSE;
}
if (nType == 4) // Cloaks
{
if (sMerge == "craftingcloak" ||
sMerge == "craftingtoken" )
return FALSE;
}
if (nType == 5) // Rings and Amulets
{
if (sMerge == "craftingring" ||
sMerge == "craftingtoken" )
return FALSE;
}
if (nType == 6) // Bows and Crossbows/slings
{
if (sMerge == "craftingsling" ||
sMerge == "craftingtoken" )
return FALSE;
}
if (nType == 7) // Thrown weapons and ammunition
{
if (sMerge == "craftingdirk" ||
sMerge == "craftingtoken" )
return FALSE;
}
if (nType == 8) // Common items (miscellaneous or not already covered)
{
if (sMerge == "craftingtoken" )
return FALSE;
}
oItem = GetNextItemInInventory(oCombine);
}
return TRUE; */
return FALSE;
}

@ -0,0 +1,19 @@
/////::///////////////////////////////////////////////
/////:: forge_guildcheck script - check to make sure not splitting a guild item
/////:: Written by Winterknight on 2/17/06
/////:://////////////////////////////////////////////
#include "nw_i0_tool"
int StartingConditional()
{
object oForge = GetNearestObjectByTag("forge_custom",OBJECT_SELF,1);
object oItem = GetFirstItemInInventory(oForge);
string sCheck = GetStringLowerCase(GetStringLeft(GetResRef(oItem), 2));
if (sCheck == "sd" || sCheck == "nw" || sCheck == "x2")
{
return TRUE;
}
return FALSE;
}

@ -0,0 +1,22 @@
/////::///////////////////////////////////////////////
/////:: forge_spititout script - check to make sure no more than one item in forge.
/////:: Written by Winterknight on 2/20/06
/////:://////////////////////////////////////////////
void main()
{
object oFifo2 = GetFirstItemInInventory(OBJECT_SELF);
if (GetInventoryDisturbType() == INVENTORY_DISTURB_TYPE_ADDED)
{
oFifo2 = GetNextItemInInventory(OBJECT_SELF);
if (GetIsObjectValid(oFifo2))
{
location lDrop = GetLocation(GetNearestObjectByTag("forge_spitpoint", OBJECT_SELF,1));
object oCopy = CopyObject(oFifo2, lDrop, OBJECT_INVALID, "");
DestroyObject(oFifo2,0.3);
effect eEff1 = EffectVisualEffect(VFX_FNF_SMOKE_PUFF, FALSE);
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eEff1, lDrop, 0.0);
}
}
}

@ -0,0 +1,183 @@
/////::///////////////////////////////////////////////
/////:: forge_guildcheck script - check to make sure not splitting a guild item
/////:: Written by Winterknight on 2/17/06
/////:://////////////////////////////////////////////
#include "nw_i0_tool"
#include "prc_misc_const"
int StartingConditional()
{
object oForge = GetNearestObjectByTag("forge_custom",OBJECT_SELF,1);
object oItem = GetFirstItemInInventory(oForge);
int nBase = GetBaseItemType (oItem);
int nType = GetLocalInt(OBJECT_SELF, "ItemType");
return FALSE;
if (nType == 1) // Belts and Boots
{
if (nBase == BASE_ITEM_BOOTS ||
nBase == BASE_ITEM_MISCLARGE ||
nBase == BASE_ITEM_MISCMEDIUM||
nBase == BASE_ITEM_MISCSMALL ||
nBase == BASE_ITEM_MISCTALL ||
nBase == BASE_ITEM_MISCTHIN ||
nBase == BASE_ITEM_MISCWIDE ||
nBase == BASE_ITEM_BELT)
return FALSE;
}
if (nType == 2) // Armor, Helms, Shields
{
if (nBase == BASE_ITEM_TOWERSHIELD ||
nBase == BASE_ITEM_MISCLARGE ||
nBase == BASE_ITEM_MISCMEDIUM||
nBase == BASE_ITEM_MISCSMALL ||
nBase == BASE_ITEM_MISCTALL ||
nBase == BASE_ITEM_MISCTHIN ||
nBase == BASE_ITEM_MISCWIDE ||
nBase == BASE_ITEM_SMALLSHIELD ||
nBase == BASE_ITEM_HELMET ||
nBase == BASE_ITEM_ARMOR ||
nBase == BASE_ITEM_BRACER ||
nBase == BASE_ITEM_LARGESHIELD)
return FALSE;
}
if (nType == 3) // Melee Weapons
{
if (nBase == BASE_ITEM_BASTARDSWORD ||
nBase == BASE_ITEM_BATTLEAXE ||
nBase == BASE_ITEM_CLUB ||
nBase == BASE_ITEM_DAGGER ||
nBase == BASE_ITEM_DIREMACE ||
nBase == BASE_ITEM_DOUBLEAXE ||
nBase == BASE_ITEM_DOUBLE_SCIMITAR ||
nBase == BASE_ITEM_DWARVENWARAXE ||
nBase == BASE_ITEM_EAGLE_CLAW ||
nBase == BASE_ITEM_ELVEN_COURTBLADE ||
nBase == BASE_ITEM_ELVEN_LIGHTBLADE ||
nBase == BASE_ITEM_ELVEN_THINBLADE ||
nBase == BASE_ITEM_FALCHION ||
nBase == BASE_ITEM_GLOVES ||
nBase == BASE_ITEM_GOAD ||
nBase == BASE_ITEM_GREATAXE ||
nBase == BASE_ITEM_GREATSWORD ||
nBase == BASE_ITEM_HALBERD ||
nBase == BASE_ITEM_HANDAXE ||
nBase == BASE_ITEM_HEAVYCROSSBOW ||
nBase == BASE_ITEM_HEAVYFLAIL ||
nBase == BASE_ITEM_HEAVY_MACE ||
nBase == BASE_ITEM_HEAVY_PICK ||
nBase == BASE_ITEM_KAMA ||
nBase == BASE_ITEM_KATANA ||
nBase == BASE_ITEM_KATAR ||
nBase == BASE_ITEM_KUKRI ||
nBase == BASE_ITEM_LIGHTFLAIL ||
nBase == BASE_ITEM_LIGHTHAMMER ||
nBase == BASE_ITEM_LIGHTMACE ||
nBase == BASE_ITEM_LIGHT_PICK ||
nBase == BASE_ITEM_LONGSWORD ||
nBase == BASE_ITEM_MAUL ||
nBase == BASE_ITEM_MISCLARGE ||
nBase == BASE_ITEM_MISCMEDIUM||
nBase == BASE_ITEM_MISCSMALL ||
nBase == BASE_ITEM_MISCTALL ||
nBase == BASE_ITEM_MISCTHIN ||
nBase == BASE_ITEM_MISCWIDE ||
nBase == BASE_ITEM_MORNINGSTAR ||
nBase == BASE_ITEM_NUNCHAKU ||
nBase == BASE_ITEM_QUARTERSTAFF ||
nBase == BASE_ITEM_RAPIER ||
nBase == BASE_ITEM_SAI ||
nBase == BASE_ITEM_SAP ||
nBase == BASE_ITEM_SCIMITAR ||
nBase == BASE_ITEM_SCYTHE ||
nBase == BASE_ITEM_SHORTSPEAR ||
nBase == BASE_ITEM_SHORTSWORD ||
nBase == BASE_ITEM_SICKLE ||
nBase == BASE_ITEM_SLING ||
nBase == BASE_ITEM_TRIDENT ||
nBase == BASE_ITEM_TWOBLADEDSWORD ||
nBase == BASE_ITEM_WARHAMMER ||
nBase == BASE_ITEM_WHIP)
return FALSE;
}
if (nType == 4) // Cloaks
{
if (nBase == BASE_ITEM_CLOAK ||
nBase == BASE_ITEM_MISCLARGE ||
nBase == BASE_ITEM_MISCMEDIUM||
nBase == BASE_ITEM_MISCSMALL ||
nBase == BASE_ITEM_MISCTALL ||
nBase == BASE_ITEM_MISCTHIN ||
nBase == BASE_ITEM_MISCWIDE )
return FALSE;
}
if (nType == 5) // Rings and Amulets
{
if (nBase == BASE_ITEM_RING ||
nBase == BASE_ITEM_MISCLARGE ||
nBase == BASE_ITEM_MISCMEDIUM||
nBase == BASE_ITEM_MISCSMALL ||
nBase == BASE_ITEM_MISCTALL ||
nBase == BASE_ITEM_MISCTHIN ||
nBase == BASE_ITEM_MISCWIDE ||
nBase == BASE_ITEM_AMULET)
return FALSE;
}
if (nType == 6) // Bows and Crossbows/slings
{
if (nBase == BASE_ITEM_LONGBOW ||
nBase == BASE_ITEM_MISCLARGE ||
nBase == BASE_ITEM_MISCMEDIUM||
nBase == BASE_ITEM_MISCSMALL ||
nBase == BASE_ITEM_MISCTALL ||
nBase == BASE_ITEM_MISCTHIN ||
nBase == BASE_ITEM_MISCWIDE ||
nBase == BASE_ITEM_LIGHTCROSSBOW ||
nBase == BASE_ITEM_HEAVYCROSSBOW||
nBase == BASE_ITEM_SHORTBOW ||
nBase == BASE_ITEM_SLING )
return FALSE;
}
if (nType == 7) // Thrown weapons and ammunition
{
if (nBase == BASE_ITEM_ARROW ||
nBase == BASE_ITEM_MISCLARGE ||
nBase == BASE_ITEM_MISCMEDIUM||
nBase == BASE_ITEM_MISCSMALL ||
nBase == BASE_ITEM_MISCTALL ||
nBase == BASE_ITEM_MISCTHIN ||
nBase == BASE_ITEM_MISCWIDE ||
nBase == BASE_ITEM_BOLT ||
nBase == BASE_ITEM_BULLET||
nBase == BASE_ITEM_DART ||
nBase == BASE_ITEM_GRENADE ||
nBase == BASE_ITEM_SHURIKEN ||
nBase == BASE_ITEM_THROWINGAXE )
return FALSE;
}
if (nType == 8) // Common items (miscellaneous or not already covered)
{
if (nBase == BASE_ITEM_BOOK ||
nBase == BASE_ITEM_MISCLARGE ||
nBase == BASE_ITEM_MISCMEDIUM||
nBase == BASE_ITEM_MISCSMALL ||
nBase == BASE_ITEM_MISCTALL ||
nBase == BASE_ITEM_MISCTHIN ||
nBase == BASE_ITEM_MISCWIDE ||
nBase == BASE_ITEM_MAGICROD||
nBase == BASE_ITEM_LARGEBOX ||
nBase == BASE_ITEM_MAGICSTAFF ||
nBase == BASE_ITEM_MAGICWAND )
return FALSE;
}
return TRUE;
}

@ -0,0 +1,15 @@
/////::///////////////////////////////////////////////
/////:: forge_guildcheck script - check to make sure not splitting a guild item
/////:: Written by Winterknight on 2/17/06
/////:://////////////////////////////////////////////
#include "nw_i0_tool"
int StartingConditional()
{
object oForge = GetNearestObjectByTag("forge_custom",OBJECT_SELF,1);
object oItem = GetFirstItemInInventory(oForge);
if (!GetIsObjectValid(oItem))
return TRUE;
return FALSE;
}

@ -1053,10 +1053,10 @@ void DropGold (object oMob, object oSack, int iBonus)
/////////////////////////////////////////////////////////////////////////
//Gold Debugging
//object oPC = GetFirstPC();
//object oKiller = GetFirstPC();
//sGold = IntToString(iGold);
//sLvl = IntToString(iHD);
//FloatingTextStringOnCreature(sGold+" Gold Spawned by lvl "+sLvl+" mob", oPC);
//FloatingTextStringOnCreature(sGold+" Gold Spawned by lvl "+sLvl+" mob", oKiller);
//
//
//
@ -1957,17 +1957,16 @@ void DamageTypeImbue(object oItem, int iRange)
{
case 1:
{
iRoll = d3();
iRoll = d2();
if (iRoll==1)iDam = IP_CONST_DAMAGEBONUS_1d4;
if (iRoll==2)iDam = IP_CONST_DAMAGEBONUS_1;
if (iRoll==3)iDam = IP_CONST_DAMAGEBONUS_1d4;
}
break;
case 2:
{
iRoll = d4();
if (iRoll==1)iDam = IP_CONST_DAMAGEBONUS_1;
if (iRoll==2)iDam = IP_CONST_DAMAGEBONUS_1d4;
if (iRoll==2)iDam = IP_CONST_DAMAGEBONUS_2;
if (iRoll==3)iDam = IP_CONST_DAMAGEBONUS_1d4;
if (iRoll==4)iDam = IP_CONST_DAMAGEBONUS_1d4;
}
@ -3571,7 +3570,6 @@ void DropMagicItem (object oMob, object oSack, int iRange, int SockChance, int i
}
//:: Chance for socketed item
oItem = CreateItemOnObject(sType, oSack, 1, "sf_socket_item");
iRoll = d100();
@ -3608,7 +3606,7 @@ void DropMagicItem (object oMob, object oSack, int iRange, int SockChance, int i
///////////////////////////////////////////// Hench Reward Code
object oPC = GetFirstPC();
object oKiller = GetFirstPC();
if (GetMaster(oMob)!=OBJECT_INVALID)
{
@ -3617,62 +3615,49 @@ void DropMagicItem (object oMob, object oSack, int iRange, int SockChance, int i
}
//////////////////////////////////////////// Lvls 1-5
if (iRange == 1)
//:: AC bonus for ammy, cloak & boots or ability bonus otherwise
if (iID == 1)
{
//:: AC bonus for ammy, cloak & boots or ability bonus otherwise
iRoll = d100();
if (iID == 1)
{
DelayCommand(0.2, ACmisc(oItem, iRange));
++iQual;
}
if (iID == 2) //:: Rings
{
if (iRoll > 94) //:: 5% Chance for Divinty / Wizardry
{
iRoll = d2(1);
if (iRoll == 1)
{
DelayCommand(0.2, ImbueWizardry(oItem, iRange));
iQual+=3;
}
else
{
DelayCommand(0.2, ImbueDivinity(oItem, iRange));
iQual+=3;
}
}
}
else
iRoll = d100();
if (iRoll > 60)
{
DelayCommand(0.2, AbilityImbue(oItem, iRange));
++iQual;
}
DelayCommand(0.2, ACmisc(oItem, iRange));
++iQual;
}
////////////////////////////////////////// Lvls 6-10
else
{
iRoll = d100();
if (iRoll > 94) //:: 5% Chance for Divinty / Wizardry
{
iRoll = d2(1);
if (iRoll == 1)
{
DelayCommand(0.2, ImbueWizardry(oItem, iRange));
iQual+=3;
}
else
{
DelayCommand(0.2, ImbueDivinity(oItem, iRange));
iQual+=3;
}
}
DelayCommand(0.2, AbilityImbue(oItem, iRange));
++iQual;
}
////////////////////////////////////////// Lvls 6-10
if (iRange == 2)
{
//:: Ability bonus &/or AC Bonus
iRoll = d100();
if (iRoll > 60)
{
DelayCommand(0.2, ACmisc(oItem, iRange));
++iQual;
}
iRoll = d100();
if (iRoll > 60)
{
//:: Ability bonus
iRoll = d100();
if (iRoll > 60)
{
DelayCommand(0.2, AbilityImbue(oItem, iRange));
++iQual;
}
//:: Rings ONLY
if (iID==2)
{
if (iID == 2)
{
iRoll = d100();
if (iRoll > 94) //:: 5% Chance for Divinty / Wizardry
{
@ -3696,15 +3681,17 @@ void DropMagicItem (object oMob, object oSack, int iRange, int SockChance, int i
}
}
else
{//:: Else, Saving Throw bonuses
{
//:: Saving Throw bonus
iRoll = d100();
if (iRoll > 89)
DelayCommand(0.2, SaveImbue(oItem, iRange));
++iQual;
}
}
if (iRoll>90)
{
DelayCommand(0.2, SaveImbue(oItem, iRange));
++iQual;
}
}
}
////////////////////////////////////////// Lvls 11-20
if (iRange == 3)
@ -3723,7 +3710,7 @@ void DropMagicItem (object oMob, object oSack, int iRange, int SockChance, int i
++iQual;
}
//:: Rings ONLY
if (iID==2)
if (iID == 2)
{
iRoll = d100();
if (iRoll > 89) //:: 10% Chance for Divinty / Wizardry
@ -3748,7 +3735,7 @@ void DropMagicItem (object oMob, object oSack, int iRange, int SockChance, int i
}
}
else
{//:: Misc Immunity
{//:: Misc Bonus
iRoll = d100();
if (iRoll > 80)
{
@ -3935,7 +3922,7 @@ void DropMagicItem (object oMob, object oSack, int iRange, int SockChance, int i
++iQual;
}
}
switch(iQual)
{
case 1: sName = ColorString("Magical "+sIName,255, 255, 255); break;
@ -4739,7 +4726,16 @@ void DropWeapon (object oMob, object oSack, int iRange, int SockChance, int iChe
if (iRoll==2)sIName = "Twin Sabre";
if (iRoll==3)sIName = "Double Shamshir";
}
break;
break;
case 55:
{ //:: Sling
iWType = 1;
sType = "sdsling"; iRoll = d3();
if (iRoll==1)sIName = "Sling";
if (iRoll==2)sIName = "Strap";
if (iRoll==3)sIName = "Funda";
}
break;
}
//:: Chance for socketed item
@ -4787,14 +4783,14 @@ void DropWeapon (object oMob, object oSack, int iRange, int SockChance, int iChe
SetIdentified(oItem, FALSE);
//////////////////////////////////////////// Lvls 1-5 ::Ranged::
//////////////////////////////////////////// Lvls 1-5 ::Ranged::
//:: Attack bonus
DelayCommand(0.2, BowEnhance(oItem, iRange));
++iQual;
////////////////////////////////////////// Lvls 6-10 ::Ranged::
////////////////////////////////////////// Lvls 6-10 ::Ranged::
if (iRange==2)
{
@ -4807,28 +4803,28 @@ void DropWeapon (object oMob, object oSack, int iRange, int SockChance, int iChe
}
//:: Massive Crits
iRoll = d100();
if (iRoll>70)
if (iRoll > 70)
{
DelayCommand(0.2, MassCritImbue(oItem, iRange));
++iQual;
}
//:: Mighty
iRoll = d100();
if (iRoll>70)
if (iRoll > 70)
{
DelayCommand(0.2, MightyEnhance(oItem, iRange));
++iQual;
}
//:: Haste
iRoll = d100();
if (iRoll==95)
if (iRoll >= 98)
{
DelayCommand(0.2, HasteImbue(oItem));
iQual+=2;
}
}
////////////////////////////////////////// Lvls 11-20 ::Ranged::
////////////////////////////////////////// Lvls 11-20 ::Ranged::
if (iRange==3)
{
@ -4876,7 +4872,7 @@ void DropWeapon (object oMob, object oSack, int iRange, int SockChance, int iChe
}
}
////////////////////////////////////////// Lvls 20-30 ::Ranged::
////////////////////////////////////////// Lvls 20-30 ::Ranged::
if (iRange==4)
{
@ -5409,7 +5405,15 @@ void DropWeapon (object oMob, object oSack, int iRange, int SockChance, int iChe
//:: Enhancement bonus
DelayCommand(0.2, WeapEnhance(oItem, iRange));
++iQual;
switch (iRange)
{
case 1: iQual+=1;
case 2: iQual+=1;
case 3: iQual+=2;
case 4: iQual+=2;
case 5: iQual+=3;
}
////////////////////////////////////////// Lvls 6-10 ::Melee::
@ -5901,42 +5905,35 @@ void DropAmmo (object oMob, object oSack, int iRange)
{
object oItem;
string sType, sName, sIName;
int iRoll = d4();
int iRoll = d3();
int iQual;
int iStack = d10()*9;
int iStack = d12()*5;
switch(iRoll)
{
//:: Ammo
case 1: {sType = "sdarrow"; iRoll = d3();
if (iRoll==1)sIName = "Arrow";
if (iRoll==2)sIName = "Steel Arrow";
if (iRoll==3)sIName = "Wind Cutter";}
if (iRoll==2)sIName = "Sagitta";
if (iRoll==3)sIName = "War Arrow";}
break;
case 2: {sType = "sdbolt"; iRoll = d3();
if (iRoll==1)sIName = "Bolt";
if (iRoll==2)sIName = "Deathpin";
if (iRoll==3)sIName = "Air Lance";}
if (iRoll==2)sIName = "Shaft";
if (iRoll==3)sIName = "Quarrel";}
break;
case 3: {sType = "sdarrow"; iRoll = d3();
if (iRoll==1)sIName = "Air Assassin";
if (iRoll==2)sIName = "Pegasus Horn";
if (iRoll==3)sIName = "Blood Seeker";}
break;
case 4: {sType = "sdbolt"; iRoll = d3();
if (iRoll==1)sIName = "Steel Bolt";
if (iRoll==2)sIName = "Stinger";
if (iRoll==3)sIName = "Blood Sparrow";}
case 3: {sType = "sdbullet"; iRoll = d3();
if (iRoll==1)sIName = "Bullet";
if (iRoll==2)sIName = "Slug";
if (iRoll==3)sIName = "Stone";}
break;
}
oItem = CreateItemOnObject(sType, oSack, iStack);
//:: Ammo
iRoll = d100();
if (iRoll<=10) // 10% chance of worn item ::Ammo::
if (iRoll <= 10) // 10% chance of worn item ::Ammo::
{
sName = ColorString("Worn "+sIName, 192, 192, 192);
SetName(oItem, sName);
@ -5947,7 +5944,14 @@ void DropAmmo (object oMob, object oSack, int iRange)
//////////////////////////////////////////// Lvls 1-5 ::Ammo::
if (iRange==1)
{
//:: Damage bonus
DelayCommand(0.2, DamageTypeImbue(oItem, iRange));
++iQual;
//++iQual; // Debugging
}
////////////////////////////////////////// Lvls 6-10 ::Ammo::
@ -6609,17 +6613,21 @@ void DropEpicSpellBook(object oMob, object oSack)
void sd_droploot (object oMob, object oSack)
{
object oPC = GetLastKiller();
effect eVFX = EffectVisualEffect(VFX_IMP_REMOVE_CONDITION);
effect eDust = EffectVisualEffect(VFX_IMP_DUST_EXPLOSION);
effect eLink = EffectLinkEffects(eVFX, eDust);
object oKiller = GetLastKiller();
//effect eVFX = EffectVisualEffect(VFX_IMP_REMOVE_CONDITION);
//effect eDust = EffectVisualEffect(VFX_IMP_DUST_EXPLOSION);
effect eLink /* = EffectLinkEffects(eVFX, eDust) */;
// no loot if killed in stonewatch
// no loot if spawned in Ascension
// chances are it was an uber guard
// and not the PC that did the killing.
// This is to prevent easy looting higher mobs
if (GetTag(GetArea(oMob))=="Stonewatch")return;
if (GetTag(GetArea(oMob))=="TownofAscension") return;
if (GetTag(GetArea(oMob))=="TrespassersTavern") return;
if (GetClassByPosition(1, oMob) == CLASS_TYPE_COMMONER) return;
// animals dont usually carry wares - but you can skin em!
// This is to prevent tiny rats dropping full plate mail - can't have that!
@ -6639,10 +6647,10 @@ void sd_droploot (object oMob, object oSack)
if (iDiff==2)lMod = DROP_RATE;
// Make monk gloves a rare drop except when the player is a lvl 5+ monk
if (GetHasFeat(FEAT_SUPERIOR_UNARMED_STRIKE, oPC)) mMod = 4;
if (GetHasFeat(FEAT_SUPERIOR_UNARMED_STRIKE, oKiller)) mMod = 4;
if (GetLevelByClass(CLASS_TYPE_MONK, oPC)>5||
GetLevelByClass(CLASS_TYPE_MONK, GetMaster(oPC))>5)mMod = 8;
if (GetLevelByClass(CLASS_TYPE_MONK, oKiller)>5||
GetLevelByClass(CLASS_TYPE_MONK, GetMaster(oKiller))>5)mMod = 8;
else mMod=lMod-1;
@ -6656,7 +6664,7 @@ void sd_droploot (object oMob, object oSack)
int MItemChance = 1; // % chance to drop a magic item
int RodWandChance = 1; // % chance to drop a wand/rod item
int AmmoChance = 1; // % chance to drop a bolt or an arrow
int GoldChance = 8; // % chance to drop some gold
int GoldChance = 0; // % chance to drop some gold
int PotChance = 1; // % chance to drop a potion
int ScrollChance = 1; // % chance to drop a magic scroll
int GemChance = lMod; // % chance to drop a socket gem
@ -6714,7 +6722,7 @@ void sd_droploot (object oMob, object oSack)
}
if (iDice<GoldChance+1)
{
FloatingTextStringOnCreature("Your defeated foe has dropped gold!", oPC);
FloatingTextStringOnCreature("Your defeated foe has dropped gold!", oKiller);
}
if (iDice<GoldChance+1)
{
@ -6729,7 +6737,7 @@ void sd_droploot (object oMob, object oSack)
}
if (iDice<RodWandChance+1)
{
FloatingTextStringOnCreature("Your defeated foe has dropped a wand!", oPC);
FloatingTextStringOnCreature("Your defeated foe has dropped a wand!", oKiller);
}
if (iDice<RodWandChance+1)
{
@ -6745,29 +6753,29 @@ void sd_droploot (object oMob, object oSack)
if (iDice < WeapChance+1)
{
DropWeapon(oMob, oSack, iRange, SockChance, DamBroke);
FloatingTextStringOnCreature("Your defeated foe has dropped a weapon!", oPC);
FloatingTextStringOnCreature("Your defeated foe has dropped a weapon!", oKiller);
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eLink, GetLocation(oSack));
}
//:: Monk Gloves Roll
iDice = d100();
if (iDice<MonkChance+1)
if (iDice<MonkChance + 1)
{
DropMonkGloves(oMob, oSack, iRange, SockChance, DamBroke);
FloatingTextStringOnCreature("Your defeated foe has dropped gloves!", oPC);
FloatingTextStringOnCreature("Your defeated foe has dropped gloves!", oKiller);
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eLink, GetLocation(oSack));
}
//:: Armor or shield Roll
iDice = d100();
if (iDice < ArmorChance+1)
if (iDice < ArmorChance + 1)
{
iDice = d100();
if (iDice>59)DropShield(oMob, oSack, iRange, SockChance, DamBroke);
else DropArmor(oMob, oSack, iRange, SockChance, DamBroke);
if (iDice<ArmorChance+1) FloatingTextStringOnCreature("Your defeated foe has dropped armor!", oPC);
if (iDice<ArmorChance+1) FloatingTextStringOnCreature("Your defeated foe has dropped armor!", oKiller);
if (iDice<ArmorChance+1) ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eLink, GetLocation(oSack));
if (iDice>59) FloatingTextStringOnCreature("Your defeated foe has dropped armour!", oPC);
if (iDice>59) FloatingTextStringOnCreature("Your defeated foe has dropped armour!", oKiller);
if (iDice>59) ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eLink, GetLocation(oSack));
}
@ -6776,7 +6784,7 @@ void sd_droploot (object oMob, object oSack)
if (iDice < MItemChance + 1)
{
DropMagicItem(oMob, oSack, iRange, SockChance, DamBroke);
FloatingTextStringOnCreature("Your defeated foe has dropped a magic item!", oPC);
FloatingTextStringOnCreature("Your defeated foe has dropped a magic item!", oKiller);
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eLink, GetLocation(oSack));
}
@ -6785,7 +6793,7 @@ void sd_droploot (object oMob, object oSack)
if (iDice < MiscChance + 1)
{
DropMisc(oMob, oSack);
FloatingTextStringOnCreature("Your defeated foe has dropped an artifact!", oPC);
FloatingTextStringOnCreature("Your defeated foe has dropped an artifact!", oKiller);
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eLink, GetLocation(oSack));
}
@ -6794,7 +6802,7 @@ void sd_droploot (object oMob, object oSack)
if (iDice < AmmoChance + 1)
{
DropAmmo(oMob, oSack, iRange);
FloatingTextStringOnCreature("Your defeated foe has dropped ranged ammunition!", oPC);
FloatingTextStringOnCreature("Your defeated foe has dropped ranged ammunition!", oKiller);
}
//:: Potion Roll
@ -6802,7 +6810,7 @@ void sd_droploot (object oMob, object oSack)
if (iDice < PotChance + 1)
{
DropPotion(oMob, oSack);
FloatingTextStringOnCreature("Your defeated foe has dropped a potion!", oPC);
FloatingTextStringOnCreature("Your defeated foe has dropped a potion!", oKiller);
}
//:: Scroll Roll
@ -6810,7 +6818,7 @@ void sd_droploot (object oMob, object oSack)
if (iDice < ScrollChance + 1)
{
DropScroll(oMob, oSack, iRange);
FloatingTextStringOnCreature("Your defeated foe has dropped a scroll!", oPC);
FloatingTextStringOnCreature("Your defeated foe has dropped a scroll!", oKiller);
}
//:: Alchemical Item Roll
@ -6827,7 +6835,7 @@ void sd_droploot (object oMob, object oSack)
if (iDice < EpicSpellSeedChance + 1)
{
DropEpicSpellSeed(oMob, oSack);
FloatingTextStringOnCreature("Your defeated foe has dropped an epic spell seed!", oPC);
FloatingTextStringOnCreature("Your defeated foe has dropped an epic spell seed!", oKiller);
}
}
@ -6838,14 +6846,14 @@ void sd_droploot (object oMob, object oSack)
if (iDice < EpicSpellBookChance + 1)
{
DropEpicSpellBook(oMob, oSack);
FloatingTextStringOnCreature("Your defeated foe has dropped an epic spell book!", oPC);
FloatingTextStringOnCreature("Your defeated foe has dropped an epic spell book!", oKiller);
}
}
}
void sd_dropboss(object oMob, object oSack)
{
object oPC = GetLastKiller();
object oKiller = GetLastKiller();
//:: Early exit if mob is killed in Stonewatch to prevent looting high-end mobs easily
if (GetTag(GetArea(oMob)) == "Stonewatch") return;
@ -6860,7 +6868,7 @@ void sd_dropboss(object oMob, object oSack)
if(iDiff > 0) lMod = DROP_RATE; // No change needed if not default because all set to same
//:: Make monk gloves a rare drop unless the player/Master is a lvl 5+ monk
if (GetLevelByClass(CLASS_TYPE_MONK, oPC) > 5 || GetLevelByClass(CLASS_TYPE_MONK, GetMaster(oPC)) > 5)
if (GetLevelByClass(CLASS_TYPE_MONK, oKiller) > 5 || GetLevelByClass(CLASS_TYPE_MONK, GetMaster(oKiller)) > 5)
mMod = 8;
else
mMod = lMod - 1;
@ -6993,7 +7001,7 @@ void sd_dropboss(object oMob, object oSack)
void wk_chestloot (object oSack)
{
object oPC = GetLastUsedBy();
object oKiller = GetLastUsedBy();
object oMob = GetLastUsedBy();
/////////////////////////////////////////
//::Droprate config::
@ -7102,7 +7110,7 @@ void wk_chestloot (object oSack)
void hy_barrelloot (object oSack)
{
object oPC = GetLastUsedBy();
object oKiller = GetLastUsedBy();
object oMob = GetLastUsedBy();
/////////////////////////////////////////
//::Droprate config::
@ -7155,7 +7163,7 @@ void hy_barrelloot (object oSack)
void hy_bookcaseloot (object oSack)
{
object oPC = GetLastUsedBy();
object oKiller = GetLastUsedBy();
object oMob = GetLastUsedBy();
/////////////////////////////////////////
//::Droprate config::
@ -7199,4 +7207,4 @@ void hy_bookcaseloot (object oSack)
///////////////////////////
//: For test compiling only
//:: void main(){}
//::void main(){}

@ -0,0 +1,9 @@
int StartingConditional()
{
int skullkeep =GetCampaignInt("SK_Factions", "Skullkeep", GetPCSpeaker());
if (skullkeep < -5001)
return TRUE;
return FALSE;
}

@ -0,0 +1,81 @@
{
"__data_type": "UTI ",
"AddCost": {
"type": "dword",
"value": 0
},
"BaseItem": {
"type": "int",
"value": 21
},
"Charges": {
"type": "byte",
"value": 0
},
"Comment": {
"type": "cexostring",
"value": ""
},
"Cost": {
"type": "dword",
"value": 1
},
"Cursed": {
"type": "byte",
"value": 0
},
"DescIdentified": {
"type": "cexolocstring",
"value": {
"0": "A special belt, used by those in the magical crafting trade, which can be used to store a single item property. "
}
},
"Description": {
"type": "cexolocstring",
"value": {
"0": ""
}
},
"Identified": {
"type": "byte",
"value": 1
},
"LocalizedName": {
"type": "cexolocstring",
"value": {
"0": "Crafting Belt"
}
},
"ModelPart1": {
"type": "byte",
"value": 1
},
"PaletteID": {
"type": "byte",
"value": 53
},
"Plot": {
"type": "byte",
"value": 0
},
"PropertiesList": {
"type": "list",
"value": []
},
"StackSize": {
"type": "word",
"value": 1
},
"Stolen": {
"type": "byte",
"value": 1
},
"Tag": {
"type": "cexostring",
"value": "craftingbelt"
},
"TemplateResRef": {
"type": "resref",
"value": "craftingbelt"
}
}

@ -0,0 +1,105 @@
{
"__data_type": "UTI ",
"AddCost": {
"type": "dword",
"value": 0
},
"BaseItem": {
"type": "int",
"value": 80
},
"Charges": {
"type": "byte",
"value": 0
},
"Cloth1Color": {
"type": "byte",
"value": 7
},
"Cloth2Color": {
"type": "byte",
"value": 7
},
"Comment": {
"type": "cexostring",
"value": ""
},
"Cost": {
"type": "dword",
"value": 1
},
"Cursed": {
"type": "byte",
"value": 0
},
"DescIdentified": {
"type": "cexolocstring",
"value": {
"0": "Not much more than a draping of cloth, these are woven of a specially infused thread that allows the warp and weft to contain the essences of distilled items. They are useful only to the magical crafting process."
}
},
"Description": {
"type": "cexolocstring",
"value": {
"0": ""
}
},
"Identified": {
"type": "byte",
"value": 1
},
"Leather1Color": {
"type": "byte",
"value": 88
},
"Leather2Color": {
"type": "byte",
"value": 88
},
"LocalizedName": {
"type": "cexolocstring",
"value": {
"0": "Crafting Cloak"
}
},
"Metal1Color": {
"type": "byte",
"value": 0
},
"Metal2Color": {
"type": "byte",
"value": 0
},
"ModelPart1": {
"type": "byte",
"value": 3
},
"PaletteID": {
"type": "byte",
"value": 53
},
"Plot": {
"type": "byte",
"value": 0
},
"PropertiesList": {
"type": "list",
"value": []
},
"StackSize": {
"type": "word",
"value": 1
},
"Stolen": {
"type": "byte",
"value": 1
},
"Tag": {
"type": "cexostring",
"value": "craftingcloak"
},
"TemplateResRef": {
"type": "resref",
"value": "craftingcloak"
}
}

@ -0,0 +1,89 @@
{
"__data_type": "UTI ",
"AddCost": {
"type": "dword",
"value": 0
},
"BaseItem": {
"type": "int",
"value": 22
},
"Charges": {
"type": "byte",
"value": 0
},
"Comment": {
"type": "cexostring",
"value": ""
},
"Cost": {
"type": "dword",
"value": 4
},
"Cursed": {
"type": "byte",
"value": 0
},
"DescIdentified": {
"type": "cexolocstring",
"value": {
"0": "Created as a by-product of the smithing craft, these daggers act as a storage matrix for the energies needed to enchant melee weapons."
}
},
"Description": {
"type": "cexolocstring",
"value": {
"0": ""
}
},
"Identified": {
"type": "byte",
"value": 1
},
"LocalizedName": {
"type": "cexolocstring",
"value": {
"0": "Crafting Dagger"
}
},
"ModelPart1": {
"type": "byte",
"value": 52
},
"ModelPart2": {
"type": "byte",
"value": 62
},
"ModelPart3": {
"type": "byte",
"value": 52
},
"PaletteID": {
"type": "byte",
"value": 53
},
"Plot": {
"type": "byte",
"value": 0
},
"PropertiesList": {
"type": "list",
"value": []
},
"StackSize": {
"type": "word",
"value": 1
},
"Stolen": {
"type": "byte",
"value": 1
},
"Tag": {
"type": "cexostring",
"value": "craftingdagger"
},
"TemplateResRef": {
"type": "resref",
"value": "craftingdagger"
}
}

@ -0,0 +1,79 @@
{
"__data_type": "UTI ",
"AddCost": {
"type": "dword",
"value": 0
},
"BaseItem": {
"type": "int",
"value": 31
},
"Charges": {
"type": "byte",
"value": 0
},
"Comment": {
"type": "cexostring",
"value": ""
},
"Cost": {
"type": "dword",
"value": 0
},
"Cursed": {
"type": "byte",
"value": 0
},
"DescIdentified": {
"type": "cexolocstring",
"value": {
"0": "A specialized dart that contains the distilled essence of a magical item. Each dart has a single property imbued within it, and though stackable, they should be separated to be more easily managed."
}
},
"Description": {
"type": "cexolocstring",
"value": {}
},
"Identified": {
"type": "byte",
"value": 1
},
"LocalizedName": {
"type": "cexolocstring",
"value": {
"0": "Crafting Dart"
}
},
"ModelPart1": {
"type": "byte",
"value": 13
},
"PaletteID": {
"type": "byte",
"value": 53
},
"Plot": {
"type": "byte",
"value": 0
},
"PropertiesList": {
"type": "list",
"value": []
},
"StackSize": {
"type": "word",
"value": 50
},
"Stolen": {
"type": "byte",
"value": 1
},
"Tag": {
"type": "cexostring",
"value": "craftingdart"
},
"TemplateResRef": {
"type": "resref",
"value": "craftingdart"
}
}

@ -0,0 +1,89 @@
{
"__data_type": "UTI ",
"AddCost": {
"type": "dword",
"value": 0
},
"BaseItem": {
"type": "int",
"value": 22
},
"Charges": {
"type": "byte",
"value": 0
},
"Comment": {
"type": "cexostring",
"value": ""
},
"Cost": {
"type": "dword",
"value": 4
},
"Cursed": {
"type": "byte",
"value": 0
},
"DescIdentified": {
"type": "cexolocstring",
"value": {
"0": "A throwing dagger, this item is specially enchanted to allow properties from the magical crafting forges to be placed upon it."
}
},
"Description": {
"type": "cexolocstring",
"value": {
"0": ""
}
},
"Identified": {
"type": "byte",
"value": 1
},
"LocalizedName": {
"type": "cexolocstring",
"value": {
"0": "Crafting Dirk"
}
},
"ModelPart1": {
"type": "byte",
"value": 52
},
"ModelPart2": {
"type": "byte",
"value": 32
},
"ModelPart3": {
"type": "byte",
"value": 12
},
"PaletteID": {
"type": "byte",
"value": 53
},
"Plot": {
"type": "byte",
"value": 0
},
"PropertiesList": {
"type": "list",
"value": []
},
"StackSize": {
"type": "word",
"value": 1
},
"Stolen": {
"type": "byte",
"value": 1
},
"Tag": {
"type": "cexostring",
"value": "craftingdirk"
},
"TemplateResRef": {
"type": "resref",
"value": "craftingdirk"
}
}

@ -0,0 +1,81 @@
{
"__data_type": "UTI ",
"AddCost": {
"type": "dword",
"value": 0
},
"BaseItem": {
"type": "int",
"value": 52
},
"Charges": {
"type": "byte",
"value": 0
},
"Comment": {
"type": "cexostring",
"value": ""
},
"Cost": {
"type": "dword",
"value": 1
},
"Cursed": {
"type": "byte",
"value": 0
},
"DescIdentified": {
"type": "cexolocstring",
"value": {
"0": "A ring of a silvered alloy, this device is useful as a magical tool, and nothing else. The alloy allows the ring to store the essence of a magical property, thus aiding the crafting of various magic items."
}
},
"Description": {
"type": "cexolocstring",
"value": {
"0": ""
}
},
"Identified": {
"type": "byte",
"value": 1
},
"LocalizedName": {
"type": "cexolocstring",
"value": {
"0": "Crafting Ring"
}
},
"ModelPart1": {
"type": "byte",
"value": 11
},
"PaletteID": {
"type": "byte",
"value": 53
},
"Plot": {
"type": "byte",
"value": 0
},
"PropertiesList": {
"type": "list",
"value": []
},
"StackSize": {
"type": "word",
"value": 1
},
"Stolen": {
"type": "byte",
"value": 1
},
"Tag": {
"type": "cexostring",
"value": "craftingring"
},
"TemplateResRef": {
"type": "resref",
"value": "craftingring"
}
}

@ -0,0 +1,83 @@
{
"__data_type": "UTI ",
"AddCost": {
"type": "dword",
"value": 0
},
"BaseItem": {
"type": "int",
"value": 14
},
"Charges": {
"type": "byte",
"value": 0
},
"Comment": {
"type": "cexostring",
"value": "1"
},
"Cost": {
"type": "dword",
"value": 9
},
"Cursed": {
"type": "byte",
"value": 0
},
"DescIdentified": {
"type": "cexolocstring",
"value": {
"0": "A shield made of specialized wood construction, these are useful only in the manufacture of armors and gear during the magical forging process.",
"id": 12863
}
},
"Description": {
"type": "cexolocstring",
"value": {
"0": ""
}
},
"Identified": {
"type": "byte",
"value": 1
},
"LocalizedName": {
"type": "cexolocstring",
"value": {
"0": "Crafting Shield",
"id": 12876
}
},
"ModelPart1": {
"type": "byte",
"value": 12
},
"PaletteID": {
"type": "byte",
"value": 53
},
"Plot": {
"type": "byte",
"value": 0
},
"PropertiesList": {
"type": "list",
"value": []
},
"StackSize": {
"type": "word",
"value": 1
},
"Stolen": {
"type": "byte",
"value": 1
},
"Tag": {
"type": "cexostring",
"value": "craftingshield"
},
"TemplateResRef": {
"type": "resref",
"value": "craftingshield"
}
}

@ -0,0 +1,81 @@
{
"__data_type": "UTI ",
"AddCost": {
"type": "dword",
"value": 0
},
"BaseItem": {
"type": "int",
"value": 61
},
"Charges": {
"type": "byte",
"value": 0
},
"Comment": {
"type": "cexostring",
"value": ""
},
"Cost": {
"type": "dword",
"value": 2
},
"Cursed": {
"type": "byte",
"value": 0
},
"DescIdentified": {
"type": "cexolocstring",
"value": {
"0": "A specialized sling, made of unknown leathers. Its unusual nature allows it to be used by magic smiths to store the properties of enchanted items, thereby facilitating the crafting process."
}
},
"Description": {
"type": "cexolocstring",
"value": {
"0": ""
}
},
"Identified": {
"type": "byte",
"value": 1
},
"LocalizedName": {
"type": "cexolocstring",
"value": {
"0": "Crafting Sling"
}
},
"ModelPart1": {
"type": "byte",
"value": 12
},
"PaletteID": {
"type": "byte",
"value": 53
},
"Plot": {
"type": "byte",
"value": 0
},
"PropertiesList": {
"type": "list",
"value": []
},
"StackSize": {
"type": "word",
"value": 1
},
"Stolen": {
"type": "byte",
"value": 1
},
"Tag": {
"type": "cexostring",
"value": "craftingsling"
},
"TemplateResRef": {
"type": "resref",
"value": "craftingsling"
}
}

@ -0,0 +1,81 @@
{
"__data_type": "UTI ",
"AddCost": {
"type": "dword",
"value": 0
},
"BaseItem": {
"type": "int",
"value": 24
},
"Charges": {
"type": "byte",
"value": 0
},
"Comment": {
"type": "cexostring",
"value": ""
},
"Cost": {
"type": "dword",
"value": 0
},
"Cursed": {
"type": "byte",
"value": 0
},
"DescIdentified": {
"type": "cexolocstring",
"value": {
"0": "A crystalline object, perhaps of some magical organic nature, upon which can be placed the distilled property of a magical item. They are useful in the manufacture of magic items."
}
},
"Description": {
"type": "cexolocstring",
"value": {
"0": ""
}
},
"Identified": {
"type": "byte",
"value": 1
},
"LocalizedName": {
"type": "cexolocstring",
"value": {
"0": "Crafting Stone"
}
},
"ModelPart1": {
"type": "byte",
"value": 56
},
"PaletteID": {
"type": "byte",
"value": 53
},
"Plot": {
"type": "byte",
"value": 0
},
"PropertiesList": {
"type": "list",
"value": []
},
"StackSize": {
"type": "word",
"value": 1
},
"Stolen": {
"type": "byte",
"value": 1
},
"Tag": {
"type": "cexostring",
"value": "craftingtoken"
},
"TemplateResRef": {
"type": "resref",
"value": "craftingtoken"
}
}

@ -0,0 +1,83 @@
{
"__data_type": "UTI ",
"AddCost": {
"type": "dword",
"value": 0
},
"BaseItem": {
"type": "int",
"value": 27
},
"Charges": {
"type": "byte",
"value": 0
},
"Comment": {
"type": "cexostring",
"value": "Dummy Bullet for loot generation system"
},
"Cost": {
"type": "dword",
"value": 0
},
"Cursed": {
"type": "byte",
"value": 0
},
"DescIdentified": {
"type": "cexolocstring",
"value": {}
},
"Description": {
"type": "cexolocstring",
"value": {
"0": ""
}
},
"Identified": {
"type": "byte",
"value": 1
},
"LocalizedName": {
"type": "cexolocstring",
"value": {
"0": "Bullet"
}
},
"ModelPart1": {
"type": "byte",
"value": 11
},
"PaletteID": {
"type": "byte",
"value": 1
},
"Plot": {
"type": "byte",
"value": 0
},
"PropertiesList": {
"type": "list",
"value": []
},
"StackSize": {
"type": "word",
"value": 99
},
"Stolen": {
"type": "byte",
"value": 0
},
"Tag": {
"type": "cexostring",
"value": "SDBULLET"
},
"TemplateResRef": {
"type": "resref",
"value": "sdbullet"
},
"xModelPart1": {
"type": "word",
"value": 11
}
}

@ -0,0 +1,83 @@
{
"__data_type": "UTI ",
"AddCost": {
"type": "dword",
"value": 0
},
"BaseItem": {
"type": "int",
"value": 61
},
"Charges": {
"type": "byte",
"value": 0
},
"Comment": {
"type": "cexostring",
"value": "Dummy sling for loot generation system."
},
"Cost": {
"type": "dword",
"value": 2
},
"Cursed": {
"type": "byte",
"value": 0
},
"DescIdentified": {
"type": "cexolocstring",
"value": {}
},
"Description": {
"type": "cexolocstring",
"value": {
"0": ""
}
},
"Identified": {
"type": "byte",
"value": 1
},
"LocalizedName": {
"type": "cexolocstring",
"value": {
"0": "Sling"
}
},
"ModelPart1": {
"type": "byte",
"value": 34
},
"PaletteID": {
"type": "byte",
"value": 1
},
"Plot": {
"type": "byte",
"value": 0
},
"PropertiesList": {
"type": "list",
"value": []
},
"StackSize": {
"type": "word",
"value": 1
},
"Stolen": {
"type": "byte",
"value": 0
},
"Tag": {
"type": "cexostring",
"value": "SDSLING"
},
"TemplateResRef": {
"type": "resref",
"value": "sdsling"
},
"xModelPart1": {
"type": "word",
"value": 34
}
}

@ -0,0 +1,219 @@
{
"__data_type": "UTP ",
"AnimationState": {
"type": "byte",
"value": 0
},
"Appearance": {
"type": "dword",
"value": 0
},
"AutoRemoveKey": {
"type": "byte",
"value": 0
},
"BodyBag": {
"type": "byte",
"value": 0
},
"CloseLockDC": {
"type": "byte",
"value": 0
},
"Comment": {
"type": "cexostring",
"value": ""
},
"Conversation": {
"type": "resref",
"value": ""
},
"CurrentHP": {
"type": "short",
"value": 10
},
"Description": {
"type": "cexolocstring",
"value": {
"0": ""
}
},
"DisarmDC": {
"type": "byte",
"value": 0
},
"Faction": {
"type": "dword",
"value": 1
},
"Fort": {
"type": "byte",
"value": 5
},
"Hardness": {
"type": "byte",
"value": 5
},
"HasInventory": {
"type": "byte",
"value": 1
},
"HP": {
"type": "short",
"value": 10
},
"Interruptable": {
"type": "byte",
"value": 1
},
"KeyName": {
"type": "cexostring",
"value": ""
},
"KeyRequired": {
"type": "byte",
"value": 0
},
"Lockable": {
"type": "byte",
"value": 0
},
"Locked": {
"type": "byte",
"value": 0
},
"LocName": {
"type": "cexolocstring",
"value": {
"0": "LOOT_GENERATOR"
}
},
"OnClick": {
"type": "resref",
"value": ""
},
"OnClosed": {
"type": "resref",
"value": ""
},
"OnDamaged": {
"type": "resref",
"value": ""
},
"OnDeath": {
"type": "resref",
"value": ""
},
"OnDisarm": {
"type": "resref",
"value": ""
},
"OnHeartbeat": {
"type": "resref",
"value": ""
},
"OnInvDisturbed": {
"type": "resref",
"value": ""
},
"OnLock": {
"type": "resref",
"value": ""
},
"OnMeleeAttacked": {
"type": "resref",
"value": ""
},
"OnOpen": {
"type": "resref",
"value": ""
},
"OnSpellCastAt": {
"type": "resref",
"value": ""
},
"OnTrapTriggered": {
"type": "resref",
"value": ""
},
"OnUnlock": {
"type": "resref",
"value": ""
},
"OnUsed": {
"type": "resref",
"value": ""
},
"OnUserDefined": {
"type": "resref",
"value": ""
},
"OpenLockDC": {
"type": "byte",
"value": 0
},
"PaletteID": {
"type": "byte",
"value": 0
},
"Plot": {
"type": "byte",
"value": 1
},
"PortraitId": {
"type": "word",
"value": 358
},
"Ref": {
"type": "byte",
"value": 0
},
"Static": {
"type": "byte",
"value": 0
},
"Tag": {
"type": "cexostring",
"value": "LOOT_GENERATOR"
},
"TemplateResRef": {
"type": "resref",
"value": "loot_generator"
},
"TrapDetectable": {
"type": "byte",
"value": 1
},
"TrapDetectDC": {
"type": "byte",
"value": 0
},
"TrapDisarmable": {
"type": "byte",
"value": 1
},
"TrapFlag": {
"type": "byte",
"value": 0
},
"TrapOneShot": {
"type": "byte",
"value": 1
},
"TrapType": {
"type": "byte",
"value": 0
},
"Type": {
"type": "byte",
"value": 0
},
"Useable": {
"type": "byte",
"value": 1
},
"Will": {
"type": "byte",
"value": 0
}
}

@ -0,0 +1,219 @@
{
"__data_type": "UTP ",
"AnimationState": {
"type": "byte",
"value": 4
},
"Appearance": {
"type": "dword",
"value": 842
},
"AutoRemoveKey": {
"type": "byte",
"value": 0
},
"BodyBag": {
"type": "byte",
"value": 0
},
"CloseLockDC": {
"type": "byte",
"value": 0
},
"Comment": {
"type": "cexostring",
"value": ""
},
"Conversation": {
"type": "resref",
"value": ""
},
"CurrentHP": {
"type": "short",
"value": 10
},
"Description": {
"type": "cexolocstring",
"value": {
"0": ""
}
},
"DisarmDC": {
"type": "byte",
"value": 0
},
"Faction": {
"type": "dword",
"value": 1
},
"Fort": {
"type": "byte",
"value": 5
},
"Hardness": {
"type": "byte",
"value": 5
},
"HasInventory": {
"type": "byte",
"value": 0
},
"HP": {
"type": "short",
"value": 10
},
"Interruptable": {
"type": "byte",
"value": 1
},
"KeyName": {
"type": "cexostring",
"value": ""
},
"KeyRequired": {
"type": "byte",
"value": 0
},
"Lockable": {
"type": "byte",
"value": 1
},
"Locked": {
"type": "byte",
"value": 0
},
"LocName": {
"type": "cexolocstring",
"value": {
"0": "Fire"
}
},
"OnClick": {
"type": "resref",
"value": ""
},
"OnClosed": {
"type": "resref",
"value": ""
},
"OnDamaged": {
"type": "resref",
"value": ""
},
"OnDeath": {
"type": "resref",
"value": ""
},
"OnDisarm": {
"type": "resref",
"value": ""
},
"OnHeartbeat": {
"type": "resref",
"value": ""
},
"OnInvDisturbed": {
"type": "resref",
"value": ""
},
"OnLock": {
"type": "resref",
"value": ""
},
"OnMeleeAttacked": {
"type": "resref",
"value": ""
},
"OnOpen": {
"type": "resref",
"value": ""
},
"OnSpellCastAt": {
"type": "resref",
"value": ""
},
"OnTrapTriggered": {
"type": "resref",
"value": ""
},
"OnUnlock": {
"type": "resref",
"value": ""
},
"OnUsed": {
"type": "resref",
"value": ""
},
"OnUserDefined": {
"type": "resref",
"value": ""
},
"OpenLockDC": {
"type": "byte",
"value": 0
},
"PaletteID": {
"type": "byte",
"value": 5
},
"Plot": {
"type": "byte",
"value": 1
},
"PortraitId": {
"type": "word",
"value": 508
},
"Ref": {
"type": "byte",
"value": 0
},
"Static": {
"type": "byte",
"value": 1
},
"Tag": {
"type": "cexostring",
"value": "VFX_PLC_FIRE"
},
"TemplateResRef": {
"type": "resref",
"value": "vfx_plc_fire"
},
"TrapDetectable": {
"type": "byte",
"value": 1
},
"TrapDetectDC": {
"type": "byte",
"value": 0
},
"TrapDisarmable": {
"type": "byte",
"value": 1
},
"TrapFlag": {
"type": "byte",
"value": 0
},
"TrapOneShot": {
"type": "byte",
"value": 1
},
"TrapType": {
"type": "byte",
"value": 0
},
"Type": {
"type": "byte",
"value": 0
},
"Useable": {
"type": "byte",
"value": 0
},
"Will": {
"type": "byte",
"value": 0
}
}

Binary file not shown.