Kexby Posted July 31, 2018 Posted July 31, 2018 You cannot use letters after F (hexadecimal) on uuid, thats why this is not going to work. Oops! I know nothing at all about GUIDs, so I just used the generator that Kilay linked for me. I'll try using the generator that Peardox uses.
Kexby Posted July 31, 2018 Posted July 31, 2018 Bummer! It still won't work. I changed the ID to ea4de19d-d80c-4e66-9e33-8818a1e038a3 (I kept generating numbers till I got one without any f's). I've just tested it again, but I'm getting the same error message
kilay Posted July 31, 2018 Posted July 31, 2018 You cannot use letters after F (hexadecimal) on uuid, thats why this is not going to work. Oops! I know nothing at all about GUIDs, so I just used the generator that Kilay linked for me. I'll try using the generator that Peardox uses. No, tt1 has asnwered to your fisrt quesion about "ID": "kex0e7a2-ec4f-4d5f-a436-53e26ed3e075" Your mod btw doesn't work cuz you used this command GiveItem 7af150f7-e979-43f1-9df1-3b58c90478b7 Instead use Giveitem Blunderbuss_U_BadAss 1 Random Reader'Plinio il Vecchio asseriva che un rimedio alla sbronza fosse quello di mangiare uova crude di gufo' I° secolo D.C. My Mods on Nexus Nexus Mods Translated to Italian Italian Localization Fix PATCH More Custom AI Conditions Enhanced UI - Afflictions and Inspirations Extended Spell TT1 Unique Items More Priest Subclasses_Ondra Hylea Abydon Channeler Cipher Subclass Are you looking for a group of modders ?Request an invite to our Slack group Do you need a mod? Fill this mod request
Kexby Posted July 31, 2018 Posted July 31, 2018 (edited) Lol I told you I know nothing about GUIDs, sorry TT1. Kilay I'm going to go try your solution: Giveitem Blunderbuss_U_BadAss *fingers crossed* Update: Nope, still no luck. It's still giving me the same error. I've really messed up somewhere. Edited July 31, 2018 by Kexby
house2fly Posted July 31, 2018 Posted July 31, 2018 (edited) When that happens with me it's mostly been a dangling bracket- search for {, }, [, and ] and check there's the same number of each. Also make sure the new UUID for the attack is attached to the weapon itself under "AttackID" and i THINK the AOE attack needs to be attached to the first attack under "ExtraAttackID". As far as I know there should be no problems if they're in the bundle but aren't being used, but you'll want to make sure all the UUIDs are lined up anyway for when you modify the attacks E: also you didn't paste from the forum into the file by any chance? In your post I see one entry that says "Require****Object" which should say "RequiresHitObject" but accidentally tripped the forum's swear filter. If that somehow made it into your bundle it'd mess it up Edited July 31, 2018 by house2fly 1
kilay Posted July 31, 2018 Posted July 31, 2018 (edited) Double post sorry Edited July 31, 2018 by kilay Random Reader'Plinio il Vecchio asseriva che un rimedio alla sbronza fosse quello di mangiare uova crude di gufo' I° secolo D.C. My Mods on Nexus Nexus Mods Translated to Italian Italian Localization Fix PATCH More Custom AI Conditions Enhanced UI - Afflictions and Inspirations Extended Spell TT1 Unique Items More Priest Subclasses_Ondra Hylea Abydon Channeler Cipher Subclass Are you looking for a group of modders ?Request an invite to our Slack group Do you need a mod? Fill this mod request
kilay Posted July 31, 2018 Posted July 31, 2018 Lol I told you I know nothing about GUIDs, sorry TT1. Kilay I'm going to go try your solution: Giveitem Blunderbuss_U_BadAss *fingers crossed* Update: Nope, still no luck. It's still giving me the same error. I've really messed up somewhere. Use Notepad ++ This is really comfortable to check gamedatabundle , before you need to convert the bundle in json format with some plugin ( I use JSTool ) Random Reader'Plinio il Vecchio asseriva che un rimedio alla sbronza fosse quello di mangiare uova crude di gufo' I° secolo D.C. My Mods on Nexus Nexus Mods Translated to Italian Italian Localization Fix PATCH More Custom AI Conditions Enhanced UI - Afflictions and Inspirations Extended Spell TT1 Unique Items More Priest Subclasses_Ondra Hylea Abydon Channeler Cipher Subclass Are you looking for a group of modders ?Request an invite to our Slack group Do you need a mod? Fill this mod request
Kexby Posted July 31, 2018 Posted July 31, 2018 (edited) Yep, I'm using Notepad++ and JSTool as well Anyway, I just copied the code into that JSON Validator and I got this message: Error: Parse error on line 230:...ype": "Pistol" }]}, { "$type": "Game.---------------------^Expecting 'EOF', got ',' So there is a problem. But I have no idea what it means. I took a screenshot of it: https://imgur.com/a/LBtftpj I think house2fly might be right, I think I have too many curly brackets or something. I just hope somebody with more knowledge than me can see what the problem is and tell me how to fix it. Update: OMG! I think I found the problem, I looked through attacks.gamedatabundle again and realized I missed a section of the code when I copied and pasted it I've just redone it and this time the validator says it's valid. Phew! I'm off to test it again. Edited August 2, 2018 by Kexby
house2fly Posted July 31, 2018 Posted July 31, 2018 Hit Ctrl+F in Notepad++ and the Find menu includes a "count" option. Looks like you've got one } and one ] too many. I THINK they're both in the AttackFirearmComponent, which in your code above is looking like this: { "$type": "Game.GameData.AttackFirearmComponent, Assembly-CSharp", "ClipSize": 1, "ReloadTime": 5, "ReloadAnimationEndTime": 1.67, "FirearmType": "Pistol" } ] },I think it should only need to look like this: { "$type": "Game.GameData.AttackFirearmComponent, Assembly-CSharp", "ClipSize": 1, "ReloadTime": 5, "ReloadAnimationEndTime": 1.67, "FirearmType": "Pistol" },
peardox Posted July 31, 2018 Author Posted July 31, 2018 Member of Slack team now... OK Fair warning has been applied I'm gonna move the domain to https://perspak.com early Feb but will keep all content There are reasons behind this move which basically boil down to unifying my release schedule My friends are welcome to play (I'll set you up your own areas if you desire them) Please note that this process is messy so may take a few weeks
peardox Posted July 31, 2018 Author Posted July 31, 2018 Note that the VERY FINAL object wants to omit the "," or it's junk json 1 OK Fair warning has been applied I'm gonna move the domain to https://perspak.com early Feb but will keep all content There are reasons behind this move which basically boil down to unifying my release schedule My friends are welcome to play (I'll set you up your own areas if you desire them) Please note that this process is messy so may take a few weeks
Kexby Posted July 31, 2018 Posted July 31, 2018 (edited) I can't thank you guys enough! You are brilliant! IT"S WORKING! Wow! That took a bit of effort, but I've learned so much from this exercise. Apologies to Peardox (I've kind of hijacked your thread). But if anybody else is trying to make their own custom weapon, then I hope my ramblings are useful. Right! On to Step 3 (making this weapon ridiculously overpowered ). Actually, before I do that, I think I'll upload it here. Not just as my own backup, but in case anybody would like to see what I've done so far (before I go crazy). Edit: The forum doesn't like me. It won't let me attach a file Edited July 31, 2018 by Kexby 1
Kexby Posted August 1, 2018 Posted August 1, 2018 I just can't win. I've made my changes. But they don't show up in game. I set the Attack Distance to 88 The Accuracy Bonus to 666 The Penetration to 666 The min and max damage to 666 The Reload time to 2 The Blast Size to Large I gave myself the item with the console and although it says it's called BadAss, the stats are still the same as the original blunderbuss. Here is the gamedatabundle file: { "GameDataObjects": [{ "$type": "Game.GameData.WeaponGameData, Assembly-CSharp", "DebugName": "Blunderbuss_U_BadAss", "ID": "ea4de19d-d80c-4e66-9e33-8818a1e038a3", "Components": [{ "$type": "Game.GameData.ItemComponent, Assembly-CSharp", "DisplayName": 66650, "DescriptionText": 66651, "FilterType": "Weapons", "InventoryAudioEventListID": "57518815-1aa8-49c2-8ee0-0d361b26fd66", "IsQuestItem": "false", "IsIngredient": "false", "IsCurrency": "false", "IsAdventuringItem": "false", "CanSellForFullValue": "false", "MaxStackSize": 1, "NeverDropAsLoot": "false", "CanBePickpocketed": "true", "IsUnique": "true", "Value": 35, "IconTextureSmall": "gui/icons/items/weapons/blunderbuss/blunderbuss_01_s.png", "IconTextureLarge": "gui/icons/items/weapons/blunderbuss/blunderbuss_01_l.png", "PencilSketchTexture": "", "InspectOnUseButton": [], "IsPlaceholder": "false" }, { "$type": "Game.GameData.EquippableComponent, Assembly-CSharp", "EquipmentType": "Blunderbuss", "EquipmentSlot": "AnyWeapon", "AppearancePiece": { "ModelVisualDataPath": "prefabs/items/appearance/weapons/blunderbuss/a_blunderbuss03_v01.asset" }, "ItemModsIDs": ["fea57a9e-7dc1-4f66-8617-1e2f87c0f376", "7d7b81f7-7322-441f-a366-5d15d30379f5", "2dcb5f72-2a69-45c6-a438-3e93a58459a5"], "OnEquipVisualEffects": [], "RestrictedToClass": [], "RestrictedToPlayer": "false", "ProficientAbilityID": "f5a2eb61-8c11-41ab-9832-5ad182e5b368", "CannotUnequip": "false", "ItemRendererPrefab": "prefabs/itemrenderers/genericanimateditemrenderer.prefab", "ItemModel": "", "AnimationController": "art/animation/animationcontrollers/weapon/w_pistol.controller", "PaperdollOverrideRenderer": "", "AttackSummonID": "00000000-0000-0000-0000-000000000000", "CannotSheathe": "false", "PropVisualEffects": [] }, { "$type": "Game.GameData.WeaponComponent, Assembly-CSharp", "Stance": "OneHanded", "AnimationStanceID": "ddeda306-872b-4d63-8032-fbaf359d0ed2", "StatusEffectsOnLaunchIDs": [], "IsDisplayedWhenAlternate": "true", "IsUniversalType": "false", "AttackID": "2af49303-b215-42aa-b933-7b0497a1c19d", "NoiseLevelID": "6bfdad12-a1d0-42cc-b797-c9d2dac2af05", "ForceBackScabbard": "false", "ScabbardAppearancePiece": { "ModelVisualDataPath": "" }, "ScabbardRendererPrefab": "", "ScabbardModel": "", "AudioEventListID": "00000000-0000-0000-0000-000000000000" } ] },{ "$type": "Game.GameData.AttackFirearmGameData, Assembly-CSharp", "DebugName": "Blunderbuss_BadAss", "ID": "75e41a87-9eb2-4062-8127-f8f2b121a9e3", "Components": [{ "$type": "Game.GameData.AttackBaseComponent, Assembly-CSharp", "KeywordsIDs": ["f25230f4-fca2-44af-b745-03f026152459", "1b6d77c8-1155-4d49-9c7c-548716f0d409"], "AttackDistance": 88, "MinAttackDistance": 0, "AttackVariationID": "7da22f9e-cd53-4546-86cc-c2d150df72cb", "CastSpeedID": "eacb53e3-6eb5-422a-92ca-99cc883ae4a9", "RecoveryTimeID": "039ef4b4-eeb3-42d3-9817-a8df05c53515", "ImpactDelay": 0, "ForcedTarget": "None", "AffectedTargetType": "All", "AffectedTargetConditional": { "Conditional": { "Operator": 0, "Components": [] } }, "AffectedTargetDeathState": "Alive", "HostilityOverride": "Default", "PushDistance": 0, "FaceTarget": "true", "AccuracyBonus": 666, "PenetrationRating": 666, "DamageData": { "DamageType": "Pierce", "AlternateDamageType": "None", "Minimum": 666, "Maximum": 666, "DamageProcs": [] }, "Require****Object": "true", "StatusEffectKeywordsIDs": [], "StatusEffectsIDs": [], "RandomizeStatusEffect": "false", "CanGraze": "false", "CanCrit": "true", "DefendedBy": "Deflect", "AfflictionsDefendedBy": "None", "AfflictionApplicationModifier": "None", "SubstituteHitVisualEffect": "", "VisualEffects": [{ "VisualEffect": "prefabs/effects/items/weapons/fx_action_flash_launch_01.prefab", "AttachPoint": "Fx_Bone_02", "AttachObject": "Caster", "AttachMode": "Attach", "MeshType": "None", "Event": "OnAnimEvent", "AnimEventID": 0, "Loop": "false", "Scale": "false" }, { "VisualEffect": "prefabs/effects/items/weapons/fx_muzzle_flash_launch_blunderbuss.prefab", "AttachPoint": "Fx_Bone_01", "AttachObject": "Caster", "AttachMode": "PositionRotation", "MeshType": "None", "Event": "OnLaunch", "AnimEventID": 0, "Loop": "false", "Scale": "false" }, { "VisualEffect": "prefabs/effects/items/weapons/fx_arquebus_smoke_linger.prefab", "AttachPoint": "Fx_Bone_01", "AttachObject": "Caster", "AttachMode": "Attach", "MeshType": "None", "Event": "OnLaunch", "AnimEventID": 0, "Loop": "false", "Scale": "false" } ], "AttackOnImpactID": "00000000-0000-0000-0000-000000000000", "ExtraAttackID": "00000000-0000-0000-0000-000000000000", "LaunchBone": "Fx_Bone_01", "HitBone": "Chest", "OnHitShakeDuration": "None", "OnHitShakeStrength": "None", "NoiseLevelID": "82bc1ce9-3a81-41ca-a61a-cc1f73a53de7", "AllReactNoise": "false", "InterruptsOn": "None", "InterruptType": "Normal", "TargetAngle": 0, "ApplyOnceOnly": "false", "PathsToTarget": "true", "HideFromCombatLog": "false", "DoesNotApplyDamage": "false", "TreatAsWeapon": "false", "BounceData": { "Bounces": 0, "Multiplier": 0.5, "Range": 4, "InRangeOrder": "true", "NoRepeatTargets": "false", "AlwaysBounceAtEnemies": "true", "Delay": 0 } }, { "$type": "Game.GameData.AttackRangedComponent, Assembly-CSharp", "LaunchAttackOnCollision": "false", "ProjectileCount": 4, "IgnoreMagicDefense": "false", "ProjectileConeAngle": 11, "ProjectilePrefab": "prefabs/projectiles/invisible_projectile.prefab", "IsMultiHit": "false", "MultiHitTravelDist": 88, "MultiHitMaxHits": 0, "LaunchSource": "Caster", "LaunchOffset": { "x": 0, "y": 0, "z": 0 }, "LaunchOffsetRandom": { "x": 0, "y": 0, "z": 0 } }, { "$type": "Game.GameData.AttackFirearmComponent, Assembly-CSharp", "ClipSize": 4, "ReloadTime": 2, "ReloadAnimationEndTime": 1.67, "FirearmType": "Pistol" } ] }, { "$type": "Game.GameData.AttackFirearmGameData, Assembly-CSharp", "DebugName": "Blunderbuss_A_BadAss", "ID": "091b9ece-4c73-4b4b-a628-154549b830c5", "Components": [{ "$type": "Game.GameData.AttackBaseComponent, Assembly-CSharp", "KeywordsIDs": ["f25230f4-fca2-44af-b745-03f026152459", "1b6d77c8-1155-4d49-9c7c-548716f0d409", "d0cef78d-856b-4d8c-82d2-59c1ed2aa396"], "AttackDistance": 88, "MinAttackDistance": 0, "AttackVariationID": "7da22f9e-cd53-4546-86cc-c2d150df72cb", "CastSpeedID": "eacb53e3-6eb5-422a-92ca-99cc883ae4a9", "RecoveryTimeID": "039ef4b4-eeb3-42d3-9817-a8df05c53515", "ImpactDelay": 0, "ForcedTarget": "None", "AffectedTargetType": "All", "AffectedTargetConditional": { "Conditional": { "Operator": 0, "Components": [] } }, "AffectedTargetDeathState": "Alive", "HostilityOverride": "Default", "PushDistance": 0, "FaceTarget": "true", "AccuracyBonus": 0, "PenetrationRating": 666, "DamageData": { "DamageType": "Pierce", "AlternateDamageType": "Slash", "Minimum": 666, "Maximum": 666, "DamageProcs": [] }, "Require****Object": "true", "StatusEffectKeywordsIDs": [], "StatusEffectsIDs": [], "RandomizeStatusEffect": "false", "CanGraze": "false", "CanCrit": "true", "DefendedBy": "Reflex", "AfflictionsDefendedBy": "None", "AfflictionApplicationModifier": "None", "SubstituteHitVisualEffect": "", "VisualEffects": [{ "VisualEffect": "prefabs/effects/items/weapons/fx_action_flash_launch_01.prefab", "AttachPoint": "Fx_Bone_02", "AttachObject": "Caster", "AttachMode": "Attach", "MeshType": "None", "Event": "OnAnimEvent", "AnimEventID": 0, "Loop": "false", "Scale": "false" }, { "VisualEffect": "prefabs/effects/items/weapons/fx_muzzle_flash_launch_blunderbuss.prefab", "AttachPoint": "Fx_Bone_01", "AttachObject": "Caster", "AttachMode": "PositionRotation", "MeshType": "None", "Event": "OnLaunch", "AnimEventID": 0, "Loop": "false", "Scale": "false" }, { "VisualEffect": "prefabs/effects/items/weapons/fx_arquebus_smoke_linger.prefab", "AttachPoint": "Fx_Bone_01", "AttachObject": "Caster", "AttachMode": "Attach", "MeshType": "None", "Event": "OnLaunch", "AnimEventID": 0, "Loop": "false", "Scale": "false" }, { "VisualEffect": "prefabs/effects/items/weapons/fx_blunderbuss_serafen_aoe.prefab", "AttachPoint": "Chest", "AttachObject": "Target", "AttachMode": "Position", "MeshType": "None", "Event": "OnImpact", "AnimEventID": 0, "Loop": "false", "Scale": "false" } ], "AttackOnImpactID": "00000000-0000-0000-0000-000000000000", "ExtraAttackID": "c18ff541-cf07-4d0c-ad70-70410aed948f", "LaunchBone": "Fx_Bone_01", "HitBone": "Chest", "OnHitShakeDuration": "None", "OnHitShakeStrength": "None", "NoiseLevelID": "82bc1ce9-3a81-41ca-a61a-cc1f73a53de7", "AllReactNoise": "false", "InterruptsOn": "None", "InterruptType": "Normal", "TargetAngle": 0, "ApplyOnceOnly": "false", "PathsToTarget": "true", "HideFromCombatLog": "false", "DoesNotApplyDamage": "false", "TreatAsWeapon": "false", "BounceData": { "Bounces": 0, "Multiplier": 0.5, "Range": 2, "InRangeOrder": "true", "NoRepeatTargets": "false", "AlwaysBounceAtEnemies": "true", "Delay": 0 } }, { "$type": "Game.GameData.AttackRangedComponent, Assembly-CSharp", "LaunchAttackOnCollision": "false", "ProjectileCount": 4, "IgnoreMagicDefense": "false", "ProjectileConeAngle": 11, "ProjectilePrefab": "prefabs/projectiles/items/fx_blunderbuss_serafen_handmortar_projectile.prefab", "IsMultiHit": "false", "MultiHitTravelDist": 88, "MultiHitMaxHits": 0, "LaunchSource": "Caster", "LaunchOffset": { "x": 0, "y": 0, "z": 0 }, "LaunchOffsetRandom": { "x": 0, "y": 0, "z": 0 } }, { "$type": "Game.GameData.AttackFirearmComponent, Assembly-CSharp", "ClipSize": 1, "ReloadTime": 2, "ReloadAnimationEndTime": 1.67, "FirearmType": "Pistol" } ] }, { "$type": "Game.GameData.AttackAOEGameData, Assembly-CSharp", "DebugName": "Blunderbuss_BadAss_AoE", "ID": "dbb0a8d7-d06f-4d99-b396-30470f5b74b1", "Components": [{ "$type": "Game.GameData.AttackBaseComponent, Assembly-CSharp", "KeywordsIDs": ["f25230f4-fca2-44af-b745-03f026152459", "1b6d77c8-1155-4d49-9c7c-548716f0d409"], "AttackDistance": 88, "MinAttackDistance": 0, "AttackVariationID": "35abdf41-fc3f-4310-8d5d-5d7da644affc", "CastSpeedID": "eacb53e3-6eb5-422a-92ca-99cc883ae4a9", "RecoveryTimeID": "566840d9-1561-4243-8ca7-889df9869847", "ImpactDelay": 0, "ForcedTarget": "None", "AffectedTargetType": "Hostile", "AffectedTargetConditional": { "Conditional": { "Operator": 0, "Components": [] } }, "AffectedTargetDeathState": "Alive", "HostilityOverride": "Default", "PushDistance": 0, "FaceTarget": "false", "AccuracyBonus": 666, "PenetrationRating": 666, "DamageData": { "DamageType": "Pierce", "AlternateDamageType": "Slash", "Minimum": 666, "Maximum": 666, "DamageProcs": [] }, "Require****Object": "false", "StatusEffectKeywordsIDs": [], "StatusEffectsIDs": [], "RandomizeStatusEffect": "false", "CanGraze": "false", "CanCrit": "true", "DefendedBy": "Reflex", "AfflictionsDefendedBy": "None", "AfflictionApplicationModifier": "None", "SubstituteHitVisualEffect": "", "VisualEffects": [], "AttackOnImpactID": "00000000-0000-0000-0000-000000000000", "ExtraAttackID": "00000000-0000-0000-0000-000000000000", "LaunchBone": "RightWeapon", "HitBone": "Chest", "OnHitShakeDuration": "None", "OnHitShakeStrength": "None", "NoiseLevelID": "15743f94-1026-40b0-8e13-a667b3f66f63", "AllReactNoise": "false", "InterruptsOn": "None", "InterruptType": "Normal", "TargetAngle": 0, "ApplyOnceOnly": "false", "PathsToTarget": "true", "HideFromCombatLog": "false", "DoesNotApplyDamage": "false", "TreatAsWeapon": "false", "BounceData": { "Bounces": 0, "Multiplier": 0.5, "Range": 10, "InRangeOrder": "false", "NoRepeatTargets": "false", "AlwaysBounceAtEnemies": "false", "Delay": 0 } }, { "$type": "Game.GameData.AttackAOEComponent, Assembly-CSharp", "BlastSize": "Large", "BlastRadiusOverride": 5, "DamageAngle": 360, "ExcludePrimaryTarget": "true", "IgnoreParentTarget": "true", "ExcludeSelf": "false", "BlastPhysicsForce": 500, "PushFromCaster": "false" }, { "$type": "Game.GameData.AttackRangedComponent, Assembly-CSharp", "LaunchAttackOnCollision": "false", "ProjectileCount": 1, "IgnoreMagicDefense": "true", "ProjectileConeAngle": 145, "ProjectilePrefab": "prefabs/projectiles/invisible_projectile.prefab", "IsMultiHit": "false", "MultiHitTravelDist": 88, "MultiHitMaxHits": 0, "LaunchSource": "Caster", "LaunchOffset": { "x": 0, "y": 0, "z": 0 }, "LaunchOffsetRandom": { "x": 0, "y": 0, "z": 0 } } ] } ] } I'm completely baffled, why doesn't the game recognize my changes?
BMac Posted August 1, 2018 Posted August 1, 2018 Your item game data's AttackID is still pointing to the original blunderbuss attack "2af49303-b215-42aa-b933-7b0497a1c19d" rather than the ID you assigned for your custom attack, "75e41a87-9eb2-4062-8127-f8f2b121a9e3". 1
Kexby Posted August 2, 2018 Posted August 2, 2018 Genius! That fixed it! So there's a handy tip for anybody who's trying to make their own custom weapon, make sure the ID's match in: "$type": "Game.GameData.WeaponGameData, Assembly-CSharp", "AttackID": "75e41a87-9eb2-4062-8127-f8f2b121a9e3", and "$type": "Game.GameData.AttackFirearmGameData, Assembly-CSharp", "ID": "75e41a87-9eb2-4062-8127-f8f2b121a9e3", I've also just realized that I had two GameData.AttackFirearmGameData entries: "$type": "Game.GameData.AttackFirearmGameData, Assembly-CSharp", "DebugName": "Blunderbuss_A_BadAss", Is a duplicate of: "$type": "Game.GameData.AttackFirearmGameData, Assembly-CSharp", "DebugName": "Blunderbuss_BadAss", So I've deleted the duplicate. 1
Kexby Posted August 2, 2018 Posted August 2, 2018 Heheh I've just tested it again. This is insanely fun, it's a total cheat! I'm having a blast (literally ). There is just one final step I'd like to do. At the moment, it still has the original Additional Effects: Additional Effects Inaccurate: -10 Ranged Accuracy Fine: +15% Damage, +4 Accuracy, +1 Penetration Explosive Shot: Basic attacks deal the best of Pierce or Slash damage in a small AoE I'd like to keep Fine and Explosive Shot, but get rid of Inaccurate. Are the 'Additional Effects' in this section of the code? "ItemModsIDs": ["fea57a9e-7dc1-4f66-8617-1e2f87c0f376", "7d7b81f7-7322-441f-a366-5d15d30379f5", "2dcb5f72-2a69-45c6-a438-3e93a58459a5"], If so, then I'm guessing that the first entry is for Inaccurate. If I simply delete that first ID, will it remove Inaccurate from my Blunderbuss? Thank you all so much for your help. I'm almost done (I promise).
house2fly Posted August 2, 2018 Posted August 2, 2018 Yep, those are the additional effects. I'm not sure if they're in order, but you can search for the UUID in the game's items.gamedatabundle to confirm the name. there'll probably be a million entries so try ID": "[uUID]". If you make a weapon or armour you can of course make enchantments as well, which is not really more advanced but requires a lot more copying and assigning new UUIDs. To make a new enchantments you need an itemmod which has an ability or a statuseffect which could require an attack, and maybe you want to make a recipe for it, etc
Kexby Posted August 2, 2018 Posted August 2, 2018 (edited) Aha! Yep, I found it. The first ID is for Inaccurate, so I simply deleted it (which did the trick, my blunderbuss no longer has the Inaccurate modifier ). Well, I actually think I'm finished with this mod. Yay for me! And BIG thank you's to everybody who helped. You guys are awesome! Here's the final BadAss.gamedatabundle (if anybody is interested): { "GameDataObjects": [{ "$type": "Game.GameData.WeaponGameData, Assembly-CSharp", "DebugName": "Blunderbuss_U_BadAss", "ID": "ea4de19d-d80c-4e66-9e33-8818a1e038a3", "Components": [{ "$type": "Game.GameData.ItemComponent, Assembly-CSharp", "DisplayName": 66650, "DescriptionText": 66651, "FilterType": "Weapons", "InventoryAudioEventListID": "57518815-1aa8-49c2-8ee0-0d361b26fd66", "IsQuestItem": "false", "IsIngredient": "false", "IsCurrency": "false", "IsAdventuringItem": "false", "CanSellForFullValue": "false", "MaxStackSize": 1, "NeverDropAsLoot": "false", "CanBePickpocketed": "true", "IsUnique": "true", "Value": 35, "IconTextureSmall": "gui/icons/items/weapons/blunderbuss/blunderbuss_01_s.png", "IconTextureLarge": "gui/icons/items/weapons/blunderbuss/blunderbuss_01_l.png", "PencilSketchTexture": "", "InspectOnUseButton": [], "IsPlaceholder": "false" }, { "$type": "Game.GameData.EquippableComponent, Assembly-CSharp", "EquipmentType": "Blunderbuss", "EquipmentSlot": "AnyWeapon", "AppearancePiece": { "ModelVisualDataPath": "prefabs/items/appearance/weapons/blunderbuss/a_blunderbuss03_v01.asset" }, "ItemModsIDs": ["7d7b81f7-7322-441f-a366-5d15d30379f5", "2dcb5f72-2a69-45c6-a438-3e93a58459a5"], "OnEquipVisualEffects": [], "RestrictedToClass": [], "RestrictedToPlayer": "false", "ProficientAbilityID": "f5a2eb61-8c11-41ab-9832-5ad182e5b368", "CannotUnequip": "false", "ItemRendererPrefab": "prefabs/itemrenderers/genericanimateditemrenderer.prefab", "ItemModel": "", "AnimationController": "art/animation/animationcontrollers/weapon/w_pistol.controller", "PaperdollOverrideRenderer": "", "AttackSummonID": "00000000-0000-0000-0000-000000000000", "CannotSheathe": "false", "PropVisualEffects": [] }, { "$type": "Game.GameData.WeaponComponent, Assembly-CSharp", "Stance": "OneHanded", "AnimationStanceID": "ddeda306-872b-4d63-8032-fbaf359d0ed2", "StatusEffectsOnLaunchIDs": [], "IsDisplayedWhenAlternate": "true", "IsUniversalType": "false", "AttackID": "75e41a87-9eb2-4062-8127-f8f2b121a9e3", "NoiseLevelID": "6bfdad12-a1d0-42cc-b797-c9d2dac2af05", "ForceBackScabbard": "false", "ScabbardAppearancePiece": { "ModelVisualDataPath": "" }, "ScabbardRendererPrefab": "", "ScabbardModel": "", "AudioEventListID": "00000000-0000-0000-0000-000000000000" } ] },{ "$type": "Game.GameData.AttackFirearmGameData, Assembly-CSharp", "DebugName": "Blunderbuss_BadAss", "ID": "75e41a87-9eb2-4062-8127-f8f2b121a9e3", "Components": [{ "$type": "Game.GameData.AttackBaseComponent, Assembly-CSharp", "KeywordsIDs": ["f25230f4-fca2-44af-b745-03f026152459", "1b6d77c8-1155-4d49-9c7c-548716f0d409"], "AttackDistance": 88, "MinAttackDistance": 0, "AttackVariationID": "7da22f9e-cd53-4546-86cc-c2d150df72cb", "CastSpeedID": "eacb53e3-6eb5-422a-92ca-99cc883ae4a9", "RecoveryTimeID": "039ef4b4-eeb3-42d3-9817-a8df05c53515", "ImpactDelay": 0, "ForcedTarget": "None", "AffectedTargetType": "All", "AffectedTargetConditional": { "Conditional": { "Operator": 0, "Components": [] } }, "AffectedTargetDeathState": "Alive", "HostilityOverride": "Default", "PushDistance": 0, "FaceTarget": "true", "AccuracyBonus": 666, "PenetrationRating": 666, "DamageData": { "DamageType": "Pierce", "AlternateDamageType": "None", "Minimum": 666, "Maximum": 666, "DamageProcs": [] }, "Require****Object": "true", "StatusEffectKeywordsIDs": [], "StatusEffectsIDs": [], "RandomizeStatusEffect": "false", "CanGraze": "false", "CanCrit": "true", "DefendedBy": "Deflect", "AfflictionsDefendedBy": "None", "AfflictionApplicationModifier": "None", "SubstituteHitVisualEffect": "", "VisualEffects": [{ "VisualEffect": "prefabs/effects/items/weapons/fx_action_flash_launch_01.prefab", "AttachPoint": "Fx_Bone_02", "AttachObject": "Caster", "AttachMode": "Attach", "MeshType": "None", "Event": "OnAnimEvent", "AnimEventID": 0, "Loop": "false", "Scale": "false" }, { "VisualEffect": "prefabs/effects/items/weapons/fx_muzzle_flash_launch_blunderbuss.prefab", "AttachPoint": "Fx_Bone_01", "AttachObject": "Caster", "AttachMode": "PositionRotation", "MeshType": "None", "Event": "OnLaunch", "AnimEventID": 0, "Loop": "false", "Scale": "false" }, { "VisualEffect": "prefabs/effects/items/weapons/fx_arquebus_smoke_linger.prefab", "AttachPoint": "Fx_Bone_01", "AttachObject": "Caster", "AttachMode": "Attach", "MeshType": "None", "Event": "OnLaunch", "AnimEventID": 0, "Loop": "false", "Scale": "false" } ], "AttackOnImpactID": "00000000-0000-0000-0000-000000000000", "ExtraAttackID": "00000000-0000-0000-0000-000000000000", "LaunchBone": "Fx_Bone_01", "HitBone": "Chest", "OnHitShakeDuration": "None", "OnHitShakeStrength": "None", "NoiseLevelID": "82bc1ce9-3a81-41ca-a61a-cc1f73a53de7", "AllReactNoise": "false", "InterruptsOn": "None", "InterruptType": "Normal", "TargetAngle": 0, "ApplyOnceOnly": "false", "PathsToTarget": "true", "HideFromCombatLog": "false", "DoesNotApplyDamage": "false", "TreatAsWeapon": "false", "BounceData": { "Bounces": 0, "Multiplier": 0.5, "Range": 4, "InRangeOrder": "true", "NoRepeatTargets": "false", "AlwaysBounceAtEnemies": "true", "Delay": 0 } }, { "$type": "Game.GameData.AttackRangedComponent, Assembly-CSharp", "LaunchAttackOnCollision": "false", "ProjectileCount": 4, "IgnoreMagicDefense": "false", "ProjectileConeAngle": 11, "ProjectilePrefab": "prefabs/projectiles/invisible_projectile.prefab", "IsMultiHit": "false", "MultiHitTravelDist": 88, "MultiHitMaxHits": 0, "LaunchSource": "Caster", "LaunchOffset": { "x": 0, "y": 0, "z": 0 }, "LaunchOffsetRandom": { "x": 0, "y": 0, "z": 0 } }, { "$type": "Game.GameData.AttackFirearmComponent, Assembly-CSharp", "ClipSize": 4, "ReloadTime": 2, "ReloadAnimationEndTime": 1.67, "FirearmType": "Pistol" } ] }, { "$type": "Game.GameData.AttackAOEGameData, Assembly-CSharp", "DebugName": "Blunderbuss_BadAss_AoE", "ID": "dbb0a8d7-d06f-4d99-b396-30470f5b74b1", "Components": [{ "$type": "Game.GameData.AttackBaseComponent, Assembly-CSharp", "KeywordsIDs": ["f25230f4-fca2-44af-b745-03f026152459", "1b6d77c8-1155-4d49-9c7c-548716f0d409"], "AttackDistance": 88, "MinAttackDistance": 0, "AttackVariationID": "35abdf41-fc3f-4310-8d5d-5d7da644affc", "CastSpeedID": "eacb53e3-6eb5-422a-92ca-99cc883ae4a9", "RecoveryTimeID": "566840d9-1561-4243-8ca7-889df9869847", "ImpactDelay": 0, "ForcedTarget": "None", "AffectedTargetType": "Hostile", "AffectedTargetConditional": { "Conditional": { "Operator": 0, "Components": [] } }, "AffectedTargetDeathState": "Alive", "HostilityOverride": "Default", "PushDistance": 0, "FaceTarget": "false", "AccuracyBonus": 666, "PenetrationRating": 666, "DamageData": { "DamageType": "Pierce", "AlternateDamageType": "Slash", "Minimum": 666, "Maximum": 666, "DamageProcs": [] }, "Require****Object": "false", "StatusEffectKeywordsIDs": [], "StatusEffectsIDs": [], "RandomizeStatusEffect": "false", "CanGraze": "false", "CanCrit": "true", "DefendedBy": "Reflex", "AfflictionsDefendedBy": "None", "AfflictionApplicationModifier": "None", "SubstituteHitVisualEffect": "", "VisualEffects": [], "AttackOnImpactID": "00000000-0000-0000-0000-000000000000", "ExtraAttackID": "00000000-0000-0000-0000-000000000000", "LaunchBone": "RightWeapon", "HitBone": "Chest", "OnHitShakeDuration": "None", "OnHitShakeStrength": "None", "NoiseLevelID": "15743f94-1026-40b0-8e13-a667b3f66f63", "AllReactNoise": "false", "InterruptsOn": "None", "InterruptType": "Normal", "TargetAngle": 0, "ApplyOnceOnly": "false", "PathsToTarget": "true", "HideFromCombatLog": "false", "DoesNotApplyDamage": "false", "TreatAsWeapon": "false", "BounceData": { "Bounces": 0, "Multiplier": 0.5, "Range": 10, "InRangeOrder": "false", "NoRepeatTargets": "false", "AlwaysBounceAtEnemies": "false", "Delay": 0 } }, { "$type": "Game.GameData.AttackAOEComponent, Assembly-CSharp", "BlastSize": "Large", "BlastRadiusOverride": 5, "DamageAngle": 360, "ExcludePrimaryTarget": "true", "IgnoreParentTarget": "true", "ExcludeSelf": "false", "BlastPhysicsForce": 500, "PushFromCaster": "false" }, { "$type": "Game.GameData.AttackRangedComponent, Assembly-CSharp", "LaunchAttackOnCollision": "false", "ProjectileCount": 1, "IgnoreMagicDefense": "true", "ProjectileConeAngle": 145, "ProjectilePrefab": "prefabs/projectiles/invisible_projectile.prefab", "IsMultiHit": "false", "MultiHitTravelDist": 88, "MultiHitMaxHits": 0, "LaunchSource": "Caster", "LaunchOffset": { "x": 0, "y": 0, "z": 0 }, "LaunchOffsetRandom": { "x": 0, "y": 0, "z": 0 } } ] } ] } I'm not sure if anybody wants an overpowered cheating blunderbuss, but should I upload it to Nexus? I'm just thinking it might help other newbie modders to see what I've done (cause studying other people's mods is a really big help when you're trying to learn). I'd really like to attach it to this post, but I get this message: Error You aren't permitted to upload this kind of file I'm guessing this is because I'm new around here and don't have enough posting privileges yet . Edited August 2, 2018 by Kexby 1
kilay Posted August 2, 2018 Posted August 2, 2018 (edited) Aha! Yep, I found it. The first ID is for Inaccurate, so I simply deleted it (which did the trick, my blunderbuss no longer has the Inaccurate modifier ). Well, I actually think I'm finished with this mod. Yay for me! And BIG thank you's to everybody who helped. You guys are awesome! I'm not sure if anybody wants an overpowered cheating blunderbuss, but should I upload it to Nexus? I'm just thinking it might help other newbie modders to see what I've done (cause studying other people's mods is a really big help when you're trying to learn). Now that you've understood the basic maybe you could refine your Blunderbuss Badass with a proper damage, other status effects and what you like. So people will have more interest to download it. 666 of damage and 88 of range is really too much. Add some visual effects to your weapon could be another good idea (there are lot of them). Even you should get rid of the stringtables giving it proper name and some lore, checking in game that all is working properly. But for that is better talk in other place (Slack or PM) without flood this thread. Glad you sort out. Keep on it. Edited August 2, 2018 by kilay Random Reader'Plinio il Vecchio asseriva che un rimedio alla sbronza fosse quello di mangiare uova crude di gufo' I° secolo D.C. My Mods on Nexus Nexus Mods Translated to Italian Italian Localization Fix PATCH More Custom AI Conditions Enhanced UI - Afflictions and Inspirations Extended Spell TT1 Unique Items More Priest Subclasses_Ondra Hylea Abydon Channeler Cipher Subclass Are you looking for a group of modders ?Request an invite to our Slack group Do you need a mod? Fill this mod request
Kexby Posted August 2, 2018 Posted August 2, 2018 You're right Kilay, I shouldn't have flooded Peardox's thread (I'm sorry Peardox). I just thought, if I posted my progress here on the official forum (instead of on Slack), then other beginners could follow it and hopefully learn something from it. But I think I'll use Slack from now on (I just need to get the hang of using it ).
peardox Posted August 2, 2018 Author Posted August 2, 2018 I'm glad you liked it @Kexby@Kilay (I think) expressed an interest in interest in expanding the Mod tutorials I completely agree with himFeel free to grab any of us in SlackHere's @Kilay's PM to me hey peardox , are you planning to make other tutorials? cuz i have in mind to make something more detailed about items (with itemmods, status effect, various attacks etc) (edited)The answer is yep but I'm really busy on other crap This appears a good learning curve for both you + @housefly to educate both yourselves and others Ideally I'd like you on a shared project with an experienced member - @kilay, @tt1, @spherikal, @Ethics Gradiant, @Xarastras for example (I'd do it if everyone else is busy - I'm busier)If you can't find one of the core PM me and I'll do a #mod-dev with you guys / guyessesIf you can't find me email me @ simon@peardox.com 1 OK Fair warning has been applied I'm gonna move the domain to https://perspak.com early Feb but will keep all content There are reasons behind this move which basically boil down to unifying my release schedule My friends are welcome to play (I'll set you up your own areas if you desire them) Please note that this process is messy so may take a few weeks
Kexby Posted August 2, 2018 Posted August 2, 2018 (edited) I'm glad you liked it @Kexby @Kilay (I think) expressed an interest in interest in expanding the Mod tutorials I completely agree with him Feel free to grab any of us in Slack Here's @Kilay's PM to me hey peardox , are you planning to make other tutorials? cuz i have in mind to make something more detailed about items (with itemmods, status effect, various attacks etc) (edited) The answer is yep but I'm really busy on other crap This appears a good learning curve for both you + @housefly to educate both yourselves and others Ideally I'd like you on a shared project with an experienced member - @kilay, @tt1, @spherikal, @Ethics Gradiant, @Xarastras for example (I'd do it if everyone else is busy - I'm busier) If you can't find one of the core PM me and I'll do a #mod-dev with you guys / guyesses If you can't find me email me @ simon@peardox.com That would be fantastic! We definitely need more tutorials. I really hope Kilay gets time to expand this tutorial, cause I'd love to take my mod even further and really make it unique . Once I have more experience and know what the heck I'm doing, then writing tutorials is something I really enjoy doing (I love to teach). And I like to share what I've learned with others (it actually helps me to learn if I write it all out). I just need to figure out how to use Slack (it's a bit complicated ). Edited August 2, 2018 by Kexby
peardox Posted August 2, 2018 Author Posted August 2, 2018 Don't worry @Kexby We'll teach you Slack as you go - our intend is to educate and aid each other - your wishes coincide with our own @Kilay is one of my best to tutor you on item-mod, statuseffects and abilities (maybe witha little @tt1) If you can then write a tutorial expanding on my Sticky (First Mod) no one will be happier than myself and the gang I should note that @kilay in on a flowcharting project ATM This is part of a documentation library we're building Everyone needs a day offHit us on Slack and we'll hook you up with a decent tutor Do this QUICKLY as both myself and @Kilay are considering expending my sticky OK Fair warning has been applied I'm gonna move the domain to https://perspak.com early Feb but will keep all content There are reasons behind this move which basically boil down to unifying my release schedule My friends are welcome to play (I'll set you up your own areas if you desire them) Please note that this process is messy so may take a few weeks
peardox Posted August 2, 2018 Author Posted August 2, 2018 (edited) I was recently asked about commenting mods by @tonpix and it's obvious that particularly in tutorials this is desirable So here are our findings If you wanna comment yur mod you HAVE to use decompressed JSON / XML - a gamedatabundle is compressed JSON which explains why this ain't reliable on that kind of file If everything is on one line this WON'T work 100% Most modders use 'prettified' JSON. This increases filesize a bit but makes for easy maintenance. We've got some new more advanced tutorials planned by members of our team so I'm advising commenting for those OK - here we go... I'm using Convo Mod (final) as a testbed Let's Start off with 09_cv_dawnstars_priestess.conversationbundle This file is JSON so uses CStyle comments Here's a modified code snippet ============================================= {"Conversations": [ { "ID": "b598ec6e-0c75-448d-9852-ea05530df607", /* This is my Waenglith convo mod Go read the forum post */ "Filename": "Conversations/09_Port_Maje/09_cv_Dawnstars_Priestess.conversation", "ConversationScriptNode": { // This is another comment "RequiresValidChildNode": false, "NotSkippable": false, "IsQuestionNode": false, "HideSpeaker": false, ============================================= You'll notice the /* .... */ section. This is a multi-line comment. Such sections are to explain what you're doing You'll also notice a // bit. This is a single line comment (which is fine in fully formatted JSON etc but will break compressed JSON The other Mod filetype is XML (DOMStyle) such as 09_cv_dawnstars_priestess.stringtable Here I'm going to comment an added string... ============================================= <!-- Add a question we can trigger later --> <Entry> <ID>106</ID> <DefaultText>"Let me see what you have."</DefaultText> <FemaleText /> </Entry> ============================================= This is a different style of commenting explicit to DOM-based coding (HTML and XML being examples) The <!-- .... --> is a comment in this case We've tried many tests on commented code and every one passes our tests These constructs allow us to explain in code what we're doing I'm recommending our group comment their code whether a published mod or tutorial to help the newbie see what we're doing and why ============================================= Edited August 2, 2018 by peardox 2 OK Fair warning has been applied I'm gonna move the domain to https://perspak.com early Feb but will keep all content There are reasons behind this move which basically boil down to unifying my release schedule My friends are welcome to play (I'll set you up your own areas if you desire them) Please note that this process is messy so may take a few weeks
Kexby Posted August 3, 2018 Posted August 3, 2018 That will be a huge help Peardox. Let's see if I've got this right. // This is a single line comment /* This is a multi line comment that uses more than one line */ You said the // single line comments could break some code types. So would it be better to just use /* */ for all comments, single and multi?
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now